docs: add complete project roadmap and status documentation
This commit is contained in:
@@ -0,0 +1,380 @@
|
|||||||
|
# 小虾 SaaS 项目全景 - 完整状态记录
|
||||||
|
|
||||||
|
> 最后更新:2026-06-16 22:16
|
||||||
|
> 这是项目的完整状态、规则、进度记录,确保不会遗忘任何事情
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🎯 项目定位
|
||||||
|
|
||||||
|
新一代 SaaS 版小虾自动化剪辑系统,采用 Clean Architecture 重新设计。
|
||||||
|
|
||||||
|
**核心目标**:
|
||||||
|
- AI 视频自动化剪辑
|
||||||
|
- 多租户 SaaS 平台
|
||||||
|
- 项目推进管理系统
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## ✅ 已完成(Phase 1 & 2)
|
||||||
|
|
||||||
|
### 核心架构
|
||||||
|
- ✅ Clean Architecture 分层(Domain → Ports → Application → Adapters)
|
||||||
|
- ✅ 双持久化实现(In-Memory 测试 + PostgreSQL 生产)
|
||||||
|
- ✅ Docker Compose 完整开发环境
|
||||||
|
- ✅ Alembic 数据库迁移
|
||||||
|
- ✅ Gitea CI/CD workflows(测试 + 部署)
|
||||||
|
|
||||||
|
### 核心业务对象
|
||||||
|
- ✅ User(用户)
|
||||||
|
- ✅ Workspace(工作空间)
|
||||||
|
- ✅ Project(项目)
|
||||||
|
- ✅ AssetLibrary(素材库:视频/音频)
|
||||||
|
- ✅ Asset(素材)
|
||||||
|
- ✅ IngestJob(入库任务)
|
||||||
|
- ✅ ClassificationJob(分类任务)
|
||||||
|
- ✅ **Task(任务管理)**
|
||||||
|
- ✅ **Milestone(里程碑)**
|
||||||
|
- ✅ **TaskIssue(任务问题/卡点)**
|
||||||
|
|
||||||
|
### 核心业务流程
|
||||||
|
- ✅ 上传 → 入库 → Asset 创建链路
|
||||||
|
- ✅ 分类任务链路
|
||||||
|
- ✅ 完整异步任务处理(Celery + Redis)
|
||||||
|
- ✅ **任务创建 → 状态更新 → 进度跟踪链路**
|
||||||
|
- ✅ **里程碑管理**
|
||||||
|
- ✅ **问题/卡点记录与解决**
|
||||||
|
|
||||||
|
### 基础设施
|
||||||
|
- ✅ MinIO 真实文件存储
|
||||||
|
- ✅ PostgreSQL 数据库
|
||||||
|
- ✅ Redis 消息队列
|
||||||
|
- ✅ Celery 异步任务
|
||||||
|
- ✅ Docker Compose 部署配置
|
||||||
|
- ✅ Nginx 反向代理(8088/8089 临时端口)
|
||||||
|
|
||||||
|
### 前端
|
||||||
|
- ✅ Next.js 14 + TypeScript + React 18
|
||||||
|
- ✅ 项目推进器前端页面(5 个页面)
|
||||||
|
- 首页
|
||||||
|
- 项目列表
|
||||||
|
- 任务详情
|
||||||
|
- 里程碑管理
|
||||||
|
- 问题卡点面板
|
||||||
|
- ✅ 3 个表单组件(创建任务/编辑任务/创建问题)
|
||||||
|
|
||||||
|
### 测试
|
||||||
|
- ✅ 17 个集成测试全绿
|
||||||
|
- 素材管理 8 个
|
||||||
|
- 项目管理 9 个
|
||||||
|
|
||||||
|
### 部署
|
||||||
|
- ✅ 服务器部署(47.98.113.167)
|
||||||
|
- ✅ 5 个容器运行(postgres/redis/api/worker/web)
|
||||||
|
- ✅ Nginx 配置完成(绕过备案限制)
|
||||||
|
- ✅ 临时访问地址:
|
||||||
|
- 前端:http://47.98.113.167:8088
|
||||||
|
- API 文档:http://47.98.113.167:8089/docs
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🔄 进行中(Phase 3)
|
||||||
|
|
||||||
|
### 部署相关
|
||||||
|
- 🔄 **域名备案审核**(阻塞中)
|
||||||
|
- saas.xiaoxiajianji.com
|
||||||
|
- saas-api.xiaoxiajianji.com
|
||||||
|
- 等待工信部审核通过
|
||||||
|
|
||||||
|
- 🔄 **HTTPS 证书申请**(依赖备案)
|
||||||
|
- Let's Encrypt 证书
|
||||||
|
- 备案通过后申请
|
||||||
|
|
||||||
|
- 🔄 **推进器 API 路由问题**(技术问题)
|
||||||
|
- 症状:`/api/v1/project-management/tasks` 返回 404
|
||||||
|
- 根因:Docker 构建缓存导致旧代码进入容器
|
||||||
|
- 已诊断:`project_management.py` 的 router prefix 重复
|
||||||
|
- 修复方案:移除 `/api/v1` 前缀,只保留 `/project-management`
|
||||||
|
- 状态:代码已修改,但容器内未生效(缓存问题)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📋 待办任务(按优先级)
|
||||||
|
|
||||||
|
### Phase 3:部署与备案完成(目标:2026-06-30)
|
||||||
|
|
||||||
|
**URGENT - 阻塞项**
|
||||||
|
1. ⚠️ **修复推进器 API 路由**
|
||||||
|
- 方案:直接进入容器手动修改测试
|
||||||
|
- 或者:彻底清理 Docker 镜像重建
|
||||||
|
|
||||||
|
2. ⚠️ **等待备案通过**
|
||||||
|
- 无法加速,只能等待
|
||||||
|
|
||||||
|
**HIGH - 备案后立即执行**
|
||||||
|
3. 📝 切换到正式域名和 HTTPS
|
||||||
|
- 改回 80/443 端口
|
||||||
|
- 申请 Let's Encrypt 证书
|
||||||
|
- nginx 配置 HTTPS
|
||||||
|
|
||||||
|
4. 📝 PostgreSQL 生产环境切换
|
||||||
|
- 当前用 In-Memory
|
||||||
|
- 需切换到 PostgreSQL + 数据持久化验证
|
||||||
|
|
||||||
|
5. 📝 前端环境变量配置
|
||||||
|
- API 地址从临时端口改为 https://saas-api.xiaoxiajianji.com
|
||||||
|
|
||||||
|
### Phase 4:SAAS 产品化完成(目标:2026-07-15)
|
||||||
|
|
||||||
|
**URGENT - 商业化基础**
|
||||||
|
6. 🔐 认证与账号体系
|
||||||
|
- JWT 登录
|
||||||
|
- 注册 + 密码重置
|
||||||
|
- Session 管理
|
||||||
|
|
||||||
|
7. 🔐 多租户权限体系
|
||||||
|
- Workspace 级别权限控制
|
||||||
|
- 用户角色管理(Admin/Member/Viewer)
|
||||||
|
- 数据隔离
|
||||||
|
|
||||||
|
**HIGH - 商业化能力**
|
||||||
|
8. 💰 订阅与计费体系
|
||||||
|
- SaaS 订阅套餐(基础版/专业版/企业版)
|
||||||
|
- 支付接入(微信/支付宝)
|
||||||
|
- 账单管理
|
||||||
|
|
||||||
|
### Phase 5:AI 剪辑能力接入(目标:2026-08-01)
|
||||||
|
|
||||||
|
**URGENT - 核心价值**
|
||||||
|
9. 🤖 视频分类模型接入
|
||||||
|
- 替换占位分类逻辑
|
||||||
|
- 真实 AI 模型
|
||||||
|
|
||||||
|
**HIGH - 增值功能**
|
||||||
|
10. 🎬 自动剪辑能力
|
||||||
|
- 视频自动剪辑
|
||||||
|
- 转场特效
|
||||||
|
- 字幕生成
|
||||||
|
|
||||||
|
11. 🎙️ 配音合成能力
|
||||||
|
- AI 配音
|
||||||
|
- 音频混音
|
||||||
|
|
||||||
|
### Phase 2 收尾(低优先级)
|
||||||
|
|
||||||
|
**MEDIUM**
|
||||||
|
12. 📊 甘特图视图开发
|
||||||
|
- 项目推进器增加甘特图/时间线视图
|
||||||
|
|
||||||
|
13. 📤 数据导出功能
|
||||||
|
- 导出任务列表为 Excel/CSV
|
||||||
|
|
||||||
|
**LOW**
|
||||||
|
14. 🔧 批量操作 API
|
||||||
|
- 任务批量更新状态/优先级/删除接口
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🎯 里程碑
|
||||||
|
|
||||||
|
| 里程碑 | 目标日期 | 状态 | 说明 |
|
||||||
|
|--------|----------|------|------|
|
||||||
|
| Phase 1: 核心平台层完成 | 2026-06-15 | ✅ 完成 | Clean Architecture + 核心业务对象 |
|
||||||
|
| Phase 2: 项目管理模块落地 | 2026-06-16 | ✅ 完成 | 任务/里程碑/问题管理 + 前后端 |
|
||||||
|
| Phase 3: 部署与备案完成 | 2026-06-30 | 🔄 进行中 | 生产部署 + HTTPS + 域名备案 |
|
||||||
|
| Phase 4: SAAS 产品化完成 | 2026-07-15 | 📋 待开始 | 多租户 + 权限 + 订阅计费 |
|
||||||
|
| Phase 5: AI 剪辑能力接入 | 2026-08-01 | 📋 待开始 | 视频分类 + 自动剪辑 + 配音 |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📐 技术架构
|
||||||
|
|
||||||
|
### 后端
|
||||||
|
- **语言**:Python 3.12
|
||||||
|
- **框架**:FastAPI
|
||||||
|
- **数据库**:PostgreSQL(生产)+ SQLite(测试)
|
||||||
|
- **缓存/队列**:Redis
|
||||||
|
- **异步任务**:Celery
|
||||||
|
- **ORM**:SQLAlchemy
|
||||||
|
- **迁移**:Alembic
|
||||||
|
- **存储**:MinIO(S3-compatible)
|
||||||
|
|
||||||
|
### 前端
|
||||||
|
- **框架**:Next.js 14
|
||||||
|
- **语言**:TypeScript
|
||||||
|
- **UI 库**:React 18
|
||||||
|
|
||||||
|
### 架构模式
|
||||||
|
- Clean Architecture
|
||||||
|
- Ports & Adapters (Hexagonal)
|
||||||
|
- Repository Pattern
|
||||||
|
- Use Case Pattern
|
||||||
|
|
||||||
|
### 基础设施
|
||||||
|
- **容器**:Docker + Docker Compose
|
||||||
|
- **Web 服务器**:Nginx
|
||||||
|
- **CI/CD**:Gitea Actions
|
||||||
|
- **部署**:自建服务器(阿里云 ECS)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🗂️ 关键目录
|
||||||
|
|
||||||
|
```
|
||||||
|
xiaoxia-saas/
|
||||||
|
├── packages/ # 共享业务逻辑包
|
||||||
|
│ ├── domain/ # 核心实体与规则
|
||||||
|
│ ├── application/ # 用例层
|
||||||
|
│ ├── ports/ # 接口定义
|
||||||
|
│ └── adapters/ # 接口实现
|
||||||
|
│ ├── in_memory/ # 内存实现(测试)
|
||||||
|
│ └── sqlalchemy_impl/ # PostgreSQL 实现
|
||||||
|
├── apps/ # 应用层
|
||||||
|
│ ├── api/ # FastAPI REST API
|
||||||
|
│ ├── worker/ # Celery 异步任务
|
||||||
|
│ └── web/ # Next.js 前端
|
||||||
|
├── infra/ # 基础设施配置
|
||||||
|
│ ├── docker/ # Docker Compose
|
||||||
|
│ ├── scripts/ # 部署脚本
|
||||||
|
│ ├── systemd/ # systemd 服务
|
||||||
|
│ └── nginx/ # Nginx 配置(待添加)
|
||||||
|
├── tests/ # 测试
|
||||||
|
│ ├── integration/ # 集成测试
|
||||||
|
│ └── e2e/ # 端到端测试(待添加)
|
||||||
|
├── alembic/ # 数据库迁移
|
||||||
|
├── scripts/ # 工具脚本
|
||||||
|
│ ├── init_tracker_data.py # 推进器数据初始化(Python)
|
||||||
|
│ └── init_tracker_data.ps1 # 推进器数据初始化(PowerShell)
|
||||||
|
└── docs/ # 文档
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🔑 关键决策记录
|
||||||
|
|
||||||
|
### 架构决策
|
||||||
|
- ✅ 新 SaaS 与旧桌面版完全物理隔离
|
||||||
|
- ✅ 旧桌面版仅作为业务参考,不再作为未来主线
|
||||||
|
- ✅ 从第一天起就遵循 Clean Architecture
|
||||||
|
- ✅ 持久化层提供双实现(便于测试)
|
||||||
|
- ✅ 测试策略:集成测试优先,覆盖核心业务流程
|
||||||
|
- ✅ 数据库迁移从第一天起就版本化管理
|
||||||
|
|
||||||
|
### 部署决策
|
||||||
|
- ✅ CI/CD 基于 Gitea Actions + 自建 runner
|
||||||
|
- ✅ 服务器优先开发/部署策略
|
||||||
|
- ✅ 前端改为生产构建部署方案(非开发模式)
|
||||||
|
- ✅ 临时用 8088/8089 端口绕过备案限制
|
||||||
|
- ✅ 等备案通过后切换到 80/443 + HTTPS
|
||||||
|
|
||||||
|
### 工具链决策
|
||||||
|
- ✅ 缺工具直接装,不找替代方案(避免出错)
|
||||||
|
- ✅ Python 依赖装到 F 盘项目虚拟环境里
|
||||||
|
- ✅ 旧项目推进器(纯前端 HTML)已废弃
|
||||||
|
- ✅ 项目管理功能重新在 SAAS 里实现(后端 API + 前端 UI)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🔗 仓库信息
|
||||||
|
|
||||||
|
- **本地路径**:`F:\openclaw-saas`
|
||||||
|
- **远程仓库**:`xiaoxia-server:/var/lib/xiaoxia-ci/xiaoxia-saas.git`
|
||||||
|
- **服务器路径**:`/var/lib/xiaoxia-saas-staging/repo`
|
||||||
|
- **分支**:`main`
|
||||||
|
- **最新提交**:`c6f21d2 fix: remove duplicate api/v1 prefix in project-management routes`
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📊 当前访问地址
|
||||||
|
|
||||||
|
### 临时地址(HTTP,绕过备案)
|
||||||
|
- **前端**:http://47.98.113.167:8088
|
||||||
|
- **API 文档**:http://47.98.113.167:8089/docs
|
||||||
|
- **API 端点**:http://47.98.113.167:8089/api/v1/
|
||||||
|
|
||||||
|
### 正式域名(备案通过后)
|
||||||
|
- **前端**:https://saas.xiaoxiajianji.com
|
||||||
|
- **API**:https://saas-api.xiaoxiajianji.com
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🐛 已知问题
|
||||||
|
|
||||||
|
### 1. 推进器 API 路由 404(高优先级)
|
||||||
|
|
||||||
|
**症状**:
|
||||||
|
- 访问 `http://localhost:8000/api/v1/project-management/tasks` 返回 404
|
||||||
|
- OpenAPI 文档显示路由为 `/api/v1/api/v1/project-management/tasks`(重复前缀)
|
||||||
|
|
||||||
|
**根因**:
|
||||||
|
- `project_management.py` 里的 router 有 prefix `/api/v1/project-management`
|
||||||
|
- 主应用 `main.py` 又把 `api_router` 挂载到 `/api/v1`
|
||||||
|
- 导致前缀重复:`/api/v1` + `/api/v1/project-management`
|
||||||
|
|
||||||
|
**修复**:
|
||||||
|
- 已修改 `project_management.py` 的 prefix 为 `/project-management`
|
||||||
|
- 代码已提交:`c6f21d2`
|
||||||
|
- 服务器仓库已拉取最新代码
|
||||||
|
- **问题**:Docker 构建缓存顽固,容器内还是旧代码
|
||||||
|
|
||||||
|
**下一步**:
|
||||||
|
- 方案 A:直接进入容器修改文件测试
|
||||||
|
- 方案 B:完全清理 Docker 镜像层缓存再重建
|
||||||
|
- 方案 C:临时跳过,先完成其他任务
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📝 开发规则
|
||||||
|
|
||||||
|
### Git 工作流
|
||||||
|
- ✅ 新功能开发在 `main` 分支(单人项目)
|
||||||
|
- ✅ 每个功能完成后及时提交
|
||||||
|
- ✅ 提交信息格式:`feat/fix/docs/refactor: 简短描述`
|
||||||
|
- ✅ 推送前确保本地测试通过
|
||||||
|
|
||||||
|
### 测试策略
|
||||||
|
- ✅ 集成测试优先(覆盖业务流程)
|
||||||
|
- ✅ 每个 Use Case 至少 1 个测试
|
||||||
|
- ✅ 新功能必须有测试
|
||||||
|
- ✅ 修复 bug 先写测试重现
|
||||||
|
|
||||||
|
### 部署流程
|
||||||
|
1. 本地开发 + 测试
|
||||||
|
2. 提交到 Git
|
||||||
|
3. 推送到服务器
|
||||||
|
4. 服务器自动触发 CI/CD(或手动)
|
||||||
|
5. Docker 重新构建
|
||||||
|
6. 容器重启
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🔐 敏感信息(不要泄露)
|
||||||
|
|
||||||
|
- **服务器 IP**:47.98.113.167
|
||||||
|
- **SSH 别名**:xiaoxia-server
|
||||||
|
- **数据库密码**:(存储在 `.env` 文件,不提交到 Git)
|
||||||
|
- **MinIO 密钥**:(存储在 `.env` 文件)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🎓 技术债务
|
||||||
|
|
||||||
|
1. **In-Memory 持久化**:当前 API 用的还是 In-Memory,需切换到 PostgreSQL
|
||||||
|
2. **认证缺失**:当前无认证,所有接口公开
|
||||||
|
3. **错误处理**:部分接口错误处理不完善
|
||||||
|
4. **日志**:缺少结构化日志
|
||||||
|
5. **监控**:缺少性能监控和告警
|
||||||
|
6. **备份**:缺少数据库备份策略
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📚 参考文档
|
||||||
|
|
||||||
|
- **项目总览**:`README.md`
|
||||||
|
- **当前状态**:`STATUS.md`(简化版)
|
||||||
|
- **部署指南**:`infra/docker/SERVER-DEPLOY.md`
|
||||||
|
- **CI/CD 说明**:`docs/CI-CD.md`
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**以后每次新会话,先读这个文件快速恢复上下文。**
|
||||||
Reference in New Issue
Block a user