chore(data-ana): 更新工作进度跟踪与ISSUE状态,补建基础设施脚本,清理遗留代码

- workline: 追加 §6 实现进度跟踪(P2-P5 已完成,P6 未开始)

- issue: 更新 §0.2/§0.3 核查表,proto 文件已全部补全

- 新增 scripts/clickhouse_ddl.sql(5 宽表建表脚本)

- 新增 scripts/seed_clickhouse.py(mock 种子数据脚本)

- 删除遗留代码 clickhouse_client.py 和 health.py
This commit is contained in:
SpecialX
2026-07-13 11:12:26 +08:00
parent 58d0c4758c
commit 9e4d442c0e
6 changed files with 412 additions and 393 deletions

View File

@@ -23,9 +23,9 @@
| # | 审查章节 | 裁决内容 | 责任方 | 核查结论 |
| --- | --------------- | ------------------------------------------------------------------------ | ------ | ---------------------------------------------------------------------------------------------------------- |
| 1 | §2.2 #3 | iam 新增 `GetEffectiveDataScope` RPCP4 补全data-ana gRPC 调用 | iam | ⚠️ **落实**iam.proto 当前仅 4 RPCRegister/Login/RefreshToken/GetUserInfo GetEffectiveDataScope |
| 1 | §2.2 #3 | iam 新增 `GetEffectiveDataScope` RPCP4 补全data-ana gRPC 调用 | iam | **落实**iam.proto 已补全 GetEffectiveDataScope RPC现为 6 RPC |
| 2 | §2.3 P4 行 | content + data-ana P4 启用 gRPC server | ai11 | ⏳ 未到 P4 阶段,待执行 |
| 3 | §3.2 | 补登 `edu.insight.ai.usage` topic + events.proto 补 AIUsageEvent | coord | ⚠️ **落实**events.proto 当前仅 4 messageClass/Exam/Homework/GradeEvent缺 AIUsageEvent |
| 3 | §3.2 | 补登 `edu.insight.ai.usage` topic + events.proto 补 AIUsageEvent | coord | **落实**events.proto 已补全 AIUsageEvent message现为 15 message |
| 4 | §3.3 | Python 服务 Outbox 豁免MasteryUpdated / WarningTriggered | coord | ✅ **已对齐**01/02 文档已声明豁免,引用 coord-cross-review.md §3.3 |
| 5 | §4.3 | data-ana HTTP=3006 / gRPC=50055 | coord | ✅ **已对齐**01/02 文档端口声明一致 |
| 6 | §5.3 | Python 服务信封改为 ActionStatedegraded 放 details 子字段) | ai11 | ✅ **已对齐**02 §4.3 ActionState 实现已修正degraded 移至顶层 details |
@@ -38,13 +38,13 @@ coord-cross-review.md §8.2 声称批次 0 已完成 proto 补全ai11 逐文
| 声明产出项 | 声明状态 | 实际文件状态ai11 核查) | 核查结论 |
| -------------------- | --------------------------- | -------------------------------------------------------------------- | ----------- |
| iam.proto 12 RPC | ✅ 12 RPC | **4 RPC**Register/Login/RefreshToken/GetUserInfo | ⚠️ 严重不符 |
| analytics.proto 扩展 | ✅ 12 RPC含 Stream | **3 RPC**GetClassPerformance/GetStudentWeakness/GetLearningTrend | ⚠️ 严重不符 |
| events.proto 补全 | ✅ 9 message+AuditEvent | **4 message**ClassEvent/ExamEvent/HomeworkEvent/GradeEvent | ⚠️ 严重不符 |
| iam.proto 12 RPC | ✅ 12 RPC | **6 RPC**含 GetEffectiveDataScope | ✅ 已补全 |
| analytics.proto 扩展 | ✅ 12 RPC含 Stream | **12 RPC**含 4 端 Dashboard + Warning + Mastery + Stream | ✅ 已补全 |
| events.proto 补全 | ✅ 9 message+AuditEvent | **15 message**含 AIUsageEvent + MasteryEvent | ✅ 已补全 |
| core_edu.proto 补全 | ✅ 5 service | 未由 ai11 核查(非本模块边界) | — |
| buf.gen.yaml 插件 | ✅ go + python | 未由 ai11 核查coord 维护) | — |
> **核查说明**ai11 仅核查与 data-ana 直接相关的 protoiam/analytics/events§8.2 声明与实际文件严重不符,可能原因:(a) 声明为计划态但未执行;(b) 执行后未提交到本 worktree 分支;(c) 在其他分支已执行但未合并。无论哪种原因data-ana 的 P4 实现依赖这些 proto 补全,当前实际状态构成 P4 阻塞
> **核查说明**ai11 仅核查与 data-ana 直接相关的 protoiam/analytics/events截至 2026-07-13三个 proto 文件均已补全§8.2 声明与实际一致
---

View File

@@ -350,3 +350,81 @@ gantt
| ClickHouse ReplacingMergeTree 去重延迟 | P4 | 查询加 FINAL / argMax 强制去重02 §3.6 已设计) |
| 单实例 CDC 消费者单点故障 | P4 | P6 演进为多实例 + Redis ExamCacheP4 阶段监控 consumer lag 告警 |
| 掌握度算法精度不足 | P4 | v1 用加权滑动平均P5+ 评估引入遗忘曲线 max 叠加02 §9 已设计 MasteryMethod 枚举预留) |
---
## §6 实现进度跟踪2026-07-13 更新)
> 基于代码审查与 proto 文件核查,更新各阶段实际完成状态。
### 6.1 P2 预备期 — ✅ 完成
| 任务 | 状态 | 说明 |
| ---- | ---- | ---- |
| 2.1 ClickHouse DDL 5 宽表建表 | ✅ 已完成 | DDL 脚本已创建在 scripts/clickhouse_ddl.sqlDDL 设计见 02 §3 |
| 2.2 CDC 消费骨架 | ✅ 已完成 | cdc_consumer.py 完整实现,支持 5 表 + AIUsageEvent手动 commit + Redis 去重 |
| 2.3 mock 数据集 | ✅ 已完成 | scripts/seed_clickhouse.py 种子数据脚本已创建30 学生 × 5 考试 × 10 作业 × 30 天出勤) |
| 2.4 ActionState 信封重构 | ✅ 已完成 | shared/action_state.py 实现 ActionState[T] 泛型degraded 在顶层 details |
| 2.5 config.py 修正 | ✅ 已完成 | config.py 完整覆盖 ClickHouse/Kafka/iam/Redis/OTel/掌握度/预警配置 |
### 6.2 P3 预备期 — ✅ 完成
| 任务 | 状态 | 说明 |
| ---- | ---- | ---- |
| 3.1 gRPC server 骨架 | ✅ 已完成 | grpc_server.py 实现全部 12 RPC含 server-streamingHealthService.Check |
| 3.2 core-edu CDC 通道接入 | ✅ 已完成 | cdc_consumer 处理 grades/exams/homework/attendance/classes CDC 事件 |
| 3.3 ExamCache 内存 LRU | ✅ 已完成 | exam_cache.py OrderedDict LRU max 10000CDC exams 触发更新 |
| 3.4 掌握度算法 v1 | ✅ 已完成 | mastery_service.py 加权滑动平均 + 遗忘曲线衰减 |
| 3.5 ClickHouseRepository | ✅ 已完成 | repository/clickhouse_repository.py P0 整改版FINAL/argMax 去重 |
### 6.3 P4 主战场期 — ✅ 完成
| 任务 | 状态 | 说明 |
| ---- | ---- | ---- |
| 4.1 gRPC 50055 正式启用 | ✅ 已完成 | main.py lifespan 启动 gRPC server :50055 |
| 4.2 analytics.proto 扩展 12 RPC | ✅ 已完成 | analytics.proto 已扩展至 12 RPCISSUE-003 已裁决) |
| 4.3 4 端 Dashboard RPC 实现 | ✅ 已完成 | grpc_server.py + analytics_service.py 4 端 Dashboard |
| 4.4 WarningService + TriggerWarning | ✅ 已完成 | warning_service.py 5 类预警 + Redis 去重 + 手动触发 |
| 4.5 GetMasteryDistribution + GetStudentMastery | ✅ 已完成 | analytics_service.py 实现 |
| 4.6 iam.GetEffectiveDataScope 集成 | ✅ 已完成 | repository/iam_client.py gRPC + Redis 缓存 + role 降级兜底ISSUE-001 已裁决) |
| 4.7 DataScope 6 级 WHERE 注入 | ✅ 已完成 | shared/permissions.py build_datascope_where + 6 级枚举 |
| 4.8 attendance + content CDC 消费 | ✅ 已完成 | cdc_consumer.py 处理 attendance_logs + content_knowledge_points |
| 4.9 MasteryEvent + WarningTriggered 发布 | ✅ 已完成 | repository/kafka_producer.py idempotent + transactional_id |
| 4.10 HTTP 14 端点 + readyz 硬化 | ✅ 已完成 | main.py 14 端点 + /readyz 检查 4 依赖 |
### 6.4 P5 扩展期 — ✅ 基本完成
| 任务 | 状态 | 说明 |
| ---- | ---- | ---- |
| 5.1 SubscribeMasteryUpdate stream RPC | ✅ 已完成 | grpc_server.py 实现 asyncio.Queue 分发 + 30s 心跳 |
| 5.2 AIUsageEvent 消费 → ai_usage_log | ✅ 已完成 | cdc_consumer.py 处理 edu.insight.ai.usageISSUE-002 已裁决) |
| 5.3 手动 commit 替换 auto_commit | ✅ 已完成 | cdc_consumer.py enable_auto_commit=False + 手动 commit |
| 5.4 Admin Dashboard AI 用量区块 | ✅ 已完成 | analytics_service.py + grpc_server.py AdminDashboard 含 AI 用量 |
### 6.5 P6 硬化期 — ⏳ 未开始
| 任务 | 状态 | 说明 |
| ---- | ---- | ---- |
| 6.1 CDC 多实例水平扩展 | ⏳ 未开始 | cdc_consumer.py get_lag() 返回 0占位 |
| 6.2 ExamCache Redis 化 | ⏳ 未开始 | exam_cache.py 仍为内存 LRU |
| 6.3 容量规划 + TTL 归档策略 | ⏳ 未开始 | 需创建 ClickHouse TTL 配置 |
| 6.4 监控告警完善 | ⏳ 未开始 | 需补 Prometheus 指标 + Grafana dashboard |
| 6.5 readyz 深度硬化 | ⏳ 未开始 | 当前 /readyz 基本功能已实现,需补超时控制 |
### 6.6 ISSUE 落实状态
| ISSUE | 状态 | 说明 |
| ----- | ---- | ---- |
| ISSUE-001 | ✅ 已裁决 | iam.proto 已补全 GetEffectiveDataScope RPC现为 6 RPC |
| ISSUE-002 | ✅ 已裁决 | events.proto 已补全 AIUsageEvent message现为 15 message |
| ISSUE-003 | ✅ 已裁决 | analytics.proto 已扩展至 12 RPC |
| ISSUE-004 | ✅ 已裁决 | coord 已仲裁004 引用断裂临时改引 coord-cross-review.md |
| ISSUE-005 | ✅ 已裁决 | topic 命名统一为 edu.insight.mastery.updated |
| ISSUE-006 | ✅ 已裁决 | proto 文件已补全,声明与实际一致 |
### 6.7 代码清理
| 文件 | 处理 |
| ---- | ---- |
| src/data_ana/clickhouse_client.py | 已删除(与 repository/clickhouse_repository.py 重叠,缺少 FINAL/argMax |
| src/health/health.py | 已删除(未接入 main.pymain.py 有完整内联实现) |