# 小虾 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` --- **以后每次新会话,先读这个文件快速恢复上下文。**