Files
Edu/services/core-edu/README.md
SpecialX beedbaf686 docs: 同步 P6 工作日志、runbook 与服务 README
- known-issues.md: 追加 9 条 P6 工作经验日志,更新 arch-scan 经验
- post-p6-followup.md: 新增 P6 后续工作手册 runbook
- iam/core-edu/content/msg README: 补充健康检查端点说明
2026-07-08 12:53:05 +08:00

62 lines
2.4 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# core-edu 教学核心服务
> P3 核心教学阶段骨架 | 端口 3004
## 职责
core-edu 是教学核心限界上下文,合并 P1 的 classes 域,管理考试 / 作业 / 成绩聚合。
覆盖教学全链路:考试发布、作业提交、成绩录入与查询。
## 模块结构
```
src/
├─ config/ # env / database / kafka
├─ shared/
│ ├─ outbox/ # 事务性发件箱schema + repository + publisher
│ ├─ errors/ # 应用错误 + 全局错误过滤器
│ └─ observability/ # logger / metrics / tracer
├─ middleware/ # auth.middleware / permission.guard
├─ classes/ # P3 待合并(骨架)
├─ exams/ # 考试域
├─ homework/ # 作业域
├─ grades/ # 成绩域
├─ app.module.ts
└─ main.ts
```
## 关键机制
- **Outbox 模式**:写业务数据同事务写 `core_edu_outbox`OutboxPublisher 定时扫描并发送到 Kafka保证事件可靠投递。
- **Kafka 集成**idempotent + transactional producer按 eventType 路由到 `edu.{domain}.events` 主题。
- **事件契约**:见 `packages/shared-proto/proto/events.proto`
## 开发
```bash
pnpm install
pnpm dev # 端口 3004
pnpm typecheck
pnpm lint
pnpm test
```
## 环境变量
| 变量 | 说明 | 默认 |
| ----------------------------- | ----------------------------- | -------------- |
| `PORT` | 服务端口 | 3004 |
| `DATABASE_URL` | MySQL 连接串 | - |
| `KAFKA_BROKERS` | Kafka broker 列表(逗号分隔) | localhost:9092 |
| `JWT_SECRET` | JWT 密钥 | - |
| `OTEL_EXPORTER_OTLP_ENDPOINT` | OTLP 上报地址(可选) | - |
## 健康检查
| 端点 | 用途 | 鉴权 |
| -------------- | ------------------------------------------------- | ---- |
| `GET /healthz` | 存活探针liveness仅返回进程状态不检查依赖 | 无 |
| `GET /readyz` | 就绪探针readiness检查 DB 连接,失败返回 503 | 无 |
实现见 `src/shared/health/health.controller.ts`5 个 NestJS 服务iam/core-edu/content/msg/classes一致。