diff --git a/DevelopmentPlan.md b/DevelopmentPlan.md index ff2e9dd..841bedf 100644 --- a/DevelopmentPlan.md +++ b/DevelopmentPlan.md @@ -11,7 +11,7 @@ | 文档类型 | **Development Plan (技术架构与实施计划)** | | --- | --- | | **项目名称** | SmartAudit (AI 营销内容合规审核平台) | -| **版本号** | V1.1 | +| **版本号** | V1.2 | | **日期** | 2026-02-03 | | **依据** | FeatureSummary V1.2, PRD V1.0, RequirementsDoc V1.0 | | **侧重** | 技术选型、架构设计、MVP 范围、开发排期、验收标准 | @@ -24,6 +24,7 @@ | --- | --- | --- | --- | | V1.0 | 2026-02-03 | Gemini | 初稿:技术架构、选型、排期 | | V1.1 | 2026-02-03 | Claude | 审阅修订:补充 F-05-A/F-45 技术方案、验收标准、数据模型、测试策略 | +| V1.2 | 2026-02-03 | Claude | Reviewer 修正:Logo检测改向量检索、Brief解析增VLM、弹性GPU、H5防锁屏、排期调整 | --- @@ -56,9 +57,10 @@ graph TD end subgraph AI_Engine [AI 引擎集群] - Svc_Parser[Brief 解析服务 (LangChain)] + Svc_Parser[Brief 解析服务 (Layout+VLM+LLM)] Svc_NLP[脚本/语义分析 (LLM)] Svc_Video[视频多模态流水线] + Svc_Logo[Logo 向量检索服务] end subgraph Storage @@ -88,7 +90,7 @@ graph TD | 模块 | 选型建议 | 理由 (Why) | | --- | --- | --- | | **前端框架** | **Next.js (React)** + Tailwind CSS | 统一 PC 和 H5 代码库;Next.js 的 SSR 对 SEO 和首屏渲染友好;适合构建复杂的审核 Dashboard。 | -| **移动端** | **Responsive H5** | 达人端无需开发原生 App,通过 Next.js 响应式布局覆盖 iOS/Android 浏览器及微信内嵌浏览器。 | +| **移动端** | **Responsive H5 + Wake Lock API** | 达人端无需开发原生 App,通过 Next.js 响应式布局覆盖 iOS/Android 浏览器及微信内嵌浏览器。⭐ V1.2 增加防锁屏策略。 | | **后端 API** | **Python (FastAPI)** | Python 是 AI 原生语言,FastAPI 具有极高的并发性能(AsyncIO),方便集成 AI 模型 SDK。 | | **异步队列** | **Celery + Redis** | 视频审核是典型长耗时任务(3-5分钟),必须异步处理。Celery 成熟稳定。 | | **实时通讯** | **WebSocket (Socket.io)** | 必须实现(F-17),用于向前端实时推送“正在检测 Logo...”等细粒度进度。 | @@ -101,10 +103,25 @@ graph TD | 任务 | 模型/服务选型 | 备注 | | --- | --- | --- | | **通用语义 (NLP)** | **豆包 Pro / Qwen-Max / DeepSeek** | 处理 Brief 解析、反讽识别、情感分析 | -| **视觉理解 (VLM)** | **Qwen-VL / 豆包视觉** | 处理复杂场景理解(如:环境脏乱差、具体动作判定) | +| **视觉理解 (VLM)** | **Qwen-VL / 豆包视觉** | 处理复杂场景理解(如:环境脏乱差、具体动作判定);**Brief 图片解析** | | **语音识别 (ASR)** | **Paraformer (阿里) / SenseVoice** | 高精度中文语音转写,支持时间戳对齐 | | **文字识别 (OCR)** | **PaddleOCR v4** | 针对中文视频字幕优化,开源免费,轻量级 | -| **物体检测 (CV)** | **YOLOv8 (Fine-tuned)** | 需针对特定"竞品 Logo"进行微调训练,保证高召回率 | +| **版面分析 (Layout)** | **PaddleOCR Layout / LayoutLMv3** | Brief PDF 版面分析,提取图文混排结构 | +| **竞品 Logo 检测** | **Grounding DINO + Vector DB** | ⭐ V1.2 修正:改为向量检索方案,见下方说明 | + +> ⚠️ **V1.2 重要修正 - Logo 检测架构变更:** +> +> **废弃方案:** ~~YOLOv8 Fine-tuning~~ +> +> **新方案:Embedding-based Retrieval (向量检索)** +> ``` +> 1. 品牌方上传竞品 Logo 图片 +> 2. Grounding DINO 提取 Logo 区域 → CLIP/DINOv2 生成 Embedding +> 3. 存入 Vector DB (pgvector/Milvus) +> 4. 视频帧检测时:提取候选区域 → 生成 Embedding → 向量相似度匹配 +> ``` +> +> **优势:** 支持 SaaS 模式下品牌**动态添加竞品 Logo**,无需重新训练模型,**即刻生效**。 > ⚠️ **国内数据合规说明:** 根据 PRD 第 10 章"数据本地化"要求,国内客户数据必须存储于中国大陆境内服务器。因此: > - **生产环境必须使用国内 LLM**(豆包/Qwen/DeepSeek),不可调用 GPT-4o/Claude 等海外 API @@ -123,6 +140,18 @@ graph TD 2. **分片上传:** 使用 Tus 协议,将 100MB 视频切分为 5MB 的 chunk 上传,服务端合并。 3. **直传 OSS:** 前端获取签名直传云存储,不经过应用服务器,节省带宽。 +### 2.1.1 难点:H5 移动端上传中断 ⭐ V1.2 新增 + +* **风险:** iOS Safari 在屏幕锁定或切换后台时会杀死网络请求进程,导致大文件上传中断。 +* **方案:** +1. **Wake Lock API:** 在上传期间请求屏幕常亮锁,防止系统休眠。 + ```javascript + const wakeLock = await navigator.wakeLock.request('screen'); + ``` +2. **UI 防锁屏提示:** 上传开始时显示醒目提示:"⚠️ 上传中请保持屏幕常亮,切勿锁屏或切换应用" +3. **断点续传兜底:** Tus 协议支持断点续传,即使中断也可从断点恢复。 +4. **兼容性处理:** Wake Lock API 在部分旧浏览器不支持,需做 Feature Detection 并提供降级提示。 + ### 2.2 难点:长时任务的用户焦虑 (F-17) @@ -205,34 +234,37 @@ graph TD ## 4. 开发周期规划 (Roadmap) 假设配置:1 PM, 1 UI/UX, 2 Frontend, 2 Backend, 1 AI Engineer, 1 QA。 -**总周期:约 10 周 (2.5 个月)** +**总周期:约 11 周 (2.75 个月)** ⭐ V1.2 调整:Phase 2 延长 1 周 ### Phase 1: 基础设施与 Brief 引擎 (Weeks 1-2) * **Backend:** 搭建 FastAPI 框架,PG 数据库设计,接入 OSS。 -* **AI:** 调试 Brief 解析 Prompt,搭建竞品 Logo 向量库。 +* **AI:** 调试 Brief 解析 Prompt (Layout + VLM + LLM),搭建竞品 Logo 向量库。 * **Frontend:** 完成 PC 端框架搭建,Brief 上传与解析交互。 -* **交付物:** 能够上传 PDF 并提取出 JSON 规则。 +* **交付物:** 能够上传 PDF(含图片)并提取出 JSON 规则。 -### Phase 2: 核心 AI 流水线 (Weeks 3-5) ⭐ *攻坚期* +### Phase 2: 核心 AI 流水线 (Weeks 3-6) ⭐ *攻坚期* (V1.2: 3周→4周) -* **Backend:** 实现 Celery 异步队列,集成 Tus 上传协议。 +* **Backend:** 实现 Celery 异步队列,集成 Tus 上传协议,对接弹性 GPU 集群。 * **AI:** 串联 ASR -> OCR -> NLP -> CV 模型;实现 F-09 (语境) 和 F-45 (频次) 逻辑。 -* **Frontend:** 开发 WebSocket 进度组件,实现“透明思考”UI。 -* **交付物:** 后端可跑通“视频输入 -> 审核报告输出”的完整流程。 +* **AI:** 实现 Logo 向量检索流水线 (Grounding DINO + Vector DB)。 +* **Frontend:** 开发 WebSocket 进度组件,实现"透明思考"UI。 +* **交付物:** 后端可跑通"视频输入 -> 审核报告输出"的完整流程。 -### Phase 3: 达人端 H5 与 审核台 (Weeks 6-8) +> ⚠️ **V1.2 排期调整说明:** Phase 2 从 3 周延长至 4 周,预留充足时间处理**多模态时间戳对齐**的工程难题(ASR/OCR/CV 的时间轴需要精确同步)。 -* **Frontend (H5):** 开发达人手机端上传、查看报告、申诉页面 (响应式适配)。 -* **Frontend (PC):** 开发复杂的“审核决策台”(视频播放器与时间轴打点的联动)。 +### Phase 3: 达人端 H5 与 审核台 (Weeks 7-9) + +* **Frontend (H5):** 开发达人手机端上传、查看报告、申诉页面 (响应式适配 + Wake Lock 防锁屏)。 +* **Frontend (PC):** 开发复杂的"审核决策台"(视频播放器与时间轴打点的联动)。 * **Backend:** 实现申诉逻辑、审核状态流转 (State Machine)。 * **交付物:** 达人可上传,代理商可审核,流程闭环。 -### Phase 4: 联调与验收 (Weeks 9-10) +### Phase 4: 联调与验收 (Weeks 10-11) -* **QA:** 全链路测试,重点测试大文件上传稳定性、AI 误报率。 -* **AI:** 根据测试数据微调 Prompt,优化“油腻/爹味”提示词。 -* **Ops:** 部署生产环境,配置 CDN,压力测试。 +* **QA:** 全链路测试,重点测试大文件上传稳定性、AI 误报率、H5 兼容性。 +* **AI:** 根据测试数据微调 Prompt,优化"油腻/爹味"提示词。 +* **Ops:** 部署生产环境,配置 CDN,弹性 GPU 集群压力测试。 * **交付物:** v1.0 上线。 --- @@ -242,13 +274,24 @@ graph TD | 资源类型 | 规格/服务 | 预估成本 | 备注 | | --- | --- | --- | --- | | **应用服务器** | 8C 16G * 2 (Web/API) | Medium | 承载 API 和 Websocket | -| **AI 推理服务器** | GPU T4/A10 * 1 | High | 用于跑本地 OCR/YOLO 模型 | -| **LLM API** | GPT-4o / Doubao Pro | 按量计费 | 核心语义分析 | -| **ASR 服务** | 阿里/腾讯云 API | 按量计费 | 语音转文字 | +| **AI 推理集群** | **弹性 GPU 集群 / Serverless GPU** | High | ⭐ V1.2 修正,见下方说明 | +| **LLM API** | 豆包 Pro / Qwen-Max | 按量计费 | 核心语义分析(国内合规) | +| **ASR 服务** | 阿里云 Paraformer API | 按量计费 | 语音转文字 | | **存储 (OSS)** | 预留 5TB | Low | 视频与图片存储 | -| **数据库** | RDS PostgreSQL (High Avail) | Medium | 业务数据 | +| **数据库** | RDS PostgreSQL (High Avail) | Medium | 业务数据 + pgvector | | **缓存** | Redis Cluster | Medium | 队列与实时状态 | +> ⚠️ **V1.2 重要修正 - GPU 资源策略变更:** +> +> **废弃方案:** ~~单一 GPU T4/A10 * 1~~ +> +> **新方案:弹性 GPU 集群 / Serverless GPU** +> - **阿里云 PAI-EAS** / **火山引擎 veFaaS** / **AWS SageMaker Serverless** +> - 按推理请求计费,支持自动扩缩容 +> - 高峰期自动扩容,空闲时缩容至 0 +> +> **理由:** 单个 T4 无法支撑高并发下的视频处理 SLA(5分钟内)。弹性方案可应对突发流量,同时控制成本。 + --- ## 6. 风险管理 (Risk Management) @@ -358,10 +401,12 @@ graph TD ## 10. 下一步行动 (Next Steps) 1. **架构师:** 确认 `Database Schema` (特别是 Brief 规则与审核报告的 JSON 结构)。 -2. **UI 设计师:** 优先输出 **"达人端 H5 上传页"** 和 **"代理商 PC 审核台"** 的高保真原型。 -3. **AI 工程师:** 立即开始训练/微调 **"竞品 Logo 检测"** 的 YOLO 模型(需收集样本)。 -4. **后端工程师:** 搭建 FastAPI 框架骨架,集成 Celery 异步队列。 -5. **QA:** 准备 AI 模型测试集(违禁词、Logo、Brief 样本)。 +2. **UI 设计师:** 优先输出 **"达人端 H5 上传页"**(含防锁屏提示)和 **"代理商 PC 审核台"** 的高保真原型。 +3. **AI 工程师:** 搭建 **Logo 向量检索系统** (Grounding DINO + pgvector),验证相似度匹配效果。 +4. **AI 工程师:** 调试 **Brief 解析流水线** (Layout Analysis + VLM),确保能提取 PDF 中的参考图片。 +5. **后端工程师:** 搭建 FastAPI 框架骨架,集成 Celery 异步队列,对接弹性 GPU 服务。 +6. **前端工程师:** 验证 Wake Lock API 在 iOS Safari / 微信内置浏览器的兼容性。 +7. **QA:** 准备 AI 模型测试集(违禁词、Logo、Brief 样本)。 ---