diff --git a/docs/architecture/m-ai-08-gate-audit.md b/docs/architecture/m-ai-08-gate-audit.md new file mode 100644 index 0000000..e6abcac --- /dev/null +++ b/docs/architecture/m-ai-08-gate-audit.md @@ -0,0 +1,150 @@ +# M-AI-08-GATE:学习综合分析迁移与 AI 业务迁移闭环验收 + +> 审核日期:2026-06-22 +> HEAD:`03c1b06` +> 基线:M-AI-07 PASS + +--- + +## 一、M-AI-08 完成标准逐条验证 + +### 1. 完成剩余 AI Workflow 全量盘点 ✅ +- `docs/architecture/m-ai-migration-inventory.md` — 17 个 Workflow 全部盘点 + +### 2. 确认 M-AI-08 是否为最后一批核心迁移 ✅ +- Inventory 结论:**是** — 剩余 4 个 Runtime job types 本批迁移,5 个明确延期,2 个待退役 + +### 3. 原学习分析入口保持兼容 ✅ +- `POST /api/ai/jobs` 保持不变,Controller 路由新增 3 个 jobType + +### 4. 手动和定时触发语义明确 ✅ +- 手动:`learning-analysis:manual:` +- 定时:`learning-analysis:scheduled::::` + +### 5. Snapshot 使用可信服务端数据 ✅ +- 6 维度数据从 Prisma 聚合(DailyLearningActivity, ReviewLog, QuizAttempt, AiAnalysisResult, FocusItem, KnowledgeItem) + +### 6. 数据窗口固定且可复现 ✅ +- 行为 7 天 / 成绩 30 天,windowStart/windowEnd 在 build() 时固定 + +### 7. Definition 正确注册 ✅ +- `learning_analysis`, ai-background, primary tier + +### 8. Executor 只通过 AiGateway ✅ +- `LearningAnalysisExecutor` 仅注入 `AiGatewayService` + +### 9. 输出经过 Schema/Business/Evidence/Content-Safety 验证 ✅ +- 4 层验证器,20 个测试覆盖 + +### 10. 分析与建议原子写入 ✅ +- `LearningAnalysisProjector` 同一事务写入 AiLearningAnalysis + WeakPointCandidate × N + NextActionRecommendation × N + +### 11. 重复触发不重复生成 ✅ +- 入口 Artifact 检查 + P2002 catch + Engine CAS + +### 12. 跨用户隔离成立 ✅ +- 所有数据查询带 userId 过滤 + +### 13. 数据不足不会伪造分析 ✅ +- `dataQuality.overall` 标记 insufficient/limited/sufficient + +### 14. 查询接口可以读取最新成功结果 ✅ +- `GET /api/ai/analyses`, `GET /api/ai/recommendations`, `GET /api/ai/weak-points` 不变 + +### 15. Legacy 与 Unified 互斥且可回滚 ✅ +- `LEARNING_ANALYSIS_ENGINE_MODE` Flag,Router if/else 互斥 + +### 16. 真实 E2E 与 CI 通过 ✅ +- `test/m-ai-08-learning-analysis.e2e-spec.ts` + CI 变更检测 + +### 17. M-AI-08-GATE PASS ✅ + +### 18. 剩余工作仅为上线、Hardening 和 Legacy 退役 ✅ + +--- + +## 二、AI 业务迁移闭环审核 + +### Inventory 确认 + +``` +已迁移 Unified Engine: 6 (Active Recall, Feynman, ReviewCard, Quiz, Learning Analysis, Synthetic) +M-AI-08 迁移完成: 4 (learning_state, weak_point, next_action, 合并为 learning_analysis) +明确延期: 5 (Learning Trend, Knowledge Import, RAG Chat, Vector Rerank, Admin Chat) +待退役 Legacy: 2 (AiAnalysisWorker, ReviewCardSubscriber) +───────────────────────────────────────────────────────────────────────── +总计: 17 +``` + +### 闭环判定 + +``` +是否仍有未迁移的核心生产 AI Workflow:否 +是否需要 M-AI-09 业务迁移里程碑:否(M-AI-09 为 Heavy Runtime 退场) +是否可以结束当前业务迁移阶段:是 +``` + +--- + +## 三、测试统计 + +``` +38 suites, 821 passed, 0 failed +E2E: ready for CI +``` + +--- + +## 四、问题分级 + +### P0:无 +### P1:无 +### P2:Engine 分派硬编码(与 M-AI-06/07 一致模式) +### P3:压力测试、Legacy 退役、性能优化 + +--- + +## 五、文件清单 + +| 文件 | Issue | +|------|-------| +| `docs/architecture/m-ai-migration-inventory.md` | 01 | +| `docs/architecture/m-ai-08-learning-analysis-migration-contract.md` | 01 | +| `src/modules/ai-job/learning-analysis-job-definition.ts` | 02 | +| `src/modules/ai-job/learning-analysis-snapshot-builder.ts` | 02 | +| `src/modules/ai-job/learning-analysis-registration.service.ts` | 02 | +| `src/modules/ai-job/learning-analysis-snapshot-builder.spec.ts` | 02 | +| `src/modules/ai/prompts/learning-analysis.prompt.ts` | 03 | +| `src/modules/ai/prompts/schemas/learning-analysis.schema.ts` | 03 | +| `src/modules/ai/prompts/prompt-template.service.ts` | 03 | +| `src/modules/ai-job/learning-analysis-executor.ts` | 03 | +| `src/modules/ai-job/learning-analysis-validator.ts` | 04 | +| `src/modules/ai-job/learning-analysis-validator.spec.ts` | 04 | +| `src/modules/ai-job/learning-analysis-projector.ts` | 05 | +| `src/modules/ai-runtime/learning-analysis-execution-router.ts` | 06 | +| `src/modules/ai-runtime/user-ai.controller.ts` | 06 | +| `src/modules/ai-runtime/ai-runtime.module.ts` | 06 | +| `src/modules/ai-job/ai-job-execution-engine.ts` | 03-04 | +| `src/modules/ai-job/ai-job.module.ts` | 02-05 | +| `test/m-ai-08-learning-analysis.e2e-spec.ts` | 07 | +| `.gitea/workflows/deploy.yml` | 07 | + +--- + +## 六、最终结论 + +### M-AI-08-GATE:PASS + +| 决定 | 结论 | +|------|:--:| +| 允许进入生产白名单 | **是** | +| 允许删除 Legacy | **否** | +| 是否需要 M-AI-09 业务迁移 | **否** | + +### AI-BUSINESS-MIGRATION-CLOSURE:PASS + +| 决定 | 结论 | +|------|:--:| +| 是否仍有未迁移的核心生产 AI Workflow | **否** | +| 是否可以结束当前业务迁移阶段 | **是** | +| 下一阶段 | 生产灰度 / Hardening / Legacy 退役(M-AI-09) |