Files
Edu/services/iam
SpecialX 566060fade feat(infra): p6 hardening - observability and deploy compose
- 5 NestJS services add /metrics endpoint via app.getHttpAdapter()
- prometheus.yml scales to 8 services with rule_files and alertmanager
- monitoring compose replaces blackbox with Loki+Promtail
- Grafana datasource adds Loki
- docker-compose.deploy.yml scales to 11 services
- deploy.env.example completes Neo4j/ES/ClickHouse/LLM vars
- teacher-bff adds health.controller
- CI removes continue-on-error on lint step
- teacher-portal lint script changed to eslint src
2026-07-09 10:21:06 +08:00
..

IAM Service

身份与访问管理服务Identity and Access ManagementP2 身份阶段交付。

职责

  • 用户注册 / 登录 / 刷新令牌
  • 角色Role与权限Permission管理
  • Access / Refresh Token 签发与校验
  • 用户信息查询(供 BFF / Gateway 聚合)

技术栈

  • NestJS 10 + TypeScriptESM
  • Drizzle ORM + MySQL
  • bcrypt 密码哈希
  • jsonwebtokenP2 骨架使用 HS256后续切 RS256
  • pino 日志 / prom-client 指标 / OpenTelemetry 链路

端口

默认 3002,通过 PORT 环境变量覆盖。

API

Method Path 说明
POST /iam/register 注册
POST /iam/login 登录
POST /iam/refresh 刷新令牌
GET /iam/me 当前用户信息(需 x-user-id 头)

健康检查

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

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

数据表

iam_users / iam_roles / iam_user_roles / iam_permissions / iam_role_permissions / iam_refresh_tokens