Files
xiaoxia-saas/docs/CURRENT-RELEASE-SURFACE.md
2026-06-24 10:44:33 +08:00

272 lines
9.5 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 当前发布面清单
最后更新:2026-06-23
生产基线:`v0.1.50`
公网 Web`https://saas.xiaoxiajianji.com/`
公网 API`https://saas-api.xiaoxiajianji.com/`
---
## 1. 当前定位
当前 SaaS 版是视频处理/自动生成 MVP,已打通:
登录 → 工作空间 → 项目 → 素材库 → 上传素材 → 素材诊断 → 标题库 → 剪辑计划预览 → 确认生成真实 MP4 → 任务中心追踪 → 成片中心复核/预览/下载。
当前版本不是完整智能自动剪辑平台。旧版桌面软件中的模板编排、ASR/TTS/BGM/转场等能力,已进入后续升级路线,但不属于当前已开放能力。
---
## 2. 已开放并已验证
### 2.1 账号与认证
- 用户注册。
- 用户登录。
- 获取当前用户 `/auth/me`
- 401 时清理前端过期登录态。
- 刷新/直接进入受保护页面时校验本地 token。
生产验证:
- `public_auth_flow=ok`
### 2.2 工作空间
- 创建工作空间。
- 查询工作空间列表。
- 进入工作空间详情。
- 工作空间成员基础权限校验。
生产验证:
- 公网 auth smoke 中 `/workspaces` 返回 200。
### 2.3 项目
- 创建项目。
- 查询项目。
- 通过项目详情恢复 workspace 上下文。
- 进入项目素材页、生成页、结果页。
生产验证:
- 项目详情 smoke 已通过。
- 直接 URL/刷新后的项目上下文恢复已修复并发布。
### 2.4 素材与素材库
- 创建项目级素材库。
- 上传单个素材。
- 批量上传素材。
- 上传后创建 ingest job。
- 查询 ingest job 状态。
- 素材上传会校验 workspace/project/library 归属关系。
生产验证:
- `public_upload_flow=ok`
- `public_batch_upload_flow=ok`
### 2.5 标题库
- 项目级标题库。
- 新增、启用/停用、常用标记。
- 搜索和分类筛选。
- 生成页可手选标题。
- 未手选时自动优先选择常用且低使用次数标题。
- 生成成功后回写标题使用次数。
生产验证:
- 浏览器 E2E `core-titles.spec.ts` 通过。
- 浏览器 E2E `core-generation.spec.ts` 验证标题选择和使用次数回写。
### 2.6 视频生成
- 创建生成任务。
- Worker 异步执行生成。
- 轮询生成任务状态。
- 生成真实 MP4。
- 生成失败提示已初步人话化。
- Worker 生产默认并发限制为 1,降低小机器 FFmpeg 并发风险。
生产验证:
- `public_generation_flow=ok`
### 2.7 成片中心
- 成片列表。
- 生成参数记录:素材库、标题、输出参数。
- 成片预览入口:暂无封面时使用成片文件预览。
- 签名下载。
- 批量获取下载地址。
- 复核状态:待复核、可发布、需返工。
生产验证:
- 浏览器 E2E `core-generation.spec.ts` 验证成片列表、预览入口、复核状态、生成参数、签名下载。
### 2.8 任务中心
- 项目级统一任务列表。
- 支持素材导入任务和视频生成任务。
- 展示任务类型、状态、进度、当前步骤、原始错误和用户可读错误。
- 失败任务可重新排队重试。
- 任务中心按项目 workspace 成员权限隔离。
生产验证:
- 浏览器 E2E `core-generation.spec.ts` 验证生成任务进入任务中心并显示完成状态。
### 2.9 模板与剪辑计划
- 项目级基础节奏模板。
- EditPlan 和 EditPlanClip 数据模型。
- 按素材状态和质量分自动选片。
- 生成页先展示剪辑计划预览。
- 用户确认剪辑计划后再发起生成。
- 生成任务和成片参数绑定 `edit_plan_id`
- 剪辑计划按项目 workspace 成员权限隔离。
生产验证:
- 浏览器 E2E `core-generation.spec.ts` 验证剪辑计划预览、确认生成、成片参数回写 `edit_plan_id`
### 2.10 权限边界
当前已验证:
- 匿名访问 `/auth/me` 返回 401。
- 匿名访问工作空间返回 401。
- 匿名访问项目详情返回 401。
- 非成员访问他人项目返回 403。
- 非成员访问他人素材库返回 404。
- 非成员上传到他人项目/素材库返回 403。
- 匿名访问素材列表返回 401。
- 非成员访问他人素材列表返回 403。
- 匿名访问生成任务返回 401。
- 非成员访问他人生成任务返回 403。
- 非成员访问他人生成结果返回 403。
- 非成员访问他人成片详情/下载 URL 返回 403 或 404。
生产验证:
- `public_boundary_flow=ok`,覆盖 project、asset-library、assets、upload、generation task、generation results、generated video download 边界。
### 2.9 生产发布与监控
- 生产发布使用 tag 触发。
- runtime-builder 构建 API/Worker 镜像和 Web 产物。
- 生产机只接收 artifact、`docker load`、迁移数据库、重启容器和健康检查。
- 生产 API `/health` 返回真实发布版本。
- 生产 Worker 默认 `WORKER_CONCURRENCY=1`
- 生产资源巡检 cron 已启用,每 5 分钟写入 `/var/lib/xiaoxia-ci/duty_report.json`
生产验证:
- `https://saas-api.xiaoxiajianji.com/health` 返回 `version: v0.1.50`
- 最新巡检报告显示 API/Web/容器/版本正常,无 alerts。
---
## 3. 明确暂未开放
这些功能未完成后端闭环,必须禁用或显示“暂未开放”,不得假成功。
- 订阅升级、支付、配额变更。
- 账单、发票、账单下载。
- Admin 后台:用户管理、数据分析、系统监控、日志查看。
- Profile 高级设置:资料编辑、通知偏好、账号安全、会话管理。
- 全局项目列表。
- 全局成员管理。
- 素材智能视图/缺口诊断已开放基础版:推荐、慎用、高风险、未分类、最近上传、未使用、已使用、待复核、配音统计、准备度评分、生成前 critical 缺口拦截。
- 复核操作入口已开放基础版:素材页支持通过/拒绝,拒绝素材计入高风险。
- 成片中心已开放基础版:成片列表、生成参数、预览入口、签名下载、批量下载入口、复核状态。
- 统一任务中心和任务重试。
- 模板与剪辑计划已开放基础版:基础节奏模板、自动选片、剪辑计划预览、确认后生成、成片参数绑定计划。
- ASR 字幕、TTS 配音、BGM 混音、转场包装。
---
## 4. 发布门禁
- 生产 Web 使用预构建 artifact,不在生产机执行前端构建。
- 生产部署默认跳过 API/Worker 镜像构建。
- API/Worker 只能由 runtime-builder 构建运行时镜像。
- 生产 Web `/api` 必须代理到 `xiaoxia-api-production:8000`
- API/Worker 发布后必须 force recreate Web,避免 Nginx 静态 upstream 缓存旧 API 容器 IP。
- 未实现后端的功能不得接入 UI 调用;按钮必须禁用或页面必须显示“暂未开放”。
- 公网发布后必须至少运行:
- `python scripts\smoke_public_auth_flow.py`
- `python scripts\smoke_public_upload_flow.py`
- 公开生成 smoke。
- `python scripts\smoke_public_boundary_flow.py`
- `/health` 版本必须等于当前生产 tag。
- 资源巡检报告如有 `alerts`,不得忽略。
---
## 5. 已有防回归测试
- `apps/web/src/api/auth.test.ts`:认证用户字段归一化,防止 `user_id/email_verified``id/is_email_verified` 漂移。
- `tests/unit/test_release_scripts.py`:生产 artifact 部署、生产 Nginx 代理、Web recreate、runtime builder、版本注入、Worker 并发限制等门禁。
- `tests/unit/test_production_resource_monitoring.py`:生产资源巡检脚本和 heartbeat 报告契约。
- `tests/integration/test_projects.py`:项目详情和 workspace 上下文恢复。
- `scripts/smoke_public_auth_flow.py`:公网注册、登录、`/auth/me``/workspaces` smoke。
- `scripts/smoke_public_upload_flow.py`:公网工作空间、项目、素材库、上传和 ingest smoke。
- `scripts/smoke_public_boundary_flow.py`:公网匿名/非成员访问 project、asset-library、assets、upload、generation task、generation results、generated video download 边界 smoke。
- `tests/unit/test_asset_diagnosis.py`:项目素材准备度、缺口诊断和智能视图计数规则。
- `tests/unit/test_generation_preflight.py`:API 创建生成任务前必须存在 ready 视频素材。
- `apps/web/e2e/core-upload.spec.ts`:真实浏览器上传 MOV 后验证素材 ready、智能诊断展示和复核入口。
- `apps/web/e2e/core-titles.spec.ts`:真实浏览器新增标题、常用标记和搜索筛选。
- `apps/web/e2e/core-generation.spec.ts`:真实浏览器上传有效 MP4、选择标题、生成成片、回写标题使用次数、签名下载并校验 `video/mp4`
---
## 6. 当前已知风险
### 6.1 生产机规格偏小
现状:
- CPU2 核。
- 内存:约 1.7GiB。
- swap:已补 2GiB。
- 根分区:约 40GiB,彻底清理后巡检约 45%。
影响:
- 资源抖动可能导致 TLS/SSH/业务入口超时。
- swap 和 Worker 并发限制是缓解,不是长期扩容替代。
建议:
- 生产机升级到至少 4GiB,推荐 8GiB。
### 6.2 Gitea 已拆离生产业务机
现状:
- 构建任务运行在 runtime-builder。
- Gitea 服务本体已迁移到 runtime-builder 主机,生产业务机不再承载 Gitea。
影响:
- 生产业务机资源压力显著降低。
- 仍需持续关注小规格生产机磁盘和内存。
建议:
- 保持部署后 Docker artifact 自动清理。
- 中期仍建议扩容生产机磁盘/内存。
---
## 7. 下一步
1. 执行真实浏览器 UAT:登录 → 工作空间 → 项目 → 批量上传 → 智能诊断 → 复核 → 生成 → 下载。
2. 进入开发包 7:智能增强。
3. 处理生产资源长期风险:扩容生产机磁盘/内存或继续收紧 artifact 保留策略。