01 · 模块定位
教研内容中心
同一个活码可根据课程、班级、有效期和学员权限返回不同资源,并记录扫码数据。业务目标
管理教案、课件、题库、作业、测评、在线课程、学习打卡和活码资源。
使用终端
PC Web 教研工作台,教师端、学员端和活码扫码入口联动。
验收主线
同一个活码可根据课程、班级、有效期和学员权限返回不同资源,并记录扫码数据。
02 · 范围边界
明确本模块负责什么、依赖什么、不负责什么
边界清晰后,原型、接口和数据库设计才能避免重复建设。模块内范围
- 资源库
- 题库
- 作业模板
- 测评体系
- 在线课程
- 活码系统
上游依赖
- 组织校区与账号权限
- 课程/客户/合同等主数据
- 审批流、消息模板、文件中心
- 必要的第三方接口密钥
下游输出
- 业务状态和待办
- 消息通知和审批记录
- 报表指标和数据快照
- 审计日志和接口回执
03 · 确认口径、后台配置与默认实施规则
教研内容中心必须承接的已确认规则
本章节来自待决策与澄清清单的收口结果,已经转为本模块 PRD 的正式需求、配置项或默认实施规则。| 分类 | 事项 | 本模块落地要求 | 责任方 |
|---|---|---|---|
| 默认实施规则 | 接口设计说明书组织方式 | 采用单独 HTML 文件集中管理接口协议;模块 PRD 保留模块级接口摘要,避免每个模块重复写通用协议。 | 产品/研发 |
| 默认实施规则 | 接口错误码与重试中间件 | 所有外部接口和内部异步任务统一错误码、幂等键、重试次数、告警阈值和回执归档策略。 | 后端/测试/运维 |
04 · 业务流程
教研内容中心主流程
流程用于指导原型图的页面顺序、按钮状态和异常分支。资源库需覆盖入口、字段、状态、权限、审批/消息、异常处理、审计和指标统计,并与上下游模块保持数据一致。
题库支持知识点、难度、答案、解析和适用课程
作业模板需覆盖入口、字段、状态、权限、审批/消息、异常处理、审计和指标统计,并与上下游模块保持数据一致。
测评体系需覆盖入口、字段、状态、权限、审批/消息、异常处理、审计和指标统计,并与上下游模块保持数据一致。
在线课程需覆盖入口、字段、状态、权限、审批/消息、异常处理、审计和指标统计,并与上下游模块保持数据一致。
活码系统需覆盖入口、字段、状态、权限、审批/消息、异常处理、审计和指标统计,并与上下游模块保持数据一致。
05 · 功能清单
按子模块拆到可设计、可开发、可测试的颗粒度
每一行功能都需要在原型中体现入口、状态、按钮、字段和反馈。| 一级功能 | 二级功能 | 功能说明 | 规则/验收 |
|---|---|---|---|
| 资源库 | 基础维护 | 资源库支持新增、编辑、启用/停用、查询、导入导出和操作审计。 | 编码唯一、数据范围过滤、逻辑删除和审计留痕 |
| 资源库 | 业务处理 | 资源库需覆盖入口、字段、状态、权限、审批/消息、异常处理、审计和指标统计,并与上下游模块保持数据一致。 | 必须联动状态、权限、消息、审批和指标 |
| 资源库 | 异常闭环 | 资源无权限处理 | 失败原因可见、可重试、可转人工、可追溯 |
| 题库 | 基础维护 | 题库支持新增、编辑、启用/停用、查询、导入导出和操作审计。 | 编码唯一、数据范围过滤、逻辑删除和审计留痕 |
| 题库 | 业务处理 | 题库支持知识点、难度、答案、解析和适用课程 | 必须联动状态、权限、消息、审批和指标 |
| 题库 | 异常闭环 | 活码过期处理 | 失败原因可见、可重试、可转人工、可追溯 |
| 作业模板 | 基础维护 | 作业模板支持新增、编辑、启用/停用、查询、导入导出和操作审计。 | 编码唯一、数据范围过滤、逻辑删除和审计留痕 |
| 作业模板 | 业务处理 | 作业模板需覆盖入口、字段、状态、权限、审批/消息、异常处理、审计和指标统计,并与上下游模块保持数据一致。 | 必须联动状态、权限、消息、审批和指标 |
| 作业模板 | 异常闭环 | 题目版本冲突处理 | 失败原因可见、可重试、可转人工、可追溯 |
| 测评体系 | 基础维护 | 测评体系支持新增、编辑、启用/停用、查询、导入导出和操作审计。 | 编码唯一、数据范围过滤、逻辑删除和审计留痕 |
| 测评体系 | 业务处理 | 测评体系需覆盖入口、字段、状态、权限、审批/消息、异常处理、审计和指标统计,并与上下游模块保持数据一致。 | 必须联动状态、权限、消息、审批和指标 |
| 测评体系 | 异常闭环 | 资源无权限处理 | 失败原因可见、可重试、可转人工、可追溯 |
| 在线课程 | 基础维护 | 在线课程支持新增、编辑、启用/停用、查询、导入导出和操作审计。 | 编码唯一、数据范围过滤、逻辑删除和审计留痕 |
| 在线课程 | 业务处理 | 在线课程需覆盖入口、字段、状态、权限、审批/消息、异常处理、审计和指标统计,并与上下游模块保持数据一致。 | 必须联动状态、权限、消息、审批和指标 |
| 在线课程 | 异常闭环 | 活码过期处理 | 失败原因可见、可重试、可转人工、可追溯 |
| 活码系统 | 基础维护 | 活码系统支持新增、编辑、启用/停用、查询、导入导出和操作审计。 | 编码唯一、数据范围过滤、逻辑删除和审计留痕 |
| 活码系统 | 业务处理 | 活码系统需覆盖入口、字段、状态、权限、审批/消息、异常处理、审计和指标统计,并与上下游模块保持数据一致。 | 必须联动状态、权限、消息、审批和指标 |
| 活码系统 | 异常闭环 | 题目版本冲突处理 | 失败原因可见、可重试、可转人工、可追溯 |
功能到数据对象/接口/表映射
| 功能域 | 承接对象 | 核心表 | 代表接口 | 状态机/状态字段 | 研发落地校验 |
|---|---|---|---|---|---|
| 资源库 | LearningResource、ResourceVersion、Question、ResourceAuthorizationRule | res_learning_resource、res_resource_version、res_question、res_authorization_rule | 接口资源组 /api/v1/res/features/01 | resource_type、publish_status、version_status、question_type、target_type | 新增/编辑/删除/审批/导出/回调均需校验租户、校区、角色、数据范围、逻辑删除、幂等和审计 |
| 题库 | Question | res_question | POST/GET /api/v1/question-banks | question_type、publish_status | 新增/编辑/删除/审批/导出/回调均需校验租户、校区、角色、数据范围、逻辑删除、幂等和审计 |
| 作业模板 | LearningResource、ResourceVersion、Question、ResourceAuthorizationRule | res_learning_resource、res_resource_version、res_question、res_authorization_rule | 接口资源组 /api/v1/res/features/03 | resource_type、publish_status、version_status、question_type、target_type | 新增/编辑/删除/审批/导出/回调均需校验租户、校区、角色、数据范围、逻辑删除、幂等和审计 |
| 测评体系 | LearningResource、ResourceVersion、Question、ResourceAuthorizationRule | res_learning_resource、res_resource_version、res_question、res_authorization_rule | 接口资源组 /api/v1/res/features/04 | resource_type、publish_status、version_status、question_type、target_type | 新增/编辑/删除/审批/导出/回调均需校验租户、校区、角色、数据范围、逻辑删除、幂等和审计 |
| 在线课程 | LearningResource、ResourceVersion、Question、ResourceAuthorizationRule | res_learning_resource、res_resource_version、res_question、res_authorization_rule | 接口资源组 /api/v1/res/features/05 | resource_type、publish_status、version_status、question_type、target_type | 新增/编辑/删除/审批/导出/回调均需校验租户、校区、角色、数据范围、逻辑删除、幂等和审计 |
| 活码系统 | LearningResource、ResourceVersion、Question、ResourceAuthorizationRule | res_learning_resource、res_resource_version、res_question、res_authorization_rule | POST/GET /api/v1/live-qrcodes | resource_type、publish_status、version_status、question_type、target_type | 新增/编辑/删除/审批/导出/回调均需校验租户、校区、角色、数据范围、逻辑删除、幂等和审计 |
06 · 原子级功能需求
用于研发任务拆分和测试用例追踪
需求编号可直接进入项目管理工具。| 编号 | 需求描述 | 入口页面 | 关键动作 | 输入校验 | 输出结果 | 异常处理 | 验收标准 |
|---|---|---|---|---|---|---|---|
| FR-RES-001 | 教案、课件、视频、音频、图片、互动素材可按课程课次分类 | 资源库 | 上传资源 | 校验租户、校区、角色、数据范围、状态前置、必填、唯一和敏感操作授权 | 生成业务记录、状态流转、消息通知、审计日志、指标快照和必要的第三方任务 | 资源无权限 | 主流程、异常流、权限流、接口失败和数据一致性均可通过测试 |
| FR-RES-002 | 题库支持知识点、难度、答案、解析和适用课程 | 题库组卷 | 维护题库 | 校验租户、校区、角色、数据范围、状态前置、必填、唯一和敏感操作授权 | 生成业务记录、状态流转、消息通知、审计日志、指标快照和必要的第三方任务 | 活码过期 | 主流程、异常流、权限流、接口失败和数据一致性均可通过测试 |
| FR-RES-003 | 资源按课程、班级、课次、学员和有效期授权 | 敏感字段查看审批 | 明文查看申请、临时授权或过期回收 | 校验租户、校区、角色、数据范围、状态前置、必填、唯一和敏感操作授权 | 生成业务记录、状态流转、消息通知、审计日志、指标快照和必要的第三方任务 | 审批原因缺失、越权查看或水印生成失败 | 主流程、异常流、权限流、接口失败和数据一致性均可通过测试 |
| FR-RES-004 | 活码二维码保持不变,后台可动态切换内容、版本和规则 | 资源活码 | 发布课程 | 校验租户、校区、角色、数据范围、状态前置、必填、唯一和敏感操作授权 | 生成业务记录、状态流转、消息通知、审计日志、指标快照和必要的第三方任务 | 资源无权限 | 主流程、异常流、权限流、接口失败和数据一致性均可通过测试 |
| FR-RES-005 | 扫码数据沉淀访问学员、时间、设备、资源完成度和转化效果 | 短链目标 | 生成活码 | 校验租户、校区、角色、数据范围、状态前置、必填、唯一和敏感操作授权 | 生成业务记录、状态流转、消息通知、审计日志、指标快照和必要的第三方任务 | 活码过期 | 主流程、异常流、权限流、接口失败和数据一致性均可通过测试 |
| FR-RES-006 | 教研活码跳转资源时需遵循统一短链、安全、防刷、失效页和访问日志规则。 | 扫码记录 | 授权访问 | 校验租户、校区、角色、数据范围、状态前置、必填、唯一和敏感操作授权 | 生成业务记录、状态流转、消息通知、审计日志、指标快照和必要的第三方任务 | 题目版本冲突 | 主流程、异常流、权限流、接口失败和数据一致性均可通过测试 |
| FR-RES-007 | 作业、测评和考试发布后必须保存题目、试卷、资源的引用版本快照,后续题目修改、删除或下架不得影响历史答题和成绩。 | 作业草稿箱/作业提交 | 保存草稿、恢复草稿或提交作业 | 校验租户、校区、角色、数据范围、状态前置、必填、唯一和敏感操作授权 | 生成业务记录、状态流转、消息通知、审计日志、指标快照和必要的第三方任务 | 草稿冲突、附件失败或作业已关闭 | 主流程、异常流、权限流、接口失败和数据一致性均可通过测试 |
07 · 关联闭环补充需求
教研内容中心在跨模块闭环中的责任边界
本章节承接最终闭环核对清单,明确本模块需要补齐的页面、接口对象、异常兜底和验收口径。| 闭环项 | 本模块责任 | 关键场景 | 页面/功能补充 | 关联对象/接口 | 验收口径 |
|---|---|---|---|---|---|
| 活码短链 | 负责教研资源、课程资料、作业资料和宣传内容的活码目标管理 | 二维码长期印刷或海报投放后内容需要动态替换 | 资源活码、短链目标、版本回滚、扫码权限、访问统计 | LearningResource、LiveQrCode/ScanRecord | 资源目标变更不影响原二维码,访问权限和统计连续保留 |
| 题库版本快照 | 负责学生测评、作业题目和课程资源题库的发布快照 | 题库更新后仍需复核历史测评与作业结果 | 题库管理、发布快照、测评关联、历史版本查看 | LearningResource、KnowledgeCourse/TrainingExam | 每次发布都形成不可变题目、答案、解析和分值快照 |
08 · 页面与原型设计说明
页面清单、布局要求、按钮字段和状态
原型图设计需要覆盖列表、详情、表单、弹窗、空状态、异常状态和权限状态。| 终端 | 页面 | 用户 | 页面目标 | 布局结构 | 关键按钮 | 关键字段 | 异常状态 | 原型备注 |
|---|---|---|---|---|---|---|---|---|
| PC Web | 资源库 | 教研 | 上传课件、授权课程班级、管理版本 | 教研页左侧为资源分类与权限树,中部资源或题库列表,右侧展示版本、引用、授权班级和活码访问统计。 | 上传资源、维护题库、组卷、发布测评、生成活码、授权访问、版本回滚 | 资源名称、课程分类、资源类型、题目版本、授权范围、活码目标、扫码次数、发布状态、版本号、引用次数 | 资源转码失败、授权范围冲突、题目版本缺失、活码目标下架、访问权限不足 | 需覆盖资源版本、题库组卷、测评发布、活码动态内容、扫码统计和历史引用不可变。 建议 Figma Frame:RES-资源库;需补齐正常、空态、加载、无权限、处理中、成功和失败状态。 |
| PC Web | 题库组卷 | 教研/教师 | 筛题、组卷、发布测评、查看结果 | 教研页左侧为资源分类与权限树,中部资源或题库列表,右侧展示版本、引用、授权班级和活码访问统计。 | 上传资源、维护题库、组卷、发布测评、生成活码、授权访问、版本回滚 | 资源名称、课程分类、资源类型、题目版本、授权范围、活码目标、扫码次数、发布状态、版本号、引用次数 | 资源转码失败、授权范围冲突、题目版本缺失、活码目标下架、访问权限不足 | 需覆盖资源版本、题库组卷、测评发布、活码动态内容、扫码统计和历史引用不可变。 建议 Figma Frame:RES-题库组卷;需补齐正常、空态、加载、无权限、处理中、成功和失败状态。 |
| PC Web | 活码系统 | 教研/市场运营 | 配置动态内容、访问权限、扫码统计 | 营销页按模板选择、页面编辑、表单配置、活码发布和转化看板分步呈现,H5 端突出报名和分享。 | 选择模板、编辑页面、配置表单、生成活码、发布活动、转为模板、审核模板、查看转化 | 活动名称、模板分类、节日主题、表单字段、渠道参数、活码目标、短链域名、ROI、资源名称、课程分类 | 模板不可用、素材缺失、短链异常、表单提交失败、重复报名、活码失效 | 需覆盖模板库、24 节气/传统节日海报 H5、自建转模板、活码动态目标、失效页和线索撞单。 建议 Figma Frame:RES-活码系统;需补齐正常、空态、加载、无权限、处理中、成功和失败状态。 |
| PC Web | 资源活码 | 授权用户 | 围绕活码资源完善资源活码的入口、字段、状态、异常提示、处理进度和验收反馈 | 营销页按模板选择、页面编辑、表单配置、活码发布和转化看板分步呈现,H5 端突出报名和分享。 | 选择模板、编辑页面、配置表单、生成活码、发布活动、转为模板、审核模板、查看转化 | 活动名称、模板分类、节日主题、表单字段、渠道参数、活码目标、短链域名、ROI、资源名称、课程分类 | 模板不可用、素材缺失、短链异常、表单提交失败、重复报名、活码失效 | 需覆盖模板库、24 节气/传统节日海报 H5、自建转模板、活码动态目标、失效页和线索撞单。 建议 Figma Frame:RES-资源活码;需补齐正常、空态、加载、无权限、处理中、成功和失败状态。 |
| PC Web | 短链目标 | 授权用户 | 围绕活码资源完善短链目标的入口、字段、状态、异常提示、处理进度和验收反馈 | 营销页按模板选择、页面编辑、表单配置、活码发布和转化看板分步呈现,H5 端突出报名和分享。 | 选择模板、编辑页面、配置表单、生成活码、发布活动、转为模板、审核模板、查看转化 | 活动名称、模板分类、节日主题、表单字段、渠道参数、活码目标、短链域名、ROI、资源名称、课程分类 | 模板不可用、素材缺失、短链异常、表单提交失败、重复报名、活码失效 | 需覆盖模板库、24 节气/传统节日海报 H5、自建转模板、活码动态目标、失效页和线索撞单。 建议 Figma Frame:RES-短链目标;需补齐正常、空态、加载、无权限、处理中、成功和失败状态。 |
| PC Web | 扫码记录 | 授权用户 | 围绕活码资源完善扫码记录的入口、字段、状态、异常提示、处理进度和验收反馈 | 营销页按模板选择、页面编辑、表单配置、活码发布和转化看板分步呈现,H5 端突出报名和分享。 | 选择模板、编辑页面、配置表单、生成活码、发布活动、转为模板、审核模板、查看转化 | 活动名称、模板分类、节日主题、表单字段、渠道参数、活码目标、短链域名、ROI、资源名称、课程分类 | 模板不可用、素材缺失、短链异常、表单提交失败、重复报名、活码失效 | 需覆盖模板库、24 节气/传统节日海报 H5、自建转模板、活码动态目标、失效页和线索撞单。 建议 Figma Frame:RES-扫码记录;需补齐正常、空态、加载、无权限、处理中、成功和失败状态。 |
| PC Web | 题库管理 | 授权用户 | 围绕版本快照完善题库管理的入口、字段、状态、异常提示、处理进度和验收反馈 | PC 端采用顶部筛选、左侧列表或导航、中部主工作区、右侧详情抽屉,复杂操作进入弹窗或步骤条。 | 查询、新增、编辑、提交、导出、查看日志、上传资源、维护题库 | 资源名称、课程分类、资源类型、版本号、授权范围、活码目标、发布状态、引用次数 | 空数据、无权限、加载失败、保存失败、审批驳回、批量部分失败 | 管理员端沿用统一框架,原型重点标注信息架构、表单弹窗、状态流和异常处理。 建议 Figma Frame:RES-题库管理;需补齐正常、空态、加载、无权限、处理中、成功和失败状态。 |
| PC Web | 资源版本 | 授权用户 | 围绕版本快照完善资源版本的入口、字段、状态、异常提示、处理进度和验收反馈 | PC 端采用顶部筛选、左侧列表或导航、中部主工作区、右侧详情抽屉,复杂操作进入弹窗或步骤条。 | 查询、新增、编辑、提交、导出、查看日志、上传资源、维护题库 | 资源名称、课程分类、资源类型、版本号、授权范围、活码目标、发布状态、引用次数 | 空数据、无权限、加载失败、保存失败、审批驳回、批量部分失败 | 管理员端沿用统一框架,原型重点标注信息架构、表单弹窗、状态流和异常处理。 建议 Figma Frame:RES-资源版本;需补齐正常、空态、加载、无权限、处理中、成功和失败状态。 |
| PC Web | 测评结果 | 授权用户 | 围绕版本快照完善测评结果的入口、字段、状态、异常提示、处理进度和验收反馈 | PC 端采用顶部筛选、左侧列表或导航、中部主工作区、右侧详情抽屉,复杂操作进入弹窗或步骤条。 | 查询、新增、编辑、提交、导出、查看日志、上传资源、维护题库 | 资源名称、课程分类、资源类型、版本号、授权范围、活码目标、发布状态、引用次数 | 空数据、无权限、加载失败、保存失败、审批驳回、批量部分失败 | 管理员端沿用统一框架,原型重点标注信息架构、表单弹窗、状态流和异常处理。 建议 Figma Frame:RES-测评结果;需补齐正常、空态、加载、无权限、处理中、成功和失败状态。 |
| PC Web | 资源详情 | 授权用户 | 围绕授权发布完善资源详情的入口、字段、状态、异常提示、处理进度和验收反馈 | PC 端采用顶部筛选、左侧列表或导航、中部主工作区、右侧详情抽屉,复杂操作进入弹窗或步骤条。 | 查询、新增、编辑、提交、导出、查看日志、上传资源、维护题库 | 资源名称、课程分类、资源类型、版本号、授权范围、活码目标、发布状态、引用次数 | 空数据、无权限、加载失败、保存失败、审批驳回、批量部分失败 | 管理员端沿用统一框架,原型重点标注信息架构、表单弹窗、状态流和异常处理。 建议 Figma Frame:RES-资源详情;需补齐正常、空态、加载、无权限、处理中、成功和失败状态。 |
| PC Web | 授权弹窗 | 授权用户 | 围绕授权发布完善授权弹窗的入口、字段、状态、异常提示、处理进度和验收反馈 | PC 端采用顶部筛选、左侧列表或导航、中部主工作区、右侧详情抽屉,复杂操作进入弹窗或步骤条。 | 查询、新增、编辑、提交、导出、查看日志、上传资源、维护题库 | 资源名称、课程分类、资源类型、版本号、授权范围、活码目标、发布状态、引用次数 | 空数据、无权限、加载失败、保存失败、审批驳回、批量部分失败 | 管理员端沿用统一框架,原型重点标注信息架构、表单弹窗、状态流和异常处理。 建议 Figma Frame:RES-授权弹窗;需补齐正常、空态、加载、无权限、处理中、成功和失败状态。 |
| PC Web | 学员资源页 | 授权用户 | 围绕授权发布完善学员资源页的入口、字段、状态、异常提示、处理进度和验收反馈 | PC 端采用顶部筛选、左侧列表或导航、中部主工作区、右侧详情抽屉,复杂操作进入弹窗或步骤条。 | 查询、新增、编辑、提交、导出、查看日志、上传资源、维护题库 | 资源名称、课程分类、资源类型、版本号、授权范围、活码目标、发布状态、引用次数 | 空数据、无权限、加载失败、保存失败、审批驳回、批量部分失败 | 管理员端沿用统一框架,原型重点标注信息架构、表单弹窗、状态流和异常处理。 建议 Figma Frame:RES-学员资源页;需补齐正常、空态、加载、无权限、处理中、成功和失败状态。 |
09 · 页面到接口的前后端闭环矩阵
把原型页面、后端接口、数据对象、状态和消息审批绑定到一起
设计原型时,每个关键页面必须能解释前端展示什么、后端提交什么、状态怎么变、异常怎么处理。| 原型页面 | 关键接口 | 关联对象 | 状态流 | 审批/权限触发 | 消息/待办触达 | 原型验收要求 |
|---|---|---|---|---|---|---|
| 资源库 | POST/GET /api/v1/question-banks | LearningResource | 草稿 -> 编辑中 -> 待发布 -> 发布中 -> 已发布 -> 发布失败 -> 已停用 | 活码外部资源审批:活码跳转外部链接或公开资源 | 处理完成、失败和异常转人工均需触发站内通知或待办 | 原型需展示入口、主按钮、禁用原因、提交中、成功、失败、无权限、空状态和异常转人工入口 |
| 题库组卷 | POST/GET /api/v1/live-qrcodes | ResourceVersion | 启用中 -> 限频中 -> 黑名单命中 -> 目标下架 -> 已停用 -> 已过期 -> 异常告警 | 活码外部资源审批:活码跳转外部链接或公开资源 | 处理完成、失败和异常转人工均需触发站内通知或待办 | 原型需展示入口、主按钮、禁用原因、提交中、成功、失败、无权限、空状态和异常转人工入口 |
| 活码系统 | POST/GET /api/v1/question-banks | Question | 草稿 -> 已发布 -> 已引用 -> 已冻结 -> 已下架 -> 历史可追溯 | 活码外部资源审批:活码跳转外部链接或公开资源 | 处理完成、失败和异常转人工均需触发站内通知或待办 | 原型需展示入口、主按钮、禁用原因、提交中、成功、失败、无权限、空状态和异常转人工入口 |
| 资源活码 | POST/GET /api/v1/live-qrcodes | ResourceAuthorizationRule | 草稿 -> 编辑中 -> 待发布 -> 发布中 -> 已发布 -> 发布失败 -> 已停用 | 活码外部资源审批:活码跳转外部链接或公开资源 | 处理完成、失败和异常转人工均需触发站内通知或待办 | 原型需展示入口、主按钮、禁用原因、提交中、成功、失败、无权限、空状态和异常转人工入口 |
| 短链目标 | POST/GET /api/v1/question-banks | LearningResource | 启用中 -> 限频中 -> 黑名单命中 -> 目标下架 -> 已停用 -> 已过期 -> 异常告警 | 活码外部资源审批:活码跳转外部链接或公开资源 | 处理完成、失败和异常转人工均需触发站内通知或待办 | 原型需展示入口、主按钮、禁用原因、提交中、成功、失败、无权限、空状态和异常转人工入口 |
| 扫码记录 | POST/GET /api/v1/live-qrcodes | ResourceVersion | 草稿 -> 已发布 -> 已引用 -> 已冻结 -> 已下架 -> 历史可追溯 | 活码外部资源审批:活码跳转外部链接或公开资源 | 处理完成、失败和异常转人工均需触发站内通知或待办 | 原型需展示入口、主按钮、禁用原因、提交中、成功、失败、无权限、空状态和异常转人工入口 |
| 题库管理 | POST/GET /api/v1/question-banks | Question | 草稿 -> 编辑中 -> 待发布 -> 发布中 -> 已发布 -> 发布失败 -> 已停用 | 活码外部资源审批:活码跳转外部链接或公开资源 | 处理完成、失败和异常转人工均需触发站内通知或待办 | 原型需展示入口、主按钮、禁用原因、提交中、成功、失败、无权限、空状态和异常转人工入口 |
| 资源版本 | POST/GET /api/v1/question-banks | ResourceAuthorizationRule | 启用中 -> 限频中 -> 黑名单命中 -> 目标下架 -> 已停用 -> 已过期 -> 异常告警 | 活码外部资源审批:活码跳转外部链接或公开资源 | 处理完成、失败和异常转人工均需触发站内通知或待办 | 原型需展示入口、主按钮、禁用原因、提交中、成功、失败、无权限、空状态和异常转人工入口 |
| 测评结果 | POST/GET /api/v1/question-banks | LearningResource | 草稿 -> 已发布 -> 已引用 -> 已冻结 -> 已下架 -> 历史可追溯 | 活码外部资源审批:活码跳转外部链接或公开资源 | 处理完成、失败和异常转人工均需触发站内通知或待办 | 原型需展示入口、主按钮、禁用原因、提交中、成功、失败、无权限、空状态和异常转人工入口 |
| 资源详情 | POST/GET /api/v1/live-qrcodes | ResourceVersion | 草稿 -> 编辑中 -> 待发布 -> 发布中 -> 已发布 -> 发布失败 -> 已停用 | 活码外部资源审批:活码跳转外部链接或公开资源 | 处理完成、失败和异常转人工均需触发站内通知或待办 | 原型需展示入口、主按钮、禁用原因、提交中、成功、失败、无权限、空状态和异常转人工入口 |
| 授权弹窗 | POST/GET /api/v1/question-banks | Question | 启用中 -> 限频中 -> 黑名单命中 -> 目标下架 -> 已停用 -> 已过期 -> 异常告警 | 活码外部资源审批:活码跳转外部链接或公开资源 | 处理完成、失败和异常转人工均需触发站内通知或待办 | 原型需展示入口、主按钮、禁用原因、提交中、成功、失败、无权限、空状态和异常转人工入口 |
| 学员资源页 | POST/GET /api/v1/live-qrcodes | ResourceAuthorizationRule | 草稿 -> 已发布 -> 已引用 -> 已冻结 -> 已下架 -> 历史可追溯 | 活码外部资源审批:活码跳转外部链接或公开资源 | 处理完成、失败和异常转人工均需触发站内通知或待办 | 原型需展示入口、主按钮、禁用原因、提交中、成功、失败、无权限、空状态和异常转人工入口 |
10 · 原型、UI、研发、测试交付补充
把关键闭环补强为下一阶段可执行任务
本章节为正式 PRD 的交付要求,面向原型图、UI、开发、联调和测试分工。| 能力域 | 功能补充要求 | 原型交付要求 | UI 交互要求 | 研发实现要求 | 测试验收要求 |
|---|---|---|---|---|---|
| 活码资源 | 补齐资源活码、目标规则、扫码权限、目标下架页、版本回滚和访问分析。 | 资源活码、短链目标、扫码记录 需要在原型中拆到列表、详情、表单、弹窗、空状态、失败态、无权限态和处理进度。 | UI 需清晰呈现状态标签、流程节点、主次按钮、危险操作确认、移动/平板/TV 适配和错误提示;PC 管理端遵循统一框架,仅输出信息架构和交互说明。 | 后端需提供接口幂等、权限校验、状态机、审计日志、消息/审批触发、异步补偿和跨模块数据一致性保障。 | 测试需覆盖主流程、异常流、权限流、重复提交、批量部分失败和数据一致性;二维码不变,目标内容可动态调整并保留历史。 |
| 版本快照 | 补齐发布快照、引用关系、历史版本查看、下架影响和回滚规则。 | 题库管理、资源版本、测评结果 需要在原型中拆到列表、详情、表单、弹窗、空状态、失败态、无权限态和处理进度。 | UI 需清晰呈现状态标签、流程节点、主次按钮、危险操作确认、移动/平板/TV 适配和错误提示;PC 管理端遵循统一框架,仅输出信息架构和交互说明。 | 后端需提供接口幂等、权限校验、状态机、审计日志、消息/审批触发、异步补偿和跨模块数据一致性保障。 | 测试需覆盖主流程、异常流、权限流、重复提交、批量部分失败和数据一致性;历史测评展示当时题目、答案、解析和分值。 |
| 授权发布 | 补齐授权范围、有效期、下载权限、转码状态、失败重试和访问异常页。 | 资源详情、授权弹窗、学员资源页 需要在原型中拆到列表、详情、表单、弹窗、空状态、失败态、无权限态和处理进度。 | UI 需清晰呈现状态标签、流程节点、主次按钮、危险操作确认、移动/平板/TV 适配和错误提示;PC 管理端遵循统一框架,仅输出信息架构和交互说明。 | 后端需提供接口幂等、权限校验、状态机、审计日志、消息/审批触发、异步补偿和跨模块数据一致性保障。 | 测试需覆盖主流程、异常流、权限流、重复提交、批量部分失败和数据一致性;资源发布后访问权限与班级、课程权益一致。 |
11 · 数据对象与字段字典
明确页面、接口、数据库共同使用的数据语言
字段涉及敏感、人脸、财务、绩效时,原型需体现脱敏、授权和审计。核心对象
| 对象 | 说明 |
|---|---|
| LearningResource | 教研学习资源;落地表:res_learning_resource |
| ResourceVersion | 资源版本与发布记录;落地表:res_resource_version |
| Question | 题库题目;落地表:res_question |
| ResourceAuthorizationRule | 资源授权规则;落地表:res_authorization_rule |
关联引用对象
| 对象 | 说明 |
|---|---|
| Organization | 集团、区域、校区、部门组织树;引用来源:FND / sys_organization |
| User/Employee | 统一登录账号;引用来源:FND / sys_user |
| Employee | 员工基础档案;引用来源:FND / sys_employee |
| Role | 角色定义;引用来源:FND / sys_role |
| ApprovalFlow | 审批流配置;引用来源:FND / sys_approval_flow |
| MessageTemplate | 消息模板与多端触达配置;引用来源:FND / sys_message_template |
| AuditLog | 全平台操作审计日志;引用来源:FND / sys_audit_log |
| IntegrationLog | 接口调用日志;引用来源:OPEN / int_integration_log |
| SensitiveFieldPolicy | 敏感字段脱敏策略;引用来源:SEC / sec_sensitive_field_policy |
| Course/Product | 课程产品;引用来源:EDU / edu_course |
| Homework | 作业任务;引用来源:EDU / edu_homework |
| ReplayPublishPolicy/ReplayAccess | 回放发布和访问策略;引用来源:LIVE / live_replay_policy |
| LiveQrCode | 活码规则与动态跳转;引用来源:MKT / mkt_live_qr_code |
| LearningProfile | 学员学习进度档案;引用来源:APP / stu_learning_profile |
完整字段字典
| 对象 | 字段 | 类型 | 必填 | 规则 | 数据级别 |
|---|---|---|---|---|---|
| LearningResource | id | BIGINT | 是 | 主键,雪花或号段生成,禁止复用 | 普通 |
| LearningResource | tenant_id | BIGINT | 是 | 集团/租户隔离字段,所有查询必须带租户上下文 | 普通 |
| LearningResource | org_id | BIGINT | 否 | 所属组织,集团级或公共配置为空 | 普通 |
| LearningResource | campus_id | BIGINT | 否 | 所属校区,跨校区或总部级数据为空 | 普通 |
| LearningResource | created_by | BIGINT | 是 | 创建人账号 ID | 普通 |
| LearningResource | created_at | DATETIME | 是 | 创建时间 | 普通 |
| LearningResource | updated_by | BIGINT | 否 | 最后更新人账号 ID | 普通 |
| LearningResource | updated_at | DATETIME | 否 | 最后更新时间 | 普通 |
| LearningResource | is_deleted | TINYINT | 是 | 是否已删除,0 未删除,1 已删除 | 普通 |
| LearningResource | deleted_at | DATETIME | 否 | 删除时间,未删除为空 | 普通 |
| LearningResource | deleted_by | BIGINT | 否 | 删除人账号 ID,未删除为空 | 普通 |
| LearningResource | version | INT | 是 | 乐观锁版本号,写操作必须校验 | 普通 |
| LearningResource | resource_no | VARCHAR(64) | 是 | 资源编号,唯一 | 普通 |
| LearningResource | resource_name | VARCHAR(128) | 是 | 资源名称 | 普通 |
| LearningResource | resource_type | VARCHAR(32) | 是 | 课件/视频/音频/题库/文章/试卷 | 普通 |
| LearningResource | category_id | BIGINT | 否 | 资源分类 | 普通 |
| LearningResource | file_id | BIGINT | 否 | 文件 ID | 普通 |
| LearningResource | publish_status | VARCHAR(32) | 是 | 草稿/审核中/已发布/已下架 | 普通 |
| ResourceVersion | id | BIGINT | 是 | 主键,雪花或号段生成,禁止复用 | 普通 |
| ResourceVersion | tenant_id | BIGINT | 是 | 集团/租户隔离字段,所有查询必须带租户上下文 | 普通 |
| ResourceVersion | org_id | BIGINT | 否 | 所属组织,集团级或公共配置为空 | 普通 |
| ResourceVersion | campus_id | BIGINT | 否 | 所属校区,跨校区或总部级数据为空 | 普通 |
| ResourceVersion | created_by | BIGINT | 是 | 创建人账号 ID | 普通 |
| ResourceVersion | created_at | DATETIME | 是 | 创建时间 | 普通 |
| ResourceVersion | updated_by | BIGINT | 否 | 最后更新人账号 ID | 普通 |
| ResourceVersion | updated_at | DATETIME | 否 | 最后更新时间 | 普通 |
| ResourceVersion | is_deleted | TINYINT | 是 | 是否已删除,0 未删除,1 已删除 | 普通 |
| ResourceVersion | deleted_at | DATETIME | 否 | 删除时间,未删除为空 | 普通 |
| ResourceVersion | deleted_by | BIGINT | 否 | 删除人账号 ID,未删除为空 | 普通 |
| ResourceVersion | version | INT | 是 | 乐观锁版本号,写操作必须校验 | 普通 |
| ResourceVersion | resource_id | BIGINT | 是 | 资源 ID | 普通 |
| ResourceVersion | version_no | INT | 是 | 版本号 | 普通 |
| ResourceVersion | change_desc | VARCHAR(512) | 否 | 变更说明 | 普通 |
| ResourceVersion | file_ids | JSON | 否 | 版本文件 | 普通 |
| ResourceVersion | publish_at | DATETIME | 否 | 发布时间 | 普通 |
| ResourceVersion | version_status | VARCHAR(32) | 是 | 草稿/已发布/已废弃 | 普通 |
| Question | id | BIGINT | 是 | 主键,雪花或号段生成,禁止复用 | 普通 |
| Question | tenant_id | BIGINT | 是 | 集团/租户隔离字段,所有查询必须带租户上下文 | 普通 |
| Question | org_id | BIGINT | 否 | 所属组织,集团级或公共配置为空 | 普通 |
| Question | campus_id | BIGINT | 否 | 所属校区,跨校区或总部级数据为空 | 普通 |
| Question | created_by | BIGINT | 是 | 创建人账号 ID | 普通 |
| Question | created_at | DATETIME | 是 | 创建时间 | 普通 |
| Question | updated_by | BIGINT | 否 | 最后更新人账号 ID | 普通 |
| Question | updated_at | DATETIME | 否 | 最后更新时间 | 普通 |
| Question | is_deleted | TINYINT | 是 | 是否已删除,0 未删除,1 已删除 | 普通 |
| Question | deleted_at | DATETIME | 否 | 删除时间,未删除为空 | 普通 |
| Question | deleted_by | BIGINT | 否 | 删除人账号 ID,未删除为空 | 普通 |
| Question | version | INT | 是 | 乐观锁版本号,写操作必须校验 | 普通 |
| Question | question_no | VARCHAR(64) | 是 | 题目编号,唯一 | 普通 |
| Question | question_type | VARCHAR(32) | 是 | 单选/多选/填空/判断/主观/听力 | 普通 |
| Question | question_stem | TEXT | 是 | 题干 | 普通 |
| Question | answer_schema | JSON | 是 | 答案和解析 | 普通 |
| Question | difficulty | VARCHAR(32) | 否 | 难度 | 普通 |
| Question | publish_status | VARCHAR(32) | 是 | 草稿/已发布/已下架 | 普通 |
| ResourceAuthorizationRule | id | BIGINT | 是 | 主键,雪花或号段生成,禁止复用 | 普通 |
| ResourceAuthorizationRule | tenant_id | BIGINT | 是 | 集团/租户隔离字段,所有查询必须带租户上下文 | 普通 |
| ResourceAuthorizationRule | org_id | BIGINT | 否 | 所属组织,集团级或公共配置为空 | 普通 |
| ResourceAuthorizationRule | campus_id | BIGINT | 否 | 所属校区,跨校区或总部级数据为空 | 普通 |
| ResourceAuthorizationRule | created_by | BIGINT | 是 | 创建人账号 ID | 普通 |
| ResourceAuthorizationRule | created_at | DATETIME | 是 | 创建时间 | 普通 |
| ResourceAuthorizationRule | updated_by | BIGINT | 否 | 最后更新人账号 ID | 普通 |
| ResourceAuthorizationRule | updated_at | DATETIME | 否 | 最后更新时间 | 普通 |
| ResourceAuthorizationRule | is_deleted | TINYINT | 是 | 是否已删除,0 未删除,1 已删除 | 普通 |
| ResourceAuthorizationRule | deleted_at | DATETIME | 否 | 删除时间,未删除为空 | 普通 |
| ResourceAuthorizationRule | deleted_by | BIGINT | 否 | 删除人账号 ID,未删除为空 | 普通 |
| ResourceAuthorizationRule | version | INT | 是 | 乐观锁版本号,写操作必须校验 | 普通 |
| ResourceAuthorizationRule | rule_no | VARCHAR(64) | 是 | 授权规则编号,唯一 | 普通 |
| ResourceAuthorizationRule | resource_id | BIGINT | 是 | 资源 ID | 普通 |
| ResourceAuthorizationRule | target_type | VARCHAR(32) | 是 | 课程/班级/学员/员工/角色 | 普通 |
| ResourceAuthorizationRule | target_scope | JSON | 是 | 授权对象范围 | 普通 |
| ResourceAuthorizationRule | valid_from | DATETIME | 否 | 有效开始 | 普通 |
| ResourceAuthorizationRule | valid_to | DATETIME | 否 | 有效截止 | 普通 |
引用对象字段字典
| 引用表 | 对象 | 字段 | 类型 | 必填 | 规则 | 数据级别 |
|---|---|---|---|---|---|---|
| sys_organization | Organization | id | BIGINT | 是 | 主键,雪花或号段生成,禁止复用 | 普通 |
| sys_organization | Organization | tenant_id | BIGINT | 是 | 集团/租户隔离字段,所有查询必须带租户上下文 | 普通 |
| sys_organization | Organization | org_id | BIGINT | 否 | 所属组织,集团级或公共配置为空 | 普通 |
| sys_organization | Organization | campus_id | BIGINT | 否 | 所属校区,跨校区或总部级数据为空 | 普通 |
| sys_organization | Organization | created_by | BIGINT | 是 | 创建人账号 ID | 普通 |
| sys_organization | Organization | created_at | DATETIME | 是 | 创建时间 | 普通 |
| sys_organization | Organization | updated_by | BIGINT | 否 | 最后更新人账号 ID | 普通 |
| sys_organization | Organization | updated_at | DATETIME | 否 | 最后更新时间 | 普通 |
| sys_organization | Organization | is_deleted | TINYINT | 是 | 是否已删除,0 未删除,1 已删除 | 普通 |
| sys_organization | Organization | deleted_at | DATETIME | 否 | 删除时间,未删除为空 | 普通 |
| sys_organization | Organization | deleted_by | BIGINT | 否 | 删除人账号 ID,未删除为空 | 普通 |
| sys_organization | Organization | version | INT | 是 | 乐观锁版本号,写操作必须校验 | 普通 |
| sys_organization | Organization | org_code | VARCHAR(64) | 是 | 组织编码,租户内唯一 | 普通 |
| sys_organization | Organization | org_name | VARCHAR(128) | 是 | 组织名称 | 普通 |
| sys_organization | Organization | org_type | VARCHAR(32) | 是 | 集团/区域/校区/部门/法人主体 | 普通 |
| sys_organization | Organization | parent_id | BIGINT | 否 | 上级组织 ID,根节点为空 | 普通 |
| sys_organization | Organization | sort_no | INT | 否 | 同级排序 | 普通 |
| sys_organization | Organization | enabled | TINYINT | 是 | 是否启用 | 普通 |
| sys_user | User/Employee | id | BIGINT | 是 | 主键,雪花或号段生成,禁止复用 | 普通 |
| sys_user | User/Employee | tenant_id | BIGINT | 是 | 集团/租户隔离字段,所有查询必须带租户上下文 | 普通 |
| sys_user | User/Employee | org_id | BIGINT | 否 | 所属组织,集团级或公共配置为空 | 普通 |
| sys_user | User/Employee | campus_id | BIGINT | 否 | 所属校区,跨校区或总部级数据为空 | 普通 |
| sys_user | User/Employee | created_by | BIGINT | 是 | 创建人账号 ID | 普通 |
| sys_user | User/Employee | created_at | DATETIME | 是 | 创建时间 | 普通 |
| sys_user | User/Employee | updated_by | BIGINT | 否 | 最后更新人账号 ID | 普通 |
| sys_user | User/Employee | updated_at | DATETIME | 否 | 最后更新时间 | 普通 |
| sys_user | User/Employee | is_deleted | TINYINT | 是 | 是否已删除,0 未删除,1 已删除 | 普通 |
| sys_user | User/Employee | deleted_at | DATETIME | 否 | 删除时间,未删除为空 | 普通 |
| sys_user | User/Employee | deleted_by | BIGINT | 否 | 删除人账号 ID,未删除为空 | 普通 |
| sys_user | User/Employee | version | INT | 是 | 乐观锁版本号,写操作必须校验 | 普通 |
| sys_user | User/Employee | user_no | VARCHAR(64) | 是 | 账号编号,唯一 | 普通 |
| sys_user | User/Employee | login_name | VARCHAR(64) | 是 | 登录名,唯一 | 普通 |
| sys_user | User/Employee | mobile | VARCHAR(32) | 否 | 手机号,敏感脱敏展示 | 敏感 |
| sys_user | User/Employee | password_hash | VARCHAR(255) | 否 | 密码哈希,禁止前端返回 | 高敏 |
| sys_user | User/Employee | user_type | VARCHAR(32) | 是 | 员工/学员/家长/外部账号 | 普通 |
| sys_user | User/Employee | login_status | VARCHAR(32) | 是 | 正常/锁定/停用/待激活 | 普通 |
| sys_employee | Employee | id | BIGINT | 是 | 主键,雪花或号段生成,禁止复用 | 普通 |
| sys_employee | Employee | tenant_id | BIGINT | 是 | 集团/租户隔离字段,所有查询必须带租户上下文 | 普通 |
| sys_employee | Employee | org_id | BIGINT | 否 | 所属组织,集团级或公共配置为空 | 普通 |
| sys_employee | Employee | campus_id | BIGINT | 否 | 所属校区,跨校区或总部级数据为空 | 普通 |
| sys_employee | Employee | created_by | BIGINT | 是 | 创建人账号 ID | 普通 |
| sys_employee | Employee | created_at | DATETIME | 是 | 创建时间 | 普通 |
| sys_employee | Employee | updated_by | BIGINT | 否 | 最后更新人账号 ID | 普通 |
| sys_employee | Employee | updated_at | DATETIME | 否 | 最后更新时间 | 普通 |
| sys_employee | Employee | is_deleted | TINYINT | 是 | 是否已删除,0 未删除,1 已删除 | 普通 |
| sys_employee | Employee | deleted_at | DATETIME | 否 | 删除时间,未删除为空 | 普通 |
| sys_employee | Employee | deleted_by | BIGINT | 否 | 删除人账号 ID,未删除为空 | 普通 |
| sys_employee | Employee | version | INT | 是 | 乐观锁版本号,写操作必须校验 | 普通 |
| sys_employee | Employee | employee_no | VARCHAR(64) | 是 | 工号,唯一 | 普通 |
| sys_employee | Employee | user_id | BIGINT | 否 | 关联账号 ID | 普通 |
| sys_employee | Employee | employee_name | VARCHAR(64) | 是 | 员工姓名 | 普通 |
| sys_employee | Employee | primary_campus_id | BIGINT | 否 | 主校区 ID | 普通 |
| sys_employee | Employee | job_title | VARCHAR(64) | 否 | 岗位名称 | 普通 |
| sys_employee | Employee | hire_status | VARCHAR(32) | 是 | 在职/试用/离职/停用 | 普通 |
| sys_role | Role | id | BIGINT | 是 | 主键,雪花或号段生成,禁止复用 | 普通 |
| sys_role | Role | tenant_id | BIGINT | 是 | 集团/租户隔离字段,所有查询必须带租户上下文 | 普通 |
| sys_role | Role | org_id | BIGINT | 否 | 所属组织,集团级或公共配置为空 | 普通 |
| sys_role | Role | campus_id | BIGINT | 否 | 所属校区,跨校区或总部级数据为空 | 普通 |
| sys_role | Role | created_by | BIGINT | 是 | 创建人账号 ID | 普通 |
| sys_role | Role | created_at | DATETIME | 是 | 创建时间 | 普通 |
| sys_role | Role | updated_by | BIGINT | 否 | 最后更新人账号 ID | 普通 |
| sys_role | Role | updated_at | DATETIME | 否 | 最后更新时间 | 普通 |
| sys_role | Role | is_deleted | TINYINT | 是 | 是否已删除,0 未删除,1 已删除 | 普通 |
| sys_role | Role | deleted_at | DATETIME | 否 | 删除时间,未删除为空 | 普通 |
| sys_role | Role | deleted_by | BIGINT | 否 | 删除人账号 ID,未删除为空 | 普通 |
| sys_role | Role | version | INT | 是 | 乐观锁版本号,写操作必须校验 | 普通 |
| sys_role | Role | role_code | VARCHAR(64) | 是 | 角色编码,唯一 | 普通 |
| sys_role | Role | role_name | VARCHAR(128) | 是 | 角色名称 | 普通 |
| sys_role | Role | role_level | VARCHAR(32) | 是 | 总部/区域/校区/个人 | 普通 |
| sys_role | Role | data_scope_type | VARCHAR(32) | 是 | 数据范围类型 | 普通 |
| sys_role | Role | enabled | TINYINT | 是 | 是否启用 | 普通 |
| sys_approval_flow | ApprovalFlow | id | BIGINT | 是 | 主键,雪花或号段生成,禁止复用 | 普通 |
| sys_approval_flow | ApprovalFlow | tenant_id | BIGINT | 是 | 集团/租户隔离字段,所有查询必须带租户上下文 | 普通 |
| sys_approval_flow | ApprovalFlow | org_id | BIGINT | 否 | 所属组织,集团级或公共配置为空 | 普通 |
| sys_approval_flow | ApprovalFlow | campus_id | BIGINT | 否 | 所属校区,跨校区或总部级数据为空 | 普通 |
| sys_approval_flow | ApprovalFlow | created_by | BIGINT | 是 | 创建人账号 ID | 普通 |
| sys_approval_flow | ApprovalFlow | created_at | DATETIME | 是 | 创建时间 | 普通 |
| sys_approval_flow | ApprovalFlow | updated_by | BIGINT | 否 | 最后更新人账号 ID | 普通 |
| sys_approval_flow | ApprovalFlow | updated_at | DATETIME | 否 | 最后更新时间 | 普通 |
| sys_approval_flow | ApprovalFlow | is_deleted | TINYINT | 是 | 是否已删除,0 未删除,1 已删除 | 普通 |
| sys_approval_flow | ApprovalFlow | deleted_at | DATETIME | 否 | 删除时间,未删除为空 | 普通 |
| sys_approval_flow | ApprovalFlow | deleted_by | BIGINT | 否 | 删除人账号 ID,未删除为空 | 普通 |
| sys_approval_flow | ApprovalFlow | version | INT | 是 | 乐观锁版本号,写操作必须校验 | 普通 |
| sys_approval_flow | ApprovalFlow | flow_code | VARCHAR(64) | 是 | 审批流编码,唯一 | 普通 |
| sys_approval_flow | ApprovalFlow | biz_type | VARCHAR(64) | 是 | 业务类型 | 普通 |
| sys_approval_flow | ApprovalFlow | flow_name | VARCHAR(128) | 是 | 审批流名称 | 普通 |
| sys_approval_flow | ApprovalFlow | condition_json | JSON | 否 | 触发条件 | 普通 |
| sys_approval_flow | ApprovalFlow | node_json | JSON | 是 | 节点、审批人和超时规则 | 普通 |
| sys_approval_flow | ApprovalFlow | version_no | INT | 是 | 审批流版本号 | 普通 |
| sys_approval_flow | ApprovalFlow | enabled | TINYINT | 是 | 是否启用 | 普通 |
| sys_message_template | MessageTemplate | id | BIGINT | 是 | 主键,雪花或号段生成,禁止复用 | 普通 |
| sys_message_template | MessageTemplate | tenant_id | BIGINT | 是 | 集团/租户隔离字段,所有查询必须带租户上下文 | 普通 |
| sys_message_template | MessageTemplate | org_id | BIGINT | 否 | 所属组织,集团级或公共配置为空 | 普通 |
| sys_message_template | MessageTemplate | campus_id | BIGINT | 否 | 所属校区,跨校区或总部级数据为空 | 普通 |
| sys_message_template | MessageTemplate | created_by | BIGINT | 是 | 创建人账号 ID | 普通 |
| sys_message_template | MessageTemplate | created_at | DATETIME | 是 | 创建时间 | 普通 |
| sys_message_template | MessageTemplate | updated_by | BIGINT | 否 | 最后更新人账号 ID | 普通 |
| sys_message_template | MessageTemplate | updated_at | DATETIME | 否 | 最后更新时间 | 普通 |
| sys_message_template | MessageTemplate | is_deleted | TINYINT | 是 | 是否已删除,0 未删除,1 已删除 | 普通 |
| sys_message_template | MessageTemplate | deleted_at | DATETIME | 否 | 删除时间,未删除为空 | 普通 |
| sys_message_template | MessageTemplate | deleted_by | BIGINT | 否 | 删除人账号 ID,未删除为空 | 普通 |
| sys_message_template | MessageTemplate | version | INT | 是 | 乐观锁版本号,写操作必须校验 | 普通 |
| sys_message_template | MessageTemplate | template_code | VARCHAR(64) | 是 | 模板编码,唯一 | 普通 |
| sys_message_template | MessageTemplate | template_name | VARCHAR(128) | 是 | 模板名称 | 普通 |
| sys_message_template | MessageTemplate | channel | VARCHAR(32) | 是 | 站内信/短信/微信小程序/企微/Push | 普通 |
| sys_message_template | MessageTemplate | receiver_rule | JSON | 是 | 接收人规则 | 普通 |
| sys_message_template | MessageTemplate | content_template | TEXT | 是 | 模板内容 | 普通 |
| sys_message_template | MessageTemplate | enabled | TINYINT | 是 | 是否启用 | 普通 |
| sys_audit_log | AuditLog | id | BIGINT | 是 | 主键,雪花或号段生成,禁止复用 | 普通 |
| sys_audit_log | AuditLog | tenant_id | BIGINT | 是 | 集团/租户隔离字段,所有查询必须带租户上下文 | 普通 |
| sys_audit_log | AuditLog | org_id | BIGINT | 否 | 所属组织,集团级或公共配置为空 | 普通 |
| sys_audit_log | AuditLog | campus_id | BIGINT | 否 | 所属校区,跨校区或总部级数据为空 | 普通 |
| sys_audit_log | AuditLog | created_by | BIGINT | 是 | 创建人账号 ID | 普通 |
| sys_audit_log | AuditLog | created_at | DATETIME | 是 | 创建时间 | 普通 |
| sys_audit_log | AuditLog | updated_by | BIGINT | 否 | 最后更新人账号 ID | 普通 |
| sys_audit_log | AuditLog | updated_at | DATETIME | 否 | 最后更新时间 | 普通 |
| sys_audit_log | AuditLog | is_deleted | TINYINT | 是 | 是否已删除,0 未删除,1 已删除 | 普通 |
| sys_audit_log | AuditLog | deleted_at | DATETIME | 否 | 删除时间,未删除为空 | 普通 |
| sys_audit_log | AuditLog | deleted_by | BIGINT | 否 | 删除人账号 ID,未删除为空 | 普通 |
| sys_audit_log | AuditLog | version | INT | 是 | 乐观锁版本号,写操作必须校验 | 普通 |
| sys_audit_log | AuditLog | operator_id | BIGINT | 是 | 操作人 ID | 普通 |
| sys_audit_log | AuditLog | biz_type | VARCHAR(64) | 是 | 业务类型 | 普通 |
| sys_audit_log | AuditLog | biz_id | BIGINT | 否 | 业务主键 ID | 普通 |
| sys_audit_log | AuditLog | action_code | VARCHAR(64) | 是 | 操作编码 | 普通 |
| sys_audit_log | AuditLog | before_snapshot | JSON | 否 | 变更前快照 | 普通 |
| sys_audit_log | AuditLog | after_snapshot | JSON | 否 | 变更后快照 | 普通 |
| sys_audit_log | AuditLog | ip_address | VARCHAR(64) | 否 | 操作 IP | 普通 |
| int_integration_log | IntegrationLog | id | BIGINT | 是 | 主键,雪花或号段生成,禁止复用 | 普通 |
| int_integration_log | IntegrationLog | tenant_id | BIGINT | 是 | 集团/租户隔离字段,所有查询必须带租户上下文 | 普通 |
| int_integration_log | IntegrationLog | org_id | BIGINT | 否 | 所属组织,集团级或公共配置为空 | 普通 |
| int_integration_log | IntegrationLog | campus_id | BIGINT | 否 | 所属校区,跨校区或总部级数据为空 | 普通 |
| int_integration_log | IntegrationLog | created_by | BIGINT | 是 | 创建人账号 ID | 普通 |
| int_integration_log | IntegrationLog | created_at | DATETIME | 是 | 创建时间 | 普通 |
| int_integration_log | IntegrationLog | updated_by | BIGINT | 否 | 最后更新人账号 ID | 普通 |
| int_integration_log | IntegrationLog | updated_at | DATETIME | 否 | 最后更新时间 | 普通 |
| int_integration_log | IntegrationLog | is_deleted | TINYINT | 是 | 是否已删除,0 未删除,1 已删除 | 普通 |
| int_integration_log | IntegrationLog | deleted_at | DATETIME | 否 | 删除时间,未删除为空 | 普通 |
| int_integration_log | IntegrationLog | deleted_by | BIGINT | 否 | 删除人账号 ID,未删除为空 | 普通 |
| int_integration_log | IntegrationLog | version | INT | 是 | 乐观锁版本号,写操作必须校验 | 普通 |
| int_integration_log | IntegrationLog | request_id | VARCHAR(128) | 是 | 请求 ID,幂等键 | 普通 |
| int_integration_log | IntegrationLog | system_code | VARCHAR(64) | 是 | 外部系统编码 | 普通 |
| int_integration_log | IntegrationLog | api_path | VARCHAR(512) | 是 | 接口路径 | 普通 |
| int_integration_log | IntegrationLog | biz_type | VARCHAR(64) | 否 | 业务类型 | 普通 |
| int_integration_log | IntegrationLog | biz_id | BIGINT | 否 | 业务 ID | 普通 |
| int_integration_log | IntegrationLog | request_payload | JSON | 否 | 请求报文,敏感字段脱敏 | 敏感 |
| int_integration_log | IntegrationLog | response_payload | JSON | 否 | 响应报文 | 普通 |
| int_integration_log | IntegrationLog | call_status | VARCHAR(32) | 是 | 成功/失败/超时/重试中 | 普通 |
| sec_sensitive_field_policy | SensitiveFieldPolicy | id | BIGINT | 是 | 主键,雪花或号段生成,禁止复用 | 普通 |
| sec_sensitive_field_policy | SensitiveFieldPolicy | tenant_id | BIGINT | 是 | 集团/租户隔离字段,所有查询必须带租户上下文 | 普通 |
| sec_sensitive_field_policy | SensitiveFieldPolicy | org_id | BIGINT | 否 | 所属组织,集团级或公共配置为空 | 普通 |
| sec_sensitive_field_policy | SensitiveFieldPolicy | campus_id | BIGINT | 否 | 所属校区,跨校区或总部级数据为空 | 普通 |
| sec_sensitive_field_policy | SensitiveFieldPolicy | created_by | BIGINT | 是 | 创建人账号 ID | 普通 |
| sec_sensitive_field_policy | SensitiveFieldPolicy | created_at | DATETIME | 是 | 创建时间 | 普通 |
| sec_sensitive_field_policy | SensitiveFieldPolicy | updated_by | BIGINT | 否 | 最后更新人账号 ID | 普通 |
| sec_sensitive_field_policy | SensitiveFieldPolicy | updated_at | DATETIME | 否 | 最后更新时间 | 普通 |
| sec_sensitive_field_policy | SensitiveFieldPolicy | is_deleted | TINYINT | 是 | 是否已删除,0 未删除,1 已删除 | 普通 |
| sec_sensitive_field_policy | SensitiveFieldPolicy | deleted_at | DATETIME | 否 | 删除时间,未删除为空 | 普通 |
| sec_sensitive_field_policy | SensitiveFieldPolicy | deleted_by | BIGINT | 否 | 删除人账号 ID,未删除为空 | 普通 |
| sec_sensitive_field_policy | SensitiveFieldPolicy | version | INT | 是 | 乐观锁版本号,写操作必须校验 | 普通 |
| sec_sensitive_field_policy | SensitiveFieldPolicy | field_code | VARCHAR(128) | 是 | 字段编码,唯一 | 普通 |
| sec_sensitive_field_policy | SensitiveFieldPolicy | biz_type | VARCHAR(64) | 是 | 业务类型 | 普通 |
| sec_sensitive_field_policy | SensitiveFieldPolicy | mask_rule | VARCHAR(64) | 是 | 脱敏规则 | 普通 |
| sec_sensitive_field_policy | SensitiveFieldPolicy | view_requires_approval | TINYINT | 是 | 明文查看是否需审批 | 普通 |
| sec_sensitive_field_policy | SensitiveFieldPolicy | watermark_required | TINYINT | 是 | 是否加水印 | 普通 |
| edu_course | Course/Product | id | BIGINT | 是 | 主键,雪花或号段生成,禁止复用 | 普通 |
| edu_course | Course/Product | tenant_id | BIGINT | 是 | 集团/租户隔离字段,所有查询必须带租户上下文 | 普通 |
| edu_course | Course/Product | org_id | BIGINT | 否 | 所属组织,集团级或公共配置为空 | 普通 |
| edu_course | Course/Product | campus_id | BIGINT | 否 | 所属校区,跨校区或总部级数据为空 | 普通 |
| edu_course | Course/Product | created_by | BIGINT | 是 | 创建人账号 ID | 普通 |
| edu_course | Course/Product | created_at | DATETIME | 是 | 创建时间 | 普通 |
| edu_course | Course/Product | updated_by | BIGINT | 否 | 最后更新人账号 ID | 普通 |
| edu_course | Course/Product | updated_at | DATETIME | 否 | 最后更新时间 | 普通 |
| edu_course | Course/Product | is_deleted | TINYINT | 是 | 是否已删除,0 未删除,1 已删除 | 普通 |
| edu_course | Course/Product | deleted_at | DATETIME | 否 | 删除时间,未删除为空 | 普通 |
| edu_course | Course/Product | deleted_by | BIGINT | 否 | 删除人账号 ID,未删除为空 | 普通 |
| edu_course | Course/Product | version | INT | 是 | 乐观锁版本号,写操作必须校验 | 普通 |
| edu_course | Course/Product | course_code | VARCHAR(64) | 是 | 课程编码,唯一 | 普通 |
| edu_course | Course/Product | course_name | VARCHAR(128) | 是 | 课程名称 | 普通 |
| edu_course | Course/Product | subject | VARCHAR(32) | 是 | 学科 | 普通 |
| edu_course | Course/Product | course_type | VARCHAR(32) | 是 | 班课/一对一/直播/录播 | 普通 |
| edu_course | Course/Product | grade_scope | JSON | 否 | 适用年级 | 普通 |
| edu_course | Course/Product | enabled | TINYINT | 是 | 是否启用 | 普通 |
| edu_homework | Homework | id | BIGINT | 是 | 主键,雪花或号段生成,禁止复用 | 普通 |
| edu_homework | Homework | tenant_id | BIGINT | 是 | 集团/租户隔离字段,所有查询必须带租户上下文 | 普通 |
| edu_homework | Homework | org_id | BIGINT | 否 | 所属组织,集团级或公共配置为空 | 普通 |
| edu_homework | Homework | campus_id | BIGINT | 否 | 所属校区,跨校区或总部级数据为空 | 普通 |
| edu_homework | Homework | created_by | BIGINT | 是 | 创建人账号 ID | 普通 |
| edu_homework | Homework | created_at | DATETIME | 是 | 创建时间 | 普通 |
| edu_homework | Homework | updated_by | BIGINT | 否 | 最后更新人账号 ID | 普通 |
| edu_homework | Homework | updated_at | DATETIME | 否 | 最后更新时间 | 普通 |
| edu_homework | Homework | is_deleted | TINYINT | 是 | 是否已删除,0 未删除,1 已删除 | 普通 |
| edu_homework | Homework | deleted_at | DATETIME | 否 | 删除时间,未删除为空 | 普通 |
| edu_homework | Homework | deleted_by | BIGINT | 否 | 删除人账号 ID,未删除为空 | 普通 |
| edu_homework | Homework | version | INT | 是 | 乐观锁版本号,写操作必须校验 | 普通 |
| edu_homework | Homework | homework_no | VARCHAR(64) | 是 | 作业编号,唯一 | 普通 |
| edu_homework | Homework | lesson_id | BIGINT | 是 | 课次 ID | 普通 |
| edu_homework | Homework | title | VARCHAR(128) | 是 | 作业标题 | 普通 |
| edu_homework | Homework | content_schema | JSON | 是 | 题目、附件、提交要求 | 普通 |
| edu_homework | Homework | deadline_at | DATETIME | 否 | 截止时间 | 普通 |
| edu_homework | Homework | publish_status | VARCHAR(32) | 是 | 草稿/已发布/已关闭 | 普通 |
| live_replay_policy | ReplayPublishPolicy/ReplayAccess | id | BIGINT | 是 | 主键,雪花或号段生成,禁止复用 | 普通 |
| live_replay_policy | ReplayPublishPolicy/ReplayAccess | tenant_id | BIGINT | 是 | 集团/租户隔离字段,所有查询必须带租户上下文 | 普通 |
| live_replay_policy | ReplayPublishPolicy/ReplayAccess | org_id | BIGINT | 否 | 所属组织,集团级或公共配置为空 | 普通 |
| live_replay_policy | ReplayPublishPolicy/ReplayAccess | campus_id | BIGINT | 否 | 所属校区,跨校区或总部级数据为空 | 普通 |
| live_replay_policy | ReplayPublishPolicy/ReplayAccess | created_by | BIGINT | 是 | 创建人账号 ID | 普通 |
| live_replay_policy | ReplayPublishPolicy/ReplayAccess | created_at | DATETIME | 是 | 创建时间 | 普通 |
| live_replay_policy | ReplayPublishPolicy/ReplayAccess | updated_by | BIGINT | 否 | 最后更新人账号 ID | 普通 |
| live_replay_policy | ReplayPublishPolicy/ReplayAccess | updated_at | DATETIME | 否 | 最后更新时间 | 普通 |
| live_replay_policy | ReplayPublishPolicy/ReplayAccess | is_deleted | TINYINT | 是 | 是否已删除,0 未删除,1 已删除 | 普通 |
| live_replay_policy | ReplayPublishPolicy/ReplayAccess | deleted_at | DATETIME | 否 | 删除时间,未删除为空 | 普通 |
| live_replay_policy | ReplayPublishPolicy/ReplayAccess | deleted_by | BIGINT | 否 | 删除人账号 ID,未删除为空 | 普通 |
| live_replay_policy | ReplayPublishPolicy/ReplayAccess | version | INT | 是 | 乐观锁版本号,写操作必须校验 | 普通 |
| live_replay_policy | ReplayPublishPolicy/ReplayAccess | policy_no | VARCHAR(64) | 是 | 策略编号,唯一 | 普通 |
| live_replay_policy | ReplayPublishPolicy/ReplayAccess | live_room_id | BIGINT | 是 | 直播间 ID | 普通 |
| live_replay_policy | ReplayPublishPolicy/ReplayAccess | publish_scope | JSON | 是 | 可见范围 | 普通 |
| live_replay_policy | ReplayPublishPolicy/ReplayAccess | access_rule | JSON | 是 | 有效期、次数、身份限制 | 普通 |
| live_replay_policy | ReplayPublishPolicy/ReplayAccess | publish_status | VARCHAR(32) | 是 | 未发布/已发布/已下线 | 普通 |
| mkt_live_qr_code | LiveQrCode | id | BIGINT | 是 | 主键,雪花或号段生成,禁止复用 | 普通 |
| mkt_live_qr_code | LiveQrCode | tenant_id | BIGINT | 是 | 集团/租户隔离字段,所有查询必须带租户上下文 | 普通 |
| mkt_live_qr_code | LiveQrCode | org_id | BIGINT | 否 | 所属组织,集团级或公共配置为空 | 普通 |
| mkt_live_qr_code | LiveQrCode | campus_id | BIGINT | 否 | 所属校区,跨校区或总部级数据为空 | 普通 |
| mkt_live_qr_code | LiveQrCode | created_by | BIGINT | 是 | 创建人账号 ID | 普通 |
| mkt_live_qr_code | LiveQrCode | created_at | DATETIME | 是 | 创建时间 | 普通 |
| mkt_live_qr_code | LiveQrCode | updated_by | BIGINT | 否 | 最后更新人账号 ID | 普通 |
| mkt_live_qr_code | LiveQrCode | updated_at | DATETIME | 否 | 最后更新时间 | 普通 |
| mkt_live_qr_code | LiveQrCode | is_deleted | TINYINT | 是 | 是否已删除,0 未删除,1 已删除 | 普通 |
| mkt_live_qr_code | LiveQrCode | deleted_at | DATETIME | 否 | 删除时间,未删除为空 | 普通 |
| mkt_live_qr_code | LiveQrCode | deleted_by | BIGINT | 否 | 删除人账号 ID,未删除为空 | 普通 |
| mkt_live_qr_code | LiveQrCode | version | INT | 是 | 乐观锁版本号,写操作必须校验 | 普通 |
| mkt_live_qr_code | LiveQrCode | qr_code | VARCHAR(64) | 是 | 活码编码,唯一 | 普通 |
| mkt_live_qr_code | LiveQrCode | biz_type | VARCHAR(64) | 是 | 活动页/资源/课程/直播/表单 | 普通 |
| mkt_live_qr_code | LiveQrCode | target_rule | JSON | 是 | 动态目标规则 | 普通 |
| mkt_live_qr_code | LiveQrCode | fallback_url | VARCHAR(512) | 否 | 失效或异常兜底地址 | 普通 |
| mkt_live_qr_code | LiveQrCode | rate_limit_rule | JSON | 否 | 防刷规则 | 普通 |
| mkt_live_qr_code | LiveQrCode | enabled | TINYINT | 是 | 是否启用 | 普通 |
| stu_learning_profile | LearningProfile | id | BIGINT | 是 | 主键,雪花或号段生成,禁止复用 | 普通 |
| stu_learning_profile | LearningProfile | tenant_id | BIGINT | 是 | 集团/租户隔离字段,所有查询必须带租户上下文 | 普通 |
| stu_learning_profile | LearningProfile | org_id | BIGINT | 否 | 所属组织,集团级或公共配置为空 | 普通 |
| stu_learning_profile | LearningProfile | campus_id | BIGINT | 否 | 所属校区,跨校区或总部级数据为空 | 普通 |
| stu_learning_profile | LearningProfile | created_by | BIGINT | 是 | 创建人账号 ID | 普通 |
| stu_learning_profile | LearningProfile | created_at | DATETIME | 是 | 创建时间 | 普通 |
| stu_learning_profile | LearningProfile | updated_by | BIGINT | 否 | 最后更新人账号 ID | 普通 |
| stu_learning_profile | LearningProfile | updated_at | DATETIME | 否 | 最后更新时间 | 普通 |
| stu_learning_profile | LearningProfile | is_deleted | TINYINT | 是 | 是否已删除,0 未删除,1 已删除 | 普通 |
| stu_learning_profile | LearningProfile | deleted_at | DATETIME | 否 | 删除时间,未删除为空 | 普通 |
| stu_learning_profile | LearningProfile | deleted_by | BIGINT | 否 | 删除人账号 ID,未删除为空 | 普通 |
| stu_learning_profile | LearningProfile | version | INT | 是 | 乐观锁版本号,写操作必须校验 | 普通 |
| stu_learning_profile | LearningProfile | student_id | BIGINT | 是 | 学员 ID | 普通 |
| stu_learning_profile | LearningProfile | course_id | BIGINT | 是 | 课程 ID | 普通 |
| stu_learning_profile | LearningProfile | progress_percent | DECIMAL(6,2) | 是 | 学习进度百分比 | 普通 |
| stu_learning_profile | LearningProfile | ability_tags | JSON | 否 | 能力标签 | 普通 |
| stu_learning_profile | LearningProfile | last_active_at | DATETIME | 否 | 最近学习时间 | 普通 |
| stu_learning_profile | LearningProfile | profile_snapshot | JSON | 否 | 学习画像快照 | 普通 |
JSON 字段结构与校验
| 表名 | 对象 | 字段 | 结构编码 | 结构定义 | 校验规则 | 示例 |
|---|---|---|---|---|---|---|
| res_resource_version | ResourceVersion | file_ids | ID_LIST | array<number> | 数组长度 1-500;元素必须为已存在且未逻辑删除的业务 ID | [10001,10002] |
| res_question | Question | answer_schema | ANSWER_PAYLOAD | {answers:[{questionId:number, answer:any, fileIds?:number[]}], durationSeconds:number, clientVersion:string} | 必答题不能为空;提交后形成不可变快照 | {"answers":[{"questionId":1,"answer":"A"}],"durationSeconds":360} |
| res_authorization_rule | ResourceAuthorizationRule | target_scope | ORG_SCOPE | {scopeType:string, orgIds:number[], campusIds:number[], includeChildren:boolean} | 组织和校区必须在当前租户授权范围内 | {"scopeType":"CAMPUS","campusIds":[101,102],"includeChildren":false} |
状态/枚举标准字典
| 表名 | 对象 | 字段 | 枚举编码 | 取值 | 终态/流转规则 | 字段说明 |
|---|---|---|---|---|---|---|
| res_learning_resource | LearningResource | tenant_id | TENANT_ID | 集团、租户隔离字段 | 非终态,可按状态机或字典规则流转 | 集团/租户隔离字段,所有查询必须带租户上下文 |
| res_learning_resource | LearningResource | is_deleted | BOOL_DELETED | 0 未删除、1 已删除 | 非终态,可按状态机或字典规则流转 | 是否已删除,0 未删除,1 已删除 |
| res_learning_resource | LearningResource | resource_type | RESOURCE_TYPE | 课件、视频、音频、题库、文章、试卷 | 非终态,可按状态机或字典规则流转 | 课件/视频/音频/题库/文章/试卷 |
| res_learning_resource | LearningResource | publish_status | PUBLISH_STATUS | DRAFT 草稿、PUBLISHING 发布中、PUBLISHED 已发布、FAILED 发布失败、OFFLINE 已下线、ARCHIVED 已归档 | 包含终态,终态禁止直接编辑,需走变更/红冲/撤回流程 | 草稿/审核中/已发布/已下架 |
| res_resource_version | ResourceVersion | tenant_id | TENANT_ID | 集团、租户隔离字段 | 非终态,可按状态机或字典规则流转 | 集团/租户隔离字段,所有查询必须带租户上下文 |
| res_resource_version | ResourceVersion | is_deleted | BOOL_DELETED | 0 未删除、1 已删除 | 非终态,可按状态机或字典规则流转 | 是否已删除,0 未删除,1 已删除 |
| res_resource_version | ResourceVersion | version_status | VERSION_STATUS | 草稿、已发布、已废弃 | 非终态,可按状态机或字典规则流转 | 草稿/已发布/已废弃 |
| res_question | Question | tenant_id | TENANT_ID | 集团、租户隔离字段 | 非终态,可按状态机或字典规则流转 | 集团/租户隔离字段,所有查询必须带租户上下文 |
| res_question | Question | is_deleted | BOOL_DELETED | 0 未删除、1 已删除 | 非终态,可按状态机或字典规则流转 | 是否已删除,0 未删除,1 已删除 |
| res_question | Question | question_type | QUESTION_TYPE | 单选、多选、填空、判断、主观、听力 | 非终态,可按状态机或字典规则流转 | 单选/多选/填空/判断/主观/听力 |
| res_question | Question | publish_status | PUBLISH_STATUS | DRAFT 草稿、PUBLISHING 发布中、PUBLISHED 已发布、FAILED 发布失败、OFFLINE 已下线、ARCHIVED 已归档 | 包含终态,终态禁止直接编辑,需走变更/红冲/撤回流程 | 草稿/已发布/已下架 |
| res_authorization_rule | ResourceAuthorizationRule | tenant_id | TENANT_ID | 集团、租户隔离字段 | 非终态,可按状态机或字典规则流转 | 集团/租户隔离字段,所有查询必须带租户上下文 |
| res_authorization_rule | ResourceAuthorizationRule | is_deleted | BOOL_DELETED | 0 未删除、1 已删除 | 非终态,可按状态机或字典规则流转 | 是否已删除,0 未删除,1 已删除 |
| res_authorization_rule | ResourceAuthorizationRule | target_type | TARGET_TYPE | 课程、班级、学员、员工、角色 | 非终态,可按状态机或字典规则流转 | 课程/班级/学员/员工/角色 |
| res_authorization_rule | ResourceAuthorizationRule | target_scope | TARGET_SCOPE | COURSE 课程、CLASS 班级、STUDENT 学员、EMPLOYEE 员工、ROLE 角色、CAMPUS 校区、PUBLIC 公开 | 非终态,可按状态机或字典规则流转 | 授权对象范围 |
敏感字段与数据安全策略
| 来源 | 表名 | 对象 | 字段 | 数据级别 | 脱敏/返回策略 | 明文查看条件 | 导出策略 | 审计要求 | 端侧展示规则 |
|---|---|---|---|---|---|---|---|---|---|
| 本模块对象 | res_authorization_rule | ResourceAuthorizationRule | rule_no | 普通 | BIZ_FIELD_MASK | 按字段权限、数据范围和业务角色展示;明文查看按敏感字段审批规则执行 | 导出时按数据级别触发审批、水印、下载有效期和日志 | 查看、修改、删除、导出、下载和审批均记录操作审计 | 默认遵循总部、区域、校区、团队、本人数据范围和端侧最小可见原则 |
| 本模块对象 | res_authorization_rule | ResourceAuthorizationRule | target_scope | 普通 | PAYLOAD_DESENSITIZE | 接口报文、快照和文件地址默认脱敏;排障查看需运维/安全授权 | 导出日志或报文时自动清理手机号、证件号、密钥、票据和人脸字段 | 查看报文、下载附件、失败重放和人工补偿均记录审计 | 业务端展示摘要和状态,完整报文仅运维/安全后台查看 |
| 引用对象 | sys_user | User/Employee | mobile | 敏感 | MOBILE_MASK | 默认展示 138****0000;明文查看需字段权限或敏感字段查看审批 | 导出手机号必须触发导出审批、下载水印和有效期控制 | 明文查看、复制、导出和批量下载均写入 SensitiveAccessLog | PC 管理端按字段权限展示;移动端仅展示本人授权范围内脱敏信息 |
| 引用对象 | sys_user | User/Employee | password_hash | 高敏 | NEVER_RETURN | 禁止接口返回明文;仅密钥中心/鉴权服务按服务身份读取密钥引用 | 禁止导出;配置导出只允许导出脱敏引用和启停状态 | 配置新增、修改、启停、轮换和失败读取均记录安全审计 | 前端只展示已配置/未配置、到期时间和连通性状态,不展示密钥值 |
| 引用对象 | int_integration_log | IntegrationLog | request_payload | 敏感 | PAYLOAD_DESENSITIZE | 接口报文、快照和文件地址默认脱敏;排障查看需运维/安全授权 | 导出日志或报文时自动清理手机号、证件号、密钥、票据和人脸字段 | 查看报文、下载附件、失败重放和人工补偿均记录审计 | 业务端展示摘要和状态,完整报文仅运维/安全后台查看 |
| 引用对象 | int_integration_log | IntegrationLog | response_payload | 普通 | PAYLOAD_DESENSITIZE | 接口报文、快照和文件地址默认脱敏;排障查看需运维/安全授权 | 导出日志或报文时自动清理手机号、证件号、密钥、票据和人脸字段 | 查看报文、下载附件、失败重放和人工补偿均记录审计 | 业务端展示摘要和状态,完整报文仅运维/安全后台查看 |
| 引用对象 | sec_sensitive_field_policy | SensitiveFieldPolicy | mask_rule | 普通 | BIZ_FIELD_MASK | 按字段权限、数据范围和业务角色展示;明文查看按敏感字段审批规则执行 | 导出时按数据级别触发审批、水印、下载有效期和日志 | 查看、修改、删除、导出、下载和审批均记录操作审计 | 默认遵循总部、区域、校区、团队、本人数据范围和端侧最小可见原则 |
核心数据表完整字段
| 表名 | 对象 | 字段 | 类型 | 必填 | 规则 | 数据级别 |
|---|---|---|---|---|---|---|
| res_learning_resource | LearningResource | id | BIGINT | 是 | 主键,雪花或号段生成,禁止复用 | 普通 |
| res_learning_resource | LearningResource | tenant_id | BIGINT | 是 | 集团/租户隔离字段,所有查询必须带租户上下文 | 普通 |
| res_learning_resource | LearningResource | org_id | BIGINT | 否 | 所属组织,集团级或公共配置为空 | 普通 |
| res_learning_resource | LearningResource | campus_id | BIGINT | 否 | 所属校区,跨校区或总部级数据为空 | 普通 |
| res_learning_resource | LearningResource | created_by | BIGINT | 是 | 创建人账号 ID | 普通 |
| res_learning_resource | LearningResource | created_at | DATETIME | 是 | 创建时间 | 普通 |
| res_learning_resource | LearningResource | updated_by | BIGINT | 否 | 最后更新人账号 ID | 普通 |
| res_learning_resource | LearningResource | updated_at | DATETIME | 否 | 最后更新时间 | 普通 |
| res_learning_resource | LearningResource | is_deleted | TINYINT | 是 | 是否已删除,0 未删除,1 已删除 | 普通 |
| res_learning_resource | LearningResource | deleted_at | DATETIME | 否 | 删除时间,未删除为空 | 普通 |
| res_learning_resource | LearningResource | deleted_by | BIGINT | 否 | 删除人账号 ID,未删除为空 | 普通 |
| res_learning_resource | LearningResource | version | INT | 是 | 乐观锁版本号,写操作必须校验 | 普通 |
| res_learning_resource | LearningResource | resource_no | VARCHAR(64) | 是 | 资源编号,唯一 | 普通 |
| res_learning_resource | LearningResource | resource_name | VARCHAR(128) | 是 | 资源名称 | 普通 |
| res_learning_resource | LearningResource | resource_type | VARCHAR(32) | 是 | 课件/视频/音频/题库/文章/试卷 | 普通 |
| res_learning_resource | LearningResource | category_id | BIGINT | 否 | 资源分类 | 普通 |
| res_learning_resource | LearningResource | file_id | BIGINT | 否 | 文件 ID | 普通 |
| res_learning_resource | LearningResource | publish_status | VARCHAR(32) | 是 | 草稿/审核中/已发布/已下架 | 普通 |
| res_resource_version | ResourceVersion | id | BIGINT | 是 | 主键,雪花或号段生成,禁止复用 | 普通 |
| res_resource_version | ResourceVersion | tenant_id | BIGINT | 是 | 集团/租户隔离字段,所有查询必须带租户上下文 | 普通 |
| res_resource_version | ResourceVersion | org_id | BIGINT | 否 | 所属组织,集团级或公共配置为空 | 普通 |
| res_resource_version | ResourceVersion | campus_id | BIGINT | 否 | 所属校区,跨校区或总部级数据为空 | 普通 |
| res_resource_version | ResourceVersion | created_by | BIGINT | 是 | 创建人账号 ID | 普通 |
| res_resource_version | ResourceVersion | created_at | DATETIME | 是 | 创建时间 | 普通 |
| res_resource_version | ResourceVersion | updated_by | BIGINT | 否 | 最后更新人账号 ID | 普通 |
| res_resource_version | ResourceVersion | updated_at | DATETIME | 否 | 最后更新时间 | 普通 |
| res_resource_version | ResourceVersion | is_deleted | TINYINT | 是 | 是否已删除,0 未删除,1 已删除 | 普通 |
| res_resource_version | ResourceVersion | deleted_at | DATETIME | 否 | 删除时间,未删除为空 | 普通 |
| res_resource_version | ResourceVersion | deleted_by | BIGINT | 否 | 删除人账号 ID,未删除为空 | 普通 |
| res_resource_version | ResourceVersion | version | INT | 是 | 乐观锁版本号,写操作必须校验 | 普通 |
| res_resource_version | ResourceVersion | resource_id | BIGINT | 是 | 资源 ID | 普通 |
| res_resource_version | ResourceVersion | version_no | INT | 是 | 版本号 | 普通 |
| res_resource_version | ResourceVersion | change_desc | VARCHAR(512) | 否 | 变更说明 | 普通 |
| res_resource_version | ResourceVersion | file_ids | JSON | 否 | 版本文件 | 普通 |
| res_resource_version | ResourceVersion | publish_at | DATETIME | 否 | 发布时间 | 普通 |
| res_resource_version | ResourceVersion | version_status | VARCHAR(32) | 是 | 草稿/已发布/已废弃 | 普通 |
| res_question | Question | id | BIGINT | 是 | 主键,雪花或号段生成,禁止复用 | 普通 |
| res_question | Question | tenant_id | BIGINT | 是 | 集团/租户隔离字段,所有查询必须带租户上下文 | 普通 |
| res_question | Question | org_id | BIGINT | 否 | 所属组织,集团级或公共配置为空 | 普通 |
| res_question | Question | campus_id | BIGINT | 否 | 所属校区,跨校区或总部级数据为空 | 普通 |
| res_question | Question | created_by | BIGINT | 是 | 创建人账号 ID | 普通 |
| res_question | Question | created_at | DATETIME | 是 | 创建时间 | 普通 |
| res_question | Question | updated_by | BIGINT | 否 | 最后更新人账号 ID | 普通 |
| res_question | Question | updated_at | DATETIME | 否 | 最后更新时间 | 普通 |
| res_question | Question | is_deleted | TINYINT | 是 | 是否已删除,0 未删除,1 已删除 | 普通 |
| res_question | Question | deleted_at | DATETIME | 否 | 删除时间,未删除为空 | 普通 |
| res_question | Question | deleted_by | BIGINT | 否 | 删除人账号 ID,未删除为空 | 普通 |
| res_question | Question | version | INT | 是 | 乐观锁版本号,写操作必须校验 | 普通 |
| res_question | Question | question_no | VARCHAR(64) | 是 | 题目编号,唯一 | 普通 |
| res_question | Question | question_type | VARCHAR(32) | 是 | 单选/多选/填空/判断/主观/听力 | 普通 |
| res_question | Question | question_stem | TEXT | 是 | 题干 | 普通 |
| res_question | Question | answer_schema | JSON | 是 | 答案和解析 | 普通 |
| res_question | Question | difficulty | VARCHAR(32) | 否 | 难度 | 普通 |
| res_question | Question | publish_status | VARCHAR(32) | 是 | 草稿/已发布/已下架 | 普通 |
| res_authorization_rule | ResourceAuthorizationRule | id | BIGINT | 是 | 主键,雪花或号段生成,禁止复用 | 普通 |
| res_authorization_rule | ResourceAuthorizationRule | tenant_id | BIGINT | 是 | 集团/租户隔离字段,所有查询必须带租户上下文 | 普通 |
| res_authorization_rule | ResourceAuthorizationRule | org_id | BIGINT | 否 | 所属组织,集团级或公共配置为空 | 普通 |
| res_authorization_rule | ResourceAuthorizationRule | campus_id | BIGINT | 否 | 所属校区,跨校区或总部级数据为空 | 普通 |
| res_authorization_rule | ResourceAuthorizationRule | created_by | BIGINT | 是 | 创建人账号 ID | 普通 |
| res_authorization_rule | ResourceAuthorizationRule | created_at | DATETIME | 是 | 创建时间 | 普通 |
| res_authorization_rule | ResourceAuthorizationRule | updated_by | BIGINT | 否 | 最后更新人账号 ID | 普通 |
| res_authorization_rule | ResourceAuthorizationRule | updated_at | DATETIME | 否 | 最后更新时间 | 普通 |
| res_authorization_rule | ResourceAuthorizationRule | is_deleted | TINYINT | 是 | 是否已删除,0 未删除,1 已删除 | 普通 |
| res_authorization_rule | ResourceAuthorizationRule | deleted_at | DATETIME | 否 | 删除时间,未删除为空 | 普通 |
| res_authorization_rule | ResourceAuthorizationRule | deleted_by | BIGINT | 否 | 删除人账号 ID,未删除为空 | 普通 |
| res_authorization_rule | ResourceAuthorizationRule | version | INT | 是 | 乐观锁版本号,写操作必须校验 | 普通 |
| res_authorization_rule | ResourceAuthorizationRule | rule_no | VARCHAR(64) | 是 | 授权规则编号,唯一 | 普通 |
| res_authorization_rule | ResourceAuthorizationRule | resource_id | BIGINT | 是 | 资源 ID | 普通 |
| res_authorization_rule | ResourceAuthorizationRule | target_type | VARCHAR(32) | 是 | 课程/班级/学员/员工/角色 | 普通 |
| res_authorization_rule | ResourceAuthorizationRule | target_scope | JSON | 是 | 授权对象范围 | 普通 |
| res_authorization_rule | ResourceAuthorizationRule | valid_from | DATETIME | 否 | 有效开始 | 普通 |
| res_authorization_rule | ResourceAuthorizationRule | valid_to | DATETIME | 否 | 有效截止 | 普通 |
数据表与对象映射
| 表名 | 对象 | 用途 | 完整字段 | 索引建议 |
|---|---|---|---|---|
| res_learning_resource | LearningResource | 教研学习资源 | id(BIGINT,必填)、tenant_id(BIGINT,必填)、org_id(BIGINT)、campus_id(BIGINT)、created_by(BIGINT,必填)、created_at(DATETIME,必填)、updated_by(BIGINT)、updated_at(DATETIME)、is_deleted(TINYINT,必填)、deleted_at(DATETIME)、deleted_by(BIGINT)、version(INT,必填)、resource_no(VARCHAR(64),必填)、resource_name(VARCHAR(128),必填)、resource_type(VARCHAR(32),必填)、category_id(BIGINT)、file_id(BIGINT)、publish_status(VARCHAR(32),必填) | uk_resource_no、idx_type_status |
| res_resource_version | ResourceVersion | 资源版本与发布记录 | id(BIGINT,必填)、tenant_id(BIGINT,必填)、org_id(BIGINT)、campus_id(BIGINT)、created_by(BIGINT,必填)、created_at(DATETIME,必填)、updated_by(BIGINT)、updated_at(DATETIME)、is_deleted(TINYINT,必填)、deleted_at(DATETIME)、deleted_by(BIGINT)、version(INT,必填)、resource_id(BIGINT,必填)、version_no(INT,必填)、change_desc(VARCHAR(512))、file_ids(JSON)、publish_at(DATETIME)、version_status(VARCHAR(32),必填) | uk_resource_version、idx_status |
| res_question | Question | 题库题目 | id(BIGINT,必填)、tenant_id(BIGINT,必填)、org_id(BIGINT)、campus_id(BIGINT)、created_by(BIGINT,必填)、created_at(DATETIME,必填)、updated_by(BIGINT)、updated_at(DATETIME)、is_deleted(TINYINT,必填)、deleted_at(DATETIME)、deleted_by(BIGINT)、version(INT,必填)、question_no(VARCHAR(64),必填)、question_type(VARCHAR(32),必填)、question_stem(TEXT,必填)、answer_schema(JSON,必填)、difficulty(VARCHAR(32))、publish_status(VARCHAR(32),必填) | uk_question_no、idx_type_status |
| res_authorization_rule | ResourceAuthorizationRule | 资源授权规则 | id(BIGINT,必填)、tenant_id(BIGINT,必填)、org_id(BIGINT)、campus_id(BIGINT)、created_by(BIGINT,必填)、created_at(DATETIME,必填)、updated_by(BIGINT)、updated_at(DATETIME)、is_deleted(TINYINT,必填)、deleted_at(DATETIME)、deleted_by(BIGINT)、version(INT,必填)、rule_no(VARCHAR(64),必填)、resource_id(BIGINT,必填)、target_type(VARCHAR(32),必填)、target_scope(JSON,必填)、valid_from(DATETIME)、valid_to(DATETIME) | uk_rule_no、idx_resource |
12 · 状态机与业务规则
约束业务对象如何流转、何时可编辑、何时触发审批
原型需要把状态标签、可操作按钮和禁用原因展示清楚。| 对象 | 状态 | 触发与说明 |
|---|---|---|
| 课次 | 未开始 -> 待签到 -> 已签到 -> 已课消 -> 请假 -> 补课 -> 旷课 -> 异常待确认 | 排课发布、签到、课消、请假、补课和人工确认 |
| 人脸授权 | 未授权 -> 待采集 -> 已授权 -> 已下发 -> 撤回中 -> 已撤回 -> 已删除 | 家长授权、照片采集、设备下发、撤回授权 |
| 学习任务 | 未开始 -> 学习中 -> 已提交 -> 已批改 -> 需订正 -> 已完成 -> 已过期 | 资源学习、作业提交、教师批改和进度归档 |
| 活动落地页 | 草稿 -> 编辑中 -> 待发布 -> 发布中 -> 已发布 -> 发布失败 -> 已停用 | 选择模板、编辑、发布、生成链接/活码、停用和复盘 |
| 作业草稿 | 无草稿 -> 编辑中 -> 自动保存中 -> 已保存 -> 待提交 -> 已提交 -> 已删除 -> 已过期 -> 冲突待恢复 | 学员进入作业后可自动或手动保存草稿,提交成功后关闭草稿;删除、过期和多端冲突必须可提示、可审计、可恢复到安全状态 |
| 人脸授权撤回 | 已提交 -> 家长已确认 -> 设备删除中 -> 部分失败 -> 已删除 -> 人工处理 -> 已关闭 | 家长撤回、人脸模板删除任务、设备回执、失败重试和审计 |
| 补课改期取消 | 已确认 -> 改期申请中 -> 取消申请中 -> 教务处理中 -> 已重新安排 -> 已拒绝 -> 已关闭 -> 待冲正 -> 已冲正 | 家长发起改期或取消,教务处理候选课次和课消冲正,最终回到补课安排或关闭 |
| 设备维修工单 | 待派单 -> 已派单 -> 已接单 -> 排查中 -> 待恢复校验 -> 已恢复 -> 已关闭 -> 已升级 | 视频设备离线告警生成维修工单,恢复后回测直播、回放、录像索引 |
| 活码访问安全 | 启用中 -> 限频中 -> 黑名单命中 -> 目标下架 -> 已停用 -> 已过期 -> 异常告警 | 短链访问、防刷、失效页、黑名单和异常渠道告警 |
| 题库资源版本快照 | 草稿 -> 已发布 -> 已引用 -> 已冻结 -> 已下架 -> 历史可追溯 | 题目、试卷、资源发布后形成引用快照,历史答题按快照展示 |
| 课堂端会话 | 待绑定 -> 已绑定 -> 待开课 -> 授课中 -> 暂停中 -> 已结束 -> 异常断开 | 教师或教室设备创建课堂会话,TV 与教师端完成绑定后同步课件、互动和课堂状态;断开后可重连,结束后归档审计。 |
| TV 课件播放 | 未加载 -> 加载中 -> 播放中 -> 暂停 -> 互动展示中 -> 播放失败 -> 已退出 | TV 端接收课堂联动指令,按课件类型播放或展示,失败时回传错误码并提示教师端重试。 |
教研内容中心涉及该规则时,必须在前端提示、后端校验、审计日志和测试用例中同时覆盖。
教研内容中心涉及该规则时,必须在前端提示、后端校验、审计日志和测试用例中同时覆盖。
教研内容中心涉及该规则时,必须在前端提示、后端校验、审计日志和测试用例中同时覆盖。
教研内容中心涉及该规则时,必须在前端提示、后端校验、审计日志和测试用例中同时覆盖。
教研内容中心涉及该规则时,必须在前端提示、后端校验、审计日志和测试用例中同时覆盖。
教研内容中心涉及该规则时,必须在前端提示、后端校验、审计日志和测试用例中同时覆盖。
13 · 权限、审批与消息
动作权限、数据范围、审批触发和消息触达必须闭环
权限需要覆盖菜单、按钮、字段、接口和导出。动作权限
- 上传资源:需映射菜单、按钮、接口和字段权限
- 维护题库:需映射菜单、按钮、接口和字段权限
- 配置测评:需映射菜单、按钮、接口和字段权限
- 发布课程:需映射菜单、按钮、接口和字段权限
- 生成活码:需映射菜单、按钮、接口和字段权限
- 授权访问:需映射菜单、按钮、接口和字段权限
数据范围
- 总部全量
- 区域辖区
- 校区本地
- 部门/岗位
- 本人负责
- 授权班级/学员
审批配置
| 审批名称 | 触发条件 | 流程 | 结果 | 留痕 |
|---|---|---|---|---|
| 课消撤销审批 | 已确认收入的课消记录撤销 | 教务提交 -> 校长 -> 财务 | 撤销课消、恢复课时、冲回收入 | 记录原课次和撤销原因 |
| 人脸授权撤回处理 | 家长撤回人脸授权 | 家长提交 -> 系统确认 -> 设备管理员执行 | 停止识别并下发删除任务 | 保留撤回凭证和删除结果 |
| 活码外部资源审批 | 活码跳转外部链接或公开资源 | 教研提交 -> 品牌负责人审核 | 发布或下架活码规则 | 记录资源版本和访问范围 |
| 直播供应商配置审批 | 新增或变更直播供应商密钥、回调地址、录制存储、转码模板和域名配置 | 技术运维 -> 系统管理员 -> 安全管理员 | 通过后配置生效并触发连通性校验,同一租户仅保留一个启用供应商 | 保留配置前后快照和验签结果 |
| 请假审批与补课安排 | 家长请假通过但未确认补课时间,或补课候选课次需家长确认 | 家长 -> 教务 -> 校长 | 通过后生成补课安排或回到待安排池 | 保留请假原因、课消处理、补课偏好和确认记录 |
| 转班转课审批 | 涉及补差、退差、跨校区、班级容量例外或优惠反算 | 课程顾问/教务 -> 校长 -> 财务 | 通过后调整权益、课表和收退差任务 | 保留测算版本、家长确认和生效记录 |
| 敏感字段查看审批 | 查看手机号、人脸、合同、票据、薪资等敏感字段明文 | 申请人 -> 直属主管 -> 安全管理员 | 通过后限时授权并加水印展示,过期自动回收 | 保留字段范围、业务原因、审批意见、查看记录和水印信息 |
| 补课改期取消审批 | 已确认补课需要改期、取消或已课消后冲正 | 家长/教务 -> 班主任/学管师 -> 教务负责人 | 通过后释放原课次资源、重新安排或进入冲正 | 保留原因、课次、课消、消息和处理结果 |
消息模板
| 消息 | 接收人 | 触发 | 渠道 | 变量 |
|---|---|---|---|---|
| 跟进超时提醒 | 课程顾问/销售主管 | 超过首响或回访 SLA | 站内信、App | 客户姓名、超时时长、下次跟进时间 |
| 试听预约通知 | 家长/教师/顾问 | 试听课预约成功或变更 | 小程序、短信、App | 上课时间、校区、教室、教师 |
| 收款成功通知 | 家长/顾问/财务 | 支付成功 | 小程序、站内信 | 订单金额、课程、支付时间 |
| 库存预警 | 库管/校区负责人 | 物料或礼品低于安全库存 | 站内信、App、企微 | SKU、校区、当前库存、安全库存、补货建议 |
| 到校签到通知 | 家长 | 人脸或人工签到成功 | 小程序、App | 学员姓名、签到时间、校区、课程 |
| 签到异常提醒 | 教务/前台 | 识别未匹配或低置信度 | 站内信、App | 设备、时间、候选学员、置信度 |
| 摄像头离线告警 | 设备管理员/校区前台 | 摄像头心跳超时或拉流失败 | 站内信、App | 校区、教室、摄像头编号、品牌、异常时间 |
| 教学质量评分通知 | 教师/校长/教研督导 | 督课评分生成、低分预警或申诉复核 | 站内信、App、企微 | 课次、教师、综合分、低分维度、复核入口 |
14 · 接口与技术细节
接口需支持幂等、权限、审计、重试和回执
每个写接口必须有 requestId 或业务幂等键,外部回调必须验签和去重。| 接口 | 方法 | 方向 | 请求字段 | 响应字段 | 幂等/权限 |
|---|---|---|---|---|---|
| /api/v1/resources | POST/GET | PC Web 到资源中心 | courseId, resourceType, fileId, publishScope | resourceId, versionNo, authStatus | 资源版本唯一 |
| /api/v1/question-banks | POST/GET | PC Web 到题库 | subject, level, questionType, content | questionId, reviewStatus, usageCount | 题目查重 |
| /api/v1/live-qrcodes | POST/GET | PC Web 到活码 | bizType, targetRule, versionNo, enabled | qrCode, currentTarget | qrCode 唯一 |
| /api/v1/resources/authorize | POST | 资源中心到学习端 | resourceId, targetType, targetIds, validUntil | authId, authStatus | 授权范围校验 |
前端约束
- 统一登录态和租户校区上下文
- 列表分页、筛选、排序、列显隐
- 表单本地校验与服务端错误映射
- 移动/平板/TV 按终端适配交互
后端约束
- 领域服务封装业务规则
- 写操作事务一致性
- 关键操作审计快照
- 异步任务失败重试和告警
集成约束
- 第三方接口统一走开放集成中心
- 回执文件归档
- 接口日志可按业务单号追踪
- 密钥和回调地址按环境隔离
15 · 数据库与存储设计
核心表建议、关键字段和索引方向
详细 DDL 已在平台技术设计文档中统一展开,本处保留模块核心表、关键字段和索引方向。| 表名 | 用途 | 核心字段 | 索引建议 |
|---|---|---|---|
| res_learning_resource | 教研学习资源 | id、tenant_id、org_id、campus_id、created_by、created_at、updated_by、updated_at、is_deleted、deleted_at、deleted_by、version、resource_no、resource_name、resource_type、category_id、file_id、publish_status | uk_resource_no、idx_type_status |
| res_resource_version | 资源版本与发布记录 | id、tenant_id、org_id、campus_id、created_by、created_at、updated_by、updated_at、is_deleted、deleted_at、deleted_by、version、resource_id、version_no、change_desc、file_ids、publish_at、version_status | uk_resource_version、idx_status |
| res_question | 题库题目 | id、tenant_id、org_id、campus_id、created_by、created_at、updated_by、updated_at、is_deleted、deleted_at、deleted_by、version、question_no、question_type、question_stem、answer_schema、difficulty、publish_status | uk_question_no、idx_type_status |
| res_authorization_rule | 资源授权规则 | id、tenant_id、org_id、campus_id、created_by、created_at、updated_by、updated_at、is_deleted、deleted_at、deleted_by、version、rule_no、resource_id、target_type、target_scope、valid_from、valid_to | uk_rule_no、idx_resource |
DDL 草案
res_learning_resourceLearningResource
CREATE TABLE `res_learning_resource` (
`id` BIGINT NOT NULL COMMENT '主键,雪花或号段生成,禁止复用;数据级别:普通',
`tenant_id` BIGINT NOT NULL COMMENT '集团/租户隔离字段,所有查询必须带租户上下文;数据级别:普通',
`org_id` BIGINT NULL COMMENT '所属组织,集团级或公共配置为空;数据级别:普通',
`campus_id` BIGINT NULL COMMENT '所属校区,跨校区或总部级数据为空;数据级别:普通',
`created_by` BIGINT NOT NULL COMMENT '创建人账号 ID;数据级别:普通',
`created_at` DATETIME NOT NULL COMMENT '创建时间;数据级别:普通',
`updated_by` BIGINT NULL COMMENT '最后更新人账号 ID;数据级别:普通',
`updated_at` DATETIME NULL COMMENT '最后更新时间;数据级别:普通',
`is_deleted` TINYINT NOT NULL DEFAULT 0 COMMENT '是否已删除,0 未删除,1 已删除;数据级别:普通',
`deleted_at` DATETIME NULL COMMENT '删除时间,未删除为空;数据级别:普通',
`deleted_by` BIGINT NULL COMMENT '删除人账号 ID,未删除为空;数据级别:普通',
`version` INT NOT NULL DEFAULT 1 COMMENT '乐观锁版本号,写操作必须校验;数据级别:普通',
`resource_no` VARCHAR(64) NOT NULL COMMENT '资源编号,唯一;数据级别:普通',
`resource_name` VARCHAR(128) NOT NULL COMMENT '资源名称;数据级别:普通',
`resource_type` VARCHAR(32) NOT NULL COMMENT '课件/视频/音频/题库/文章/试卷;数据级别:普通',
`category_id` BIGINT NULL COMMENT '资源分类;数据级别:普通',
`file_id` BIGINT NULL COMMENT '文件 ID;数据级别:普通',
`publish_status` VARCHAR(32) NOT NULL COMMENT '草稿/审核中/已发布/已下架;数据级别:普通',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_resource_no` (`resource_no`),
KEY `idx_type_status` (`resource_type`, `publish_status`),
KEY `idx_tenant_deleted` (`tenant_id`, `is_deleted`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='LearningResource:教研学习资源';
res_resource_versionResourceVersion
CREATE TABLE `res_resource_version` (
`id` BIGINT NOT NULL COMMENT '主键,雪花或号段生成,禁止复用;数据级别:普通',
`tenant_id` BIGINT NOT NULL COMMENT '集团/租户隔离字段,所有查询必须带租户上下文;数据级别:普通',
`org_id` BIGINT NULL COMMENT '所属组织,集团级或公共配置为空;数据级别:普通',
`campus_id` BIGINT NULL COMMENT '所属校区,跨校区或总部级数据为空;数据级别:普通',
`created_by` BIGINT NOT NULL COMMENT '创建人账号 ID;数据级别:普通',
`created_at` DATETIME NOT NULL COMMENT '创建时间;数据级别:普通',
`updated_by` BIGINT NULL COMMENT '最后更新人账号 ID;数据级别:普通',
`updated_at` DATETIME NULL COMMENT '最后更新时间;数据级别:普通',
`is_deleted` TINYINT NOT NULL DEFAULT 0 COMMENT '是否已删除,0 未删除,1 已删除;数据级别:普通',
`deleted_at` DATETIME NULL COMMENT '删除时间,未删除为空;数据级别:普通',
`deleted_by` BIGINT NULL COMMENT '删除人账号 ID,未删除为空;数据级别:普通',
`version` INT NOT NULL DEFAULT 1 COMMENT '乐观锁版本号,写操作必须校验;数据级别:普通',
`resource_id` BIGINT NOT NULL COMMENT '资源 ID;数据级别:普通',
`version_no` INT NOT NULL COMMENT '版本号;数据级别:普通',
`change_desc` VARCHAR(512) NULL COMMENT '变更说明;数据级别:普通',
`file_ids` JSON NULL COMMENT '版本文件;数据级别:普通',
`publish_at` DATETIME NULL COMMENT '发布时间;数据级别:普通',
`version_status` VARCHAR(32) NOT NULL COMMENT '草稿/已发布/已废弃;数据级别:普通',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_resource_version` (`resource_id`, `version`),
KEY `idx_status` (`version_status`),
KEY `idx_tenant_deleted` (`tenant_id`, `is_deleted`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='ResourceVersion:资源版本与发布记录';
res_questionQuestion
CREATE TABLE `res_question` (
`id` BIGINT NOT NULL COMMENT '主键,雪花或号段生成,禁止复用;数据级别:普通',
`tenant_id` BIGINT NOT NULL COMMENT '集团/租户隔离字段,所有查询必须带租户上下文;数据级别:普通',
`org_id` BIGINT NULL COMMENT '所属组织,集团级或公共配置为空;数据级别:普通',
`campus_id` BIGINT NULL COMMENT '所属校区,跨校区或总部级数据为空;数据级别:普通',
`created_by` BIGINT NOT NULL COMMENT '创建人账号 ID;数据级别:普通',
`created_at` DATETIME NOT NULL COMMENT '创建时间;数据级别:普通',
`updated_by` BIGINT NULL COMMENT '最后更新人账号 ID;数据级别:普通',
`updated_at` DATETIME NULL COMMENT '最后更新时间;数据级别:普通',
`is_deleted` TINYINT NOT NULL DEFAULT 0 COMMENT '是否已删除,0 未删除,1 已删除;数据级别:普通',
`deleted_at` DATETIME NULL COMMENT '删除时间,未删除为空;数据级别:普通',
`deleted_by` BIGINT NULL COMMENT '删除人账号 ID,未删除为空;数据级别:普通',
`version` INT NOT NULL DEFAULT 1 COMMENT '乐观锁版本号,写操作必须校验;数据级别:普通',
`question_no` VARCHAR(64) NOT NULL COMMENT '题目编号,唯一;数据级别:普通',
`question_type` VARCHAR(32) NOT NULL COMMENT '单选/多选/填空/判断/主观/听力;数据级别:普通',
`question_stem` TEXT NOT NULL COMMENT '题干;数据级别:普通',
`answer_schema` JSON NOT NULL COMMENT '答案和解析;数据级别:普通',
`difficulty` VARCHAR(32) NULL COMMENT '难度;数据级别:普通',
`publish_status` VARCHAR(32) NOT NULL COMMENT '草稿/已发布/已下架;数据级别:普通',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_question_no` (`question_no`),
KEY `idx_type_status` (`question_type`, `publish_status`),
KEY `idx_tenant_deleted` (`tenant_id`, `is_deleted`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='Question:题库题目';
res_authorization_ruleResourceAuthorizationRule
CREATE TABLE `res_authorization_rule` (
`id` BIGINT NOT NULL COMMENT '主键,雪花或号段生成,禁止复用;数据级别:普通',
`tenant_id` BIGINT NOT NULL COMMENT '集团/租户隔离字段,所有查询必须带租户上下文;数据级别:普通',
`org_id` BIGINT NULL COMMENT '所属组织,集团级或公共配置为空;数据级别:普通',
`campus_id` BIGINT NULL COMMENT '所属校区,跨校区或总部级数据为空;数据级别:普通',
`created_by` BIGINT NOT NULL COMMENT '创建人账号 ID;数据级别:普通',
`created_at` DATETIME NOT NULL COMMENT '创建时间;数据级别:普通',
`updated_by` BIGINT NULL COMMENT '最后更新人账号 ID;数据级别:普通',
`updated_at` DATETIME NULL COMMENT '最后更新时间;数据级别:普通',
`is_deleted` TINYINT NOT NULL DEFAULT 0 COMMENT '是否已删除,0 未删除,1 已删除;数据级别:普通',
`deleted_at` DATETIME NULL COMMENT '删除时间,未删除为空;数据级别:普通',
`deleted_by` BIGINT NULL COMMENT '删除人账号 ID,未删除为空;数据级别:普通',
`version` INT NOT NULL DEFAULT 1 COMMENT '乐观锁版本号,写操作必须校验;数据级别:普通',
`rule_no` VARCHAR(64) NOT NULL COMMENT '授权规则编号,唯一;数据级别:普通',
`resource_id` BIGINT NOT NULL COMMENT '资源 ID;数据级别:普通',
`target_type` VARCHAR(32) NOT NULL COMMENT '课程/班级/学员/员工/角色;数据级别:普通',
`target_scope` JSON NOT NULL COMMENT '授权对象范围;数据级别:普通',
`valid_from` DATETIME NULL COMMENT '有效开始;数据级别:普通',
`valid_to` DATETIME NULL COMMENT '有效截止;数据级别:普通',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_rule_no` (`rule_no`),
KEY `idx_resource` (`resource_id`),
KEY `idx_tenant_deleted` (`tenant_id`, `is_deleted`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='ResourceAuthorizationRule:资源授权规则';
16 · 异常、指标、测试与初始化
保证模块上线后可运营、可追踪、可验收
测试要覆盖主流程、异常流、权限流、接口失败和数据一致性。异常状态
指标埋点
测试用例
| 编号 | 场景 | 前置 | 步骤 | 预期 | 优先级 |
|---|---|---|---|---|---|
| TC-007 | 入班排课冲突校验 | 教师同时间已有课程 | 为同教师同时间排课 | 系统拦截并提示冲突对象 | 高 |
| TC-008 | 人脸签到自动课消 | 学员已授权人脸且课次待签到 | 模拟设备回传识别事件 | 签到成功、课消成功、家长收到通知 | 高 |
| TC-009 | 人脸未匹配异常 | 设备回传未绑定人员 | 提交识别事件 | 进入异常队列,可人工确认或忽略 | 高 |
| TC-010 | 家长撤回人脸授权 | 学员已授权并下发设备 | 家长撤回授权 | 系统停止识别并生成设备删除任务 | 高 |
| TC-013 | 教师发布作业并批改 | 课次已完成 | 教师发布作业,学员提交,教师批改 | 学员端展示批改结果和成长档案 | 中 |
| TC-018 | 活码动态内容切换 | 同一二维码配置不同班级资源 | 不同学员扫码 | 返回对应授权资源并记录扫码数据 | 高 |
| TC-027 | 设备离线补传 | 设备离线后产生识别记录 | 恢复网络并补传事件 | 流水去重后生成签到或异常 | 高 |
| TC-028 | 重复识别时间窗 | 同一学员短时间多次扫脸 | 连续提交识别事件 | 仅生成一次有效签到和课消 | 高 |
| TC-029 | 课消撤销审批 | 课次已课消并确认收入 | 发起撤销课消 | 审批后恢复课时并冲回收入 | 高 |
| TC-031 | 活码过期状态 | 活码规则有效期已过 | 学员扫码访问资源 | 提示资源已过期并记录拒绝访问 | 中 |
| TC-RES-ENH-001 | 活码资源交付闭环验收 | 资源活码、短链目标、扫码记录相关基础数据、权限、审批流、消息模板和接口配置已初始化 | 按补齐资源活码、目标规则、扫码权限、目标下架页、版本回滚和访问分析。执行前端提交、后端处理、状态流转、异常重试和消息触达 | 二维码不变,目标内容可动态调整并保留历史。;同时产生审计日志、指标埋点和必要的补偿任务 | 高 |
| TC-RES-ENH-002 | 版本快照交付闭环验收 | 题库管理、资源版本、测评结果相关基础数据、权限、审批流、消息模板和接口配置已初始化 | 按补齐发布快照、引用关系、历史版本查看、下架影响和回滚规则。执行前端提交、后端处理、状态流转、异常重试和消息触达 | 历史测评展示当时题目、答案、解析和分值。;同时产生审计日志、指标埋点和必要的补偿任务 | 高 |
| TC-RES-ENH-003 | 授权发布交付闭环验收 | 资源详情、授权弹窗、学员资源页相关基础数据、权限、审批流、消息模板和接口配置已初始化 | 按补齐授权范围、有效期、下载权限、转码状态、失败重试和访问异常页。执行前端提交、后端处理、状态流转、异常重试和消息触达 | 资源发布后访问权限与班级、课程权益一致。;同时产生审计日志、指标埋点和必要的补偿任务 | 高 |
上线初始化
| 初始化项 | 动作 | 数据 | 验收 |
|---|---|---|---|
| 组织与校区 | 导入集团、品牌、法人主体、区域、校区、部门、岗位 | 总部组织树、校区编码、法人关系、营业时间 | 组织层级正确且权限可继承 |
| 设备参数 | 登记人脸考勤机设备和校区绑定 | 设备编号、位置、API 密钥、心跳阈值、识别阈值 | 设备心跳正常且可接收人员下发 |
| 督课评分 | 初始化教学质量评分维度、权重、低分阈值、复核规则和申诉规则 | 学生维度、教师维度、课堂过程维度、学习结果维度、评分规则版本 | 指定课次可生成质量分并进入复核或整改闭环 |
| 教研资源 | 导入首批课程资源、题库、作业、测评和活码规则 | 资源分类、课次、权限、有效期、版本 | 学员端可按权益访问资源 |
| 知识库培训 | 初始化知识库分类、资料类型、培训课程、考试规则和岗位能力学习 | 分类目录、资料类型、必修课程、题库、学习档案规则 | 员工可按岗位收到培训任务并完成考试 |
| 物料资产 | 初始化物料分类、SKU、供应商、仓库、库存、固定资产和图书台账 | SKU 编码、单位、条码、安全库存、资产编号、库存余额 | 采购、入库、领用、调拨和盘点可正常执行 |
| 直播消息模板 | 初始化开播提醒、迟到缺席、公开课报名、会议通知、回放生成等模板 | 模板变量、渠道、发送时间、失败重试策略 | 测试消息可正常发送并记录送达结果 |
| 视频平台与地图点位初始化 | 后台配置海康威视/宇视视频平台、门店侧网关、摄像头台账、集中机房存储策略和校区经纬度 | platformCode、vendorCode、gatewayCode、cameraCode、campusLatitude、campusLongitude、retentionDays=90 | 地图大头钉、设备列表、直播播放和录像回放均可按权限访问 |
| 活码资源交付配置 | 初始化补齐资源活码、目标规则、扫码权限、目标下架页、版本回滚和访问分析。所需的页面入口、功能开关、审批流、消息模板、状态枚举、异常原因和角色权限 | 资源活码、短链目标、扫码记录 | 二维码不变,目标内容可动态调整并保留历史。 |
| 版本快照交付配置 | 初始化补齐发布快照、引用关系、历史版本查看、下架影响和回滚规则。所需的页面入口、功能开关、审批流、消息模板、状态枚举、异常原因和角色权限 | 题库管理、资源版本、测评结果 | 历史测评展示当时题目、答案、解析和分值。 |
| 授权发布交付配置 | 初始化补齐授权范围、有效期、下载权限、转码状态、失败重试和访问异常页。所需的页面入口、功能开关、审批流、消息模板、状态枚举、异常原因和角色权限 | 资源详情、授权弹窗、学员资源页 | 资源发布后访问权限与班级、课程权益一致。 |