Files
CICD/docs/product_requirements.md
SpecialX e7c902e8e1
Some checks failed
CI / build-and-test (push) Failing after 1m31s
CI / deploy (push) Has been skipped
Module Update
2025-12-30 14:42:30 +08:00

181 lines
8.9 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.

# Next_Edu 产品需求文档 (PRD) - K12 智慧教学管理系统
**版本**: 2.0.0 (K12 Enterprise Edition)
**状态**: 规划中
**最后更新**: 2025-12-22
**作者**: Senior EdTech Product Manager
**适用范围**: 全校级教学管理 (教-考-练-评)
---
## 1. 角色与权限矩阵 (Complex Role Matrix)
本系统采用基于 RBAC (Role-Based Access Control) 的多维权限设计,并结合 **行级安全 (Row-Level Security, RLS)** 策略,确保数据隔离与行政管理的精确匹配。
### 1.1 角色定义与核心职责
| 角色 | 核心职责 | 权限特征 (Scope) |
| :--- | :--- | :--- |
| **系统管理员 (Admin)** | 基础数据维护、账号管理、学期设置 | 全局系统配置,不可触碰教学业务数据内容(隐私保护)。 |
| **校长 (Principal)** | 全校教学概况监控、宏观统计报表 | **全校可见**。查看所有年级、学科的统计数据(平均分、作业完成率),无修改具体的题目/作业权限。 |
| **年级主任 (Grade Head)** | 本年级行政管理、班级均衡度分析 | **年级可见**。管理本年级所有行政班级;查看本年级跨学科对比;无权干涉其他年级。 |
| **教研组长 (Subject Head)** | 学科资源建设、命题质量把控 | **学科可见**。管理本学科公共题库、教案模板;查看全校该学科教学质量;无权查看其他学科详情。 |
| **班主任 (Class Teacher)** | 班级学生管理、家校通知、综合评价 | **行政班可见**。查看本班所有学生的跨学科成绩、考勤;发布班级公告。 |
| **任课老师 (Teacher)** | 备课、出卷、批改、个别辅导 | **教学班可见**。仅能操作自己所教班级的该学科作业/考试;私有题库管理。 |
| **学生 (Student)** | 完成作业、参加考试、查看错题本 | **个人可见**。仅能访问分配给自己的任务;查看个人成长档案。 |
### 1.2 关键权限辨析:年级主任 vs 教研组长
* **维度差异**:
* **年级主任 (横向管理)**: 关注的是 **"人" (People & Administration)**。例如:高一(3)班的整体纪律如何?高一年级整体是否在期中考试中达标?他们需要跨学科的数据视图(如:某学生是否偏科)。
* **教研组长 (纵向管理)**: 关注的是 **"内容" (Content & Pedagogy)**。例如:英语科目的“阅读理解”题型得分率全校是否偏低?公共题库的题目质量如何?他们需要跨年级但单学科的深度视图。
* **数据可见性 (RLS 策略)**:
* `GradeHead_View`: `WHERE class.grade_id = :current_user_grade_id`
* `SubjectHead_View`: `WHERE course.subject_id = :current_user_subject_id` (可能跨所有年级)
---
## 2. 核心功能模块深度拆解
### 2.1 智能题库中心 (Smart Question Bank)
这是系统的核心资产库,必须支持高复杂度的题目结构。
* **多层嵌套题目结构 (Nested Questions)**:
* **场景**: 英语完形填空、语文现代文阅读、理综大题。
* **逻辑**: 引入 **"题干 (Stem)"** 与 **"子题 (Sub-question)"** 的概念。
* **父题 (Parent)**: 承载公共题干(如一篇 500 字的文章、一张物理实验图表)。通常不直接设分,或者设总分。
* **子题 (Child)**: 依附于父题,是具体的答题点(选择、填空、简答)。每个子题有独立的分值、答案和解析。
* **交互**: 组卷时,拖动“父题”,所有“子题”必须作为一个原子整体跟随移动,不可拆分。
* **知识点图谱 (Knowledge Graph)**:
* **结构**: 树状结构 (Tree)。例如:`数学 -> 代数 -> 函数 -> 二次函数 -> 二次函数的图像`
* **关联**:
* **多对多 (Many-to-Many)**: 一道题可能考察多个知识点(综合题)。
* **权重**: (可选高级需求) 标记主要考点与次要考点。
### 2.2 课本与大纲映射 (Textbook & Curriculum)
* **课本数字化**:
* 系统预置主流教材版本 (如人教版、北师大版)。
* **核心映射**: `Textbook Chapter` (课本章节) <--> `Knowledge Point` (知识点)。
* **价值**: 老师备课时,只需选择“必修一 第一章”,系统自动推荐关联的“集合”相关题目,无需手动去海量题库搜索。
### 2.3 试卷/作业组装引擎 (Assembly Engine)
* **智能筛选**: 支持交集筛选(同时包含“力学”和“三角函数”的题目)。
* **AB 卷生成**: 针对防作弊场景支持题目乱序或选项乱序Shuffle
* **作业分层**: 支持“必做题”与“选做题”设置,满足分层教学需求。
### 2.4 消息通知中心 (Notification System)
分级分策略的消息分发:
* **强提醒 (High Priority)**: 系统公告、考试开始提醒。通过站内信 + 弹窗 + (集成)短信/微信模板消息。
* **业务流 (Medium Priority)**: 作业发布、成绩出炉。站内红点 + 列表推送。
* **弱提醒 (Low Priority)**: 错题本更新、周报生成。仅在进入相关模块时提示。
---
## 3. 数据实体关系推演 (Data Entity Relationships)
基于 MySQL 关系型数据库的设计方案。
### 3.1 核心实体模型 (ER Draft)
1. **SysUser**: `id`, `username`, `role`, `school_id`
2. **TeacherProfile**: `user_id`, `is_grade_head`, `is_subject_head`
3. **Class**: `id`, `grade_level` (e.g., 10), `class_name` (e.g., "3班"), `homeroom_teacher_id`
4. **Subject**: `id`, `name` (e.g., "Math")
5. **Course**: `id`, `class_id`, `subject_id`, `teacher_id` (核心教学关系表: 谁教哪个班的哪门课)
### 3.2 题库与知识点设计 (关键难点)
#### Table: `knowledge_points` (知识点树)
* `id`: UUID
* `subject_id`: FK
* `name`: VARCHAR
* `parent_id`: UUID (Self-reference, Root is NULL)
* `level`: INT (1, 2, 3...)
* `code`: VARCHAR (e.g., "M-ALG-01-02" 用于快速检索)
#### Table: `questions` (支持嵌套)
* `id`: UUID
* `content`: TEXT (HTML/Markdown, store images as URLs)
* `type`: ENUM ('SINGLE', 'MULTI', 'FILL', 'ESSAY', 'COMPOSITE')
* `parent_id`: UUID (Self-reference, **核心设计**)
* If `NULL`: 这是一道独立题目 OR 复合题的大题干。
* If `NOT NULL`: 这是一个子题目,属于 `parent_id` 对应的题干。
* `difficulty`: INT (1-5)
* `answer`: TEXT (JSON structure for structured answers)
* `analysis`: TEXT (解析)
* `created_by`: FK (Teacher)
* `scope`: ENUM ('PUBLIC', 'PRIVATE')
#### Table: `question_knowledge` (题目-知识点关联)
* `question_id`: FK
* `knowledge_point_id`: FK
* **Primary Key**: (`question_id`, `knowledge_point_id`)
### 3.3 课本映射设计
#### Table: `textbooks`
* `id`: UUID
* `name`: VARCHAR
* `grade_level`: INT
* `subject_id`: FK
#### Table: `textbook_chapters`
* `id`: UUID
* `textbook_id`: FK
* `name`: VARCHAR
* `parent_id`: UUID (Sections within Chapters)
* `content`: TEXT (Rich text content of the chapter/section) -- [ADDED for Content Viewing]
* `order`: INT
#### Table: `chapter_knowledge_mapping`
* `chapter_id`: FK
* `knowledge_point_id`: FK
* *解释*: 这张表是连接“教学进度”与“底层知识”的桥梁。
---
## 4. 关键业务流程 (User Flows)
### 4.1 智能组卷与发布流程 (Exam Creation Flow)
这是一个高频且复杂的路径,需要极高的流畅度。
1. **启动组卷**:
* 老师进入 [教学工作台] -> 点击 [新建试卷/作业]。
* 输入基本信息(名称、考试时长、总分)。
2. **设定范围 (锚定课本)**:
* 老师选择教材版本:`人教版高中数学必修一`
* 选择章节:勾选 `第一章 集合``第二章 函数概念`
* *系统动作*: 后台查询 `chapter_knowledge_mapping`,提取出这几章对应的所有 `knowledge_points`
3. **筛选题目**:
* 系统展示题目列表,默认过滤条件为上述提取的知识点。
* 老师增加筛选:`难度: 中等`, `题型: 选择题`
* **处理嵌套题**: 如果筛选结果包含一个“完形填空”的子题,系统在 UI 上必须**强制展示**其对应的父题干,并提示老师“需整体添加”。
4. **加入试题篮 (Cart)**:
* 老师点击“+”号。
* 试题篮动态更新:`当前题目数: 15, 预计总分: 85`
5. **试卷精修 (Refine)**:
* 进入“试卷预览”模式。
* 调整题目顺序 (Drag & drop)。
* 修改某道题的分值(覆盖默认分值)。
6. **发布设置**:
* 选择发布对象:`高一(3)班`, `高一(5)班` (基于 `Course` 表权限)。
* 设置时间:`开始时间`, `截止时间`
* 发布模式:`在线作答``线下答题卡` (若线下,系统生成 PDF 和答题卡样式)。
7. **完成**:
* 学生端收到 `Notifications` 推送。
* `Exams` 表生成记录,`ExamAllocations` 表为每个班级/学生生成状态记录。