Files
Edu/docs/architecture/issues/contracts/data-ana_contract.md
SpecialX faaaf29f67 docs: ai 协作文档体系重构与多 ai 仲裁结果落地
1.AI 协作文档体系重构(objections/worklines/contracts+matrix.md)

2.coord 仲裁文档(final-decisions/cross-review/final-rulings/orchestration)

3.各服务 01/02 文档补全

4.共享包初始化(shared-ts/shared-go/hooks/ui-components/ui-tokens)

5.Proto 契约补全

6.004 架构影响地图更新

7.端口分配表

8.设计规格文档
2026-07-10 12:58:22 +08:00

7.0 KiB
Raw Blame History

data-ana 对接契约

负责人ai11 关联:matrix.mdanalytics.protoevents.proto


§1 我提供什么(对外接口)

1.1 gRPC 接口(如有)

Service RPC 请求 响应 端口
AnalyticsService GetClassPerformance GetClassPerformanceRequest ClassPerformance 50055
AnalyticsService GetStudentWeakness GetStudentWeaknessRequest StudentWeakness 50055
AnalyticsService GetLearningTrend GetLearningTrendRequest LearningTrend 50055
AnalyticsService GetTeacherDashboard GetTeacherDashboardRequest TeacherDashboard 50055
AnalyticsService GetStudentDashboard GetStudentDashboardRequest StudentDashboard 50055
AnalyticsService GetParentDashboard GetParentDashboardRequest ParentDashboard 50055
AnalyticsService GetAdminDashboard GetAdminDashboardRequest AdminDashboard 50055
AnalyticsService GetWarningList GetWarningListRequest WarningListResponse 50055
AnalyticsService TriggerWarning TriggerWarningRequest TriggerWarningResponse 50055
AnalyticsService GetMasteryDistribution GetMasteryDistributionRequest MasteryDistribution 50055
AnalyticsService GetStudentMastery GetStudentMasteryRequest StudentMastery 50055
AnalyticsService SubscribeMasteryUpdate SubscribeMasteryUpdateRequest stream MasteryUpdateEvent 50055

1.2 HTTP 端点(如有)

无对外 HTTP 端点,仅 gRPC含 1 个 Server Streaming RPC

1.3 GraphQL schema如 BFF

不适用。

1.4 Kafka 事件发布(如有)

Topic Event 消费方
edu.data_ana.mastery.events MasteryEventaction: mastery.updated/warning.triggered core-edu / msg

MasteryEvent 豁免 Outbox 模式(派生数据事件,见 004 §12.2 + §15.3 #6

1.5 错误码前缀

DATA_ANA_(如 DATA_ANA_DASHBOARD_UNAVAILABLE、DATA_ANA_MASTERY_NOT_COMPUTED


§2 我消费什么(依赖上游)

2.1 gRPC 调用(同步)

无主动 gRPC 调用上游。data-ana 通过 CDC + Kafka 事件接收数据,计算后发布 MasteryEvent。

2.2 Kafka 事件订阅(异步)

Topic Event 发布方 mock 策略
edu.exam.events ExamEvent core-edu (ai08) core-edu 就绪前使用 CDC 模拟数据 + 本地 stub 事件
edu.homework.events HomeworkEvent core-edu (ai08) 同上
edu.grade.events GradeEvent core-edu (ai08) 同上
edu.class.events ClassEvent core-edu (ai08) 同上
edu.content.knowledge_point.events KnowledgePointEvent content (ai09) content 就绪前使用内置知识点维度表
edu.content.question.events QuestionEvent content (ai09) content 就绪前忽略
edu.ai.usage.events AIUsageEvent ai (ai12) ai 就绪前忽略AI 用量统计为空

2.3 HTTP 调用(如有)

无。

2.4 CDC 数据源(补充)

数据源 用途 mock 策略
core-edu MySQLexams/homework/grades/attendance 表) Debezium CDC → Kafka 同步读模型 core-edu 就绪前使用 ClickHouse 内置模拟数据集30 学生 × 5 考试 × 10 作业)

§3 就绪信号

3.1 我依赖的上游就绪标志

  • core-edu gRPC 50053 启用ai08—— 业务事件 + CDC 数据源
  • edu.exam.events / edu.homework.events / edu.grade.events / edu.class.events topic 有事件发布ai08
  • content gRPC 50054 启用ai09—— 知识点维度
  • edu.content.knowledge_point.events topic 有事件发布ai09
  • ai gRPC 50057 启用ai12—— AI 用量统计(可选,仪表盘补全)

3.2 我的就绪标志(供下游消费)

  • data-ana gRPC 50055 启用HealthService.Check 返回 SERVING
  • AnalyticsService 12 RPC 可调用(含 4 端 Dashboard + Server Streaming SubscribeMasteryUpdate
  • GetTeacherDashboard / GetStudentDashboard / GetParentDashboard / GetAdminDashboard 返回结构化数据
  • edu.data_ana.mastery.events topic 可发布mastery.updated / warning.triggered

§4 Mock 策略

4.1 我提供的 mock

在 data-ana 真实服务就绪前为下游teacher-bff / student-bff / parent-bff / admin-portal / msg提供以下 mock

  • gRPC mock:使用 grpc-mock 拦截 50055 端口
    • GetTeacherDashboard 返回固定仪表盘total_classes=3, class_avg_score=82.5, top_students 5 个, pending_homework_count=8
    • GetStudentDashboard 返回固定仪表盘avg_score=85.0, class_rank=5, weak_points 3 个)
    • GetParentDashboard 返回固定仪表盘child_avg_score=85.0, child_class_rank=5
    • GetAdminDashboard 返回固定仪表盘total_teachers=50, total_students=1200, school_avg_score=80.0
    • GetWarningList 返回固定 5 条预警severity: warning/critical
    • GetMasteryDistribution 返回固定分布mastered=20, progressing=7, weak=3
    • SubscribeMasteryUpdate 返回固定流(每 5 秒推 1 个 MasteryUpdateEvent
  • Kafka mockdata-ana 就绪前不发布真实 MasteryEventmsg 使用本地 stub 预警

4.2 我消费的 mock

在真实上游就绪前data-ana 使用以下 mock

  • 业务数据ClickHouse 内置模拟数据集30 学生 × 5 考试 × 10 作业 × 30 天出勤),不依赖 core-edu CDC
  • 知识点维度:内置固定知识点表(数学 50 个知识点),不依赖 content 事件
  • AI 用量AIUsageEvent 为空,仪表盘 AI 用量区块显示"暂无数据"
  • CDC 通道core-edu 就绪前 Debezium 不启动,使用 ClickHouse 批量导入模拟数据