结构更新

This commit is contained in:
2026-04-20 10:39:36 +08:00
parent 82d1c5c3cd
commit 8942df1c02
8 changed files with 17 additions and 75 deletions

View File

@@ -25,7 +25,7 @@
- 完成核心业务域数据模型定版,确保接口与代码开发有稳定数据契约。
- 关键任务
- 梳理多租户基础域tenant/dept/user/role/menu
- 梳理课程域、题目与批改域、成就与推荐域、AI 知识域的数据关系。
- 梳理课程域、题目与批改域、成就域、AI 知识域的数据关系。
- 定义 SQL 执行顺序、索引策略、跨 schema 依赖约束。
- 验收产物
- `docs/architecture/er-diagram.md`

View File

@@ -62,14 +62,7 @@
- `GET /api/achievement/users/{userId}/records`
- `GET /api/achievement/users/{userId}/progress`
- `POST /api/achievement/events/trigger`
### 3.4 推荐域recommendation
- `POST /api/recommendation/tasks`
- `GET /api/recommendation/tasks/{taskId}/items`
- `POST /api/recommendation/items/{itemId}/feedback`
- `GET /api/recommendation/effects/daily`
### 3.5 AI 知识域ai
### 3.4 AI 知识域ai
- `POST /api/ai/knowledge/files`
- `POST /api/ai/knowledge/files/{fileId}/sync`
- `GET /api/ai/knowledge/sync-tasks/{taskId}`
@@ -78,5 +71,5 @@
## 4. API 阶段交付映射
- M3`auth + upms + file/message 基础扩展`
- M5`course + question + achievement + recommendation + ai`
- M5`course + question + achievement + ai`
- M6前后端按冻结 API 完成联调,不新增破坏性变更。

View File

@@ -3,7 +3,7 @@
- 基础域:租户、组织、用户、角色、菜单、文件。
- 课程域:课程、章节、学习节点、知识点、学习进度。
- 习题与批改域:题库、试卷、作业、提交、批改、错题与复习。
- 成就与推荐域:成就定义、用户成就、推荐任务、反馈、学习闭环。
- 成就域:成就定义、用户成就与学习激励闭环。
- AI 知识域:知识文件、同步任务、图谱实体/关系。
## 2. 核心关系图(基础域 + 教学主链路)
@@ -34,8 +34,6 @@ erDiagram
USER_ACHIEVEMENT }o--|| ACHIEVEMENT : awarded
USER_ACHIEVEMENT }o--|| SYS_USER : owner
RECOMMENDATION_TASK ||--o{ RECOMMENDATION_ITEM : produces
RECOMMENDATION_ITEM ||--o{ RECOMMENDATION_FEEDBACK : receives
```
## 3. AI 知识域关系图
@@ -72,6 +70,6 @@ erDiagram
- `init/pg/ai/10_create_ai_tables.sql`
## 6. 设计建议
- 保持跨域依赖单向:`course/question/achievement/recommendation` 通过 `upms` 提供的主体信息关联。
- 保持跨域依赖单向:`course/question/achievement` 通过 `upms` 提供的主体信息关联。
- 涉及 AI 知识检索的数据优先走异步同步表,避免在线写链路阻塞。
- 复杂业务报表优先通过事实表/汇总表落地,避免线上实时多表大 join。

View File

@@ -11,7 +11,7 @@
- `ai-client`Java 侧 AI 适配)
- `python-ai`AI 处理服务)
- 业务域层(规划中)
- `course``question``achievement``recommendation`
- `course``question``achievement`
- 数据与基础设施层
- PostgreSQL多 schema
- Redis缓存、会话、热点
@@ -30,21 +30,18 @@ graph TD
GW --> COURSE[Course Service]
GW --> QUESTION[Question Service]
GW --> ACHIEVE[Achievement Service]
GW --> REC[Recommendation Service]
AUTH --> PG[(PostgreSQL)]
UPMS --> PG
COURSE --> PG
QUESTION --> PG
ACHIEVE --> PG
REC --> PG
AUTH --> REDIS[(Redis)]
UPMS --> REDIS
COURSE --> REDIS
QUESTION --> REDIS
ACHIEVE --> REDIS
REC --> REDIS
QUESTION --> AICLIENT[AI Client]
AICLIENT --> PYAI[Python AI]
@@ -63,7 +60,7 @@ graph TD
- 教师发作业:题库/试卷/作业配置 -> 投放班级。
- 学生提交:答题内容 + 文件(可选)。
- 批改流程:自动批改 + 人工复核 -> 成绩汇总 -> 错题沉淀。
- 复习与推荐:复习计划 -> 推荐内容 -> 用户反馈 -> 闭环效果
- 复习闭环:复习计划 -> 复习执行 -> 效果回写
- 成就激励:事件触发 -> 规则命中 -> 成就发放/进度更新。
### 3.3 AI 知识链路

View File

@@ -1,7 +1,7 @@
# 问题陈述
`gateway` 从“仅转发 auth/upms 的静态网关”升级为全域统一接入层,负责鉴权透传、租户隔离防线、端侧能力边界控制(尤其小程序学生端)。
## 当前状态(已确认)
* 架构定义中网关应承接 auth/upms/course/question/achievement/recommendation 多域入口。参考 `docs/architecture/logical-view.md (24-41)`
* 架构定义中网关应承接 auth/upms/course/question/achievement/ai 多域入口。参考 `docs/architecture/logical-view.md (24-41)`
* 现有网关路由仅配置 `auth``upms` 两条,且目标地址硬编码 localhost。参考 `backend/gateway/src/main/resources/application.yml (1-30)`
* `JwtRelayFilter` 仅做 token 校验并透传 `X-User-Id/X-Username/X-Display-Name/X-Tenant-Id/X-Dept-Id`。参考 `backend/gateway/src/main/java/com/k12study/gateway/filter/JwtRelayFilter.java (1-79)``backend/common/common-core/src/main/java/com/k12study/common/core/constants/SecurityConstants.java (1-13)`
* API 设计要求对外统一 `/api/*`,且后续需扩展到 course/question/ai。参考 `docs/architecture/api-design.md (1-82)`

View File

@@ -1,11 +1,11 @@
# 问题陈述
`question` 拆分为可演进的习题/作业/批改核心域,并在同一计划中处理错题复习、费曼讲解、推荐闭环与小程序学生端作业可见规则。
`question` 拆分为可演进的习题/作业/批改核心域,并在同一计划中处理错题复习、费曼讲解与小程序学生端作业可见规则。
## 当前状态(已确认)
* 架构与 API 已定义 `question` 为核心业务域,覆盖题库、作业、提交、批改、复习。参考 `docs/architecture/api-design.md (42-61)``docs/architecture/logical-view.md (58-66)`
* 当前后端尚无 `question` 服务代码,能力主要体现在 `init/pg/question` 表结构。参考 `backend/pom.xml (11-20)``init/pg/question/10_create_question_tables.sql (1-1272)`
* SQL 已覆盖题库/作业/批改/错题/复习/讲解评估,并把推荐与画像并入 `question.rc_*`。参考 `init/pg/question/10_create_question_tables.sql (1041-1272)`
* SQL 已覆盖题库/作业/批改/错题/复习/讲解评估;当前阶段 `question` 不承载 recommendation 相关能力。参考 `init/pg/question/10_create_question_tables.sql (1-1272)`
* 复习策略已有租户级默认种子E1-E6。参考 `init/pg/question/20_init_question_seed.sql (8-56)`
* 功能清单对错题、变式题、费曼评估、复习提醒、推荐闭环都有明确诉求。参考 `docs/AI智能学习系统功能清单.md (11-24)``docs/AI智能学习系统功能清单.md (91-108)`
* 功能清单对错题、变式题、费曼评估、复习提醒都有明确诉求。参考 `docs/AI智能学习系统功能清单.md (11-24)`
## 模块拆分与设计细节
### 1) 子模块边界
* `question-bank`:题库、题目、题目知识点关联。
@@ -13,7 +13,6 @@
* `question-grading`:批改任务、答案评分、错因标签、知识点分析。
* `question-review`:错题沉淀、艾宾浩斯计划与执行。
* `question-explanation`:费曼讲解提交、评估与维度评分。
* `question-recommendation-bridge`:保留 `rc_*` 闭环数据(中期可再独立 recommendation 服务)。
### 2) 小程序学生端规则
* 小程序仅面向学生,`assignment` 查询必须限制为“学生所在班级 + 已发布 + 节点类型为课堂练习/课后作业”。
* 对应教师创建课程中的课件节点,不在学生端作业列表和详情返回。
@@ -22,17 +21,16 @@
* 强化 `hw_assignment_target.target_ref_id` 的对象完整性(按 `target_type` 校验 class_id/student_id 存在且同租户)。
* 补充“变式题生成任务”数据结构(任务、来源错题、生成题、命中策略),连接功能清单中的举一反三链路。
* `gd_answer_grade` 继续作为统一批改结果主表,避免客观/主观分表回退。
* 推荐闭环暂存于 `question` 时,需定义清晰子包边界,避免与习题核心耦合扩散。
### 4) 租户隔离策略
* 所有 `hw_* / gd_* / rc_*` 读写统一按 `tenant_id` 强过滤。
* 跨表关联submission->student、assignment->class、recommendation->user)均执行租户一致性断言。
* 所有 `hw_* / gd_*` 读写统一按 `tenant_id` 强过滤。
* 跨表关联submission->student、assignment->class均执行租户一致性断言。
* 对 AI 生成、图检索、向量检索调用记录 tenant 维度与来源对象,便于追溯越权风险。
## 问题点与风险
* `question` 当前“超大域”承载习题+复习+讲解+推荐,若不先做包级拆分,后续维护成本会快速上升。
* `question` 当前域内职责仍较重(习题+复习+讲解,若不先做包级拆分,后续维护成本会快速上升。
* 目前无运行时代码,尽管 SQL 完整,但缺业务规则执行层,容易出现“表有字段、行为缺失”。
* `target_ref_id` 弱关联容易引发错投放与越权读取。
* 功能清单的变式题追踪链路在现有表中仍缺专门任务模型。
## 需确认的设计决策
* 推荐相关 `rc_*` 是短期保留在 `question`,还是本阶段即拆到 `recommendation` 独立服务
* 当前阶段 recommendation 不纳入 `question``question` 仅交付习题/作业/批改/复习/讲解相关接口
* 变式题生成首期是否强依赖 AI 服务,或先以规则模板生成保障可交付。
* 费曼评估通过阈值与回流规则(与系统文档口径)是否纳入一期强约束。