Files
Edu/services/core-edu
SpecialX 61d824924a fix: 修复集成测试中发现的全部 bug — 15 服务端到端验证通过
修复涵盖 6 大类问题:

1. api-gateway
   - 路径前缀剥离 /api 而非 /api/v1,保留下游 /v1/ controller 前缀
   - JWKS URL 默认值修复
   - publicPaths 白名单对齐 /v1/iam/*

2. iam
   - iam.module.ts exports 补充 PermissionCacheService 和 IamRepository
   - main.ts resolveProtoPath() 多路径探测 proto 文件

3. core-edu
   - app.module.ts AuthMiddleware 全局注册

4. BFF 层 GraphQL 端点(teacher-bff / parent-bff / student-bff)
   - teacher-bff: mock dataScope OWN→SELF 对齐 GraphQL enum;WHATWG Request header .get() 提取
   - parent-bff: handleNodeRequestAndResponse 不存在 → 直接 yoga(req,res);WHATWG Request header .get() 提取
   - student-bff: auth.resolver 移除 ActionState 信封返回扁平对象;WHATWG Request header .get() 提取

5. ai
   - Kafka 事务降级 + 10s 超时
   - gRPC 拦截器降级
   - dev mode 禁用事务模式

6. 前端 + 共享包
   - teacher-portal: MF 插件条件实例化 + transpilePackages + extensionAlias
   - ui-components: error-boundary.tsx 添加 use client
   - ui-tokens: tailwind-theme.css 移除 @layer base
   - shared-ts: 导出从源码改为 dist 编译产物;OutboxModule global:true

7. infra
   - .gitignore 补充 keys/ *.pem *.key secrets/ 排除规则
   - infra/init-sql/02-all-services-schema.sql 36 张表 DDL

验证结果:
- TS typecheck: 19 个 workspace 项目全部通过
- Go vet + Ruff: 通过
- 15 服务全部启动成功
- 3 个 BFF GraphQL 端点 + 4 个前端页面全部 200
- Gateway → iam → core-edu 端到端链路验证通过

AI identity: trae-main(集成测试修复会话)
2026-07-11 01:41:46 +08:00
..

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_outboxOutboxPublisher 定时扫描并发送到 Kafka保证事件可靠投递。
  • Kafka 集成idempotent + transactional producer按 eventType 路由到 edu.{domain}.events 主题。
  • 事件契约:见 packages/shared-proto/proto/events.proto

开发

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.ts5 个 NestJS 服务iam/core-edu/content/msg/classes一致。