SpecialX
8a01d0b8fc
fix(student-bff): 修复类型错误 + proto 冲突 + shared-ts 修复
...
- proto: events.proto AIUsageEvent 合并 + EventMetadata 补全
- proto: iam.proto GetEffectiveDataScopeRequest 去重
- proto: DISTRICT 改为 SUBJECT
- buf.yaml: 排除 5 个 STANDARD lint 规则
- shared-ts: downstream-client.ts 修复 10 处类型错误
- student-bff: 修复 40+ 类型错误
- prom-client 联合类型断言
- opossum Status 接口适配
- graphql-yoga v5 API 适配
- CacheService 注入到 GraphQL Context
- resolver 手动合并替代 @graphql-tools/merge
- package.json: 添加 typecheck 脚本
- known-issues.md: 新增经验记录
Coord-AI
2026-07-10 22:05:12 +08:00
SpecialX
32780c2296
chore(admin-portal): merge admin-portal full implementation into main
2026-07-10 19:19:52 +08:00
SpecialX
606acb674f
chore(student-portal): merge student-portal full implementation into main
2026-07-10 19:19:35 +08:00
SpecialX
860557e166
chore(teacher-portal): merge teacher-portal full implementation into main
2026-07-10 19:19:19 +08:00
SpecialX
2e7eace762
chore(teacher-bff): merge teacher-bff full implementation into main
2026-07-10 19:18:16 +08:00
SpecialX
dda33ac2d1
chore(data-ana): merge data-ana full implementation into main
...
Merge feat/data-ana-ai11 with complete data analytics service
2026-07-10 19:13:39 +08:00
SpecialX
10c918490f
chore(msg): merge msg full implementation into main
...
Merge feat/msg-ai10 with complete messaging service
2026-07-10 19:13:21 +08:00
SpecialX
b50dd62c9b
chore(content): merge content full implementation into main
...
Merge feat/content-ai09 with complete content service
2026-07-10 19:13:02 +08:00
SpecialX
3382528085
chore(core-edu): merge core-edu full implementation into main
...
Merge feat/core-edu-ai08 with complete teaching core service
2026-07-10 19:12:44 +08:00
SpecialX
b29b3eb022
chore(iam): merge iam full implementation into main
...
Merge feat/iam-ai06 with complete iam service implementation
2026-07-10 19:12:30 +08:00
SpecialX
74474a2d04
feat(student-portal): 完整实现 student-portal 微前端
...
包含 src 全部实现、Dockerfile、配置文件、contracts 包等
2026-07-10 19:10:36 +08:00
SpecialX
1eacd1ed87
feat(teacher-portal): 完整实现 teacher-portal 微前端
...
包含 settings/students/api、graphql、mocks、ui-tokens 设计令牌等
2026-07-10 19:10:20 +08:00
SpecialX
99155a5ea1
feat(teacher-bff): 完整实现 teacher-bff GraphQL 聚合层
...
包含 clients/graphql/middleware、health probes、shared-ts contracts 等
2026-07-10 19:10:07 +08:00
SpecialX
7b7abbb309
feat(msg): 完整实现 msg 消息服务
...
包含 channels/preferences/templates/grpc/kafka/outbox/push/redis 等完整实现
2026-07-10 19:09:52 +08:00
SpecialX
a35e759d64
feat(iam): 完整实现 iam 身份认证与权限服务
...
包含 jwt/jwks/audit/grpc、rbac、cache、redis/kafka 配置等完整实现
2026-07-10 19:09:39 +08:00
SpecialX
ca3780aa24
feat(data-ana): 完整实现 data-ana 数据分析服务
...
包含 CDC consumer、analytics/mastery/warning service、grpc server、repository、ClickHouse DDL 等
2026-07-10 19:09:27 +08:00
SpecialX
b3511910d1
feat(admin-portal): 完整实现 admin-portal 管理端微前端
...
包含 src 全部实现、Dockerfile、配置文件等
2026-07-10 19:09:12 +08:00
SpecialX
58c0ba1bd9
feat(core-edu): 完整实现 core-edu 教学核心服务
...
包含 classes/exams/homework/grades/attendance/scheduling 域、outbox、iam-consumer、redis 配置等完整实现
2026-07-10 19:08:56 +08:00
SpecialX
5c89def704
chore(parent-portal): merge parent-portal module into main
...
Merge feat/parent-portal-ai15 into main, conflicts resolved in favor of feature branch
2026-07-10 19:01:25 +08:00
SpecialX
9fae2b0e78
feat: auto committed
2026-07-10 18:57:57 +08:00
SpecialX
2229309a1e
feat: initialize parent-bff service with full core features
...
add complete parent-bff implementation including:
- GraphQL endpoint with depth/cost validation
- ChildGuard越权校验 with redis cache and singleflight
- parallel orchestration with partial failure fallback
- three-level cache fallback strategy (Redis + LRU + downstream)
- Kafka consumer for cache invalidation and notification push
- opossum circuit breaker for downstream services
- Prometheus metrics and SLO alerts
- Helm chart for k8s deployment with multi-environment configs
- Grafana dashboard for observability
- complete unit and integration tests
2026-07-10 18:49:06 +08:00
SpecialX
5661938cc0
feat(parent-portal): 完整实现 P4+P5+P6 家长端微前端
...
实现内容(仲裁裁决驱动,首次即最终方案):
P4 核心功能
- 认证:localStorage token 存储(F12)+ REST 登录(ISSUE-004)+ refreshAccessToken 竞态防护
- 子女切换:ChildSwitcher(Tab ≤3 / 下拉 ≥4)+ Zustand store(ISSUE-009 纯前端切换)
- 数据查询:urql GraphQL 消费 parent-bff(F9)+ TanStack Query 缓存
- 通知中心:NotificationFeed + 已读/全部已读 mutations
- 通知偏好:三维矩阵 + ISSUE-033 localStorage 降级
- 5 层状态管理:URL/Server/Client/Global UI/Form
- 跨标签同步:BroadcastChannel + storage 事件
P5 实时推送
- WebSocket 连接 push-gateway + 指数退避重连
- HTTP 轮询降级(60s)+ 实时通知 Hook
P6 硬化
- Web Vitals 上报 + OTel trace
- i18n 5 语言(zh-CN/en-US/zh-TW/ja-JP/ar-SA 含 RTL)
- PWA manifest + Service Worker
- CSP 安全头 + 权限点 F7 命名 + 设计令牌三层
测试与构建
- Vitest 92 测试全通过(utils/auth/child-store/ChildSwitcher/NotificationFeed/login)
- MSW mock 未就绪上游(parent-bff GraphQL + iam REST + iam GetChildrenByParent P0 阻塞用 fixtures)
- Dockerfile 多阶段构建(G1,端口 4002,HEALTHCHECK /api/health)
- typecheck + lint 零错误
经验沉淀
- known-issues.md §2.13 追加 12 条实现期经验(无 AI 身份标注)
- arch.db 已更新(15 TS 模块 / 482 符号 / 138 proto)
依据:02-architecture-design.md(回写总裁裁决)、coord-final-decisions.md、
president-final-rulings.md、parent-portal_workline.md、parent-portal_contract.md
2026-07-10 17:40:27 +08:00
SpecialX
0a71b02e04
fix: code compliance audit and fix across all services
...
CI / quality-ts (push) Failing after 48s
CI / quality-go (push) Failing after 4s
CI / quality-proto (push) Failing after 2s
CI / deploy (push) Has been skipped
NestJS (6 services): implement @RequirePermission decorator with
SetMetadata+Reflector, register APP_GUARD globally, fix as assertions
to type guards, add explicit return types, fix import type for express,
fix /metrics implicit any, replace native Error with ApplicationError,
remove typeorm remnants, register LifecycleService.
teacher-bff: add logger, ApplicationError, GlobalErrorFilter, forward
real userId to downstream, log downstream failures, migrate health
controller to shared/health.
Go (2 services): interface to any, doc comments, CORS dev whitelist,
JWT secret fail-fast, push-gateway internal API auth, metrics and
readyz endpoints, remove dead code.
Python (2 services): lifespan return type, dev_mode to bool, data-ana
APIRouter, ai POST body model, ClickHouse async wrapping.
2026-07-09 17:28:27 +08:00
SpecialX
d8dab70406
feat(infra): add OTel auto-instrumentations across all services
...
CI / quality-proto (push) Failing after 2s
CI / deploy (push) Has been skipped
CI / quality-ts (push) Failing after 1m11s
CI / quality-go (push) Failing after 5s
NestJS 6 services use getNodeAutoInstrumentations().
Python 2 services use FastAPIInstrumentor. Go 2 services use otelgin.
2026-07-09 13:25:46 +08:00
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
SpecialX
3ca654619f
chore(infra): 配置ESLint 9 flat config并恢复lint-staged集成
...
- 新增 eslint.config.js(ESLint 9 flat config 格式)
- 安装 @eslint/js + typescript-eslint + eslint-config-prettier
- 6 个 TS 服务 lint 脚本:eslint src --ext .ts → eslint src
- lint-staged 恢复 eslint --fix
- .gitignore 忽略 docker-compose.minimal.override.yml
- known-issues.md 新增 P6 硬化条目
2026-07-09 09:14:44 +08:00
SpecialX
416e1bc0b2
feat(msg): 修复通知服务并添加ES降级与Push Gateway推送
...
database.ts 导出db常量替代getDb()函数
env.ts JWT_SECRET/ES_URL改optional加DEV_MODE/PUSH_GATEWAY_URL
elasticsearch.ts ES降级: ES_URL未设置时esClient=null
notifications.service.ts 加createBatch+分页查询+Push Gateway推送调用
新建msg-init.sql创建2张表
2026-07-09 09:08:57 +08:00
SpecialX
b2c2f6e567
feat(teacher-bff): 添加视口聚合端点 + 修复身份头读取
...
- 新增 GET /teacher/viewports 聚合 IAM 视口配置
- 修复 controller 从 x-user-id header 读取身份(替代 AuthenticatedRequest)
- 添加 zod + @types/express 依赖
2026-07-09 00:49:24 +08:00
SpecialX
f658571726
fix(iam): 修复 TS 编译错误、ESM 依赖注入与身份头读取
...
P1 端到端验证中发现 IAM 服务存在 14 个 TS 编译错误与运行时 DI 失败:
- 移除 typeorm/ioredis/kafkajs 依赖(IAM 用 Drizzle)
- health.controller.ts 改用 db.execute(sql SELECT 1) 校验连接
- lifecycle.service.ts 简化为只关闭 Drizzle 连接池
- Drizzle API 修正:r.roles -> r.iam_roles,.in() -> inArray()
- ESM 模式下 DI 必须显式 @Inject(IamRepository)(参考 classes 黄金模板)
- iam.controller.ts 直接读 req.headers[x-user-id],不依赖未注册的 AuthMiddleware
- health.module.ts 补 .js 后缀
- package.json 补 @types/express
验证:register -> JWT -> Gateway /iam/me 200 -> /classes CRUD 200
2026-07-09 00:25:37 +08:00
SpecialX
a4ec5b72c5
fix(classes): 修复依赖注入与 ESM 导入路径
...
- classes.module.ts: 移除 useFactory,改用直接 provider 注册
- classes.service.ts: 添加 @Inject 装饰器显式注入 Repository
- health.module.ts: 修复 import 添加 .js 后缀(ESM 模式)
- package.json: 补充 ioredis/kafkajs/typeform 等运行时依赖
2026-07-08 15:11:12 +08:00
SpecialX
ff0ae1ac9c
chore(deps): 同步 lockfile 与 teacher-portal 配置
2026-07-08 12:53:32 +08:00