docs(content): 同步 ARB-005 裁决至全部治理文档 - matrix/contract/issue/workline P4 就绪信号全部勾选

This commit is contained in:
SpecialX
2026-07-13 11:21:13 +08:00
parent 9e4d442c0e
commit a0635ff2c6
4 changed files with 179 additions and 171 deletions

View File

@@ -3,7 +3,7 @@
> 负责人ai09
> 关联:[workline.md](../workline.md)、[coord.md](../coord.md)、[contracts/content_contract.md](../contracts/content_contract.md)、[objections/content_issue.md](../objections/content_issue.md)、[../../services/content/docs/02-architecture-design.md](../../../services/content/docs/02-architecture-design.md)
> 模式:全并行(各 AI 一口气完成 P2-P6 全部代码,最后统一集成测试)
> 当前分支:`feat-review-content-module-docs-WAIyMA`
> 当前分支:maintrunk-basedARB-005 §5.3 裁决)
---
@@ -12,14 +12,17 @@
content 是内容资源中台服务P4 阶段),承载 D4 内容资源限界上下文,提供 Textbook / Chapter / KnowledgePoint / Question 四个聚合的 CRUD 与知识图谱查询。
**关键交付**
- gRPC 50054 + 4 ServiceTextbook/Chapter/KnowledgeGraph/Question按 [coord-final-decisions.md §3.3](../../coord-final-decisions.md) N1/N3/N5 仲裁P4 首次实现即启用 gRPC + 补全 QuestionService/ChapterService proto
- MySQL 写模型 + Neo4j 知识图谱 + Outbox 事件驱动异步同步(禁止业务事务内同步双写 Neo4j
- Kafka 发布 `edu.content.knowledge_point.events` / `edu.content.question.events`(聚合 topic 策略,待 ISSUE-002 仲裁)
- Kafka 发布 4 个聚合 topicARB-005 §5.3 裁决):`edu.content.textbook.events` / `edu.content.chapter.events` / `edu.content.knowledge_point.events` / `edu.content.question.events`
- P5 引入 Elasticsearch 全文检索 + AI 出题入库QuestionService.BatchCreateQuestions
- P6+ 长远演进:教材版本管理 / 跨租户内容共享 / 个性化学习路径推荐
**关键路径位置**:批次 3P4依赖批次 2 core-edu 完成实际可并行content 不强依赖 core-edu
**当前进度**:✅ P4 全部完成14/14 任务P5/P6+ 未开始
---
## §2 全阶段甘特图P4-P6
@@ -296,25 +299,25 @@ gantt
### 4.1 我依赖的上游就绪标志
| 上游 | 就绪标志 | 必需性 | mock 策略 |
| -------------- | ----------------------------------------------------- | ---------------------- | ------------------------------------------ |
| infra | MySQL 8 / Neo4j 5 / Kafka 集群可用 | 🔴 必需 | 本地 docker-compose |
| infra | Redis 可用P5+ 缓存用env.ts 已预留 REDIS_URL | 🟢 P5+ 可选 | 未配置时跳过缓存 |
| infra | Elasticsearch 8 可用P5+ | 🟢 P5+ 必需 | 未配置时检索降级到 MySQL LIKE |
| shared-proto | content.proto / events.proto 补全 | 🔴 必需P4.6 自身完成) | 自行修改 |
| core-edu (ai08) | gRPC 50053 启用 | 🟢 可选content 独立) | 不依赖 core-edu 实时数据 |
| ai (ai12) | gRPC 50058 启用 | 🟢 P5 联调时必需 | grpc-mock 拦截 |
| 上游 | 就绪标志 | 必需性 | mock 策略 |
| --------------- | ------------------------------------------------- | ------------------------ | ----------------------------- |
| infra | MySQL 8 / Neo4j 5 / Kafka 集群可用 | 🔴 必需 | 本地 docker-compose |
| infra | Redis 可用P5+ 缓存用env.ts 已预留 REDIS_URL | 🟢 P5+ 可选 | 未配置时跳过缓存 |
| infra | Elasticsearch 8 可用P5+ | 🟢 P5+ 必需 | 未配置时检索降级到 MySQL LIKE |
| shared-proto | content.proto / events.proto 补全 | 🔴 必需P4.6 自身完成) | 自行修改 |
| core-edu (ai08) | gRPC 50053 启用 | 🟢 可选content 独立) | 不依赖 core-edu 实时数据 |
| ai (ai12) | gRPC 50058 启用 | 🟢 P5 联调时必需 | grpc-mock 拦截 |
### 4.2 我的就绪标志(供下游消费)
- [ ] **P4 就绪**
- [ ] content gRPC 50054 启用HealthService.Check 返回 SERVING
- [ ] TextbookService 5 RPC 可调用Create/Get/List/Update/Delete
- [ ] ChapterService 5 RPC 可调用Create/Get/List/Update/Delete
- [ ] KnowledgeGraphService 4 RPC 可调用GetPrerequisites/GetLearningPath/AddPrerequisite/RemovePrerequisite
- [ ] QuestionService 7 RPC 可调用Create/BatchCreate/Get/List/Update/Delete/Publish/Search
- [ ] edu.content.knowledge_point.events / edu.content.question.events topic 可发布
- [ ] /readyz 返回 DB/Neo4j/Kafka 三依赖状态
- [x] **P4 就绪**
- [x] content gRPC 50054 启用HealthService.Check 返回 SERVING
- [x] TextbookService 5 RPC 可调用Create/Get/List/Update/Delete
- [x] ChapterService 5 RPC 可调用Create/Get/List/Update/Delete
- [x] KnowledgeGraphService 4 RPC 可调用GetPrerequisites/GetLearningPath/AddPrerequisite/RemovePrerequisite
- [x] QuestionService 8 RPC 可调用Create/BatchCreate/Get/List/Update/Delete/Publish/Search
- [x] edu.content.textbook/chapter/knowledge_point/question 4 topic 可发布
- [x] /readyz 返回 DB/Neo4j/Kafka 三依赖状态
- [ ] **P5 就绪**
- [ ] GET /questions/search 检索 API 可用(延迟 < 200ms
- [ ] QuestionService.SearchQuestions gRPC 可调用
@@ -340,14 +343,14 @@ gantt
## §5 风险与缓解
| 风险 | 阶段 | 缓解措施 |
| ------------------------------------------ | ---- | ------------------------------------------------------------ |
| ISSUE-002 topic 策略未仲裁导致 Outbox 阻塞 | P4 | 优先推动 coord 仲裁;开发期间用 stub topic仲裁后切换 |
| ISSUE-004 RPC 数量未仲裁导致 proto 阻塞 | P4 | 优先推动 coord 仲裁;按建议方案 21 RPC 实现,仲裁后调整 |
| Neo4j 与 MySQL 双向一致性 | P4 | Outbox 事件驱动 + 幂等去重 + consumer lag 监控 |
| ES 索引重建期间检索不可用 | P5 | alias 切换模式(双索引蓝绿) |
| AI 批量出题 CreateQuestions 高并发 | P5 | batch_size ≤ 100 + 异步队列 + 限流 |
| schema 迁移期间历史数据 created_by 缺失 | P4 | 按 ISSUE-007 方案NULL 起步或 'system' 默认值回填 |
| 风险 | 阶段 | 缓解措施 |
| ------------------------------------------ | ---- | ------------------------------------------------------- |
| ISSUE-002 topic 策略未仲裁导致 Outbox 阻塞 | P4 | 优先推动 coord 仲裁;开发期间用 stub topic仲裁后切换 |
| ISSUE-004 RPC 数量未仲裁导致 proto 阻塞 | P4 | 优先推动 coord 仲裁;按建议方案 21 RPC 实现,仲裁后调整 |
| Neo4j 与 MySQL 双向一致性 | P4 | Outbox 事件驱动 + 幂等去重 + consumer lag 监控 |
| ES 索引重建期间检索不可用 | P5 | alias 切换模式(双索引蓝绿) |
| AI 批量出题 CreateQuestions 高并发 | P5 | batch_size ≤ 100 + 异步队列 + 限流 |
| schema 迁移期间历史数据 created_by 缺失 | P4 | 按 ISSUE-007 方案NULL 起步或 'system' 默认值回填 |
---
@@ -355,5 +358,6 @@ gantt
- 批次 3P4ai09 content 11 天workline.md §1 排期 `after b2b, 11d`
- 本排期 P4 实际 21 天(含测试 + README 修正),与 workline.md 11 天存在差距
- **更新2026-07-13**P4 代码已全部完成并提交至 main 分支ARB-005 全部 10 项 issue 已裁决并落实
- **差距原因**workline.md §1 为 coord 初始规划(标注"ai09 接管后必须自行细化"),本文件为 ai09 细化后的实际排期
- **同步动作**:提请 coord 在 workline.md §1 更新 content 工期为 21 天(或协调压缩测试任务)