Files
K12Study/docs/plan/课程学习-习题-批改ER与对象类数据流图实施计划.md

45 lines
5.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 课程学习-习题-批改ER与对象类数据流图实施计划
问题陈述
基于现有《AI智能学习系统功能清单》与现有架构图在不纳入 AI 实现细节的前提下,先完成“课程学习、习题、批改”三条主链路的抽象建模,产出可直接指导后续代码与数据库落地的模块化 ER 图与对象类数据流图(每模块一个目录、两个 drawio 文件)。
## 当前状态(已核实)
* 现有 `docs/architecture/数据流图(多角色).drawio (1-158)` 已定义 P1-P7 过程与 D1-D6 数据存储,但把 AI 处理作为主链路节点之一,需要按新范围裁剪为“无 AI 依赖的批改主链路”。
* 现有 `docs/architecture/系统架构与代码架构.drawio (1-260)` 已给出分层和目标服务域(如 homework-content、grading-orchestrator 等),但仓库当前可运行模块仍以骨架为主。
* 后端现有聚合模块为 `common/apis/ai-client/auth/upms/gateway/boot-dev``backend/pom.xml (13-21)`),尚未落地课程/习题/批改独立业务模块。
* 数据库当前已落地的核心表主要是组织权限与认证、AI占位`init/pg/upms/10_create_upms_tables.sql (1-153)``init/pg/auth/10_create_auth_tables.sql (1-56)``init/pg/ai/10_create_ai_tables.sql (1-47)`;尚无课程、题库、作业、提交、批改结果等业务实体。
* `auth`/`upms` 服务当前仍以示例返回为主(`backend/auth/src/main/java/com/k12study/auth/service/AuthService.java (1-66)``backend/upms/src/main/java/com/k12study/upms/service/UpmsQueryService.java (1-111)`),说明本次需要先补齐领域建模图,再推进代码实现。
## 目标范围与输出目录
* 范围仅覆盖:课程学习、习题(题库/作业/提交)、批改(规则批改+教师复核+结果反馈)。
* 明确不纳入AI 子系统实现细节OCR/LLM/ASR/模型编排)。
* 统一输出根目录:`docs/architecture/modules/`
* 每模块目录固定包含:`er图.drawio``数据流图.drawio`
* 模块目录规划:
* `docs/architecture/modules/00-组织与权限上下文/`
* `docs/architecture/modules/01-课程学习/`
* `docs/architecture/modules/02-习题与作业/`
* `docs/architecture/modules/03-批改与反馈/`
## 方案设计ER + 对象类数据流图)
* 00-组织与权限上下文(复用现有 upms/auth
* ER 聚焦租户、部门、用户、角色、权限、登录态对业务域的外键约束与数据隔离键(`adcode/tenant_id/tenant_path/dept_id/dept_path`)。
* 数据流图仅保留“身份鉴权、租户路由、权限校验”对象类交互,作为其它模块前置边界。
* 01-课程学习
* ER 规划课程主数据与学习行为:课程、章节、课时、知识点、课程资源、标签、课程-标签关联、学习会话、学习进度。
* 数据流图采用“学生/教师/机构管理员 -> Boundary(前端/API) -> Control(课程编排/进度服务) -> Entity(课程与进度聚合)”表达。
* 02-习题与作业
* ER 规划题库与作业域:题目、题目版本、题目-知识点关联、试卷、试卷题目、作业、作业发布对象、作业提交、题目作答明细。
* 数据流图区分教师发布链路与学生作答链路,明确命令流(发布/提交)与查询流(拉题/看作业)。
* 03-批改与反馈
* ER 规划批改闭环:批改任务、批改规则、客观题判分、主观题复核、评分明细、错因标签、错题沉淀、复习任务。
* 数据流图体现“自动规则判分 + 教师复核”双通道,不依赖 AI预留抽象接口节点GradingEnginePort用于未来替换实现。
## 采用的设计方法与原因
* DDD 限界上下文:将课程、习题作业、批改反馈分域,避免单一大模型导致职责耦合与演进困难。
* 聚合根与不变量建模:以“作业、提交、批改任务”为聚合根,保证状态转换与评分一致性在事务边界内成立。
* 状态机建模:对作业(草稿/已发布/已截止)与批改任务(待处理/处理中/待复核/已完成)建状态流,减少流程分支歧义。
* CQRS读写分离思路发布、提交、批改等写操作与学情统计、作业列表等读模型分离适配高并发查询场景。
* 事件驱动与Outbox预留提交后触发批改、批改后触发错题沉淀/复习任务,降低模块同步耦合并提高可扩展性。
* 多租户路由键统一:所有核心业务实体强制带租户/组织路径字段,保持与现有 upms 路由策略一致。
## 实施阶段与验收标准
* 第一阶段:建立统一 drawio 模板(图例、命名规范、主键/外键/基数标注规范、同步/异步箭头规范)。
* 第二阶段:完成 4 个模块目录与 8 个 drawio 文件,先 ER 后对象类数据流图,确保跨模块实体引用一致。
* 第三阶段做跨图一致性校验实体命名、状态枚举、事件名、租户字段、API对象名并补充“代码落地映射”注释对应未来 backend 模块与 init/pg 子目录)。
* 验收标准:每个模块必须同时具备 ER 与对象类数据流图ER 图必须标明主外键、基数、关键索引与租户字段;数据流图必须标明 Actor/Boundary/Control/Entity 与关键输入输出对象。