Files
Edu/docs/modules/data-ana
SpecialX 2ba4250165
Some checks failed
CI Go / test (push) Has been cancelled
CI Proto / lint (push) Has been cancelled
CI Python / test (push) Has been cancelled
CI TypeScript / test (push) Has been cancelled
feat(p1): complete P1 foundation stage
- monorepo: pnpm workspace + go.work + pyproject.toml + commitlint/husky
- infra: docker-compose (minimal + full profiles) + init-sql + prometheus
- arch-scan: multi-language scanner skeleton (TS/Go/Python/Proto)
- shared-proto: buf v2 + classes.proto (ClassService CRUD contract)
- api-gateway: Go/Gin + JWT HS256 auth + reverse proxy + request ID
- classes: NestJS golden template (error system + observability + middleware + CRUD + tests)
- teacher-portal: Next.js + paper-feel UI design system
- CI/CD: 4 workflows (go/ts/py/proto)
- docs: migration guide + project_rules + coding-standards + git-workflow + ui-design-system + 004 + 9 module READMEs + known-issues + spec/plan migration + roadmap
2026-07-07 23:39:37 +08:00
..

data-ana 数据分析服务

版本0.1(骨架) 日期2026-07-07 状态P4 待交付 关联文档:架构影响地图


1. 模块职责

data-ana 是数据分析限界上下文Python 实现),管理 Report、Mastery、Dashboard 聚合。 消费 core-edu 与 content 的领域事件,构建 ClickHouse 学情宽表,计算知识点掌握度。 对外提供学情仪表盘查询、班级/年级/学校维度报表、个性化推荐数据支撑。


2. 技术栈

类别 技术 版本 用途
语言 Python 3.12+ 数据分析
框架 FastAPI 0.110+ 异步 API
ORM SQLAlchemy 2.x ClickHouse 查询
分析库 ClickHouse - 学情宽表、实时聚合
任务 Celery 5.x 异步计算任务
校验 pydantic 2.x 运行时校验
追踪 OpenTelemetry - 分布式追踪

3. 架构图

graph TB
    BFF[BFF 聚合层] -->|gRPC| ANA[data-ana 服务]
    K[(Kafka)] -->|消费事件| ANA
    ANA --> PROJ[Projection<br/>事件 → ClickHouse]
    ANA --> CALC[MasteryCalculator<br/>掌握度计算]
    ANA --> RPT[ReportGenerator<br/>报表生成]
    ANA -->[(ClickHouse<br/>学情宽表)]
    ANA -.事件.-> K2[(Kafka<br/>edu.insight.mastery.updated)]

待 P4 交付时补充完整的分层架构图与事件消费管线图。


4. 核心流程图

sequenceDiagram
    participant K as Kafka
    participant ANA as data-ana
    participant CH as ClickHouse
    participant BFF as BFF

    K->>ANA: edu.teaching.grade.recorded
    ANA->>ANA: Projection 写入宽表
    ANA->>ANA: 触发掌握度计算Celery
    ANA->>CH: 更新 mastery 表
    ANA->>K: 发布 edu.insight.mastery.updated
    BFF->>ANA: gRPC GetDashboard(studentId)
    ANA->>CH: 查询宽表聚合
    ANA-->>BFF: DashboardDTO

待 P4 交付时补充报表生成流程、掌握度算法流程、CDC 同步流程。


5. 对外契约

  • gRPC 服务DashboardService、MasteryService、ReportService待 P4 定义 protobuf
  • 消费事件edu.teaching.*edu.content.*
  • 发布事件edu.insight.mastery.updated
  • ClickHouse 宽表student_wide_table、mastery_table、exam_analysis_table

待 P4 交付时补充完整 protobuf 定义与宽表 schema。


6. 依赖关系

  • 上游teacher-bff、student-bff、parent-bff、aigRPC 查询学情)
  • 下游ClickHouse、Kafka消费与发布、Celery异步任务
  • 跨服务:消费 core-edu/content 事件;发布掌握度事件被 core-edu 消费触发推荐

7. 架构约束

  1. 查询必须走 ClickHouse 宽表,禁止实时计算
  2. 事件消费必须幂等,基于 event_id 去重
  3. 掌握度计算必须异步Celery不阻塞事件消费
  4. 宽表查询响应时间 ≤ 5 秒

待 P4 交付时补充完整约束清单。


8. 架构决策

待 P4 交付时补充 ADR 记录预计包括Python+FastAPI 选型、ClickHouse 选型、Celery 异步框架选型、掌握度算法选型。