# content 内容资源服务

> 版本：0.1（骨架）
> 日期：2026-07-07
> 状态：P4 待交付
> 关联文档：[架构影响地图](../../architecture/004_architecture_impact_map.md)

---

## 1. 模块职责

content 是内容资源限界上下文，管理 Textbook、Question、KnowledgePoint 三大聚合。
负责教材管理、题库管理（含 Elasticsearch 全文检索）、知识图谱构建（Neo4j 存储前置依赖关系）。
为 core-edu 提供题目来源，为 ai 服务提供出题素材与知识图谱查询。

---

## 2. 技术栈

| 类别 | 技术 | 版本 | 用途 |
|------|------|------|------|
| 语言 | TypeScript | 5.5+ | 类型安全 |
| 框架 | NestJS | 10.x | 依赖注入、模块化 |
| ORM | Drizzle ORM | 0.31+ | 关系数据访问 |
| 关系库 | MySQL | 8.x | 教材/题目写模型 |
| 图数据库 | Neo4j | 5.x | 知识图谱、前置依赖 |
| 搜索 | Elasticsearch | 8.x | 题库全文检索 |
| 校验 | Zod | 3.23+ | 运行时校验 |

---

## 3. 架构图

```mermaid
graph TB
    BFF[BFF 聚合层] -->|gRPC| CONTENT[content 服务]
    AI[ai 服务] -->|gRPC| CONTENT
    CONTENT --> TB[Textbook 模块]
    CONTENT --> Q[Question 模块]
    CONTENT --> KP[KnowledgePoint 模块]
    CONTENT -->[(MySQL<br/>教材/题目)]
    CONTENT -->[(Neo4j<br/>知识图谱)]
    CONTENT -->[(ES<br/>题库索引)]
    CONTENT -.事件.-> K[(Kafka<br/>edu.content.*)]
```

> 待 P4 交付时补充完整的分层架构图与多存储协同图。

---

## 4. 核心流程图

```mermaid
sequenceDiagram
    participant T as 教师
    participant BFF as BFF
    participant CONTENT as content
    participant ES as Elasticsearch
    participant N as Neo4j

    T->>BFF: 创建题目
    BFF->>CONTENT: gRPC CreateQuestion
    CONTENT->>CONTENT: 写 MySQL + Outbox
    CONTENT->>ES: 异步索引题目
    CONTENT->>N: 异步更新知识点关联
    CONTENT-->>BFF: 成功
```

> 待 P4 交付时补充：知识图谱查询流程、题库检索流程、教材发布流程。

---

## 5. 对外契约

- **gRPC 服务**：TextbookService、QuestionService、KnowledgePointService（待 P4 定义 protobuf）
- **领域事件**：`edu.content.question.published`、`edu.content.textbook.updated`、`edu.content.knowledge.linked`
- **存储表**：textbooks、questions、knowledge_points、knowledge_edges、outbox

> 待 P4 交付时补充完整 protobuf 定义与多存储 schema。

---

## 6. 依赖关系

- **上游**：teacher-bff、student-bff、ai（gRPC 查询题库与知识图谱）
- **下游**：MySQL、Neo4j、Elasticsearch、Kafka
- **跨服务**：消费 core-edu 的教学事件触发内容关联；被 data-ana 消费内容发布事件

---

## 7. 架构约束

1. 题库检索必须走 Elasticsearch，禁止 MySQL LIKE 全表扫描
2. 知识图谱前置依赖查询必须走 Neo4j，禁止关系库递归查询
3. MySQL 写入后必须异步同步 ES 索引与 Neo4j 关系
4. Outbox 模式强制

> 待 P4 交付时补充完整约束清单。

---

## 8. 架构决策

> 待 P4 交付时补充 ADR 记录，预计包括：Neo4j 选型、ES 索引策略、多存储一致性保证、CDC 引入决策。
