Files
Edu/services/content
SpecialX 958b17c9d8 feat(infra): p6 hardening - metrics collection and registry mirror
- 4 services add collectDefaultMetrics for process metrics
- docker-compose.yml images prefixed with docker.m.daocloud.io
- Prometheus v0.51.0 (nonexistent) fixed to v2.51.0
- Grafana port remapped 3000 to 3030 to avoid teacher-portal conflict
- ClickHouse edu_analytics database initialized
- known-issues.md documents 7 new P6 scenario-to-rule mappings
2026-07-09 12:29:36 +08:00
..

content 内容资源服务

版本0.1P4 骨架) 端口3005

职责

内容资源限界上下文,管理 Textbook、Chapter、KnowledgePoint 聚合。 支持多存储MySQL教材/章节/知识点写模型)+ Neo4j知识图谱前置依赖+ Elasticsearch题库全文检索P4 后续补充)。

技术栈

  • NestJS 10.x + TypeScript 5.6ESM
  • Drizzle ORMMySQL
  • neo4j-driver知识图谱
  • Zod运行时校验
  • pino日志+ prom-client指标+ OpenTelemetry追踪

开发

pnpm install
pnpm dev        # 端口 3005
pnpm build
pnpm typecheck
pnpm lint
pnpm test

环境变量

变量 说明
PORT 服务端口(默认 3005
DATABASE_URL MySQL 连接串
NEO4J_URL Neo4j Bolt 连接 URL
NEO4J_PASSWORD Neo4j 密码
ES_URL Elasticsearch 地址
JWT_SECRET JWT 密钥
OTEL_EXPORTER_OTLP_ENDPOINT OpenTelemetry OTLP 端点(可选)

模块结构

src/
├─ config/          # env、database(MySQL)、neo4j
├─ shared/
│  ├─ errors/       # ApplicationError + GlobalErrorFilterCONTENT_* 前缀)
│  └─ observability/# logger、metrics、tracer
├─ textbooks/       # 教材/章节/知识点 + 知识图谱
├─ app.module.ts
└─ main.ts

关键端点

  • POST /textbooks 创建教材
  • GET /textbooks 教材列表
  • GET /textbooks/:id 教材详情
  • TextbooksService.createKnowledgeGraph 在 Neo4j 构建知识点前置依赖
  • TextbooksService.getPrerequisites 查询知识点前置链路

健康检查

端点 用途 鉴权
GET /healthz 存活探针liveness仅返回进程状态不检查依赖
GET /readyz 就绪探针readiness检查 DB 连接,失败返回 503

实现见 src/shared/health/health.controller.ts5 个 NestJS 服务iam/core-edu/content/msg/classes一致。

对外契约

gRPC 服务 TextbookServiceKnowledgeGraphService 定义见 packages/shared-proto/proto/content.proto