01 · 模块定位
学员端学习中心
学员端需覆盖微信小程序、iOS/iPadOS App、安卓手机/安卓平板 App、H5/Web 学习中心、macOS/Windows Tauri 桌面学习中心;合同激活后自动开通学习权益,学员端只处理学习、作业、测评、积分和兑换任务,合同缴费、人脸授权采集和发票由家长端或后台主责。业务目标
面向学员独立提供登录注册、课程学习、直播互动、作业测评、成长档案、积分商城、消息个人中心和 Tauri 桌面学习中心。
使用终端
微信小程序、iPhone App、iPad App、安卓手机 App、安卓平板 App、H5/Web 学习中心、macOS/Windows Tauri 桌面学习中心。
验收主线
学员端需覆盖微信小程序、iOS/iPadOS App、安卓手机/安卓平板 App、H5/Web 学习中心、macOS/Windows Tauri 桌面学习中心;合同激活后自动开通学习权益,学员端只处理学习、作业、测评、积分和兑换任务,合同缴费、人脸授权采集和发票由家长端或后台主责。
02 · 范围边界
明确本模块负责什么、依赖什么、不负责什么
边界清晰后,原型、接口和数据库设计才能避免重复建设。模块内范围
- 01 启动页
- 02 登录页
- 03 非学员注册登录页
- 04 找回密码页
- 05 账号注销申请页
- 06 学习首页
- 07 我的课程页
- 08 课程详情页
- 09 资源/回放播放页
- 10 直播课表/预告页
- 11 直播课堂页
- 12 作业列表页
- 13 作业提交页
- 14 作业结果与订正页
- 15 测评考试页
- 16 测评报告页
- 17 学习档案页
- 18 错题本页
- 19 积分中心页
- 20 礼品详情页
- 21 兑换记录与订单详情页
- 22 消息中心页
- 23 个人中心页
- 24 隐私与授权页
- 25 桌面端学习中心首页
- 26 桌面端播放/直播适配页
- S01 账号未激活/绑定审核中状态
- S02 权益不足/资源过期/合同到期状态
- S03 直播互动答题/举手连麦弹窗/侧栏
- S04 学习完成/获得积分弹窗
- S05 兑换确认/兑换结果/核销码展示弹窗
- S06 桌面端同步失败/接口失败/无权限状态
- S07 作品预览/播放弹窗
- S08 当前上课学员选择弹窗
上游依赖
- 组织校区与账号权限
- 课程/客户/合同等主数据
- 审批流、消息模板、文件中心
- 必要的第三方接口密钥
下游输出
- 业务状态和待办
- 消息通知和审批记录
- 报表指标和数据快照
- 审计日志和接口回执
03 · 确认口径、后台配置与默认实施规则
学员端学习中心必须承接的已确认规则
本章节来自待决策与澄清清单的收口结果,已经转为本模块 PRD 的正式需求、配置项或默认实施规则。| 分类 | 事项 | 本模块落地要求 | 责任方 |
|---|---|---|---|
| 默认实施规则 | iOS/iPadOS 原生视觉策略 | UI 优先设计原生质感,工程上能用原生控件就用,不能用则跨端降级;不设 Liquid Glass 专项验收。 | 产品/UI/前端 |
| 默认实施规则 | 接口设计说明书组织方式 | 采用单独 HTML 文件集中管理接口协议;模块 PRD 保留模块级接口摘要,避免每个模块重复写通用协议。 | 产品/研发 |
| 默认实施规则 | 接口错误码与重试中间件 | 所有外部接口和内部异步任务统一错误码、幂等键、重试次数、告警阈值和回执归档策略。 | 后端/测试/运维 |
04 · 业务流程
学员端学习中心主流程
流程用于指导原型图的页面顺序、按钮状态和异常分支。01 启动页需覆盖入口、字段、状态、权限、审批/消息、异常处理、审计和指标统计,并与上下游模块保持数据一致。
02 登录页需覆盖入口、字段、状态、权限、审批/消息、异常处理、审计和指标统计,并与上下游模块保持数据一致。
03 非学员注册登录页需覆盖入口、字段、状态、权限、审批/消息、异常处理、审计和指标统计,并与上下游模块保持数据一致。
04 找回密码页需覆盖入口、字段、状态、权限、审批/消息、异常处理、审计和指标统计,并与上下游模块保持数据一致。
05 账号注销申请页需覆盖入口、字段、状态、权限、审批/消息、异常处理、审计和指标统计,并与上下游模块保持数据一致。
06 学习首页需覆盖入口、字段、状态、权限、审批/消息、异常处理、审计和指标统计,并与上下游模块保持数据一致。
07 我的课程页需覆盖入口、字段、状态、权限、审批/消息、异常处理、审计和指标统计,并与上下游模块保持数据一致。
08 课程详情页需覆盖入口、字段、状态、权限、审批/消息、异常处理、审计和指标统计,并与上下游模块保持数据一致。
05 · 功能清单
按子模块拆到可设计、可开发、可测试的颗粒度
每一行功能都需要在原型中体现入口、状态、按钮、字段和反馈。| 一级功能 | 二级功能 | 功能说明 | 规则/验收 |
|---|---|---|---|
| 01 启动页 | 端侧操作 | 01 启动页支持进入、查看、提交、取消、恢复、结果反馈和消息提醒。 | 权益、状态、端类型和本人账号权限必须校验 |
| 01 启动页 | 业务处理 | 01 启动页需覆盖入口、字段、状态、权限、审批/消息、异常处理、审计和指标统计,并与上下游模块保持数据一致。 | 必须联动状态、权限、消息、审批和指标 |
| 01 启动页 | 异常闭环 | 学员账号未激活处理 | 失败原因可见、可重试、可转人工、可追溯 |
| 02 登录页 | 端侧操作 | 02 登录页支持进入、查看、提交、取消、恢复、结果反馈和消息提醒。 | 权益、状态、端类型和本人账号权限必须校验 |
| 02 登录页 | 业务处理 | 02 登录页需覆盖入口、字段、状态、权限、审批/消息、异常处理、审计和指标统计,并与上下游模块保持数据一致。 | 必须联动状态、权限、消息、审批和指标 |
| 02 登录页 | 异常闭环 | 资源过期处理 | 失败原因可见、可重试、可转人工、可追溯 |
| 03 非学员注册登录页 | 端侧操作 | 03 非学员注册登录页支持进入、查看、提交、取消、恢复、结果反馈和消息提醒。 | 权益、状态、端类型和本人账号权限必须校验 |
| 03 非学员注册登录页 | 业务处理 | 03 非学员注册登录页需覆盖入口、字段、状态、权限、审批/消息、异常处理、审计和指标统计,并与上下游模块保持数据一致。 | 必须联动状态、权限、消息、审批和指标 |
| 03 非学员注册登录页 | 异常闭环 | 权益不足处理 | 失败原因可见、可重试、可转人工、可追溯 |
| 04 找回密码页 | 端侧操作 | 04 找回密码页支持进入、查看、提交、取消、恢复、结果反馈和消息提醒。 | 权益、状态、端类型和本人账号权限必须校验 |
| 04 找回密码页 | 业务处理 | 04 找回密码页需覆盖入口、字段、状态、权限、审批/消息、异常处理、审计和指标统计,并与上下游模块保持数据一致。 | 必须联动状态、权限、消息、审批和指标 |
| 04 找回密码页 | 异常闭环 | 礼品库存不足处理 | 失败原因可见、可重试、可转人工、可追溯 |
| 05 账号注销申请页 | 端侧操作 | 05 账号注销申请页支持进入、查看、提交、取消、恢复、结果反馈和消息提醒。 | 权益、状态、端类型和本人账号权限必须校验 |
| 05 账号注销申请页 | 业务处理 | 05 账号注销申请页需覆盖入口、字段、状态、权限、审批/消息、异常处理、审计和指标统计,并与上下游模块保持数据一致。 | 必须联动状态、权限、消息、审批和指标 |
| 05 账号注销申请页 | 异常闭环 | 作业草稿过期处理 | 失败原因可见、可重试、可转人工、可追溯 |
| 06 学习首页 | 端侧操作 | 06 学习首页支持进入、查看、提交、取消、恢复、结果反馈和消息提醒。 | 权益、状态、端类型和本人账号权限必须校验 |
| 06 学习首页 | 业务处理 | 06 学习首页需覆盖入口、字段、状态、权限、审批/消息、异常处理、审计和指标统计,并与上下游模块保持数据一致。 | 必须联动状态、权限、消息、审批和指标 |
| 06 学习首页 | 异常闭环 | 多端草稿冲突处理 | 失败原因可见、可重试、可转人工、可追溯 |
| 07 我的课程页 | 端侧操作 | 07 我的课程页支持进入、查看、提交、取消、恢复、结果反馈和消息提醒。 | 权益、状态、端类型和本人账号权限必须校验 |
| 07 我的课程页 | 业务处理 | 07 我的课程页需覆盖入口、字段、状态、权限、审批/消息、异常处理、审计和指标统计,并与上下游模块保持数据一致。 | 必须联动状态、权限、消息、审批和指标 |
| 07 我的课程页 | 异常闭环 | 直播连麦邀请超时处理 | 失败原因可见、可重试、可转人工、可追溯 |
| 08 课程详情页 | 端侧操作 | 08 课程详情页支持进入、查看、提交、取消、恢复、结果反馈和消息提醒。 | 权益、状态、端类型和本人账号权限必须校验 |
| 08 课程详情页 | 业务处理 | 08 课程详情页需覆盖入口、字段、状态、权限、审批/消息、异常处理、审计和指标统计,并与上下游模块保持数据一致。 | 必须联动状态、权限、消息、审批和指标 |
| 08 课程详情页 | 异常闭环 | 兑换码过期处理 | 失败原因可见、可重试、可转人工、可追溯 |
| 09 资源/回放播放页 | 端侧操作 | 09 资源/回放播放页支持进入、查看、提交、取消、恢复、结果反馈和消息提醒。 | 权益、状态、端类型和本人账号权限必须校验 |
| 09 资源/回放播放页 | 业务处理 | 09 资源/回放播放页需覆盖入口、字段、状态、权限、审批/消息、异常处理、审计和指标统计,并与上下游模块保持数据一致。 | 必须联动状态、权限、消息、审批和指标 |
| 09 资源/回放播放页 | 异常闭环 | 库存释放失败处理 | 失败原因可见、可重试、可转人工、可追溯 |
| 10 直播课表/预告页 | 端侧操作 | 10 直播课表/预告页支持进入、查看、提交、取消、恢复、结果反馈和消息提醒。 | 权益、状态、端类型和本人账号权限必须校验 |
| 10 直播课表/预告页 | 业务处理 | 10 直播课表/预告页需覆盖入口、字段、状态、权限、审批/消息、异常处理、审计和指标统计,并与上下游模块保持数据一致。 | 必须联动状态、权限、消息、审批和指标 |
| 10 直播课表/预告页 | 异常闭环 | 回放已下架处理 | 失败原因可见、可重试、可转人工、可追溯 |
| 11 直播课堂页 | 端侧操作 | 11 直播课堂页支持进入、查看、提交、取消、恢复、结果反馈和消息提醒。 | 权益、状态、端类型和本人账号权限必须校验 |
| 11 直播课堂页 | 业务处理 | 11 直播课堂页需覆盖入口、字段、状态、权限、审批/消息、异常处理、审计和指标统计,并与上下游模块保持数据一致。 | 必须联动状态、权限、消息、审批和指标 |
| 11 直播课堂页 | 异常闭环 | 回放权限不足处理 | 失败原因可见、可重试、可转人工、可追溯 |
| 12 作业列表页 | 端侧操作 | 12 作业列表页支持进入、查看、提交、取消、恢复、结果反馈和消息提醒。 | 权益、状态、端类型和本人账号权限必须校验 |
| 12 作业列表页 | 业务处理 | 12 作业列表页需覆盖入口、字段、状态、权限、审批/消息、异常处理、审计和指标统计,并与上下游模块保持数据一致。 | 必须联动状态、权限、消息、审批和指标 |
| 12 作业列表页 | 异常闭环 | 学员账号未激活处理 | 失败原因可见、可重试、可转人工、可追溯 |
| 13 作业提交页 | 端侧操作 | 13 作业提交页支持进入、查看、提交、取消、恢复、结果反馈和消息提醒。 | 权益、状态、端类型和本人账号权限必须校验 |
| 13 作业提交页 | 业务处理 | 13 作业提交页需覆盖入口、字段、状态、权限、审批/消息、异常处理、审计和指标统计,并与上下游模块保持数据一致。 | 必须联动状态、权限、消息、审批和指标 |
| 13 作业提交页 | 异常闭环 | 资源过期处理 | 失败原因可见、可重试、可转人工、可追溯 |
| 14 作业结果与订正页 | 端侧操作 | 14 作业结果与订正页支持进入、查看、提交、取消、恢复、结果反馈和消息提醒。 | 权益、状态、端类型和本人账号权限必须校验 |
| 14 作业结果与订正页 | 业务处理 | 14 作业结果与订正页需覆盖入口、字段、状态、权限、审批/消息、异常处理、审计和指标统计,并与上下游模块保持数据一致。 | 必须联动状态、权限、消息、审批和指标 |
| 14 作业结果与订正页 | 异常闭环 | 权益不足处理 | 失败原因可见、可重试、可转人工、可追溯 |
| 15 测评考试页 | 端侧操作 | 15 测评考试页支持进入、查看、提交、取消、恢复、结果反馈和消息提醒。 | 权益、状态、端类型和本人账号权限必须校验 |
| 15 测评考试页 | 业务处理 | 15 测评考试页需覆盖入口、字段、状态、权限、审批/消息、异常处理、审计和指标统计,并与上下游模块保持数据一致。 | 必须联动状态、权限、消息、审批和指标 |
| 15 测评考试页 | 异常闭环 | 礼品库存不足处理 | 失败原因可见、可重试、可转人工、可追溯 |
| 16 测评报告页 | 端侧操作 | 16 测评报告页支持进入、查看、提交、取消、恢复、结果反馈和消息提醒。 | 权益、状态、端类型和本人账号权限必须校验 |
| 16 测评报告页 | 业务处理 | 16 测评报告页需覆盖入口、字段、状态、权限、审批/消息、异常处理、审计和指标统计,并与上下游模块保持数据一致。 | 必须联动状态、权限、消息、审批和指标 |
| 16 测评报告页 | 异常闭环 | 作业草稿过期处理 | 失败原因可见、可重试、可转人工、可追溯 |
| 17 学习档案页 | 端侧操作 | 17 学习档案页支持进入、查看、提交、取消、恢复、结果反馈和消息提醒。 | 权益、状态、端类型和本人账号权限必须校验 |
| 17 学习档案页 | 业务处理 | 17 学习档案页需覆盖入口、字段、状态、权限、审批/消息、异常处理、审计和指标统计,并与上下游模块保持数据一致。 | 必须联动状态、权限、消息、审批和指标 |
| 17 学习档案页 | 异常闭环 | 多端草稿冲突处理 | 失败原因可见、可重试、可转人工、可追溯 |
| 18 错题本页 | 端侧操作 | 18 错题本页支持进入、查看、提交、取消、恢复、结果反馈和消息提醒。 | 权益、状态、端类型和本人账号权限必须校验 |
| 18 错题本页 | 业务处理 | 18 错题本页需覆盖入口、字段、状态、权限、审批/消息、异常处理、审计和指标统计,并与上下游模块保持数据一致。 | 必须联动状态、权限、消息、审批和指标 |
| 18 错题本页 | 异常闭环 | 直播连麦邀请超时处理 | 失败原因可见、可重试、可转人工、可追溯 |
| 19 积分中心页 | 端侧操作 | 19 积分中心页支持进入、查看、提交、取消、恢复、结果反馈和消息提醒。 | 权益、状态、端类型和本人账号权限必须校验 |
| 19 积分中心页 | 业务处理 | 19 积分中心页需覆盖入口、字段、状态、权限、审批/消息、异常处理、审计和指标统计,并与上下游模块保持数据一致。 | 必须联动状态、权限、消息、审批和指标 |
| 19 积分中心页 | 异常闭环 | 兑换码过期处理 | 失败原因可见、可重试、可转人工、可追溯 |
| 20 礼品详情页 | 端侧操作 | 20 礼品详情页支持进入、查看、提交、取消、恢复、结果反馈和消息提醒。 | 权益、状态、端类型和本人账号权限必须校验 |
| 20 礼品详情页 | 业务处理 | 20 礼品详情页需覆盖入口、字段、状态、权限、审批/消息、异常处理、审计和指标统计,并与上下游模块保持数据一致。 | 必须联动状态、权限、消息、审批和指标 |
| 20 礼品详情页 | 异常闭环 | 库存释放失败处理 | 失败原因可见、可重试、可转人工、可追溯 |
| 21 兑换记录与订单详情页 | 端侧操作 | 21 兑换记录与订单详情页支持进入、查看、提交、取消、恢复、结果反馈和消息提醒。 | 权益、状态、端类型和本人账号权限必须校验 |
| 21 兑换记录与订单详情页 | 业务处理 | 21 兑换记录与订单详情页需覆盖入口、字段、状态、权限、审批/消息、异常处理、审计和指标统计,并与上下游模块保持数据一致。 | 必须联动状态、权限、消息、审批和指标 |
| 21 兑换记录与订单详情页 | 异常闭环 | 回放已下架处理 | 失败原因可见、可重试、可转人工、可追溯 |
| 22 消息中心页 | 端侧操作 | 22 消息中心页支持进入、查看、提交、取消、恢复、结果反馈和消息提醒。 | 权益、状态、端类型和本人账号权限必须校验 |
| 22 消息中心页 | 业务处理 | 22 消息中心页需覆盖入口、字段、状态、权限、审批/消息、异常处理、审计和指标统计,并与上下游模块保持数据一致。 | 必须联动状态、权限、消息、审批和指标 |
| 22 消息中心页 | 异常闭环 | 回放权限不足处理 | 失败原因可见、可重试、可转人工、可追溯 |
| 23 个人中心页 | 端侧操作 | 23 个人中心页支持进入、查看、提交、取消、恢复、结果反馈和消息提醒。 | 权益、状态、端类型和本人账号权限必须校验 |
| 23 个人中心页 | 业务处理 | 23 个人中心页需覆盖入口、字段、状态、权限、审批/消息、异常处理、审计和指标统计,并与上下游模块保持数据一致。 | 必须联动状态、权限、消息、审批和指标 |
| 23 个人中心页 | 异常闭环 | 学员账号未激活处理 | 失败原因可见、可重试、可转人工、可追溯 |
| 24 隐私与授权页 | 端侧操作 | 24 隐私与授权页支持进入、查看、提交、取消、恢复、结果反馈和消息提醒。 | 权益、状态、端类型和本人账号权限必须校验 |
| 24 隐私与授权页 | 业务处理 | 24 隐私与授权页需覆盖入口、字段、状态、权限、审批/消息、异常处理、审计和指标统计,并与上下游模块保持数据一致。 | 必须联动状态、权限、消息、审批和指标 |
| 24 隐私与授权页 | 异常闭环 | 资源过期处理 | 失败原因可见、可重试、可转人工、可追溯 |
| 25 桌面端学习中心首页 | 端侧操作 | 25 桌面端学习中心首页支持进入、查看、提交、取消、恢复、结果反馈和消息提醒。 | 权益、状态、端类型和本人账号权限必须校验 |
| 25 桌面端学习中心首页 | 业务处理 | 25 桌面端学习中心首页需覆盖入口、字段、状态、权限、审批/消息、异常处理、审计和指标统计,并与上下游模块保持数据一致。 | 必须联动状态、权限、消息、审批和指标 |
| 25 桌面端学习中心首页 | 异常闭环 | 权益不足处理 | 失败原因可见、可重试、可转人工、可追溯 |
| 26 桌面端播放/直播适配页 | 端侧操作 | 26 桌面端播放/直播适配页支持进入、查看、提交、取消、恢复、结果反馈和消息提醒。 | 权益、状态、端类型和本人账号权限必须校验 |
| 26 桌面端播放/直播适配页 | 业务处理 | 26 桌面端播放/直播适配页需覆盖入口、字段、状态、权限、审批/消息、异常处理、审计和指标统计,并与上下游模块保持数据一致。 | 必须联动状态、权限、消息、审批和指标 |
| 26 桌面端播放/直播适配页 | 异常闭环 | 礼品库存不足处理 | 失败原因可见、可重试、可转人工、可追溯 |
| S01 账号未激活/绑定审核中状态 | 端侧操作 | S01 账号未激活/绑定审核中状态支持进入、查看、提交、取消、恢复、结果反馈和消息提醒。 | 权益、状态、端类型和本人账号权限必须校验 |
| S01 账号未激活/绑定审核中状态 | 业务处理 | S01 账号未激活/绑定审核中状态需覆盖入口、字段、状态、权限、审批/消息、异常处理、审计和指标统计,并与上下游模块保持数据一致。 | 必须联动状态、权限、消息、审批和指标 |
| S01 账号未激活/绑定审核中状态 | 异常闭环 | 作业草稿过期处理 | 失败原因可见、可重试、可转人工、可追溯 |
| S02 权益不足/资源过期/合同到期状态 | 端侧操作 | S02 权益不足/资源过期/合同到期状态支持进入、查看、提交、取消、恢复、结果反馈和消息提醒。 | 权益、状态、端类型和本人账号权限必须校验 |
| S02 权益不足/资源过期/合同到期状态 | 业务处理 | S02 权益不足/资源过期/合同到期状态需覆盖入口、字段、状态、权限、审批/消息、异常处理、审计和指标统计,并与上下游模块保持数据一致。 | 必须联动状态、权限、消息、审批和指标 |
| S02 权益不足/资源过期/合同到期状态 | 异常闭环 | 多端草稿冲突处理 | 失败原因可见、可重试、可转人工、可追溯 |
| S03 直播互动答题/举手连麦弹窗/侧栏 | 端侧操作 | S03 直播互动答题/举手连麦弹窗/侧栏支持进入、查看、提交、取消、恢复、结果反馈和消息提醒。 | 权益、状态、端类型和本人账号权限必须校验 |
| S03 直播互动答题/举手连麦弹窗/侧栏 | 业务处理 | S03 直播互动答题/举手连麦弹窗/侧栏需覆盖入口、字段、状态、权限、审批/消息、异常处理、审计和指标统计,并与上下游模块保持数据一致。 | 必须联动状态、权限、消息、审批和指标 |
| S03 直播互动答题/举手连麦弹窗/侧栏 | 异常闭环 | 直播连麦邀请超时处理 | 失败原因可见、可重试、可转人工、可追溯 |
| S04 学习完成/获得积分弹窗 | 端侧操作 | S04 学习完成/获得积分弹窗支持进入、查看、提交、取消、恢复、结果反馈和消息提醒。 | 权益、状态、端类型和本人账号权限必须校验 |
| S04 学习完成/获得积分弹窗 | 业务处理 | S04 学习完成/获得积分弹窗需覆盖入口、字段、状态、权限、审批/消息、异常处理、审计和指标统计,并与上下游模块保持数据一致。 | 必须联动状态、权限、消息、审批和指标 |
| S04 学习完成/获得积分弹窗 | 异常闭环 | 兑换码过期处理 | 失败原因可见、可重试、可转人工、可追溯 |
| S05 兑换确认/兑换结果/核销码展示弹窗 | 端侧操作 | S05 兑换确认/兑换结果/核销码展示弹窗支持进入、查看、提交、取消、恢复、结果反馈和消息提醒。 | 权益、状态、端类型和本人账号权限必须校验 |
| S05 兑换确认/兑换结果/核销码展示弹窗 | 业务处理 | S05 兑换确认/兑换结果/核销码展示弹窗需覆盖入口、字段、状态、权限、审批/消息、异常处理、审计和指标统计,并与上下游模块保持数据一致。 | 必须联动状态、权限、消息、审批和指标 |
| S05 兑换确认/兑换结果/核销码展示弹窗 | 异常闭环 | 库存释放失败处理 | 失败原因可见、可重试、可转人工、可追溯 |
| S06 桌面端同步失败/接口失败/无权限状态 | 端侧操作 | S06 桌面端同步失败/接口失败/无权限状态支持进入、查看、提交、取消、恢复、结果反馈和消息提醒。 | 权益、状态、端类型和本人账号权限必须校验 |
| S06 桌面端同步失败/接口失败/无权限状态 | 业务处理 | S06 桌面端同步失败/接口失败/无权限状态需覆盖入口、字段、状态、权限、审批/消息、异常处理、审计和指标统计,并与上下游模块保持数据一致。 | 必须联动状态、权限、消息、审批和指标 |
| S06 桌面端同步失败/接口失败/无权限状态 | 异常闭环 | 回放已下架处理 | 失败原因可见、可重试、可转人工、可追溯 |
| S07 作品预览/播放弹窗 | 端侧操作 | S07 作品预览/播放弹窗支持进入、查看、提交、取消、恢复、结果反馈和消息提醒。 | 权益、状态、端类型和本人账号权限必须校验 |
| S07 作品预览/播放弹窗 | 业务处理 | S07 作品预览/播放弹窗需覆盖入口、字段、状态、权限、审批/消息、异常处理、审计和指标统计,并与上下游模块保持数据一致。 | 必须联动状态、权限、消息、审批和指标 |
| S07 作品预览/播放弹窗 | 异常闭环 | 回放权限不足处理 | 失败原因可见、可重试、可转人工、可追溯 |
| S08 当前上课学员选择弹窗 | 端侧操作 | S08 当前上课学员选择弹窗支持进入、查看、提交、取消、恢复、结果反馈和消息提醒。 | 权益、状态、端类型和本人账号权限必须校验 |
| S08 当前上课学员选择弹窗 | 业务处理 | S08 当前上课学员选择弹窗需覆盖入口、字段、状态、权限、审批/消息、异常处理、审计和指标统计,并与上下游模块保持数据一致。 | 必须联动状态、权限、消息、审批和指标 |
| S08 当前上课学员选择弹窗 | 异常闭环 | 学员账号未激活处理 | 失败原因可见、可重试、可转人工、可追溯 |
功能到数据对象/接口/表映射
| 功能域 | 承接对象 | 核心表 | 代表接口 | 状态机/状态字段 | 研发落地校验 |
|---|---|---|---|---|---|
| 01 启动页 | StudentAccount、StudentAccountRegistration、StudentSessionSelection、StudentDeviceSession | stu_account、stu_account_registration、stu_session_selection、stu_device_session | 接口资源组 /api/v1/app/features/01 | account_type、login_status、cancel_request_status、password_set_status、register_status、selection_status | 新增/编辑/删除/审批/导出/回调均需校验租户、校区、角色、数据范围、逻辑删除、幂等和审计 |
| 02 登录页 | StudentAccount、StudentAccountRegistration、StudentSessionSelection、StudentDeviceSession | stu_account、stu_account_registration、stu_session_selection、stu_device_session | 接口资源组 /api/v1/app/features/02 | account_type、login_status、cancel_request_status、password_set_status、register_status、selection_status | 新增/编辑/删除/审批/导出/回调均需校验租户、校区、角色、数据范围、逻辑删除、幂等和审计 |
| 03 非学员注册登录页 | StudentAccount、StudentAccountRegistration、StudentSessionSelection、StudentDeviceSession | stu_account、stu_account_registration、stu_session_selection、stu_device_session | 接口资源组 /api/v1/app/features/03 | account_type、login_status、cancel_request_status、password_set_status、register_status、selection_status | 新增/编辑/删除/审批/导出/回调均需校验租户、校区、角色、数据范围、逻辑删除、幂等和审计 |
| 04 找回密码页 | StudentAccount、StudentAccountRegistration、StudentSessionSelection、StudentDeviceSession | stu_account、stu_account_registration、stu_session_selection、stu_device_session | 接口资源组 /api/v1/app/features/04 | account_type、login_status、cancel_request_status、password_set_status、register_status、selection_status | 新增/编辑/删除/审批/导出/回调均需校验租户、校区、角色、数据范围、逻辑删除、幂等和审计 |
| 05 账号注销申请页 | StudentAccount、StudentAccountRegistration、StudentSessionSelection、StudentDeviceSession | stu_account、stu_account_registration、stu_session_selection、stu_device_session | 接口资源组 /api/v1/app/features/05 | account_type、login_status、cancel_request_status、password_set_status、register_status、selection_status | 新增/编辑/删除/审批/导出/回调均需校验租户、校区、角色、数据范围、逻辑删除、幂等和审计 |
| 06 学习首页 | StudentAccount、StudentAccountRegistration、StudentSessionSelection、StudentDeviceSession | stu_account、stu_account_registration、stu_session_selection、stu_device_session | 接口资源组 /api/v1/app/features/06 | account_type、login_status、cancel_request_status、password_set_status、register_status、selection_status | 新增/编辑/删除/审批/导出/回调均需校验租户、校区、角色、数据范围、逻辑删除、幂等和审计 |
| 07 我的课程页 | StudentAccount、StudentAccountRegistration、StudentSessionSelection、StudentDeviceSession | stu_account、stu_account_registration、stu_session_selection、stu_device_session | 接口资源组 /api/v1/app/features/07 | account_type、login_status、cancel_request_status、password_set_status、register_status、selection_status | 新增/编辑/删除/审批/导出/回调均需校验租户、校区、角色、数据范围、逻辑删除、幂等和审计 |
| 08 课程详情页 | StudentAccount、StudentAccountRegistration、StudentSessionSelection、StudentDeviceSession | stu_account、stu_account_registration、stu_session_selection、stu_device_session | 接口资源组 /api/v1/app/features/08 | account_type、login_status、cancel_request_status、password_set_status、register_status、selection_status | 新增/编辑/删除/审批/导出/回调均需校验租户、校区、角色、数据范围、逻辑删除、幂等和审计 |
| 09 资源/回放播放页 | StudentAccount、StudentAccountRegistration、StudentSessionSelection、StudentDeviceSession | stu_account、stu_account_registration、stu_session_selection、stu_device_session | GET /api/v1/student/resources | account_type、login_status、cancel_request_status、password_set_status、register_status、selection_status | 新增/编辑/删除/审批/导出/回调均需校验租户、校区、角色、数据范围、逻辑删除、幂等和审计 |
| 10 直播课表/预告页 | StudentAccount、StudentAccountRegistration、StudentSessionSelection、StudentDeviceSession | stu_account、stu_account_registration、stu_session_selection、stu_device_session | 接口资源组 /api/v1/app/features/10 | account_type、login_status、cancel_request_status、password_set_status、register_status、selection_status | 新增/编辑/删除/审批/导出/回调均需校验租户、校区、角色、数据范围、逻辑删除、幂等和审计 |
| 11 直播课堂页 | StudentAccount、StudentAccountRegistration、StudentSessionSelection、StudentDeviceSession | stu_account、stu_account_registration、stu_session_selection、stu_device_session | 接口资源组 /api/v1/app/features/11 | account_type、login_status、cancel_request_status、password_set_status、register_status、selection_status | 新增/编辑/删除/审批/导出/回调均需校验租户、校区、角色、数据范围、逻辑删除、幂等和审计 |
| 12 作业列表页 | StudentAccount、StudentSessionSelection、StudentDeviceSession、StudentPortfolioItem | stu_account、stu_session_selection、stu_device_session、stu_portfolio_item | 接口资源组 /api/v1/app/features/12 | account_type、login_status、cancel_request_status、selection_status、client_type、session_status | 新增/编辑/删除/审批/导出/回调均需校验租户、校区、角色、数据范围、逻辑删除、幂等和审计 |
| 13 作业提交页 | StudentAccount、StudentAccountRegistration、StudentSessionSelection、StudentDeviceSession | stu_account、stu_account_registration、stu_session_selection、stu_device_session | 接口资源组 /api/v1/app/features/13 | account_type、login_status、cancel_request_status、password_set_status、register_status、selection_status | 新增/编辑/删除/审批/导出/回调均需校验租户、校区、角色、数据范围、逻辑删除、幂等和审计 |
| 14 作业结果与订正页 | StudentAccount、StudentAccountRegistration、StudentSessionSelection、StudentDeviceSession | stu_account、stu_account_registration、stu_session_selection、stu_device_session | 接口资源组 /api/v1/app/features/14 | account_type、login_status、cancel_request_status、password_set_status、register_status、selection_status | 新增/编辑/删除/审批/导出/回调均需校验租户、校区、角色、数据范围、逻辑删除、幂等和审计 |
| 15 测评考试页 | StudentAccount、StudentAccountRegistration、StudentSessionSelection、StudentDeviceSession | stu_account、stu_account_registration、stu_session_selection、stu_device_session | 接口资源组 /api/v1/app/features/15 | account_type、login_status、cancel_request_status、password_set_status、register_status、selection_status | 新增/编辑/删除/审批/导出/回调均需校验租户、校区、角色、数据范围、逻辑删除、幂等和审计 |
| 16 测评报告页 | StudentAccount、StudentAccountRegistration、StudentSessionSelection、StudentDeviceSession | stu_account、stu_account_registration、stu_session_selection、stu_device_session | 接口资源组 /api/v1/app/features/16 | account_type、login_status、cancel_request_status、password_set_status、register_status、selection_status | 新增/编辑/删除/审批/导出/回调均需校验租户、校区、角色、数据范围、逻辑删除、幂等和审计 |
| 17 学习档案页 | StudentAccount、StudentAccountRegistration、StudentSessionSelection、StudentDeviceSession | stu_account、stu_account_registration、stu_session_selection、stu_device_session | 接口资源组 /api/v1/app/features/17 | account_type、login_status、cancel_request_status、password_set_status、register_status、selection_status | 新增/编辑/删除/审批/导出/回调均需校验租户、校区、角色、数据范围、逻辑删除、幂等和审计 |
| 18 错题本页 | StudentAccount、StudentAccountRegistration、StudentSessionSelection、StudentDeviceSession | stu_account、stu_account_registration、stu_session_selection、stu_device_session | 接口资源组 /api/v1/app/features/18 | account_type、login_status、cancel_request_status、password_set_status、register_status、selection_status | 新增/编辑/删除/审批/导出/回调均需校验租户、校区、角色、数据范围、逻辑删除、幂等和审计 |
| 19 积分中心页 | StudentAccount、StudentAccountRegistration、StudentSessionSelection、StudentDeviceSession | stu_account、stu_account_registration、stu_session_selection、stu_device_session | 接口资源组 /api/v1/app/features/19 | account_type、login_status、cancel_request_status、password_set_status、register_status、selection_status | 新增/编辑/删除/审批/导出/回调均需校验租户、校区、角色、数据范围、逻辑删除、幂等和审计 |
| 20 礼品详情页 | StudentAccount、StudentAccountRegistration、StudentSessionSelection、StudentDeviceSession | stu_account、stu_account_registration、stu_session_selection、stu_device_session | 接口资源组 /api/v1/app/features/20 | account_type、login_status、cancel_request_status、password_set_status、register_status、selection_status | 新增/编辑/删除/审批/导出/回调均需校验租户、校区、角色、数据范围、逻辑删除、幂等和审计 |
| 21 兑换记录与订单详情页 | StudentAccount、StudentAccountRegistration、StudentSessionSelection、StudentDeviceSession | stu_account、stu_account_registration、stu_session_selection、stu_device_session | 接口资源组 /api/v1/app/features/21 | account_type、login_status、cancel_request_status、password_set_status、register_status、selection_status | 新增/编辑/删除/审批/导出/回调均需校验租户、校区、角色、数据范围、逻辑删除、幂等和审计 |
| 22 消息中心页 | StudentAccount、StudentAccountRegistration、StudentSessionSelection、StudentDeviceSession | stu_account、stu_account_registration、stu_session_selection、stu_device_session | 接口资源组 /api/v1/app/features/22 | account_type、login_status、cancel_request_status、password_set_status、register_status、selection_status | 新增/编辑/删除/审批/导出/回调均需校验租户、校区、角色、数据范围、逻辑删除、幂等和审计 |
| 23 个人中心页 | StudentAccount、StudentAccountRegistration、StudentSessionSelection、StudentDeviceSession | stu_account、stu_account_registration、stu_session_selection、stu_device_session | 接口资源组 /api/v1/app/features/23 | account_type、login_status、cancel_request_status、password_set_status、register_status、selection_status | 新增/编辑/删除/审批/导出/回调均需校验租户、校区、角色、数据范围、逻辑删除、幂等和审计 |
| 24 隐私与授权页 | StudentAccount、StudentAccountRegistration、StudentSessionSelection、StudentDeviceSession | stu_account、stu_account_registration、stu_session_selection、stu_device_session | 接口资源组 /api/v1/app/features/24 | account_type、login_status、cancel_request_status、password_set_status、register_status、selection_status | 新增/编辑/删除/审批/导出/回调均需校验租户、校区、角色、数据范围、逻辑删除、幂等和审计 |
| 25 桌面端学习中心首页 | StudentAccount、HomeworkDraft | stu_account、edu_homework_draft | 接口资源组 /api/v1/app/features/25 | account_type、login_status、cancel_request_status、draft_status、client_type、conflict_status | 新增/编辑/删除/审批/导出/回调均需校验租户、校区、角色、数据范围、逻辑删除、幂等和审计 |
| 26 桌面端播放/直播适配页 | StudentAccount、StudentAccountRegistration、StudentSessionSelection、StudentDeviceSession | stu_account、stu_account_registration、stu_session_selection、stu_device_session | 接口资源组 /api/v1/app/features/26 | account_type、login_status、cancel_request_status、password_set_status、register_status、selection_status | 新增/编辑/删除/审批/导出/回调均需校验租户、校区、角色、数据范围、逻辑删除、幂等和审计 |
| S01 账号未激活/绑定审核中状态 | StudentAccount、StudentAccountRegistration、StudentSessionSelection、StudentDeviceSession | stu_account、stu_account_registration、stu_session_selection、stu_device_session | 接口资源组 /api/v1/app/features/27 | account_type、login_status、cancel_request_status、password_set_status、register_status、selection_status | 新增/编辑/删除/审批/导出/回调均需校验租户、校区、角色、数据范围、逻辑删除、幂等和审计 |
| S02 权益不足/资源过期/合同到期状态 | StudentAccount、StudentAccountRegistration、StudentSessionSelection、StudentDeviceSession | stu_account、stu_account_registration、stu_session_selection、stu_device_session | 接口资源组 /api/v1/app/features/28 | account_type、login_status、cancel_request_status、password_set_status、register_status、selection_status | 新增/编辑/删除/审批/导出/回调均需校验租户、校区、角色、数据范围、逻辑删除、幂等和审计 |
| S03 直播互动答题/举手连麦弹窗/侧栏 | StudentAccount、StudentAccountRegistration、StudentSessionSelection、StudentDeviceSession | stu_account、stu_account_registration、stu_session_selection、stu_device_session | 接口资源组 /api/v1/app/features/29 | account_type、login_status、cancel_request_status、password_set_status、register_status、selection_status | 新增/编辑/删除/审批/导出/回调均需校验租户、校区、角色、数据范围、逻辑删除、幂等和审计 |
| S04 学习完成/获得积分弹窗 | StudentAccount、StudentAccountRegistration、StudentSessionSelection、StudentDeviceSession | stu_account、stu_account_registration、stu_session_selection、stu_device_session | 接口资源组 /api/v1/app/features/30 | account_type、login_status、cancel_request_status、password_set_status、register_status、selection_status | 新增/编辑/删除/审批/导出/回调均需校验租户、校区、角色、数据范围、逻辑删除、幂等和审计 |
| S05 兑换确认/兑换结果/核销码展示弹窗 | StudentAccount、StudentAccountRegistration、StudentSessionSelection、StudentDeviceSession | stu_account、stu_account_registration、stu_session_selection、stu_device_session | 接口资源组 /api/v1/app/features/31 | account_type、login_status、cancel_request_status、password_set_status、register_status、selection_status | 新增/编辑/删除/审批/导出/回调均需校验租户、校区、角色、数据范围、逻辑删除、幂等和审计 |
| S06 桌面端同步失败/接口失败/无权限状态 | StudentAccount、StudentAccountRegistration、StudentSessionSelection、StudentDeviceSession | stu_account、stu_account_registration、stu_session_selection、stu_device_session | 接口资源组 /api/v1/app/features/32 | account_type、login_status、cancel_request_status、password_set_status、register_status、selection_status | 新增/编辑/删除/审批/导出/回调均需校验租户、校区、角色、数据范围、逻辑删除、幂等和审计 |
| S07 作品预览/播放弹窗 | StudentAccount、StudentAccountRegistration、StudentSessionSelection、StudentDeviceSession | stu_account、stu_account_registration、stu_session_selection、stu_device_session | 接口资源组 /api/v1/app/features/33 | account_type、login_status、cancel_request_status、password_set_status、register_status、selection_status | 新增/编辑/删除/审批/导出/回调均需校验租户、校区、角色、数据范围、逻辑删除、幂等和审计 |
| S08 当前上课学员选择弹窗 | StudentAccount、StudentAccountRegistration、StudentSessionSelection、StudentDeviceSession | stu_account、stu_account_registration、stu_session_selection、stu_device_session | 接口资源组 /api/v1/app/features/34 | account_type、login_status、cancel_request_status、password_set_status、register_status、selection_status | 新增/编辑/删除/审批/导出/回调均需校验租户、校区、角色、数据范围、逻辑删除、幂等和审计 |
06 · 原子级功能需求
用于研发任务拆分和测试用例追踪
需求编号可直接进入项目管理工具。| 编号 | 需求描述 | 入口页面 | 关键动作 | 输入校验 | 输出结果 | 异常处理 | 验收标准 |
|---|---|---|---|---|---|---|---|
| FR-APP-001 | 学员端原型范围按 26 个独立页面/适配画板 + 8 个弹窗/状态画板组织,主页面和状态画板均需在 PRD 中可追溯到字段、动作、异常和验收口径 | 启动与登录 | 进入学员端 | 校验租户、校区、角色、数据范围、状态前置、必填、唯一和敏感操作授权 | 生成业务记录、状态流转、消息通知、审计日志、指标快照和必要的第三方任务 | 网络异常、版本过低、登录失效、学员账号未激活或绑定审核中时提示处理路径 | 主流程、异常流、权限流、接口失败和数据一致性均可通过测试 |
| FR-APP-002 | 学校提供账号的正式学员使用学员用户名 + 密码登录,登录后自动同步学员基础信息、课程权益、班级和学习任务 | 学员用户名密码登录 | 学校发放账号登录 | 校验租户、校区、角色、数据范围、状态前置、必填、唯一和敏感操作授权 | 生成业务记录、状态流转、消息通知、审计日志、指标快照和必要的第三方任务 | 用户名或密码错误、学员信息同步失败、账号锁定或协议未勾选时阻断并提示 | 主流程、异常流、权限流、接口失败和数据一致性均可通过测试 |
| FR-APP-003 | 非学员支持手机号自主注册,注册后支持手机号 + 密码或手机号 + 验证码登录;手机号已注册、验证码错误、协议未勾选和注册审核中必须有明确状态 | 非学员手机号注册登录 | 手机号注册或登录 | 校验租户、校区、角色、数据范围、状态前置、必填、唯一和敏感操作授权 | 生成业务记录、状态流转、消息通知、审计日志、指标快照和必要的第三方任务 | 手机号已注册、验证码错误、密码规则不满足、注册审核中或无绑定学员时给出可重试路径 | 主流程、异常流、权限流、接口失败和数据一致性均可通过测试 |
| FR-APP-004 | 同一手机号或同一账号关联多个学员时,进入学习中心前必须选择当前上课学员;学习记录、作业、积分、直播签到和消息跳转必须按 studentId 隔离 | 当前上课学员选择 | 进入学习中心前选择学员 | 校验租户、校区、角色、数据范围、状态前置、必填、唯一和敏感操作授权 | 生成业务记录、状态流转、消息通知、审计日志、指标快照和必要的第三方任务 | 多学员未选择、当前学员权益过期、学员未激活或同步失败时不得混写学习记录 | 主流程、异常流、权限流、接口失败和数据一致性均可通过测试 |
| FR-APP-005 | 账号注销需提供申请、风险确认、验证码校验、撤销申请、申请状态和审计留痕,不得直接物理删除学习记录 | 学员学习首页 | 打开学习中心 | 校验租户、校区、角色、数据范围、状态前置、必填、唯一和敏感操作授权 | 生成业务记录、状态流转、消息通知、审计日志、指标快照和必要的第三方任务 | 端类型不支持、网络异常或账号状态异常时可重试 | 主流程、异常流、权限流、接口失败和数据一致性均可通过测试 |
| FR-APP-006 | 学习首页展示当前学员、今日课程、学习任务、直播提醒、积分、成长等级和最近学习,支持切换学员、继续学习和进入积分商城 | 课程资源详情 | 访问课程资源 | 校验租户、校区、角色、数据范围、状态前置、必填、唯一和敏感操作授权 | 生成业务记录、状态流转、消息通知、审计日志、指标快照和必要的第三方任务 | 课程权益不足、资源过期或播放地址失效时展示原因 | 主流程、异常流、权限流、接口失败和数据一致性均可通过测试 |
| FR-APP-007 | 课程资源、资源播放、直播回放和补看任务均需按课程权益、有效期、发布范围、资源状态和回放状态鉴权 | 学习任务详情 | 完成学习任务 | 校验租户、校区、角色、数据范围、状态前置、必填、唯一和敏感操作授权 | 生成业务记录、状态流转、消息通知、审计日志、指标快照和必要的第三方任务 | 任务已过期或进度同步失败时进入补偿队列 | 主流程、异常流、权限流、接口失败和数据一致性均可通过测试 |
| FR-APP-008 | 直播课堂支持签到、互动答题、举手连麦、排队状态、教师邀请、连接中、上麦中、被教师静音、全班发言、结束连麦、断流重试和观看记录同步 | 作业编辑自动保存 | 保存草稿 | 校验租户、校区、角色、数据范围、状态前置、必填、唯一和敏感操作授权 | 生成业务记录、状态流转、消息通知、审计日志、指标快照和必要的第三方任务 | 自动保存失败、附件上传失败或多端版本冲突时保留本地草稿 | 主流程、异常流、权限流、接口失败和数据一致性均可通过测试 |
| FR-APP-009 | 作业列表必须显式支持草稿筛选,作业提交页支持自动保存、手动保存、附件上传、继续编辑、删除草稿、草稿过期、多端冲突恢复和正式提交 | 作业草稿箱 | 继续编辑或删除草稿 | 校验租户、校区、角色、数据范围、状态前置、必填、唯一和敏感操作授权 | 生成业务记录、状态流转、消息通知、审计日志、指标快照和必要的第三方任务 | 草稿过期、作业已关闭、服务端版本冲突或删除恢复失败时展示原因和恢复策略 | 主流程、异常流、权限流、接口失败和数据一致性均可通过测试 |
| FR-APP-010 | 测评考试支持在线作答、倒计时、必答校验、自动交卷、交卷确认、报告生成、错题解析和学习建议 | 测评考试作答 | 提交测评 | 校验租户、校区、角色、数据范围、状态前置、必填、唯一和敏感操作授权 | 生成业务记录、状态流转、消息通知、审计日志、指标快照和必要的第三方任务 | 考试超时、必答题缺失或重复提交时阻断并提示 | 主流程、异常流、权限流、接口失败和数据一致性均可通过测试 |
| FR-APP-011 | 错题本支持按错题来源、知识点、掌握状态、错误次数筛选,一键挑出 5 题复练、生成错题重组测试、标记掌握和移出错题本 | 错题本复练 | 一键复练或生成错题重组测试 | 校验租户、校区、角色、数据范围、状态前置、必填、唯一和敏感操作授权 | 生成业务记录、状态流转、消息通知、审计日志、指标快照和必要的第三方任务 | 无错题、重组测试生成失败、练习提交失败或标记掌握冲突时给出重试和回退 | 主流程、异常流、权限流、接口失败和数据一致性均可通过测试 |
| FR-APP-012 | 学习档案通过进度、报告、作品、证书 Tab 展示课程进度、课时完成、作业完成、测评趋势、直播观看、能力雷达和教师评价 | 学习档案 | 查看成长档案 | 校验租户、校区、角色、数据范围、状态前置、必填、唯一和敏感操作授权 | 生成业务记录、状态流转、消息通知、审计日志、指标快照和必要的第三方任务 | 数据同步延迟或档案无权限时展示空状态与客服入口 | 主流程、异常流、权限流、接口失败和数据一致性均可通过测试 |
| FR-APP-013 | 作品集支持图片大图、录音播放、视频播放、教师点评、转码中、加载失败、资源过期、无权限和分享给家长等轻量画板 | 作品预览播放 | 查看学习作品 | 校验租户、校区、角色、数据范围、状态前置、必填、唯一和敏感操作授权 | 生成业务记录、状态流转、消息通知、审计日志、指标快照和必要的第三方任务 | 作品转码中、作品加载失败、资源已过期或无权限时展示轻量弹窗异常态 | 主流程、异常流、权限流、接口失败和数据一致性均可通过测试 |
| FR-APP-014 | 积分商城支持积分中心、礼品详情、兑换记录与订单详情;立即兑换需先锁库,按钮 loading 防重复点击,锁库成功后确认兑换 | 积分商城 | 兑换礼品 | 校验租户、校区、角色、数据范围、状态前置、必填、唯一和敏感操作授权 | 生成业务记录、状态流转、消息通知、审计日志、指标快照和必要的第三方任务 | 积分不足、库存不足或核销码失效时回滚积分 | 主流程、异常流、权限流、接口失败和数据一致性均可通过测试 |
| FR-APP-015 | 核销码支持二维码/条形码展示、点击放大、自动调高屏幕亮度、刷新核销码、过期提示、取消兑换、积分退回和实物售后状态 | 积分锁库确认 | 点击立即兑换 | 校验租户、校区、角色、数据范围、状态前置、必填、唯一和敏感操作授权 | 生成业务记录、状态流转、消息通知、审计日志、指标快照和必要的第三方任务 | 锁库失败、重复点击、库存被占用或礼品下架时不得扣减积分 | 主流程、异常流、权限流、接口失败和数据一致性均可通过测试 |
| FR-APP-016 | 消息中心覆盖课程、作业、直播、积分和系统通知,业务对象失效时需展示原因和返回路径 | 积分兑换核销 | 线下核销 | 校验租户、校区、角色、数据范围、状态前置、必填、唯一和敏感操作授权 | 生成业务记录、状态流转、消息通知、审计日志、指标快照和必要的第三方任务 | 核销码重复使用、礼品库存异常或校区无权限时阻断 | 主流程、异常流、权限流、接口失败和数据一致性均可通过测试 |
| FR-APP-017 | 隐私与授权页只承接学员端微信、手机号、设备、摄像头/麦克风、消息推送和协议状态;人脸授权采集/撤回由家长端主责,学员端只展示状态或跳转说明 | 学员直播课堂 | 进入直播 | 校验租户、校区、角色、数据范围、状态前置、必填、唯一和敏感操作授权 | 生成业务记录、状态流转、消息通知、审计日志、指标快照和必要的第三方任务 | 直播未开播、无权益、断流或回放生成中时提示状态 | 主流程、异常流、权限流、接口失败和数据一致性均可通过测试 |
| FR-APP-018 | Tauri 桌面端复用 H5/Web 学习中心能力,但需独立展示桌面导航、宽屏播放器、互动侧栏、设备状态、同步状态和版本提示 | 作业草稿箱 | 恢复草稿 | 校验租户、校区、角色、数据范围、状态前置、必填、唯一和敏感操作授权 | 生成业务记录、状态流转、消息通知、审计日志、指标快照和必要的第三方任务 | 草稿过期、作业已关闭或服务端版本冲突时提供恢复策略 | 主流程、异常流、权限流、接口失败和数据一致性均可通过测试 |
| FR-APP-019 | 桌面播放/直播支持双击全屏、方向键调节音量、Esc 退出全屏;学习进度同步失败先每 30 秒静默重试,连续失败 3 次以上再强提示 | 学员直播举手上麦 | 举手上麦 | 校验租户、校区、角色、数据范围、状态前置、必填、唯一和敏感操作授权 | 生成业务记录、状态流转、消息通知、审计日志、指标快照和必要的第三方任务 | 连麦人数已满、邀请超时、麦克风未授权或供应商连接失败时提示修复 | 主流程、异常流、权限流、接口失败和数据一致性均可通过测试 |
| FR-APP-020 | 学员桌面端不展示开播、屏幕共享、系统音频采集、本地录制等教师直播创作入口,越权接口需拒绝并审计 | Tauri 桌面学习中心 | 桌面播放和同步 | 校验租户、校区、角色、数据范围、状态前置、必填、唯一和敏感操作授权 | 生成业务记录、状态流转、消息通知、审计日志、指标快照和必要的第三方任务 | 学习进度同步失败先 30 秒静默重试,连续失败 3 次以上再强提示;桌面端不得出现教师直播创作入口 | 主流程、异常流、权限流、接口失败和数据一致性均可通过测试 |
07 · 关联闭环补充需求
学员端学习中心在跨模块闭环中的责任边界
本章节承接最终闭环核对清单,明确本模块需要补齐的页面、接口对象、异常兜底和验收口径。| 闭环项 | 本模块责任 | 关键场景 | 页面/功能补充 | 关联对象/接口 | 验收口径 |
|---|---|---|---|---|---|
| 回放人工补传 | 接收回放重新发布、补看提醒和访问异常提示 | 学员错过直播、回放缺失后补传重新开放 | 回放列表、补看提醒、回放异常页、学习进度回写 | ReplayPublishPolicy/ReplayAccess、StudentAccount/LearningProfile | 补传回放可按原课程权益访问,补看记录进入学习进度 |
| 礼品实物售后 | 提供积分兑换取消、核销码查看、线下领取异常和售后进度 | 礼品缺货、核销码过期、线下领取失败或积分退回 | 积分商城、兑换订单、核销码、售后申请、处理结果 | PointsAccount/PointsOrder、PointsRedemptionAfterSales | 积分、库存和兑换状态在学员端可见且与后台一致 |
08 · 页面与原型设计说明
页面清单、布局要求、按钮字段和状态
原型图设计需要覆盖列表、详情、表单、弹窗、空状态、异常状态和权限状态。| 终端 | 页面 | 用户 | 页面目标 | 布局结构 | 关键按钮 | 关键字段 | 异常状态 | 原型备注 |
|---|---|---|---|---|---|---|---|---|
| 学员端小程序/App/H5 | 01 启动页 | 学员 | 自动检查登录态、网络状态、版本号、已绑定学员数量和上次选择学员,按状态跳转登录页、当前上课学员选择或学习首页 | 学员端账号页采用移动端轻量表单和状态引导:启动页先检查登录态、版本、网络和学员绑定;登录页提供学校发放账号登录与非学员手机号注册/登录两条路径;多学员选择使用底部抽屉。 | 检查登录态、学员用户名密码登录、手机号注册、手机号密码登录、手机号验证码登录、找回密码、选择当前上课学员、提交注销 | 学员用户名、学员密码、手机号、短信验证码、登录密码、协议勾选、绑定学员列表、当前学员、账号状态、注销确认 | 学员账号未激活、密码错误、验证码错误、协议未勾选、手机号已注册、多学员未选择、无绑定学员、账号注销申请中 | 学员用户名密码登录用于学校发放账号;非学员手机号注册后支持手机号密码/验证码登录;所有学习记录、作业、积分和直播签到必须按当前 studentId 隔离。 建议 Figma Frame:APP-01_启动页;需补齐正常、空态、加载、无权限、处理中、成功和失败状态。 |
| 学员端小程序/App/H5 | 02 登录页 | 学员/非学员 | 支持学员用户名密码登录、手机号密码登录、手机号验证码登录、协议勾选、学员信息同步和多学员选择入口 | 学员端账号页采用移动端轻量表单和状态引导:启动页先检查登录态、版本、网络和学员绑定;登录页提供学校发放账号登录与非学员手机号注册/登录两条路径;多学员选择使用底部抽屉。 | 检查登录态、学员用户名密码登录、手机号注册、手机号密码登录、手机号验证码登录、找回密码、选择当前上课学员、提交注销 | 学员用户名、学员密码、手机号、短信验证码、登录密码、协议勾选、绑定学员列表、当前学员、账号状态、注销确认 | 学员账号未激活、密码错误、验证码错误、协议未勾选、手机号已注册、多学员未选择、无绑定学员、账号注销申请中 | 学员用户名密码登录用于学校发放账号;非学员手机号注册后支持手机号密码/验证码登录;所有学习记录、作业、积分和直播签到必须按当前 studentId 隔离。 建议 Figma Frame:APP-02_登录页;需补齐正常、空态、加载、无权限、处理中、成功和失败状态。 |
| 学员端小程序/App/H5 | 03 非学员注册登录页 | 非学员/潜在学员 | 手机号自主注册、设置登录密码、选择机构校区、创建学员信息,注册后可使用手机号密码或验证码登录 | 学员端账号页采用移动端轻量表单和状态引导:启动页先检查登录态、版本、网络和学员绑定;登录页提供学校发放账号登录与非学员手机号注册/登录两条路径;多学员选择使用底部抽屉。 | 检查登录态、学员用户名密码登录、手机号注册、手机号密码登录、手机号验证码登录、找回密码、选择当前上课学员、提交注销 | 学员用户名、学员密码、手机号、短信验证码、登录密码、协议勾选、绑定学员列表、当前学员、账号状态、注销确认 | 学员账号未激活、密码错误、验证码错误、协议未勾选、手机号已注册、多学员未选择、无绑定学员、账号注销申请中 | 学员用户名密码登录用于学校发放账号;非学员手机号注册后支持手机号密码/验证码登录;所有学习记录、作业、积分和直播签到必须按当前 studentId 隔离。 建议 Figma Frame:APP-03_非学员注册登录页;需补齐正常、空态、加载、无权限、处理中、成功和失败状态。 |
| 学员端小程序/App/H5 | 04 找回密码页 | 学员/非学员 | 通过手机号验证码重置登录密码,校验验证码、密码规则、重置结果和返回登录路径 | 学员端账号页采用移动端轻量表单和状态引导:启动页先检查登录态、版本、网络和学员绑定;登录页提供学校发放账号登录与非学员手机号注册/登录两条路径;多学员选择使用底部抽屉。 | 检查登录态、学员用户名密码登录、手机号注册、手机号密码登录、手机号验证码登录、找回密码、选择当前上课学员、提交注销 | 学员用户名、学员密码、手机号、短信验证码、登录密码、协议勾选、绑定学员列表、当前学员、账号状态、注销确认 | 学员账号未激活、密码错误、验证码错误、协议未勾选、手机号已注册、多学员未选择、无绑定学员、账号注销申请中 | 学员用户名密码登录用于学校发放账号;非学员手机号注册后支持手机号密码/验证码登录;所有学习记录、作业、积分和直播签到必须按当前 studentId 隔离。 建议 Figma Frame:APP-04_找回密码页;需补齐正常、空态、加载、无权限、处理中、成功和失败状态。 |
| 学员端小程序/App/H5 | 05 账号注销申请页 | 学员 | 展示注销影响、账号信息、验证码、风险确认、提交注销、撤销申请和注销状态 | 学员端账号页采用移动端轻量表单和状态引导:启动页先检查登录态、版本、网络和学员绑定;登录页提供学校发放账号登录与非学员手机号注册/登录两条路径;多学员选择使用底部抽屉。 | 检查登录态、学员用户名密码登录、手机号注册、手机号密码登录、手机号验证码登录、找回密码、选择当前上课学员、提交注销 | 学员用户名、学员密码、手机号、短信验证码、登录密码、协议勾选、绑定学员列表、当前学员、账号状态、注销确认 | 学员账号未激活、密码错误、验证码错误、协议未勾选、手机号已注册、多学员未选择、无绑定学员、账号注销申请中 | 学员用户名密码登录用于学校发放账号;非学员手机号注册后支持手机号密码/验证码登录;所有学习记录、作业、积分和直播签到必须按当前 studentId 隔离。 建议 Figma Frame:APP-05_账号注销申请页;需补齐正常、空态、加载、无权限、处理中、成功和失败状态。 |
| 学员端小程序/App/H5 | 06 学习首页 | 学员 | 展示当前学员、今日课程、学习任务、直播提醒、积分、成长等级、最近学习,支持切换学员、继续学习和进入积分商城 | 学习页以任务流为核心:移动端采用学习首页、课程卡片、资源目录和底部主操作;平板和桌面端采用左侧目录、中部播放器、右侧任务/报告区域。 | 继续学习、进入课程、播放资源、补看回放、记录进度、刷新权益、查看报告、切换学员 | 当前学员、课程名称、权益状态、有效期、学习进度、资源类型、播放地址、回放有效期、补看截止时间、同步状态 | 课程权益不足、合同到期、资源过期、播放鉴权失效、回放生成中、学习进度同步失败、资源加载失败 | 合同缴费、发票和人脸授权采集不作为学员端主流程;学员端仅展示必要状态、原因和跳转/联系入口。 建议 Figma Frame:APP-06_学习首页;需补齐正常、空态、加载、无权限、处理中、成功和失败状态。 |
| 学员端小程序/App/H5 | 07 我的课程页 | 学员 | 展示课程封面、课程名称、有效期、进度、剩余课时、权益状态,支持筛选课程、进入学习和查看权益 | 学习页以任务流为核心:移动端采用学习首页、课程卡片、资源目录和底部主操作;平板和桌面端采用左侧目录、中部播放器、右侧任务/报告区域。 | 继续学习、进入课程、播放资源、补看回放、记录进度、刷新权益、查看报告、切换学员 | 当前学员、课程名称、权益状态、有效期、学习进度、资源类型、播放地址、回放有效期、补看截止时间、同步状态 | 课程权益不足、合同到期、资源过期、播放鉴权失效、回放生成中、学习进度同步失败、资源加载失败 | 合同缴费、发票和人脸授权采集不作为学员端主流程;学员端仅展示必要状态、原因和跳转/联系入口。 建议 Figma Frame:APP-07_我的课程页;需补齐正常、空态、加载、无权限、处理中、成功和失败状态。 |
| 学员端小程序/App/H5 | 08 课程详情页 | 学员 | 展示课程介绍、课时目录、学习资源、作业任务、测评入口和学习报告入口,支持播放资源、提交作业、参加测评 | 学习页以任务流为核心:移动端采用学习首页、课程卡片、资源目录和底部主操作;平板和桌面端采用左侧目录、中部播放器、右侧任务/报告区域。 | 继续学习、进入课程、播放资源、补看回放、记录进度、刷新权益、查看报告、切换学员 | 当前学员、课程名称、权益状态、有效期、学习进度、资源类型、播放地址、回放有效期、补看截止时间、同步状态 | 课程权益不足、合同到期、资源过期、播放鉴权失效、回放生成中、学习进度同步失败、资源加载失败 | 合同缴费、发票和人脸授权采集不作为学员端主流程;学员端仅展示必要状态、原因和跳转/联系入口。 建议 Figma Frame:APP-08_课程详情页;需补齐正常、空态、加载、无权限、处理中、成功和失败状态。 |
| 学员端小程序/App/H5 | 09 资源/回放播放页 | 学员 | 支持视频、音频、文档、回放视频、目录、倍速、学习进度、有效期、关联作业和播放失败兜底 | 学习页以任务流为核心:移动端采用学习首页、课程卡片、资源目录和底部主操作;平板和桌面端采用左侧目录、中部播放器、右侧任务/报告区域。 | 继续学习、进入课程、播放资源、补看回放、记录进度、刷新权益、查看报告、切换学员 | 当前学员、课程名称、权益状态、有效期、学习进度、资源类型、播放地址、回放有效期、补看截止时间、同步状态 | 课程权益不足、合同到期、资源过期、播放鉴权失效、回放生成中、学习进度同步失败、资源加载失败 | 合同缴费、发票和人脸授权采集不作为学员端主流程;学员端仅展示必要状态、原因和跳转/联系入口。 建议 Figma Frame:APP-09_资源_回放播放页;需补齐正常、空态、加载、无权限、处理中、成功和失败状态。 |
| 学员端小程序/App/H5 | 10 直播课表/预告页 | 学员 | 展示直播标题、开课时间、教师、班级、预约状态和提醒状态,支持预约、取消预约、加入提醒和进入直播详情 | 直播页以播放器为主,移动端叠加互动抽屉,桌面端使用主舞台 + 右侧聊天/答题/连麦侧栏;连麦状态条需要常驻展示当前排队、邀请、上麦和静音状态。 | 预约直播、进入直播、直播签到、提交答题、申请连麦、取消排队、接受连麦、拒绝连麦 | 直播标题、开课时间、教师、观看权益、签到状态、互动题、举手状态、排队位次、邀请倒计时、麦克风状态 | 直播未开始、无观看权益、断流、连麦人数已满、邀请超时、麦克风未授权、教师已静音、供应商连接失败 | 学员端仅提交举手和连麦响应,教师端负责队列处理、邀请、静音、下麦和座席释放。 建议 Figma Frame:APP-10_直播课表_预告页;需补齐正常、空态、加载、无权限、处理中、成功和失败状态。 |
| 学员端小程序/App/H5 | 11 直播课堂页 | 学员 | 直播画面、聊天、答题、签到、举手连麦、排队位次、连麦邀请、麦克风状态、老师静音状态和观看时长完整闭环 | 直播页以播放器为主,移动端叠加互动抽屉,桌面端使用主舞台 + 右侧聊天/答题/连麦侧栏;连麦状态条需要常驻展示当前排队、邀请、上麦和静音状态。 | 预约直播、进入直播、直播签到、提交答题、申请连麦、取消排队、接受连麦、拒绝连麦 | 直播标题、开课时间、教师、观看权益、签到状态、互动题、举手状态、排队位次、邀请倒计时、麦克风状态 | 直播未开始、无观看权益、断流、连麦人数已满、邀请超时、麦克风未授权、教师已静音、供应商连接失败 | 学员端仅提交举手和连麦响应,教师端负责队列处理、邀请、静音、下麦和座席释放。 建议 Figma Frame:APP-11_直播课堂页;需补齐正常、空态、加载、无权限、处理中、成功和失败状态。 |
| 学员端小程序/App/H5 | 12 作业列表页 | 学员 | 按全部、待提交、草稿未提交、已提交、已批改、需订正、已完成、已过期等状态筛选作业,支持继续编辑草稿 | 作业页采用列表筛选 + 详情作答 + 结果订正三段结构;草稿作为显性筛选和独立状态,作答页顶部展示自动保存时间、截止倒计时和冲突提示。 | 筛选草稿、继续编辑草稿、保存草稿、上传附件、提交作业、删除草稿、恢复冲突、订正错题 | 作业标题、截止时间、提交状态、草稿状态、最近保存时间、autoSaveVersion、附件、教师评语、订正次数、补交状态 | 自动保存失败、附件上传失败、多端版本冲突、作业已截止、草稿已过期、重复提交、批改驳回 | 草稿 10 秒内自动保存;提交成功后草稿关闭;逻辑删除草稿需要写审计并保留恢复策略。 建议 Figma Frame:APP-12_作业列表页;需补齐正常、空态、加载、无权限、处理中、成功和失败状态。 |
| 学员端小程序/App/H5 | 13 作业提交页 | 学员 | 支持文本、图片、音频、视频附件作答,自动保存、手动保存草稿、上传附件、正式提交和撤回修改 | 作业页采用列表筛选 + 详情作答 + 结果订正三段结构;草稿作为显性筛选和独立状态,作答页顶部展示自动保存时间、截止倒计时和冲突提示。 | 筛选草稿、继续编辑草稿、保存草稿、上传附件、提交作业、删除草稿、恢复冲突、订正错题 | 作业标题、截止时间、提交状态、草稿状态、最近保存时间、autoSaveVersion、附件、教师评语、订正次数、补交状态 | 自动保存失败、附件上传失败、多端版本冲突、作业已截止、草稿已过期、重复提交、批改驳回 | 草稿 10 秒内自动保存;提交成功后草稿关闭;逻辑删除草稿需要写审计并保留恢复策略。 建议 Figma Frame:APP-13_作业提交页;需补齐正常、空态、加载、无权限、处理中、成功和失败状态。 |
| 学员端小程序/App/H5 | 14 作业结果与订正页 | 学员 | 查看得分、教师评语、错题、优秀示例、订正次数和重做入口,支持订正错题和分享给家长 | 作业页采用列表筛选 + 详情作答 + 结果订正三段结构;草稿作为显性筛选和独立状态,作答页顶部展示自动保存时间、截止倒计时和冲突提示。 | 筛选草稿、继续编辑草稿、保存草稿、上传附件、提交作业、删除草稿、恢复冲突、订正错题 | 作业标题、截止时间、提交状态、草稿状态、最近保存时间、autoSaveVersion、附件、教师评语、订正次数、补交状态 | 自动保存失败、附件上传失败、多端版本冲突、作业已截止、草稿已过期、重复提交、批改驳回 | 草稿 10 秒内自动保存;提交成功后草稿关闭;逻辑删除草稿需要写审计并保留恢复策略。 建议 Figma Frame:APP-14_作业结果与订正页;需补齐正常、空态、加载、无权限、处理中、成功和失败状态。 |
| 学员端小程序/App/H5 | 15 测评考试页 | 学员 | 支持题目、选项、倒计时、答题进度、标记状态、交卷确认、考试超时和网络异常处理 | 测评页采用题目卡片、答题进度、倒计时和交卷确认;错题本采用筛选列表、复练队列和结果反馈,突出一键 5 题复练和错题重组测试。 | 开始测评、保存答案、交卷、查看解析、加入错题本、一键挑 5 题复练、生成错题重组测试、标记掌握 | 题目、答案、倒计时、能力维度、错题来源、知识点、错误次数、掌握状态、复练题量、复练结果 | 考试超时、必答题缺失、重复交卷、报告生成失败、无错题、重组测试生成失败、练习失败 | 错题本目标是复练和消灭错题,而不是只做错题查看。 建议 Figma Frame:APP-15_测评考试页;需补齐正常、空态、加载、无权限、处理中、成功和失败状态。 |
| 学员端小程序/App/H5 | 16 测评报告页 | 学员 | 展示总分、能力维度、错题解析、学习建议和学习计划入口,支持加入错题本和查看档案 | 测评页采用题目卡片、答题进度、倒计时和交卷确认;错题本采用筛选列表、复练队列和结果反馈,突出一键 5 题复练和错题重组测试。 | 开始测评、保存答案、交卷、查看解析、加入错题本、一键挑 5 题复练、生成错题重组测试、标记掌握 | 题目、答案、倒计时、能力维度、错题来源、知识点、错误次数、掌握状态、复练题量、复练结果 | 考试超时、必答题缺失、重复交卷、报告生成失败、无错题、重组测试生成失败、练习失败 | 错题本目标是复练和消灭错题,而不是只做错题查看。 建议 Figma Frame:APP-16_测评报告页;需补齐正常、空态、加载、无权限、处理中、成功和失败状态。 |
| 学员端小程序/App/H5 | 17 学习档案页 | 学员 | 通过进度、报告、作品、证书 Tab 展示课程进度、课时完成、作业完成、测评趋势、直播观看、能力雷达、教师评价和作品集 | 学习档案页使用进度、报告、作品、证书 Tab;作品预览以轻量弹窗展示图片大图、录音播放器、视频播放器、教师点评和分享动作。 | 筛选课程、查看趋势、预览作品、播放录音、播放视频、下载证书、分享作品、查看教师点评 | 课程进度、作业完成、测评趋势、直播观看、能力雷达、教师评价、作品类型、作品文件、荣誉证书、课程名称 | 暂无档案、暂无作品、报告生成中、作品转码中、作品加载失败、资源已过期、无权限 | 作品预览不新增主导航页面,作为学习档案内弹窗/轻量画板呈现。 建议 Figma Frame:APP-17_学习档案页;需补齐正常、空态、加载、无权限、处理中、成功和失败状态。 |
| 学员端小程序/App/H5 | 18 错题本页 | 学员 | 按错题来源、知识点、掌握状态、错误次数筛选错题,支持一键挑 5 题复练、错题重组测试、标记掌握和移出错题本 | 测评页采用题目卡片、答题进度、倒计时和交卷确认;错题本采用筛选列表、复练队列和结果反馈,突出一键 5 题复练和错题重组测试。 | 开始测评、保存答案、交卷、查看解析、加入错题本、一键挑 5 题复练、生成错题重组测试、标记掌握 | 题目、答案、倒计时、能力维度、错题来源、知识点、错误次数、掌握状态、复练题量、复练结果 | 考试超时、必答题缺失、重复交卷、报告生成失败、无错题、重组测试生成失败、练习失败 | 错题本目标是复练和消灭错题,而不是只做错题查看。 建议 Figma Frame:APP-18_错题本页;需补齐正常、空态、加载、无权限、处理中、成功和失败状态。 |
| 学员端小程序/App/H5 | 19 积分中心页 | 学员 | 展示当前积分、积分任务、可兑换礼品、积分流水和积分来源,支持查看规则、进入兑换、做任务和查看明细 | 积分商城采用积分中心、礼品详情、兑换记录三层结构;兑换确认使用弹窗完成锁库、积分扣减确认和结果反馈,核销码展示需支持放大和临时提升屏幕亮度。 | 查看积分流水、立即兑换、锁定库存、确认兑换、取消兑换、查看核销码、放大核销码、刷新核销码 | 积分余额、积分任务、礼品 SKU、可用库存、所需积分、领取校区、兑换订单、核销码、有效期、售后状态 | 积分不足、库存不足、锁库失败、重复点击拦截、礼品下架、核销码过期、重复核销、库存释放失败 | 兑换先锁库,锁库成功后再确认兑换;核销成功后联动物料礼品出库。 建议 Figma Frame:APP-19_积分中心页;需补齐正常、空态、加载、无权限、处理中、成功和失败状态。 |
| 学员端小程序/App/H5 | 20 礼品详情页 | 学员 | 展示礼品图片、库存、所需积分、领取校区、兑换说明和有效期,立即兑换先锁库并用 loading 防重复点击 | 积分商城采用积分中心、礼品详情、兑换记录三层结构;兑换确认使用弹窗完成锁库、积分扣减确认和结果反馈,核销码展示需支持放大和临时提升屏幕亮度。 | 查看积分流水、立即兑换、锁定库存、确认兑换、取消兑换、查看核销码、放大核销码、刷新核销码 | 积分余额、积分任务、礼品 SKU、可用库存、所需积分、领取校区、兑换订单、核销码、有效期、售后状态 | 积分不足、库存不足、锁库失败、重复点击拦截、礼品下架、核销码过期、重复核销、库存释放失败 | 兑换先锁库,锁库成功后再确认兑换;核销成功后联动物料礼品出库。 建议 Figma Frame:APP-20_礼品详情页;需补齐正常、空态、加载、无权限、处理中、成功和失败状态。 |
| 学员端小程序/App/H5 | 21 兑换记录与订单详情页 | 学员 | 展示订单号、礼品、二维码/条形码核销码、领取状态、有效期、取消原因、退回积分和处理时间 | 积分商城采用积分中心、礼品详情、兑换记录三层结构;兑换确认使用弹窗完成锁库、积分扣减确认和结果反馈,核销码展示需支持放大和临时提升屏幕亮度。 | 查看积分流水、立即兑换、锁定库存、确认兑换、取消兑换、查看核销码、放大核销码、刷新核销码 | 积分余额、积分任务、礼品 SKU、可用库存、所需积分、领取校区、兑换订单、核销码、有效期、售后状态 | 积分不足、库存不足、锁库失败、重复点击拦截、礼品下架、核销码过期、重复核销、库存释放失败 | 兑换先锁库,锁库成功后再确认兑换;核销成功后联动物料礼品出库。 建议 Figma Frame:APP-21_兑换记录与订单详情页;需补齐正常、空态、加载、无权限、处理中、成功和失败状态。 |
| 学员端小程序/App/H5 | 22 消息中心页 | 学员 | 聚合课程提醒、作业提醒、直播提醒、积分提醒和系统通知,支持筛选、已读、删除和跳转业务页面 | 消息与个人中心采用移动端列表和设置分组;平板/桌面可左右分栏。隐私页只承接学员端设备、推送、微信、手机号、摄像头/麦克风等授权状态,人脸授权仅展示家长端处理状态和跳转说明。 | 筛选消息、标记已读、删除消息、切换学员、管理设备、编辑资料、退出登录、查看协议 | 消息类型、业务跳转、头像、昵称、当前学员、绑定学员、设备列表、微信授权、推送授权、隐私协议 | 无消息、跳转对象失效、设备超限、资料保存失败、学员同步失败、授权失败、敏感操作留痕 | 人脸授权采集和撤回仍由家长端主责,学员端不承接家长授权操作。 建议 Figma Frame:APP-22_消息中心页;需补齐正常、空态、加载、无权限、处理中、成功和失败状态。 |
| 学员端小程序/App/H5 | 23 个人中心页 | 学员 | 展示头像、昵称、账号、安全设置、当前学员、绑定学员列表、设备管理和学习账号状态,支持切换学员和管理设备 | 消息与个人中心采用移动端列表和设置分组;平板/桌面可左右分栏。隐私页只承接学员端设备、推送、微信、手机号、摄像头/麦克风等授权状态,人脸授权仅展示家长端处理状态和跳转说明。 | 筛选消息、标记已读、删除消息、切换学员、管理设备、编辑资料、退出登录、查看协议 | 消息类型、业务跳转、头像、昵称、当前学员、绑定学员、设备列表、微信授权、推送授权、隐私协议 | 无消息、跳转对象失效、设备超限、资料保存失败、学员同步失败、授权失败、敏感操作留痕 | 人脸授权采集和撤回仍由家长端主责,学员端不承接家长授权操作。 建议 Figma Frame:APP-23_个人中心页;需补齐正常、空态、加载、无权限、处理中、成功和失败状态。 |
| 学员端小程序/App/H5 | 24 隐私与授权页 | 学员 | 展示微信授权、手机号、摄像头/麦克风、消息推送、用户协议、隐私政策;人脸授权仅展示家长端处理状态或跳转说明 | 消息与个人中心采用移动端列表和设置分组;平板/桌面可左右分栏。隐私页只承接学员端设备、推送、微信、手机号、摄像头/麦克风等授权状态,人脸授权仅展示家长端处理状态和跳转说明。 | 筛选消息、标记已读、删除消息、切换学员、管理设备、编辑资料、退出登录、查看协议 | 消息类型、业务跳转、头像、昵称、当前学员、绑定学员、设备列表、微信授权、推送授权、隐私协议 | 无消息、跳转对象失效、设备超限、资料保存失败、学员同步失败、授权失败、敏感操作留痕 | 人脸授权采集和撤回仍由家长端主责,学员端不承接家长授权操作。 建议 Figma Frame:APP-24_隐私与授权页;需补齐正常、空态、加载、无权限、处理中、成功和失败状态。 |
| macOS/Windows Tauri | 25 桌面端学习中心首页 | 学员 | Tauri 桌面端展示桌面导航、今日课程、学习任务、直播提醒、最近学习、设备状态、同步状态和重试计数 | Tauri 桌面端复用 H5/Web 学习中心能力,宽屏下采用左侧导航、中部播放器/学习内容、右侧任务和互动面板;顶部展示设备、同步和版本状态。 | 打开课程、观看直播、补看回放、同步进度、静默重试、双击全屏、方向键调节音量、Esc 退出全屏 | 桌面导航、设备状态、同步状态、重试计数、播放器、课程目录、互动答题、全屏状态、音量状态、版本号 | 设备超限、登录失效、同步失败、连续失败 3 次强提示、资源无权限、播放失败、直播中断、桌面端版本过低 | 学员桌面端不展示开播、屏幕共享、系统音频采集、本地录制等教师直播创作入口。 建议 Figma Frame:APP-25_桌面端学习中心首页;需补齐正常、空态、加载、无权限、处理中、成功和失败状态。 |
| macOS/Windows Tauri | 26 桌面端播放/直播适配页 | 学员 | 宽屏播放器、课程目录、直播聊天、互动答题、课件侧栏、学习进度、快捷键提示和全屏状态适配 | Tauri 桌面端复用 H5/Web 学习中心能力,宽屏下采用左侧导航、中部播放器/学习内容、右侧任务和互动面板;顶部展示设备、同步和版本状态。 | 打开课程、观看直播、补看回放、同步进度、静默重试、双击全屏、方向键调节音量、Esc 退出全屏 | 桌面导航、设备状态、同步状态、重试计数、播放器、课程目录、互动答题、全屏状态、音量状态、版本号 | 设备超限、登录失效、同步失败、连续失败 3 次强提示、资源无权限、播放失败、直播中断、桌面端版本过低 | 学员桌面端不展示开播、屏幕共享、系统音频采集、本地录制等教师直播创作入口。 建议 Figma Frame:APP-26_桌面端播放_直播适配页;需补齐正常、空态、加载、无权限、处理中、成功和失败状态。 |
| 学员端小程序/App/H5 | S01 账号未激活/绑定审核中状态 | 学员/非学员 | 覆盖未激活、审核中、绑定失败、重复绑定、可重试和转人工 | 移动端采用顶部标题/状态区、内容卡片流和底部主按钮;平板端需要分栏布局和横屏适配。 | 查看、提交、保存、取消、确认、联系客服、启动检查、学员用户名密码登录 | 课程名称、学习进度、作业状态、草稿时间、积分余额、兑换订单、直播状态、回放有效期 | 网络异常、权限不足、提交失败、状态已变化 | 需分别标注小程序、App、H5、平板和桌面壳的适配差异。 建议 Figma Frame:APP-s01_账号未激活_绑定审核中状态;需补齐正常、空态、加载、无权限、处理中、成功和失败状态。 |
| 学员端小程序/App/H5 | S02 权益不足/资源过期/合同到期状态 | 学员 | 覆盖无权限、资源过期、合同到期、课时耗尽、权益撤销和联系家长/校区入口 | 合同页采用左侧学员与课程信息,中部报价/协议/退款主流程,右侧展示优惠分摊、审批流、签署和监管回执。 | 优惠试算、生成报价、发起审批、生成合同、发起签署、收款、监管备案、作废重签 | 学员、课程组合、原合同、优惠规则、应收/应退、补差退差、签署状态、监管状态、课程名称、学习进度 | 优惠冲突、班级容量不足、补差未支付、签署失败、监管备案失败、权益重算失败 | 需覆盖多科联报、组合缴费、优惠互斥、补充协议、转班转课权益测算、退款冲销和监管回执。 建议 Figma Frame:APP-s02_权益不足_资源过期_合同到期状态;需补齐正常、空态、加载、无权限、处理中、成功和失败状态。 |
| 学员端小程序/App/H5/桌面端 | S03 直播互动答题/举手连麦弹窗/侧栏 | 学员 | 覆盖直播签到、互动答题、举手连麦申请、排队、教师邀请、连接中、连麦中控制、被静音和超时未答 | 直播页以播放器为主,移动端叠加互动抽屉,桌面端使用主舞台 + 右侧聊天/答题/连麦侧栏;连麦状态条需要常驻展示当前排队、邀请、上麦和静音状态。 | 预约直播、进入直播、直播签到、提交答题、申请连麦、取消排队、接受连麦、拒绝连麦 | 直播标题、开课时间、教师、观看权益、签到状态、互动题、举手状态、排队位次、邀请倒计时、麦克风状态 | 直播未开始、无观看权益、断流、连麦人数已满、邀请超时、麦克风未授权、教师已静音、供应商连接失败 | 学员端仅提交举手和连麦响应,教师端负责队列处理、邀请、静音、下麦和座席释放。 建议 Figma Frame:APP-s03_直播互动答题_举手连麦弹窗_侧栏;需补齐正常、空态、加载、无权限、处理中、成功和失败状态。 |
| 学员端小程序/App/H5 | S04 学习完成/获得积分弹窗 | 学员 | 覆盖任务完成、课程进度更新、获得积分、下一步推荐、继续学习、查看积分和去兑换 | 移动端采用顶部标题/状态区、内容卡片流和底部主按钮;平板端需要分栏布局和横屏适配。 | 查看、提交、保存、取消、确认、联系客服、启动检查、学员用户名密码登录 | 课程名称、学习进度、作业状态、草稿时间、积分余额、兑换订单、直播状态、回放有效期 | 网络异常、权限不足、提交失败、状态已变化 | 需分别标注小程序、App、H5、平板和桌面壳的适配差异。 建议 Figma Frame:APP-s04_学习完成_获得积分弹窗;需补齐正常、空态、加载、无权限、处理中、成功和失败状态。 |
| 学员端小程序/App/H5 | S05 兑换确认/兑换结果/核销码展示弹窗 | 学员 | 覆盖锁库中、锁库成功待确认、兑换成功、积分不足、库存不足、锁库失败、核销码放大和亮度增强 | 积分商城采用积分中心、礼品详情、兑换记录三层结构;兑换确认使用弹窗完成锁库、积分扣减确认和结果反馈,核销码展示需支持放大和临时提升屏幕亮度。 | 查看积分流水、立即兑换、锁定库存、确认兑换、取消兑换、查看核销码、放大核销码、刷新核销码 | 积分余额、积分任务、礼品 SKU、可用库存、所需积分、领取校区、兑换订单、核销码、有效期、售后状态 | 积分不足、库存不足、锁库失败、重复点击拦截、礼品下架、核销码过期、重复核销、库存释放失败 | 兑换先锁库,锁库成功后再确认兑换;核销成功后联动物料礼品出库。 建议 Figma Frame:APP-s05_兑换确认_兑换结果_核销码展示弹窗;需补齐正常、空态、加载、无权限、处理中、成功和失败状态。 |
| macOS/Windows Tauri | S06 桌面端同步失败/接口失败/无权限状态 | 学员 | 覆盖学习进度同步失败、30 秒静默重试、连续失败 1-2 次弱提示、连续失败 3 次以上强提示、接口异常和资源无权限 | Tauri 桌面端复用 H5/Web 学习中心能力,宽屏下采用左侧导航、中部播放器/学习内容、右侧任务和互动面板;顶部展示设备、同步和版本状态。 | 打开课程、观看直播、补看回放、同步进度、静默重试、双击全屏、方向键调节音量、Esc 退出全屏 | 桌面导航、设备状态、同步状态、重试计数、播放器、课程目录、互动答题、全屏状态、音量状态、版本号 | 设备超限、登录失效、同步失败、连续失败 3 次强提示、资源无权限、播放失败、直播中断、桌面端版本过低 | 学员桌面端不展示开播、屏幕共享、系统音频采集、本地录制等教师直播创作入口。 建议 Figma Frame:APP-s06_桌面端同步失败_接口失败_无权限状态;需补齐正常、空态、加载、无权限、处理中、成功和失败状态。 |
| 学员端小程序/App/H5 | S07 作品预览/播放弹窗 | 学员 | 覆盖手抄报大图预览、口语录音播放、打卡视频播放、教师点评、作品转码中、加载失败和资源过期 | 学习档案页使用进度、报告、作品、证书 Tab;作品预览以轻量弹窗展示图片大图、录音播放器、视频播放器、教师点评和分享动作。 | 筛选课程、查看趋势、预览作品、播放录音、播放视频、下载证书、分享作品、查看教师点评 | 课程进度、作业完成、测评趋势、直播观看、能力雷达、教师评价、作品类型、作品文件、荣誉证书、课程名称 | 暂无档案、暂无作品、报告生成中、作品转码中、作品加载失败、资源已过期、无权限 | 作品预览不新增主导航页面,作为学习档案内弹窗/轻量画板呈现。 建议 Figma Frame:APP-s07_作品预览_播放弹窗;需补齐正常、空态、加载、无权限、处理中、成功和失败状态。 |
| 学员端小程序/App/H5 | S08 当前上课学员选择弹窗 | 学员 | 覆盖同一手机号绑定多个学员、记住上次选择、当前学员权益过期、学员未激活、无绑定学员和重新同步 | 学员端账号页采用移动端轻量表单和状态引导:启动页先检查登录态、版本、网络和学员绑定;登录页提供学校发放账号登录与非学员手机号注册/登录两条路径;多学员选择使用底部抽屉。 | 检查登录态、学员用户名密码登录、手机号注册、手机号密码登录、手机号验证码登录、找回密码、选择当前上课学员、提交注销 | 学员用户名、学员密码、手机号、短信验证码、登录密码、协议勾选、绑定学员列表、当前学员、账号状态、注销确认 | 学员账号未激活、密码错误、验证码错误、协议未勾选、手机号已注册、多学员未选择、无绑定学员、账号注销申请中 | 学员用户名密码登录用于学校发放账号;非学员手机号注册后支持手机号密码/验证码登录;所有学习记录、作业、积分和直播签到必须按当前 studentId 隔离。 建议 Figma Frame:APP-s08_当前上课学员选择弹窗;需补齐正常、空态、加载、无权限、处理中、成功和失败状态。 |
| 学员端小程序/App/H5/桌面端 | 作业详情 | 学员 | 围绕草稿闭环完善作业详情的入口、字段、状态、异常提示、处理进度和验收反馈 | 作业页采用列表筛选 + 详情作答 + 结果订正三段结构;草稿作为显性筛选和独立状态,作答页顶部展示自动保存时间、截止倒计时和冲突提示。 | 筛选草稿、继续编辑草稿、保存草稿、上传附件、提交作业、删除草稿、恢复冲突、订正错题 | 作业标题、截止时间、提交状态、草稿状态、最近保存时间、autoSaveVersion、附件、教师评语、订正次数、补交状态 | 自动保存失败、附件上传失败、多端版本冲突、作业已截止、草稿已过期、重复提交、批改驳回 | 草稿 10 秒内自动保存;提交成功后草稿关闭;逻辑删除草稿需要写审计并保留恢复策略。 建议 Figma Frame:APP-作业详情;需补齐正常、空态、加载、无权限、处理中、成功和失败状态。 |
| 学员端小程序/App/H5/桌面端 | 草稿箱 | 学员 | 围绕草稿闭环完善草稿箱的入口、字段、状态、异常提示、处理进度和验收反馈 | 作业页采用列表筛选 + 详情作答 + 结果订正三段结构;草稿作为显性筛选和独立状态,作答页顶部展示自动保存时间、截止倒计时和冲突提示。 | 筛选草稿、继续编辑草稿、保存草稿、上传附件、提交作业、删除草稿、恢复冲突、订正错题 | 作业标题、截止时间、提交状态、草稿状态、最近保存时间、autoSaveVersion、附件、教师评语、订正次数、补交状态 | 自动保存失败、附件上传失败、多端版本冲突、作业已截止、草稿已过期、重复提交、批改驳回 | 草稿 10 秒内自动保存;提交成功后草稿关闭;逻辑删除草稿需要写审计并保留恢复策略。 建议 Figma Frame:APP-草稿箱;需补齐正常、空态、加载、无权限、处理中、成功和失败状态。 |
| 学员端小程序/App/H5/桌面端 | 草稿恢复弹窗 | 学员 | 围绕草稿闭环完善草稿恢复弹窗的入口、字段、状态、异常提示、处理进度和验收反馈 | 作业页采用列表筛选 + 详情作答 + 结果订正三段结构;草稿作为显性筛选和独立状态,作答页顶部展示自动保存时间、截止倒计时和冲突提示。 | 筛选草稿、继续编辑草稿、保存草稿、上传附件、提交作业、删除草稿、恢复冲突、订正错题 | 作业标题、截止时间、提交状态、草稿状态、最近保存时间、autoSaveVersion、附件、教师评语、订正次数、补交状态 | 自动保存失败、附件上传失败、多端版本冲突、作业已截止、草稿已过期、重复提交、批改驳回 | 草稿 10 秒内自动保存;提交成功后草稿关闭;逻辑删除草稿需要写审计并保留恢复策略。 建议 Figma Frame:APP-草稿恢复弹窗;需补齐正常、空态、加载、无权限、处理中、成功和失败状态。 |
| 学员端小程序/App/H5/桌面端 | 直播间 | 学员 | 围绕直播闭环完善直播间的入口、字段、状态、异常提示、处理进度和验收反馈 | 移动端采用顶部标题/状态区、内容卡片流和底部主按钮;平板端需要分栏布局和横屏适配。 | 查看、提交、保存、取消、确认、联系客服、启动检查、学员用户名密码登录 | 课程名称、学习进度、作业状态、草稿时间、积分余额、兑换订单、直播状态、回放有效期 | 网络异常、权限不足、提交失败、状态已变化 | 需分别标注小程序、App、H5、平板和桌面壳的适配差异。 建议 Figma Frame:APP-直播间;需补齐正常、空态、加载、无权限、处理中、成功和失败状态。 |
| 学员端小程序/App/H5/桌面端 | 回放列表 | 学员 | 围绕直播闭环完善回放列表的入口、字段、状态、异常提示、处理进度和验收反馈 | 移动端采用顶部标题/状态区、内容卡片流和底部主按钮;平板端需要分栏布局和横屏适配。 | 查看、提交、保存、取消、确认、联系客服、启动检查、学员用户名密码登录 | 课程名称、学习进度、作业状态、草稿时间、积分余额、兑换订单、直播状态、回放有效期 | 网络异常、权限不足、提交失败、状态已变化 | 需分别标注小程序、App、H5、平板和桌面壳的适配差异。 建议 Figma Frame:APP-回放列表;需补齐正常、空态、加载、无权限、处理中、成功和失败状态。 |
| 学员端小程序/App/H5/桌面端 | 积分商城 | 学员 | 围绕积分商城完善积分商城的入口、字段、状态、异常提示、处理进度和验收反馈 | 积分商城采用积分中心、礼品详情、兑换记录三层结构;兑换确认使用弹窗完成锁库、积分扣减确认和结果反馈,核销码展示需支持放大和临时提升屏幕亮度。 | 查看积分流水、立即兑换、锁定库存、确认兑换、取消兑换、查看核销码、放大核销码、刷新核销码 | 积分余额、积分任务、礼品 SKU、可用库存、所需积分、领取校区、兑换订单、核销码、有效期、售后状态 | 积分不足、库存不足、锁库失败、重复点击拦截、礼品下架、核销码过期、重复核销、库存释放失败 | 兑换先锁库,锁库成功后再确认兑换;核销成功后联动物料礼品出库。 建议 Figma Frame:APP-积分商城;需补齐正常、空态、加载、无权限、处理中、成功和失败状态。 |
| 学员端小程序/App/H5/桌面端 | 兑换详情 | 学员 | 围绕积分商城完善兑换详情的入口、字段、状态、异常提示、处理进度和验收反馈 | 积分商城采用积分中心、礼品详情、兑换记录三层结构;兑换确认使用弹窗完成锁库、积分扣减确认和结果反馈,核销码展示需支持放大和临时提升屏幕亮度。 | 查看积分流水、立即兑换、锁定库存、确认兑换、取消兑换、查看核销码、放大核销码、刷新核销码 | 积分余额、积分任务、礼品 SKU、可用库存、所需积分、领取校区、兑换订单、核销码、有效期、售后状态 | 积分不足、库存不足、锁库失败、重复点击拦截、礼品下架、核销码过期、重复核销、库存释放失败 | 兑换先锁库,锁库成功后再确认兑换;核销成功后联动物料礼品出库。 建议 Figma Frame:APP-兑换详情;需补齐正常、空态、加载、无权限、处理中、成功和失败状态。 |
| 学员端小程序/App/H5/桌面端 | 核销码 | 学员 | 围绕积分商城完善核销码的入口、字段、状态、异常提示、处理进度和验收反馈 | 积分商城采用积分中心、礼品详情、兑换记录三层结构;兑换确认使用弹窗完成锁库、积分扣减确认和结果反馈,核销码展示需支持放大和临时提升屏幕亮度。 | 查看积分流水、立即兑换、锁定库存、确认兑换、取消兑换、查看核销码、放大核销码、刷新核销码 | 积分余额、积分任务、礼品 SKU、可用库存、所需积分、领取校区、兑换订单、核销码、有效期、售后状态 | 积分不足、库存不足、锁库失败、重复点击拦截、礼品下架、核销码过期、重复核销、库存释放失败 | 兑换先锁库,锁库成功后再确认兑换;核销成功后联动物料礼品出库。 建议 Figma Frame:APP-核销码;需补齐正常、空态、加载、无权限、处理中、成功和失败状态。 |
| 学员端小程序/App/H5/桌面端 | 售后进度 | 学员 | 围绕积分商城完善售后进度的入口、字段、状态、异常提示、处理进度和验收反馈 | 积分商城采用积分中心、礼品详情、兑换记录三层结构;兑换确认使用弹窗完成锁库、积分扣减确认和结果反馈,核销码展示需支持放大和临时提升屏幕亮度。 | 查看积分流水、立即兑换、锁定库存、确认兑换、取消兑换、查看核销码、放大核销码、刷新核销码 | 积分余额、积分任务、礼品 SKU、可用库存、所需积分、领取校区、兑换订单、核销码、有效期、售后状态 | 积分不足、库存不足、锁库失败、重复点击拦截、礼品下架、核销码过期、重复核销、库存释放失败 | 兑换先锁库,锁库成功后再确认兑换;核销成功后联动物料礼品出库。 建议 Figma Frame:APP-售后进度;需补齐正常、空态、加载、无权限、处理中、成功和失败状态。 |
09 · 页面到接口的前后端闭环矩阵
把原型页面、后端接口、数据对象、状态和消息审批绑定到一起
设计原型时,每个关键页面必须能解释前端展示什么、后端提交什么、状态怎么变、异常怎么处理。| 原型页面 | 关键接口 | 关联对象 | 状态流 | 审批/权限触发 | 消息/待办触达 | 原型验收要求 |
|---|---|---|---|---|---|---|
| 01 启动页 | GET /api/v1/student/resources | StudentAccount | 启动检查 -> 未登录 -> 学员账号待激活 -> 手机号注册中 -> 登录中 -> 登录成功 -> 登录失败 -> 账号锁定 -> 注销申请中 | 活码外部资源审批:活码跳转外部链接或公开资源 | 课程权益与资源提醒 -> 学员 | 原型需展示入口、主按钮、禁用原因、提交中、成功、失败、无权限、空状态和异常转人工入口 |
| 02 登录页 | GET /api/v1/student/portfolio/items | StudentAccountRegistration | 有权益 -> 权益不足 -> 合同到期 -> 课时耗尽 -> 资源过期 -> 资源下架 -> 播放鉴权失败 | 活码外部资源审批:活码跳转外部链接或公开资源 | 课程权益与资源提醒 -> 学员 | 原型需展示入口、主按钮、禁用原因、提交中、成功、失败、无权限、空状态和异常转人工入口 |
| 03 非学员注册登录页 | GET /api/v1/student/resources | StudentSessionSelection | 无作品 -> 可预览 -> 转码中 -> 播放中 -> 加载失败 -> 资源过期 -> 无权限 | 活码外部资源审批:活码跳转外部链接或公开资源 | 课程权益与资源提醒 -> 学员 | 原型需展示入口、主按钮、禁用原因、提交中、成功、失败、无权限、空状态和异常转人工入口 |
| 04 找回密码页 | GET /api/v1/student/portfolio/items | StudentDeviceSession | 正常 -> 静默重试中 -> 弱提示 -> 强提示 -> 同步成功 -> 同步失败 -> 资源无权限 -> 版本过低 | 活码外部资源审批:活码跳转外部链接或公开资源 | 课程权益与资源提醒 -> 学员 | 原型需展示入口、主按钮、禁用原因、提交中、成功、失败、无权限、空状态和异常转人工入口 |
| 05 账号注销申请页 | GET /api/v1/student/resources | LearningProfile | 启动检查 -> 未登录 -> 学员账号待激活 -> 手机号注册中 -> 登录中 -> 登录成功 -> 登录失败 -> 账号锁定 -> 注销申请中 | 活码外部资源审批:活码跳转外部链接或公开资源 | 课程权益与资源提醒 -> 学员 | 原型需展示入口、主按钮、禁用原因、提交中、成功、失败、无权限、空状态和异常转人工入口 |
| 06 学习首页 | GET /api/v1/student/portfolio/items | LearningTask | 有权益 -> 权益不足 -> 合同到期 -> 课时耗尽 -> 资源过期 -> 资源下架 -> 播放鉴权失败 | 活码外部资源审批:活码跳转外部链接或公开资源 | 课程权益与资源提醒 -> 学员 | 原型需展示入口、主按钮、禁用原因、提交中、成功、失败、无权限、空状态和异常转人工入口 |
| 07 我的课程页 | GET /api/v1/student/resources | HomeworkDraft | 无作品 -> 可预览 -> 转码中 -> 播放中 -> 加载失败 -> 资源过期 -> 无权限 | 活码外部资源审批:活码跳转外部链接或公开资源 | 课程权益与资源提醒 -> 学员 | 原型需展示入口、主按钮、禁用原因、提交中、成功、失败、无权限、空状态和异常转人工入口 |
| 08 课程详情页 | GET /api/v1/student/portfolio/items | HomeworkSubmit | 正常 -> 静默重试中 -> 弱提示 -> 强提示 -> 同步成功 -> 同步失败 -> 资源无权限 -> 版本过低 | 活码外部资源审批:活码跳转外部链接或公开资源 | 课程权益与资源提醒 -> 学员 | 原型需展示入口、主按钮、禁用原因、提交中、成功、失败、无权限、空状态和异常转人工入口 |
| 09 资源/回放播放页 | GET /api/v1/student/resources | WrongQuestionPractice | 启动检查 -> 未登录 -> 学员账号待激活 -> 手机号注册中 -> 登录中 -> 登录成功 -> 登录失败 -> 账号锁定 -> 注销申请中 | 活码外部资源审批:活码跳转外部链接或公开资源 | 课程权益与资源提醒 -> 学员 | 原型需展示入口、主按钮、禁用原因、提交中、成功、失败、无权限、空状态和异常转人工入口 |
| 10 直播课表/预告页 | GET /api/v1/student/portfolio/items | StudentPortfolioItem | 有权益 -> 权益不足 -> 合同到期 -> 课时耗尽 -> 资源过期 -> 资源下架 -> 播放鉴权失败 | 活码外部资源审批:活码跳转外部链接或公开资源 | 课程权益与资源提醒 -> 学员 | 原型需展示入口、主按钮、禁用原因、提交中、成功、失败、无权限、空状态和异常转人工入口 |
| 11 直播课堂页 | GET /api/v1/student/resources | PointsAccount | 无作品 -> 可预览 -> 转码中 -> 播放中 -> 加载失败 -> 资源过期 -> 无权限 | 活码外部资源审批:活码跳转外部链接或公开资源 | 课程权益与资源提醒 -> 学员 | 原型需展示入口、主按钮、禁用原因、提交中、成功、失败、无权限、空状态和异常转人工入口 |
| 12 作业列表页 | GET /api/v1/student/portfolio/items | PointsLock | 正常 -> 静默重试中 -> 弱提示 -> 强提示 -> 同步成功 -> 同步失败 -> 资源无权限 -> 版本过低 | 活码外部资源审批:活码跳转外部链接或公开资源 | 课程权益与资源提醒 -> 学员 | 原型需展示入口、主按钮、禁用原因、提交中、成功、失败、无权限、空状态和异常转人工入口 |
10 · 原型、UI、研发、测试交付补充
把关键闭环补强为下一阶段可执行任务
本章节为正式 PRD 的交付要求,面向原型图、UI、开发、联调和测试分工。| 能力域 | 功能补充要求 | 原型交付要求 | UI 交互要求 | 研发实现要求 | 测试验收要求 |
|---|---|---|---|---|---|
| 草稿闭环 | 补齐草稿箱、自动保存、手动保存、多端冲突、删除恢复、提交后关闭草稿。 | 作业详情、草稿箱、草稿恢复弹窗 需要在原型中拆到列表、详情、表单、弹窗、空状态、失败态、无权限态和处理进度。 | UI 需清晰呈现状态标签、流程节点、主次按钮、危险操作确认、移动/平板/TV 适配和错误提示;PC 管理端遵循统一框架,仅输出信息架构和交互说明。 | 后端需提供接口幂等、权限校验、状态机、审计日志、消息/审批触发、异步补偿和跨模块数据一致性保障。 | 测试需覆盖主流程、异常流、权限流、重复提交、批量部分失败和数据一致性;草稿不丢失,提交后草稿状态与作业状态一致。 |
| 直播闭环 | 补齐排队序号、邀请倒计时、设备检测、拒绝/超时/失败提示和回放补看提醒。 | 直播间、连麦状态、回放列表 需要在原型中拆到列表、详情、表单、弹窗、空状态、失败态、无权限态和处理进度。 | UI 需清晰呈现状态标签、流程节点、主次按钮、危险操作确认、移动/平板/TV 适配和错误提示;PC 管理端遵循统一框架,仅输出信息架构和交互说明。 | 后端需提供接口幂等、权限校验、状态机、审计日志、消息/审批触发、异步补偿和跨模块数据一致性保障。 | 测试需覆盖主流程、异常流、权限流、重复提交、批量部分失败和数据一致性;学员每个直播状态都有明确提示和下一步动作。 |
| 积分商城 | 补齐兑换订单、核销码、取消、过期、售后、积分退回和库存释放。 | 积分商城、兑换详情、核销码、售后进度 需要在原型中拆到列表、详情、表单、弹窗、空状态、失败态、无权限态和处理进度。 | UI 需清晰呈现状态标签、流程节点、主次按钮、危险操作确认、移动/平板/TV 适配和错误提示;PC 管理端遵循统一框架,仅输出信息架构和交互说明。 | 后端需提供接口幂等、权限校验、状态机、审计日志、消息/审批触发、异步补偿和跨模块数据一致性保障。 | 测试需覆盖主流程、异常流、权限流、重复提交、批量部分失败和数据一致性;积分流水、库存流水和兑换状态一致。 |
11 · 数据对象与字段字典
明确页面、接口、数据库共同使用的数据语言
字段涉及敏感、人脸、财务、绩效时,原型需体现脱敏、授权和审计。核心对象
| 对象 | 说明 |
|---|---|
| StudentAccount | 学员端独立账号;落地表:stu_account |
| StudentAccountRegistration | 非学员手机号自主注册记录;落地表:stu_account_registration |
| StudentSessionSelection | 当前上课学员选择记录;落地表:stu_session_selection |
| StudentDeviceSession | 学员端设备登录会话;落地表:stu_device_session |
| LearningProfile | 学员学习进度档案;落地表:stu_learning_profile |
| LearningTask | 学员学习任务;落地表:stu_learning_task |
| HomeworkDraft | 学员作业草稿箱;落地表:edu_homework_draft |
| HomeworkSubmit | 学员作业提交;落地表:edu_homework_submit |
| WrongQuestionPractice | 错题复练与重组测试;落地表:stu_wrong_question_practice |
| StudentPortfolioItem | 学习档案作品集;落地表:stu_portfolio_item |
| PointsAccount | 学员积分账户;落地表:pts_account |
| PointsLock | 积分兑换锁库记录;落地表:pts_lock |
| PointsOrder | 积分商城兑换订单;落地表:pts_order |
| PointsWriteOffCode | 积分兑换线下核销码;落地表:pts_write_off_code |
| PointsRedemptionAfterSales | 积分兑换售后;落地表:pts_after_sales |
| DesktopSyncTask | 学员桌面端学习同步任务;落地表:stu_desktop_sync_task |
关联引用对象
| 对象 | 说明 |
|---|---|
| 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 |
| Student | 学员基础档案;引用来源:CRM / stu_student |
| Course/Product | 课程产品;引用来源:EDU / edu_course |
| Homework | 作业任务;引用来源:EDU / edu_homework |
| HomeworkReview | 作业批改与点评;引用来源:EDU / edu_homework_review |
| LiveRoom | 直播间;引用来源:LIVE / live_room |
| LiveSession/LiveAttendance | 直播观看、签到和时长;引用来源:LIVE / live_participant |
| LiveMicRequest | 举手上麦请求;引用来源:LIVE / live_mic_request |
| LiveMicSeat | 连麦座席管理;引用来源:LIVE / live_mic_seat |
| LiveRecording | 直播录制和回放文件;引用来源:LIVE / live_recording_file |
| LearningResource | 教研学习资源;引用来源:RES / res_learning_resource |
| Material/Inventory/Asset/Book | 物料、固定资产、图书、礼品 SKU;引用来源:MAT / mat_sku |
完整字段字典
| 对象 | 字段 | 类型 | 必填 | 规则 | 数据级别 |
|---|---|---|---|---|---|
| StudentAccount | id | BIGINT | 是 | 主键,雪花或号段生成,禁止复用 | 普通 |
| StudentAccount | tenant_id | BIGINT | 是 | 集团/租户隔离字段,所有查询必须带租户上下文 | 普通 |
| StudentAccount | org_id | BIGINT | 否 | 所属组织,集团级或公共配置为空 | 普通 |
| StudentAccount | campus_id | BIGINT | 否 | 所属校区,跨校区或总部级数据为空 | 普通 |
| StudentAccount | created_by | BIGINT | 是 | 创建人账号 ID | 普通 |
| StudentAccount | created_at | DATETIME | 是 | 创建时间 | 普通 |
| StudentAccount | updated_by | BIGINT | 否 | 最后更新人账号 ID | 普通 |
| StudentAccount | updated_at | DATETIME | 否 | 最后更新时间 | 普通 |
| StudentAccount | is_deleted | TINYINT | 是 | 是否已删除,0 未删除,1 已删除 | 普通 |
| StudentAccount | deleted_at | DATETIME | 否 | 删除时间,未删除为空 | 普通 |
| StudentAccount | deleted_by | BIGINT | 否 | 删除人账号 ID,未删除为空 | 普通 |
| StudentAccount | version | INT | 是 | 乐观锁版本号,写操作必须校验 | 普通 |
| StudentAccount | account_no | VARCHAR(64) | 是 | 学员账号编号,唯一 | 普通 |
| StudentAccount | login_name | VARCHAR(64) | 是 | 学校下发的学员用户名或手机号登录名 | 普通 |
| StudentAccount | student_id | BIGINT | 否 | 默认绑定学员 ID,多学员账号可为空 | 普通 |
| StudentAccount | account_type | VARCHAR(32) | 是 | 学校下发/手机号自主注册/家长代开通 | 普通 |
| StudentAccount | mobile | VARCHAR(32) | 否 | 手机号,敏感 | 敏感 |
| StudentAccount | wechat_openid | VARCHAR(128) | 否 | 微信 OpenID,敏感 | 敏感 |
| StudentAccount | password_hash | VARCHAR(255) | 否 | 密码哈希,禁止明文存储 | 敏感 |
| StudentAccount | login_status | VARCHAR(32) | 是 | 待激活/正常/锁定/停用 | 普通 |
| StudentAccount | activated_at | DATETIME | 否 | 账号激活时间 | 普通 |
| StudentAccount | cancel_request_status | VARCHAR(32) | 否 | 注销申请状态:无/申请中/已通过/已驳回 | 普通 |
| StudentAccount | last_login_at | DATETIME | 否 | 最近登录时间 | 普通 |
| StudentAccountRegistration | id | BIGINT | 是 | 主键,雪花或号段生成,禁止复用 | 普通 |
| StudentAccountRegistration | tenant_id | BIGINT | 是 | 集团/租户隔离字段,所有查询必须带租户上下文 | 普通 |
| StudentAccountRegistration | org_id | BIGINT | 否 | 所属组织,集团级或公共配置为空 | 普通 |
| StudentAccountRegistration | campus_id | BIGINT | 否 | 意向校区 | 普通 |
| StudentAccountRegistration | created_by | BIGINT | 是 | 创建人账号 ID | 普通 |
| StudentAccountRegistration | created_at | DATETIME | 是 | 创建时间 | 普通 |
| StudentAccountRegistration | updated_by | BIGINT | 否 | 最后更新人账号 ID | 普通 |
| StudentAccountRegistration | updated_at | DATETIME | 否 | 最后更新时间 | 普通 |
| StudentAccountRegistration | is_deleted | TINYINT | 是 | 是否已删除,0 未删除,1 已删除 | 普通 |
| StudentAccountRegistration | deleted_at | DATETIME | 否 | 删除时间,未删除为空 | 普通 |
| StudentAccountRegistration | deleted_by | BIGINT | 否 | 删除人账号 ID,未删除为空 | 普通 |
| StudentAccountRegistration | version | INT | 是 | 乐观锁版本号,写操作必须校验 | 普通 |
| StudentAccountRegistration | register_no | VARCHAR(64) | 是 | 注册单编号,唯一 | 普通 |
| StudentAccountRegistration | mobile | VARCHAR(32) | 是 | 注册手机号,敏感 | 敏感 |
| StudentAccountRegistration | sms_verify_id | VARCHAR(64) | 是 | 短信验证码校验流水,不存储明文验证码 | 普通 |
| StudentAccountRegistration | student_name | VARCHAR(64) | 否 | 注册时填写的学员姓名,敏感 | 敏感 |
| StudentAccountRegistration | password_set_status | VARCHAR(32) | 是 | 未设置/已设置/需重置 | 普通 |
| StudentAccountRegistration | agreement_version | VARCHAR(32) | 是 | 已勾选协议版本 | 普通 |
| StudentAccountRegistration | register_status | VARCHAR(32) | 是 | 待提交/审核中/已开通/已驳回/已取消 | 普通 |
| StudentAccountRegistration | linked_account_id | BIGINT | 否 | 开通后的学员账号 ID | 普通 |
| StudentSessionSelection | id | BIGINT | 是 | 主键,雪花或号段生成,禁止复用 | 普通 |
| StudentSessionSelection | tenant_id | BIGINT | 是 | 集团/租户隔离字段,所有查询必须带租户上下文 | 普通 |
| StudentSessionSelection | org_id | BIGINT | 否 | 所属组织,集团级或公共配置为空 | 普通 |
| StudentSessionSelection | campus_id | BIGINT | 否 | 所属校区,跨校区或总部级数据为空 | 普通 |
| StudentSessionSelection | created_by | BIGINT | 是 | 创建人账号 ID | 普通 |
| StudentSessionSelection | created_at | DATETIME | 是 | 创建时间 | 普通 |
| StudentSessionSelection | updated_by | BIGINT | 否 | 最后更新人账号 ID | 普通 |
| StudentSessionSelection | updated_at | DATETIME | 否 | 最后更新时间 | 普通 |
| StudentSessionSelection | is_deleted | TINYINT | 是 | 是否已删除,0 未删除,1 已删除 | 普通 |
| StudentSessionSelection | deleted_at | DATETIME | 否 | 删除时间,未删除为空 | 普通 |
| StudentSessionSelection | deleted_by | BIGINT | 否 | 删除人账号 ID,未删除为空 | 普通 |
| StudentSessionSelection | version | INT | 是 | 乐观锁版本号,写操作必须校验 | 普通 |
| StudentSessionSelection | account_id | BIGINT | 是 | 学员端账号 ID | 普通 |
| StudentSessionSelection | selected_student_id | BIGINT | 是 | 当前上课学员 ID | 普通 |
| StudentSessionSelection | source_channel | VARCHAR(32) | 是 | 小程序/App/H5/Tauri | 普通 |
| StudentSessionSelection | remember_last | TINYINT | 是 | 是否记住本次选择 | 普通 |
| StudentSessionSelection | selected_at | DATETIME | 是 | 选择时间 | 普通 |
| StudentSessionSelection | selection_status | VARCHAR(32) | 是 | 有效/权益过期/已切换/同步失败 | 普通 |
| StudentSessionSelection | last_sync_result | VARCHAR(512) | 否 | 最近一次端侧同步结果 | 普通 |
| StudentDeviceSession | id | BIGINT | 是 | 主键,雪花或号段生成,禁止复用 | 普通 |
| StudentDeviceSession | tenant_id | BIGINT | 是 | 集团/租户隔离字段,所有查询必须带租户上下文 | 普通 |
| StudentDeviceSession | org_id | BIGINT | 否 | 所属组织,集团级或公共配置为空 | 普通 |
| StudentDeviceSession | campus_id | BIGINT | 否 | 所属校区,跨校区或总部级数据为空 | 普通 |
| StudentDeviceSession | created_by | BIGINT | 是 | 创建人账号 ID | 普通 |
| StudentDeviceSession | created_at | DATETIME | 是 | 创建时间 | 普通 |
| StudentDeviceSession | updated_by | BIGINT | 否 | 最后更新人账号 ID | 普通 |
| StudentDeviceSession | updated_at | DATETIME | 否 | 最后更新时间 | 普通 |
| StudentDeviceSession | is_deleted | TINYINT | 是 | 是否已删除,0 未删除,1 已删除 | 普通 |
| StudentDeviceSession | deleted_at | DATETIME | 否 | 删除时间,未删除为空 | 普通 |
| StudentDeviceSession | deleted_by | BIGINT | 否 | 删除人账号 ID,未删除为空 | 普通 |
| StudentDeviceSession | version | INT | 是 | 乐观锁版本号,写操作必须校验 | 普通 |
| StudentDeviceSession | account_id | BIGINT | 是 | 学员端账号 ID | 普通 |
| StudentDeviceSession | student_id | BIGINT | 否 | 当前选择学员 ID | 普通 |
| StudentDeviceSession | device_id | VARCHAR(128) | 是 | 端侧设备 ID | 普通 |
| StudentDeviceSession | client_type | VARCHAR(32) | 是 | 微信小程序/iOS/iPadOS/Android/安卓平板/H5/Tauri-macOS/Tauri-Windows | 普通 |
| StudentDeviceSession | app_version | VARCHAR(32) | 否 | 客户端版本号 | 普通 |
| StudentDeviceSession | login_at | DATETIME | 是 | 登录时间 | 普通 |
| StudentDeviceSession | last_active_at | DATETIME | 否 | 最近活跃时间 | 普通 |
| StudentDeviceSession | session_status | VARCHAR(32) | 是 | 有效/过期/踢下线/设备超限 | 普通 |
| LearningProfile | id | BIGINT | 是 | 主键,雪花或号段生成,禁止复用 | 普通 |
| LearningProfile | tenant_id | BIGINT | 是 | 集团/租户隔离字段,所有查询必须带租户上下文 | 普通 |
| LearningProfile | org_id | BIGINT | 否 | 所属组织,集团级或公共配置为空 | 普通 |
| LearningProfile | campus_id | BIGINT | 否 | 所属校区,跨校区或总部级数据为空 | 普通 |
| LearningProfile | created_by | BIGINT | 是 | 创建人账号 ID | 普通 |
| LearningProfile | created_at | DATETIME | 是 | 创建时间 | 普通 |
| LearningProfile | updated_by | BIGINT | 否 | 最后更新人账号 ID | 普通 |
| LearningProfile | updated_at | DATETIME | 否 | 最后更新时间 | 普通 |
| LearningProfile | is_deleted | TINYINT | 是 | 是否已删除,0 未删除,1 已删除 | 普通 |
| LearningProfile | deleted_at | DATETIME | 否 | 删除时间,未删除为空 | 普通 |
| LearningProfile | deleted_by | BIGINT | 否 | 删除人账号 ID,未删除为空 | 普通 |
| LearningProfile | version | INT | 是 | 乐观锁版本号,写操作必须校验 | 普通 |
| LearningProfile | student_id | BIGINT | 是 | 学员 ID | 普通 |
| LearningProfile | course_id | BIGINT | 是 | 课程 ID | 普通 |
| LearningProfile | progress_percent | DECIMAL(6,2) | 是 | 学习进度百分比 | 普通 |
| LearningProfile | ability_tags | JSON | 否 | 能力标签 | 普通 |
| LearningProfile | last_active_at | DATETIME | 否 | 最近学习时间 | 普通 |
| LearningProfile | profile_snapshot | JSON | 否 | 学习画像快照 | 普通 |
| LearningTask | id | BIGINT | 是 | 主键,雪花或号段生成,禁止复用 | 普通 |
| LearningTask | tenant_id | BIGINT | 是 | 集团/租户隔离字段,所有查询必须带租户上下文 | 普通 |
| LearningTask | org_id | BIGINT | 否 | 所属组织,集团级或公共配置为空 | 普通 |
| LearningTask | campus_id | BIGINT | 否 | 所属校区,跨校区或总部级数据为空 | 普通 |
| LearningTask | created_by | BIGINT | 是 | 创建人账号 ID | 普通 |
| LearningTask | created_at | DATETIME | 是 | 创建时间 | 普通 |
| LearningTask | updated_by | BIGINT | 否 | 最后更新人账号 ID | 普通 |
| LearningTask | updated_at | DATETIME | 否 | 最后更新时间 | 普通 |
| LearningTask | is_deleted | TINYINT | 是 | 是否已删除,0 未删除,1 已删除 | 普通 |
| LearningTask | deleted_at | DATETIME | 否 | 删除时间,未删除为空 | 普通 |
| LearningTask | deleted_by | BIGINT | 否 | 删除人账号 ID,未删除为空 | 普通 |
| LearningTask | version | INT | 是 | 乐观锁版本号,写操作必须校验 | 普通 |
| LearningTask | task_no | VARCHAR(64) | 是 | 任务编号,唯一 | 普通 |
| LearningTask | student_id | BIGINT | 是 | 学员 ID | 普通 |
| LearningTask | task_type | VARCHAR(32) | 是 | 课程/作业/测评/直播/回放 | 普通 |
| LearningTask | biz_id | BIGINT | 是 | 业务 ID | 普通 |
| LearningTask | deadline_at | DATETIME | 否 | 截止时间 | 普通 |
| LearningTask | complete_status | VARCHAR(32) | 是 | 未开始/进行中/已完成/逾期 | 普通 |
| HomeworkDraft | id | BIGINT | 是 | 主键,雪花或号段生成,禁止复用 | 普通 |
| HomeworkDraft | tenant_id | BIGINT | 是 | 集团/租户隔离字段,所有查询必须带租户上下文 | 普通 |
| HomeworkDraft | org_id | BIGINT | 否 | 所属组织,集团级或公共配置为空 | 普通 |
| HomeworkDraft | campus_id | BIGINT | 否 | 所属校区,跨校区或总部级数据为空 | 普通 |
| HomeworkDraft | created_by | BIGINT | 是 | 创建人账号 ID | 普通 |
| HomeworkDraft | created_at | DATETIME | 是 | 创建时间 | 普通 |
| HomeworkDraft | updated_by | BIGINT | 否 | 最后更新人账号 ID | 普通 |
| HomeworkDraft | updated_at | DATETIME | 否 | 最后更新时间 | 普通 |
| HomeworkDraft | is_deleted | TINYINT | 是 | 是否已删除,0 未删除,1 已删除 | 普通 |
| HomeworkDraft | deleted_at | DATETIME | 否 | 删除时间,未删除为空 | 普通 |
| HomeworkDraft | deleted_by | BIGINT | 否 | 删除人账号 ID,未删除为空 | 普通 |
| HomeworkDraft | version | INT | 是 | 乐观锁版本号,写操作必须校验 | 普通 |
| HomeworkDraft | draft_no | VARCHAR(64) | 是 | 草稿编号,唯一 | 普通 |
| HomeworkDraft | homework_id | BIGINT | 是 | 作业 ID | 普通 |
| HomeworkDraft | student_id | BIGINT | 是 | 学员 ID | 普通 |
| HomeworkDraft | draft_status | VARCHAR(32) | 是 | 草稿中/已提交/已删除/已过期/冲突待处理 | 普通 |
| HomeworkDraft | answer_snapshot | JSON | 是 | 答案草稿 | 普通 |
| HomeworkDraft | attachment_temp_ids | JSON | 否 | 临时附件 | 普通 |
| HomeworkDraft | auto_save_version | INT | 是 | 自动保存版本 | 普通 |
| HomeworkDraft | last_saved_at | DATETIME | 是 | 最近保存时间 | 普通 |
| HomeworkDraft | expire_at | DATETIME | 否 | 草稿过期时间 | 普通 |
| HomeworkDraft | client_type | VARCHAR(32) | 否 | 最近保存端 | 普通 |
| HomeworkDraft | delete_reason | VARCHAR(255) | 否 | 删除或过期原因 | 普通 |
| HomeworkDraft | conflict_status | VARCHAR(32) | 是 | 无冲突/有冲突/已合并 | 普通 |
| HomeworkSubmit | id | BIGINT | 是 | 主键,雪花或号段生成,禁止复用 | 普通 |
| HomeworkSubmit | tenant_id | BIGINT | 是 | 集团/租户隔离字段,所有查询必须带租户上下文 | 普通 |
| HomeworkSubmit | org_id | BIGINT | 否 | 所属组织,集团级或公共配置为空 | 普通 |
| HomeworkSubmit | campus_id | BIGINT | 否 | 所属校区,跨校区或总部级数据为空 | 普通 |
| HomeworkSubmit | created_by | BIGINT | 是 | 创建人账号 ID | 普通 |
| HomeworkSubmit | created_at | DATETIME | 是 | 创建时间 | 普通 |
| HomeworkSubmit | updated_by | BIGINT | 否 | 最后更新人账号 ID | 普通 |
| HomeworkSubmit | updated_at | DATETIME | 否 | 最后更新时间 | 普通 |
| HomeworkSubmit | is_deleted | TINYINT | 是 | 是否已删除,0 未删除,1 已删除 | 普通 |
| HomeworkSubmit | deleted_at | DATETIME | 否 | 删除时间,未删除为空 | 普通 |
| HomeworkSubmit | deleted_by | BIGINT | 否 | 删除人账号 ID,未删除为空 | 普通 |
| HomeworkSubmit | version | INT | 是 | 乐观锁版本号,写操作必须校验 | 普通 |
| HomeworkSubmit | submit_no | VARCHAR(64) | 是 | 提交编号,唯一 | 普通 |
| HomeworkSubmit | homework_id | BIGINT | 是 | 作业 ID | 普通 |
| HomeworkSubmit | student_id | BIGINT | 是 | 学员 ID | 普通 |
| HomeworkSubmit | answer_payload | JSON | 是 | 最终答案 | 普通 |
| HomeworkSubmit | submit_status | VARCHAR(32) | 是 | 待提交/已提交/已批改/需订正 | 普通 |
| HomeworkSubmit | submitted_at | DATETIME | 否 | 提交时间 | 普通 |
| WrongQuestionPractice | id | BIGINT | 是 | 主键,雪花或号段生成,禁止复用 | 普通 |
| WrongQuestionPractice | tenant_id | BIGINT | 是 | 集团/租户隔离字段,所有查询必须带租户上下文 | 普通 |
| WrongQuestionPractice | org_id | BIGINT | 否 | 所属组织,集团级或公共配置为空 | 普通 |
| WrongQuestionPractice | campus_id | BIGINT | 否 | 所属校区,跨校区或总部级数据为空 | 普通 |
| WrongQuestionPractice | created_by | BIGINT | 是 | 创建人账号 ID | 普通 |
| WrongQuestionPractice | created_at | DATETIME | 是 | 创建时间 | 普通 |
| WrongQuestionPractice | updated_by | BIGINT | 否 | 最后更新人账号 ID | 普通 |
| WrongQuestionPractice | updated_at | DATETIME | 否 | 最后更新时间 | 普通 |
| WrongQuestionPractice | is_deleted | TINYINT | 是 | 是否已删除,0 未删除,1 已删除 | 普通 |
| WrongQuestionPractice | deleted_at | DATETIME | 否 | 删除时间,未删除为空 | 普通 |
| WrongQuestionPractice | deleted_by | BIGINT | 否 | 删除人账号 ID,未删除为空 | 普通 |
| WrongQuestionPractice | version | INT | 是 | 乐观锁版本号,写操作必须校验 | 普通 |
| WrongQuestionPractice | practice_no | VARCHAR(64) | 是 | 复练任务编号,唯一 | 普通 |
| WrongQuestionPractice | student_id | BIGINT | 是 | 学员 ID | 普通 |
| WrongQuestionPractice | course_id | BIGINT | 否 | 课程 ID | 普通 |
| WrongQuestionPractice | source_question_ids | JSON | 是 | 来源错题 ID 列表 | 普通 |
| WrongQuestionPractice | practice_mode | VARCHAR(32) | 是 | 一键 5 题复练/错题重组测试/知识点专项 | 普通 |
| WrongQuestionPractice | question_count | INT | 是 | 题目数量 | 普通 |
| WrongQuestionPractice | practice_status | VARCHAR(32) | 是 | 待练习/进行中/已完成/生成失败 | 普通 |
| WrongQuestionPractice | result_snapshot | JSON | 否 | 练习结果快照 | 普通 |
| StudentPortfolioItem | id | BIGINT | 是 | 主键,雪花或号段生成,禁止复用 | 普通 |
| StudentPortfolioItem | tenant_id | BIGINT | 是 | 集团/租户隔离字段,所有查询必须带租户上下文 | 普通 |
| StudentPortfolioItem | org_id | BIGINT | 否 | 所属组织,集团级或公共配置为空 | 普通 |
| StudentPortfolioItem | campus_id | BIGINT | 否 | 所属校区,跨校区或总部级数据为空 | 普通 |
| StudentPortfolioItem | created_by | BIGINT | 是 | 创建人账号 ID | 普通 |
| StudentPortfolioItem | created_at | DATETIME | 是 | 创建时间 | 普通 |
| StudentPortfolioItem | updated_by | BIGINT | 否 | 最后更新人账号 ID | 普通 |
| StudentPortfolioItem | updated_at | DATETIME | 否 | 最后更新时间 | 普通 |
| StudentPortfolioItem | is_deleted | TINYINT | 是 | 是否已删除,0 未删除,1 已删除 | 普通 |
| StudentPortfolioItem | deleted_at | DATETIME | 否 | 删除时间,未删除为空 | 普通 |
| StudentPortfolioItem | deleted_by | BIGINT | 否 | 删除人账号 ID,未删除为空 | 普通 |
| StudentPortfolioItem | version | INT | 是 | 乐观锁版本号,写操作必须校验 | 普通 |
| StudentPortfolioItem | student_id | BIGINT | 是 | 学员 ID | 普通 |
| StudentPortfolioItem | course_id | BIGINT | 否 | 课程 ID | 普通 |
| StudentPortfolioItem | item_type | VARCHAR(32) | 是 | 图片/音频/视频/作业/测评报告/课堂作品 | 普通 |
| StudentPortfolioItem | title | VARCHAR(128) | 是 | 作品标题 | 普通 |
| StudentPortfolioItem | file_id | BIGINT | 否 | 文件中心文件 ID | 普通 |
| StudentPortfolioItem | media_type | VARCHAR(32) | 否 | 图片/音频/视频/PDF/链接 | 普通 |
| StudentPortfolioItem | transcode_status | VARCHAR(32) | 否 | 无需转码/转码中/成功/失败 | 普通 |
| StudentPortfolioItem | teacher_comment_id | BIGINT | 否 | 关联教师点评 ID | 普通 |
| StudentPortfolioItem | share_status | VARCHAR(32) | 是 | 不可分享/可分享/已分享/分享失效 | 普通 |
| PointsAccount | id | BIGINT | 是 | 主键,雪花或号段生成,禁止复用 | 普通 |
| PointsAccount | tenant_id | BIGINT | 是 | 集团/租户隔离字段,所有查询必须带租户上下文 | 普通 |
| PointsAccount | org_id | BIGINT | 否 | 所属组织,集团级或公共配置为空 | 普通 |
| PointsAccount | campus_id | BIGINT | 否 | 所属校区,跨校区或总部级数据为空 | 普通 |
| PointsAccount | created_by | BIGINT | 是 | 创建人账号 ID | 普通 |
| PointsAccount | created_at | DATETIME | 是 | 创建时间 | 普通 |
| PointsAccount | updated_by | BIGINT | 否 | 最后更新人账号 ID | 普通 |
| PointsAccount | updated_at | DATETIME | 否 | 最后更新时间 | 普通 |
| PointsAccount | is_deleted | TINYINT | 是 | 是否已删除,0 未删除,1 已删除 | 普通 |
| PointsAccount | deleted_at | DATETIME | 否 | 删除时间,未删除为空 | 普通 |
| PointsAccount | deleted_by | BIGINT | 否 | 删除人账号 ID,未删除为空 | 普通 |
| PointsAccount | version | INT | 是 | 乐观锁版本号,写操作必须校验 | 普通 |
| PointsAccount | student_id | BIGINT | 是 | 学员 ID | 普通 |
| PointsAccount | available_points | INT | 是 | 可用积分 | 普通 |
| PointsAccount | frozen_points | INT | 是 | 冻结积分 | 普通 |
| PointsAccount | total_earned_points | INT | 是 | 累计获得积分 | 普通 |
| PointsAccount | total_used_points | INT | 是 | 累计消耗积分 | 普通 |
| PointsLock | id | BIGINT | 是 | 主键,雪花或号段生成,禁止复用 | 普通 |
| PointsLock | tenant_id | BIGINT | 是 | 集团/租户隔离字段,所有查询必须带租户上下文 | 普通 |
| PointsLock | org_id | BIGINT | 否 | 所属组织,集团级或公共配置为空 | 普通 |
| PointsLock | campus_id | BIGINT | 否 | 所属校区,跨校区或总部级数据为空 | 普通 |
| PointsLock | created_by | BIGINT | 是 | 创建人账号 ID | 普通 |
| PointsLock | created_at | DATETIME | 是 | 创建时间 | 普通 |
| PointsLock | updated_by | BIGINT | 否 | 最后更新人账号 ID | 普通 |
| PointsLock | updated_at | DATETIME | 否 | 最后更新时间 | 普通 |
| PointsLock | is_deleted | TINYINT | 是 | 是否已删除,0 未删除,1 已删除 | 普通 |
| PointsLock | deleted_at | DATETIME | 否 | 删除时间,未删除为空 | 普通 |
| PointsLock | deleted_by | BIGINT | 否 | 删除人账号 ID,未删除为空 | 普通 |
| PointsLock | version | INT | 是 | 乐观锁版本号,写操作必须校验 | 普通 |
| PointsLock | lock_no | VARCHAR(64) | 是 | 锁库编号,唯一 | 普通 |
| PointsLock | student_id | BIGINT | 是 | 学员 ID | 普通 |
| PointsLock | gift_sku_id | BIGINT | 是 | 礼品 SKU ID,关联物料库存 | 普通 |
| PointsLock | quantity | INT | 是 | 锁定数量 | 普通 |
| PointsLock | points_amount | INT | 是 | 锁定积分 | 普通 |
| PointsLock | lock_status | VARCHAR(32) | 是 | 锁定中/已确认/已释放/已过期 | 普通 |
| PointsLock | expire_at | DATETIME | 是 | 锁库过期时间 | 普通 |
| PointsOrder | id | BIGINT | 是 | 主键,雪花或号段生成,禁止复用 | 普通 |
| PointsOrder | tenant_id | BIGINT | 是 | 集团/租户隔离字段,所有查询必须带租户上下文 | 普通 |
| PointsOrder | org_id | BIGINT | 否 | 所属组织,集团级或公共配置为空 | 普通 |
| PointsOrder | campus_id | BIGINT | 否 | 所属校区,跨校区或总部级数据为空 | 普通 |
| PointsOrder | created_by | BIGINT | 是 | 创建人账号 ID | 普通 |
| PointsOrder | created_at | DATETIME | 是 | 创建时间 | 普通 |
| PointsOrder | updated_by | BIGINT | 否 | 最后更新人账号 ID | 普通 |
| PointsOrder | updated_at | DATETIME | 否 | 最后更新时间 | 普通 |
| PointsOrder | is_deleted | TINYINT | 是 | 是否已删除,0 未删除,1 已删除 | 普通 |
| PointsOrder | deleted_at | DATETIME | 否 | 删除时间,未删除为空 | 普通 |
| PointsOrder | deleted_by | BIGINT | 否 | 删除人账号 ID,未删除为空 | 普通 |
| PointsOrder | version | INT | 是 | 乐观锁版本号,写操作必须校验 | 普通 |
| PointsOrder | order_no | VARCHAR(64) | 是 | 积分订单编号,唯一 | 普通 |
| PointsOrder | student_id | BIGINT | 是 | 学员 ID | 普通 |
| PointsOrder | gift_sku_id | BIGINT | 是 | 礼品 SKU ID,关联物料 | 普通 |
| PointsOrder | lock_id | BIGINT | 否 | 积分锁库记录 ID | 普通 |
| PointsOrder | points_amount | INT | 是 | 消耗积分 | 普通 |
| PointsOrder | write_off_code_id | BIGINT | 否 | 核销码 ID | 普通 |
| PointsOrder | order_status | VARCHAR(32) | 是 | 待领取/已核销/已取消/售后中 | 普通 |
| PointsWriteOffCode | id | BIGINT | 是 | 主键,雪花或号段生成,禁止复用 | 普通 |
| PointsWriteOffCode | tenant_id | BIGINT | 是 | 集团/租户隔离字段,所有查询必须带租户上下文 | 普通 |
| PointsWriteOffCode | org_id | BIGINT | 否 | 所属组织,集团级或公共配置为空 | 普通 |
| PointsWriteOffCode | campus_id | BIGINT | 否 | 所属校区,跨校区或总部级数据为空 | 普通 |
| PointsWriteOffCode | created_by | BIGINT | 是 | 创建人账号 ID | 普通 |
| PointsWriteOffCode | created_at | DATETIME | 是 | 创建时间 | 普通 |
| PointsWriteOffCode | updated_by | BIGINT | 否 | 最后更新人账号 ID | 普通 |
| PointsWriteOffCode | updated_at | DATETIME | 否 | 最后更新时间 | 普通 |
| PointsWriteOffCode | is_deleted | TINYINT | 是 | 是否已删除,0 未删除,1 已删除 | 普通 |
| PointsWriteOffCode | deleted_at | DATETIME | 否 | 删除时间,未删除为空 | 普通 |
| PointsWriteOffCode | deleted_by | BIGINT | 否 | 删除人账号 ID,未删除为空 | 普通 |
| PointsWriteOffCode | version | INT | 是 | 乐观锁版本号,写操作必须校验 | 普通 |
| PointsWriteOffCode | points_order_id | BIGINT | 是 | 积分兑换订单 ID | 普通 |
| PointsWriteOffCode | write_off_code | VARCHAR(64) | 是 | 核销码,唯一 | 普通 |
| PointsWriteOffCode | code_type | VARCHAR(32) | 是 | 二维码/条形码/数字码 | 普通 |
| PointsWriteOffCode | expire_at | DATETIME | 是 | 核销码有效期 | 普通 |
| PointsWriteOffCode | refresh_count | INT | 是 | 刷新次数 | 普通 |
| PointsWriteOffCode | write_off_status | VARCHAR(32) | 是 | 待核销/已核销/已过期/已作废 | 普通 |
| PointsWriteOffCode | brightness_hint | TINYINT | 是 | 端侧是否建议自动调高亮度 | 普通 |
| PointsRedemptionAfterSales | id | BIGINT | 是 | 主键,雪花或号段生成,禁止复用 | 普通 |
| PointsRedemptionAfterSales | tenant_id | BIGINT | 是 | 集团/租户隔离字段,所有查询必须带租户上下文 | 普通 |
| PointsRedemptionAfterSales | org_id | BIGINT | 否 | 所属组织,集团级或公共配置为空 | 普通 |
| PointsRedemptionAfterSales | campus_id | BIGINT | 否 | 所属校区,跨校区或总部级数据为空 | 普通 |
| PointsRedemptionAfterSales | created_by | BIGINT | 是 | 创建人账号 ID | 普通 |
| PointsRedemptionAfterSales | created_at | DATETIME | 是 | 创建时间 | 普通 |
| PointsRedemptionAfterSales | updated_by | BIGINT | 否 | 最后更新人账号 ID | 普通 |
| PointsRedemptionAfterSales | updated_at | DATETIME | 否 | 最后更新时间 | 普通 |
| PointsRedemptionAfterSales | is_deleted | TINYINT | 是 | 是否已删除,0 未删除,1 已删除 | 普通 |
| PointsRedemptionAfterSales | deleted_at | DATETIME | 否 | 删除时间,未删除为空 | 普通 |
| PointsRedemptionAfterSales | deleted_by | BIGINT | 否 | 删除人账号 ID,未删除为空 | 普通 |
| PointsRedemptionAfterSales | version | INT | 是 | 乐观锁版本号,写操作必须校验 | 普通 |
| PointsRedemptionAfterSales | after_sales_no | VARCHAR(64) | 是 | 售后编号,唯一 | 普通 |
| PointsRedemptionAfterSales | points_order_id | BIGINT | 是 | 积分订单 ID | 普通 |
| PointsRedemptionAfterSales | request_type | VARCHAR(32) | 是 | 取消/退积分/补发/异常核销 | 普通 |
| PointsRedemptionAfterSales | request_reason | VARCHAR(512) | 是 | 申请原因 | 普通 |
| PointsRedemptionAfterSales | handle_result | VARCHAR(512) | 否 | 处理结果 | 普通 |
| PointsRedemptionAfterSales | handle_status | VARCHAR(32) | 是 | 待处理/已处理/已驳回 | 普通 |
| DesktopSyncTask | id | BIGINT | 是 | 主键,雪花或号段生成,禁止复用 | 普通 |
| DesktopSyncTask | tenant_id | BIGINT | 是 | 集团/租户隔离字段,所有查询必须带租户上下文 | 普通 |
| DesktopSyncTask | org_id | BIGINT | 否 | 所属组织,集团级或公共配置为空 | 普通 |
| DesktopSyncTask | campus_id | BIGINT | 否 | 所属校区,跨校区或总部级数据为空 | 普通 |
| DesktopSyncTask | created_by | BIGINT | 是 | 创建人账号 ID | 普通 |
| DesktopSyncTask | created_at | DATETIME | 是 | 创建时间 | 普通 |
| DesktopSyncTask | updated_by | BIGINT | 否 | 最后更新人账号 ID | 普通 |
| DesktopSyncTask | updated_at | DATETIME | 否 | 最后更新时间 | 普通 |
| DesktopSyncTask | is_deleted | TINYINT | 是 | 是否已删除,0 未删除,1 已删除 | 普通 |
| DesktopSyncTask | deleted_at | DATETIME | 否 | 删除时间,未删除为空 | 普通 |
| DesktopSyncTask | deleted_by | BIGINT | 否 | 删除人账号 ID,未删除为空 | 普通 |
| DesktopSyncTask | version | INT | 是 | 乐观锁版本号,写操作必须校验 | 普通 |
| DesktopSyncTask | sync_batch_no | VARCHAR(64) | 是 | 同步批次号,唯一 | 普通 |
| DesktopSyncTask | student_id | BIGINT | 是 | 学员 ID | 普通 |
| DesktopSyncTask | device_id | VARCHAR(128) | 是 | Tauri 桌面端设备 ID | 普通 |
| DesktopSyncTask | sync_payload | JSON | 是 | 学习进度、播放位置、作业草稿等同步内容 | 普通 |
| DesktopSyncTask | retry_count | INT | 是 | 已重试次数 | 普通 |
| DesktopSyncTask | next_retry_at | DATETIME | 否 | 下次静默重试时间 | 普通 |
| DesktopSyncTask | strong_prompt | TINYINT | 是 | 是否已触发强提示 | 普通 |
| DesktopSyncTask | sync_status | VARCHAR(32) | 是 | 待同步/同步中/成功/失败/冲突 | 普通 |
| DesktopSyncTask | failed_reason | VARCHAR(512) | 否 | 失败原因 | 普通 |
引用对象字段字典
| 引用表 | 对象 | 字段 | 类型 | 必填 | 规则 | 数据级别 |
|---|---|---|---|---|---|---|
| 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 | 是 | 是否加水印 | 普通 |
| stu_student | Student | id | BIGINT | 是 | 主键,雪花或号段生成,禁止复用 | 普通 |
| stu_student | Student | tenant_id | BIGINT | 是 | 集团/租户隔离字段,所有查询必须带租户上下文 | 普通 |
| stu_student | Student | org_id | BIGINT | 否 | 所属组织,集团级或公共配置为空 | 普通 |
| stu_student | Student | campus_id | BIGINT | 否 | 所属校区,跨校区或总部级数据为空 | 普通 |
| stu_student | Student | created_by | BIGINT | 是 | 创建人账号 ID | 普通 |
| stu_student | Student | created_at | DATETIME | 是 | 创建时间 | 普通 |
| stu_student | Student | updated_by | BIGINT | 否 | 最后更新人账号 ID | 普通 |
| stu_student | Student | updated_at | DATETIME | 否 | 最后更新时间 | 普通 |
| stu_student | Student | is_deleted | TINYINT | 是 | 是否已删除,0 未删除,1 已删除 | 普通 |
| stu_student | Student | deleted_at | DATETIME | 否 | 删除时间,未删除为空 | 普通 |
| stu_student | Student | deleted_by | BIGINT | 否 | 删除人账号 ID,未删除为空 | 普通 |
| stu_student | Student | version | INT | 是 | 乐观锁版本号,写操作必须校验 | 普通 |
| stu_student | Student | student_no | VARCHAR(64) | 是 | 学员编号,唯一 | 普通 |
| stu_student | Student | family_id | BIGINT | 否 | 家庭 ID | 普通 |
| stu_student | Student | student_name | VARCHAR(64) | 是 | 学员姓名 | 普通 |
| stu_student | Student | gender | VARCHAR(16) | 否 | 性别 | 普通 |
| stu_student | Student | birthday | DATE | 否 | 出生日期 | 普通 |
| stu_student | Student | grade | VARCHAR(32) | 否 | 年级 | 普通 |
| stu_student | Student | school_name | VARCHAR(128) | 否 | 学校名称 | 普通 |
| stu_student | Student | biz_status | VARCHAR(32) | 是 | 业务状态,取值来自状态机字典 | 普通 |
| stu_student | Student | remark | VARCHAR(512) | 否 | 业务备注,敏感内容按权限脱敏 | 普通 |
| 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) | 是 | 草稿/已发布/已关闭 | 普通 |
| edu_homework_review | HomeworkReview | id | BIGINT | 是 | 主键,雪花或号段生成,禁止复用 | 普通 |
| edu_homework_review | HomeworkReview | tenant_id | BIGINT | 是 | 集团/租户隔离字段,所有查询必须带租户上下文 | 普通 |
| edu_homework_review | HomeworkReview | org_id | BIGINT | 否 | 所属组织,集团级或公共配置为空 | 普通 |
| edu_homework_review | HomeworkReview | campus_id | BIGINT | 否 | 所属校区,跨校区或总部级数据为空 | 普通 |
| edu_homework_review | HomeworkReview | created_by | BIGINT | 是 | 创建人账号 ID | 普通 |
| edu_homework_review | HomeworkReview | created_at | DATETIME | 是 | 创建时间 | 普通 |
| edu_homework_review | HomeworkReview | updated_by | BIGINT | 否 | 最后更新人账号 ID | 普通 |
| edu_homework_review | HomeworkReview | updated_at | DATETIME | 否 | 最后更新时间 | 普通 |
| edu_homework_review | HomeworkReview | is_deleted | TINYINT | 是 | 是否已删除,0 未删除,1 已删除 | 普通 |
| edu_homework_review | HomeworkReview | deleted_at | DATETIME | 否 | 删除时间,未删除为空 | 普通 |
| edu_homework_review | HomeworkReview | deleted_by | BIGINT | 否 | 删除人账号 ID,未删除为空 | 普通 |
| edu_homework_review | HomeworkReview | version | INT | 是 | 乐观锁版本号,写操作必须校验 | 普通 |
| edu_homework_review | HomeworkReview | submit_id | BIGINT | 是 | 作业提交 ID | 普通 |
| edu_homework_review | HomeworkReview | teacher_id | BIGINT | 是 | 批改教师 ID | 普通 |
| edu_homework_review | HomeworkReview | score | DECIMAL(6,2) | 否 | 得分 | 普通 |
| edu_homework_review | HomeworkReview | comment | TEXT | 否 | 评语 | 普通 |
| edu_homework_review | HomeworkReview | wrong_question_json | JSON | 否 | 错题记录 | 普通 |
| edu_homework_review | HomeworkReview | review_status | VARCHAR(32) | 是 | 待批改/已批改/需订正 | 普通 |
| live_room | LiveRoom | id | BIGINT | 是 | 主键,雪花或号段生成,禁止复用 | 普通 |
| live_room | LiveRoom | tenant_id | BIGINT | 是 | 集团/租户隔离字段,所有查询必须带租户上下文 | 普通 |
| live_room | LiveRoom | org_id | BIGINT | 否 | 所属组织,集团级或公共配置为空 | 普通 |
| live_room | LiveRoom | campus_id | BIGINT | 否 | 所属校区,跨校区或总部级数据为空 | 普通 |
| live_room | LiveRoom | created_by | BIGINT | 是 | 创建人账号 ID | 普通 |
| live_room | LiveRoom | created_at | DATETIME | 是 | 创建时间 | 普通 |
| live_room | LiveRoom | updated_by | BIGINT | 否 | 最后更新人账号 ID | 普通 |
| live_room | LiveRoom | updated_at | DATETIME | 否 | 最后更新时间 | 普通 |
| live_room | LiveRoom | is_deleted | TINYINT | 是 | 是否已删除,0 未删除,1 已删除 | 普通 |
| live_room | LiveRoom | deleted_at | DATETIME | 否 | 删除时间,未删除为空 | 普通 |
| live_room | LiveRoom | deleted_by | BIGINT | 否 | 删除人账号 ID,未删除为空 | 普通 |
| live_room | LiveRoom | version | INT | 是 | 乐观锁版本号,写操作必须校验 | 普通 |
| live_room | LiveRoom | room_no | VARCHAR(64) | 是 | 直播间编号,唯一 | 普通 |
| live_room | LiveRoom | live_type | VARCHAR(32) | 是 | 教学直播/活动直播/集团会议直播 | 普通 |
| live_room | LiveRoom | provider_code | VARCHAR(32) | 是 | 启用供应商 | 普通 |
| live_room | LiveRoom | biz_type | VARCHAR(64) | 是 | 绑定业务类型 | 普通 |
| live_room | LiveRoom | biz_id | BIGINT | 是 | 绑定业务 ID | 普通 |
| live_room | LiveRoom | start_at | DATETIME | 否 | 计划开始时间 | 普通 |
| live_room | LiveRoom | end_at | DATETIME | 否 | 计划结束时间 | 普通 |
| live_room | LiveRoom | room_status | VARCHAR(32) | 是 | 待开播/直播中/已结束/异常 | 普通 |
| live_participant | LiveSession/LiveAttendance | id | BIGINT | 是 | 主键,雪花或号段生成,禁止复用 | 普通 |
| live_participant | LiveSession/LiveAttendance | tenant_id | BIGINT | 是 | 集团/租户隔离字段,所有查询必须带租户上下文 | 普通 |
| live_participant | LiveSession/LiveAttendance | org_id | BIGINT | 否 | 所属组织,集团级或公共配置为空 | 普通 |
| live_participant | LiveSession/LiveAttendance | campus_id | BIGINT | 否 | 所属校区,跨校区或总部级数据为空 | 普通 |
| live_participant | LiveSession/LiveAttendance | created_by | BIGINT | 是 | 创建人账号 ID | 普通 |
| live_participant | LiveSession/LiveAttendance | created_at | DATETIME | 是 | 创建时间 | 普通 |
| live_participant | LiveSession/LiveAttendance | updated_by | BIGINT | 否 | 最后更新人账号 ID | 普通 |
| live_participant | LiveSession/LiveAttendance | updated_at | DATETIME | 否 | 最后更新时间 | 普通 |
| live_participant | LiveSession/LiveAttendance | is_deleted | TINYINT | 是 | 是否已删除,0 未删除,1 已删除 | 普通 |
| live_participant | LiveSession/LiveAttendance | deleted_at | DATETIME | 否 | 删除时间,未删除为空 | 普通 |
| live_participant | LiveSession/LiveAttendance | deleted_by | BIGINT | 否 | 删除人账号 ID,未删除为空 | 普通 |
| live_participant | LiveSession/LiveAttendance | version | INT | 是 | 乐观锁版本号,写操作必须校验 | 普通 |
| live_participant | LiveSession/LiveAttendance | live_room_id | BIGINT | 是 | 直播间 ID | 普通 |
| live_participant | LiveSession/LiveAttendance | user_id | BIGINT | 是 | 用户 ID | 普通 |
| live_participant | LiveSession/LiveAttendance | participant_type | VARCHAR(32) | 是 | 学员/教师/员工/家长/访客 | 普通 |
| live_participant | LiveSession/LiveAttendance | join_status | VARCHAR(32) | 是 | 未进入/观看中/已离开/掉线 | 普通 |
| live_participant | LiveSession/LiveAttendance | watch_duration | INT | 是 | 观看时长秒数 | 普通 |
| live_participant | LiveSession/LiveAttendance | sign_status | VARCHAR(32) | 否 | 签到状态 | 普通 |
| live_participant | LiveSession/LiveAttendance | last_heartbeat_at | DATETIME | 否 | 最近心跳 | 普通 |
| live_mic_request | LiveMicRequest | id | BIGINT | 是 | 主键,雪花或号段生成,禁止复用 | 普通 |
| live_mic_request | LiveMicRequest | tenant_id | BIGINT | 是 | 集团/租户隔离字段,所有查询必须带租户上下文 | 普通 |
| live_mic_request | LiveMicRequest | org_id | BIGINT | 否 | 所属组织,集团级或公共配置为空 | 普通 |
| live_mic_request | LiveMicRequest | campus_id | BIGINT | 否 | 所属校区,跨校区或总部级数据为空 | 普通 |
| live_mic_request | LiveMicRequest | created_by | BIGINT | 是 | 创建人账号 ID | 普通 |
| live_mic_request | LiveMicRequest | created_at | DATETIME | 是 | 创建时间 | 普通 |
| live_mic_request | LiveMicRequest | updated_by | BIGINT | 否 | 最后更新人账号 ID | 普通 |
| live_mic_request | LiveMicRequest | updated_at | DATETIME | 否 | 最后更新时间 | 普通 |
| live_mic_request | LiveMicRequest | is_deleted | TINYINT | 是 | 是否已删除,0 未删除,1 已删除 | 普通 |
| live_mic_request | LiveMicRequest | deleted_at | DATETIME | 否 | 删除时间,未删除为空 | 普通 |
| live_mic_request | LiveMicRequest | deleted_by | BIGINT | 否 | 删除人账号 ID,未删除为空 | 普通 |
| live_mic_request | LiveMicRequest | version | INT | 是 | 乐观锁版本号,写操作必须校验 | 普通 |
| live_mic_request | LiveMicRequest | live_room_id | BIGINT | 是 | 直播间 ID | 普通 |
| live_mic_request | LiveMicRequest | requester_id | BIGINT | 是 | 申请人 ID | 普通 |
| live_mic_request | LiveMicRequest | request_status | VARCHAR(32) | 是 | 排队中/已邀请/已上麦/已拒绝/已超时/已取消 | 普通 |
| live_mic_request | LiveMicRequest | queue_no | INT | 否 | 队列序号 | 普通 |
| live_mic_request | LiveMicRequest | seat_no | INT | 否 | 座席号 | 普通 |
| live_mic_request | LiveMicRequest | invite_expire_at | DATETIME | 否 | 邀请过期时间 | 普通 |
| live_mic_request | LiveMicRequest | device_check_result | JSON | 否 | 设备检测结果 | 普通 |
| live_mic_seat | LiveMicSeat | id | BIGINT | 是 | 主键,雪花或号段生成,禁止复用 | 普通 |
| live_mic_seat | LiveMicSeat | tenant_id | BIGINT | 是 | 集团/租户隔离字段,所有查询必须带租户上下文 | 普通 |
| live_mic_seat | LiveMicSeat | org_id | BIGINT | 否 | 所属组织,集团级或公共配置为空 | 普通 |
| live_mic_seat | LiveMicSeat | campus_id | BIGINT | 否 | 所属校区,跨校区或总部级数据为空 | 普通 |
| live_mic_seat | LiveMicSeat | created_by | BIGINT | 是 | 创建人账号 ID | 普通 |
| live_mic_seat | LiveMicSeat | created_at | DATETIME | 是 | 创建时间 | 普通 |
| live_mic_seat | LiveMicSeat | updated_by | BIGINT | 否 | 最后更新人账号 ID | 普通 |
| live_mic_seat | LiveMicSeat | updated_at | DATETIME | 否 | 最后更新时间 | 普通 |
| live_mic_seat | LiveMicSeat | is_deleted | TINYINT | 是 | 是否已删除,0 未删除,1 已删除 | 普通 |
| live_mic_seat | LiveMicSeat | deleted_at | DATETIME | 否 | 删除时间,未删除为空 | 普通 |
| live_mic_seat | LiveMicSeat | deleted_by | BIGINT | 否 | 删除人账号 ID,未删除为空 | 普通 |
| live_mic_seat | LiveMicSeat | version | INT | 是 | 乐观锁版本号,写操作必须校验 | 普通 |
| live_mic_seat | LiveMicSeat | live_room_id | BIGINT | 是 | 直播间 ID | 普通 |
| live_mic_seat | LiveMicSeat | seat_no | INT | 是 | 座席号 | 普通 |
| live_mic_seat | LiveMicSeat | participant_id | BIGINT | 否 | 上麦参与人 ID | 普通 |
| live_mic_seat | LiveMicSeat | seat_status | VARCHAR(32) | 是 | 空闲/邀请中/使用中/异常 | 普通 |
| live_mic_seat | LiveMicSeat | muted | TINYINT | 是 | 是否静音 | 普通 |
| live_mic_seat | LiveMicSeat | provider_session_id | VARCHAR(128) | 否 | 供应商会话 ID | 普通 |
| live_recording_file | LiveRecording | id | BIGINT | 是 | 主键,雪花或号段生成,禁止复用 | 普通 |
| live_recording_file | LiveRecording | tenant_id | BIGINT | 是 | 集团/租户隔离字段,所有查询必须带租户上下文 | 普通 |
| live_recording_file | LiveRecording | org_id | BIGINT | 否 | 所属组织,集团级或公共配置为空 | 普通 |
| live_recording_file | LiveRecording | campus_id | BIGINT | 否 | 所属校区,跨校区或总部级数据为空 | 普通 |
| live_recording_file | LiveRecording | created_by | BIGINT | 是 | 创建人账号 ID | 普通 |
| live_recording_file | LiveRecording | created_at | DATETIME | 是 | 创建时间 | 普通 |
| live_recording_file | LiveRecording | updated_by | BIGINT | 否 | 最后更新人账号 ID | 普通 |
| live_recording_file | LiveRecording | updated_at | DATETIME | 否 | 最后更新时间 | 普通 |
| live_recording_file | LiveRecording | is_deleted | TINYINT | 是 | 是否已删除,0 未删除,1 已删除 | 普通 |
| live_recording_file | LiveRecording | deleted_at | DATETIME | 否 | 删除时间,未删除为空 | 普通 |
| live_recording_file | LiveRecording | deleted_by | BIGINT | 否 | 删除人账号 ID,未删除为空 | 普通 |
| live_recording_file | LiveRecording | version | INT | 是 | 乐观锁版本号,写操作必须校验 | 普通 |
| live_recording_file | LiveRecording | live_room_id | BIGINT | 是 | 直播间 ID | 普通 |
| live_recording_file | LiveRecording | provider_record_id | VARCHAR(128) | 否 | 供应商录制 ID | 普通 |
| live_recording_file | LiveRecording | recording_status | VARCHAR(32) | 是 | 录制中/转码中/可播放/失败/已过期 | 普通 |
| live_recording_file | LiveRecording | replay_url | VARCHAR(512) | 否 | 回放地址 | 普通 |
| live_recording_file | LiveRecording | storage_location | VARCHAR(512) | 否 | 供应商 OSS/COS/Kodo 存储位置 | 普通 |
| live_recording_file | LiveRecording | duration | INT | 否 | 时长秒数 | 普通 |
| live_recording_file | LiveRecording | retention_until | DATETIME | 否 | 保留到期时间 | 普通 |
| 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) | 是 | 草稿/审核中/已发布/已下架 | 普通 |
| mat_sku | Material/Inventory/Asset/Book | id | BIGINT | 是 | 主键,雪花或号段生成,禁止复用 | 普通 |
| mat_sku | Material/Inventory/Asset/Book | tenant_id | BIGINT | 是 | 集团/租户隔离字段,所有查询必须带租户上下文 | 普通 |
| mat_sku | Material/Inventory/Asset/Book | org_id | BIGINT | 否 | 所属组织,集团级或公共配置为空 | 普通 |
| mat_sku | Material/Inventory/Asset/Book | campus_id | BIGINT | 否 | 所属校区,跨校区或总部级数据为空 | 普通 |
| mat_sku | Material/Inventory/Asset/Book | created_by | BIGINT | 是 | 创建人账号 ID | 普通 |
| mat_sku | Material/Inventory/Asset/Book | created_at | DATETIME | 是 | 创建时间 | 普通 |
| mat_sku | Material/Inventory/Asset/Book | updated_by | BIGINT | 否 | 最后更新人账号 ID | 普通 |
| mat_sku | Material/Inventory/Asset/Book | updated_at | DATETIME | 否 | 最后更新时间 | 普通 |
| mat_sku | Material/Inventory/Asset/Book | is_deleted | TINYINT | 是 | 是否已删除,0 未删除,1 已删除 | 普通 |
| mat_sku | Material/Inventory/Asset/Book | deleted_at | DATETIME | 否 | 删除时间,未删除为空 | 普通 |
| mat_sku | Material/Inventory/Asset/Book | deleted_by | BIGINT | 否 | 删除人账号 ID,未删除为空 | 普通 |
| mat_sku | Material/Inventory/Asset/Book | version | INT | 是 | 乐观锁版本号,写操作必须校验 | 普通 |
| mat_sku | Material/Inventory/Asset/Book | sku_code | VARCHAR(64) | 是 | SKU 编码,唯一 | 普通 |
| mat_sku | Material/Inventory/Asset/Book | sku_name | VARCHAR(128) | 是 | SKU 名称 | 普通 |
| mat_sku | Material/Inventory/Asset/Book | sku_type | VARCHAR(32) | 是 | 物料/固定资产/图书/积分礼品 | 普通 |
| mat_sku | Material/Inventory/Asset/Book | unit | VARCHAR(16) | 是 | 计量单位 | 普通 |
| mat_sku | Material/Inventory/Asset/Book | gift_points | INT | 否 | 作为积分礼品时所需积分 | 普通 |
| mat_sku | Material/Inventory/Asset/Book | enabled | TINYINT | 是 | 是否启用 | 普通 |
JSON 字段结构与校验
| 表名 | 对象 | 字段 | 结构编码 | 结构定义 | 校验规则 | 示例 |
|---|---|---|---|---|---|---|
| stu_learning_profile | LearningProfile | ability_tags | LEARNING_PROFILE | {ability:[{code:string, score:number}], weakPoints:string[], lastReportId?:number} | 能力分 0-100;来源必须可追溯到课程、作业、测评或直播 | {"ability":[{"code":"LISTENING","score":82}],"weakPoints":["过去式"]} |
| stu_learning_profile | LearningProfile | profile_snapshot | AUDIT_SNAPSHOT | {before?:object, after?:object, changedFields:string[], maskPolicy:string} | 敏感字段必须按脱敏策略写入,不允许存储明文密码或密钥 | {"changedFields":["owner_id"],"maskPolicy":"MOBILE_MASK"} |
| edu_homework_draft | HomeworkDraft | answer_snapshot | AUDIT_SNAPSHOT | {before?:object, after?:object, changedFields:string[], maskPolicy:string} | 敏感字段必须按脱敏策略写入,不允许存储明文密码或密钥 | {"changedFields":["owner_id"],"maskPolicy":"MOBILE_MASK"} |
| edu_homework_draft | HomeworkDraft | attachment_temp_ids | ID_LIST | array<number> | 数组长度 1-500;元素必须为已存在且未逻辑删除的业务 ID | [10001,10002] |
| edu_homework_submit | HomeworkSubmit | answer_payload | SUPERVISION_PAYLOAD | {bizType:string, contractNo:string, amount:number, student:object, attachments:number[]} | 报送字段必须满足教育局/监管账户配置的必填规则 | {"bizType":"CONTRACT","contractNo":"DNC20260628001","amount":6800} |
| stu_wrong_question_practice | WrongQuestionPractice | source_question_ids | GENERIC | object | array | 必须符合字段说明中的业务结构;保存前进行 JSON Schema 校验并记录版本 | {"version":1,"items":[]} |
| stu_wrong_question_practice | WrongQuestionPractice | result_snapshot | AUDIT_SNAPSHOT | {before?:object, after?:object, changedFields:string[], maskPolicy:string} | 敏感字段必须按脱敏策略写入,不允许存储明文密码或密钥 | {"changedFields":["owner_id"],"maskPolicy":"MOBILE_MASK"} |
| stu_desktop_sync_task | DesktopSyncTask | sync_payload | SUPERVISION_PAYLOAD | {bizType:string, contractNo:string, amount:number, student:object, attachments:number[]} | 报送字段必须满足教育局/监管账户配置的必填规则 | {"bizType":"CONTRACT","contractNo":"DNC20260628001","amount":6800} |
状态/枚举标准字典
| 表名 | 对象 | 字段 | 枚举编码 | 取值 | 终态/流转规则 | 字段说明 |
|---|---|---|---|---|---|---|
| stu_account | StudentAccount | tenant_id | TENANT_ID | 集团、租户隔离字段 | 非终态,可按状态机或字典规则流转 | 集团/租户隔离字段,所有查询必须带租户上下文 |
| stu_account | StudentAccount | is_deleted | BOOL_DELETED | 0 未删除、1 已删除 | 非终态,可按状态机或字典规则流转 | 是否已删除,0 未删除,1 已删除 |
| stu_account | StudentAccount | account_type | ACCOUNT_TYPE | 学校下发、手机号自主注册、家长代开通 | 非终态,可按状态机或字典规则流转 | 学校下发/手机号自主注册/家长代开通 |
| stu_account | StudentAccount | login_status | LOGIN_STATUS | PENDING 待激活、NORMAL 正常、LOCKED 锁定、DISABLED 停用 | 包含终态,终态禁止直接编辑,需走变更/红冲/撤回流程 | 待激活/正常/锁定/停用 |
| stu_account | StudentAccount | cancel_request_status | CANCEL_REQUEST_STATUS | 无、申请中、已通过、已驳回 | 非终态,可按状态机或字典规则流转 | 注销申请状态:无/申请中/已通过/已驳回 |
| stu_account_registration | StudentAccountRegistration | tenant_id | TENANT_ID | 集团、租户隔离字段 | 非终态,可按状态机或字典规则流转 | 集团/租户隔离字段,所有查询必须带租户上下文 |
| stu_account_registration | StudentAccountRegistration | is_deleted | BOOL_DELETED | 0 未删除、1 已删除 | 非终态,可按状态机或字典规则流转 | 是否已删除,0 未删除,1 已删除 |
| stu_account_registration | StudentAccountRegistration | password_set_status | PASSWORD_SET_STATUS | 未设置、已设置、需重置 | 非终态,可按状态机或字典规则流转 | 未设置/已设置/需重置 |
| stu_account_registration | StudentAccountRegistration | register_status | REGISTER_STATUS | 待提交、审核中、已开通、已驳回、已取消 | 包含终态,终态禁止直接编辑,需走变更/红冲/撤回流程 | 待提交/审核中/已开通/已驳回/已取消 |
| stu_session_selection | StudentSessionSelection | tenant_id | TENANT_ID | 集团、租户隔离字段 | 非终态,可按状态机或字典规则流转 | 集团/租户隔离字段,所有查询必须带租户上下文 |
| stu_session_selection | StudentSessionSelection | is_deleted | BOOL_DELETED | 0 未删除、1 已删除 | 非终态,可按状态机或字典规则流转 | 是否已删除,0 未删除,1 已删除 |
| stu_session_selection | StudentSessionSelection | source_channel | SOURCE_CHANNEL | DOUYIN 抖音、XIAOHONGSHU 小红书、MEITUAN 美团、WECHAT 公众号/小程序、GROUND_PUSH 地推、REFERRAL 转介绍、NATURAL 自然到访、IMPORT 批量导入、OTHER 其他 | 非终态,可按状态机或字典规则流转 | 小程序/App/H5/Tauri |
| stu_session_selection | StudentSessionSelection | remember_last | BOOL | 按业务字典配置,需在字典中心维护编码、名称、排序、启停和终态标识 | 非终态,可按状态机或字典规则流转 | 是否记住本次选择 |
| stu_session_selection | StudentSessionSelection | selection_status | SELECTION_STATUS | 有效、权益过期、已切换、同步失败 | 包含终态,终态禁止直接编辑,需走变更/红冲/撤回流程 | 有效/权益过期/已切换/同步失败 |
| stu_device_session | StudentDeviceSession | tenant_id | TENANT_ID | 集团、租户隔离字段 | 非终态,可按状态机或字典规则流转 | 集团/租户隔离字段,所有查询必须带租户上下文 |
| stu_device_session | StudentDeviceSession | is_deleted | BOOL_DELETED | 0 未删除、1 已删除 | 非终态,可按状态机或字典规则流转 | 是否已删除,0 未删除,1 已删除 |
| stu_device_session | StudentDeviceSession | client_type | CLIENT_TYPE | 微信小程序、iOS、iPadOS、Android、安卓平板、H5、Tauri-macOS、Tauri-Windows | 非终态,可按状态机或字典规则流转 | 微信小程序/iOS/iPadOS/Android/安卓平板/H5/Tauri-macOS/Tauri-Windows |
| stu_device_session | StudentDeviceSession | session_status | SESSION_STATUS | 有效、过期、踢下线、设备超限 | 非终态,可按状态机或字典规则流转 | 有效/过期/踢下线/设备超限 |
| stu_learning_profile | LearningProfile | tenant_id | TENANT_ID | 集团、租户隔离字段 | 非终态,可按状态机或字典规则流转 | 集团/租户隔离字段,所有查询必须带租户上下文 |
| stu_learning_profile | LearningProfile | is_deleted | BOOL_DELETED | 0 未删除、1 已删除 | 非终态,可按状态机或字典规则流转 | 是否已删除,0 未删除,1 已删除 |
| stu_learning_task | LearningTask | tenant_id | TENANT_ID | 集团、租户隔离字段 | 非终态,可按状态机或字典规则流转 | 集团/租户隔离字段,所有查询必须带租户上下文 |
| stu_learning_task | LearningTask | is_deleted | BOOL_DELETED | 0 未删除、1 已删除 | 非终态,可按状态机或字典规则流转 | 是否已删除,0 未删除,1 已删除 |
| stu_learning_task | LearningTask | task_type | TASK_TYPE | 课程、作业、测评、直播、回放 | 非终态,可按状态机或字典规则流转 | 课程/作业/测评/直播/回放 |
| stu_learning_task | LearningTask | complete_status | LEARNING_STATUS | NOT_STARTED 未开始、IN_PROGRESS 进行中、COMPLETED 已完成、OVERDUE 逾期 | 非终态,可按状态机或字典规则流转 | 未开始/进行中/已完成/逾期 |
| edu_homework_draft | HomeworkDraft | tenant_id | TENANT_ID | 集团、租户隔离字段 | 非终态,可按状态机或字典规则流转 | 集团/租户隔离字段,所有查询必须带租户上下文 |
| edu_homework_draft | HomeworkDraft | is_deleted | BOOL_DELETED | 0 未删除、1 已删除 | 非终态,可按状态机或字典规则流转 | 是否已删除,0 未删除,1 已删除 |
| edu_homework_draft | HomeworkDraft | draft_status | DRAFT_STATUS | 草稿中、已提交、已删除、已过期、冲突待处理 | 非终态,可按状态机或字典规则流转 | 草稿中/已提交/已删除/已过期/冲突待处理 |
| edu_homework_draft | HomeworkDraft | client_type | CLIENT_TYPE | 按业务字典配置,需在字典中心维护编码、名称、排序、启停和终态标识 | 非终态,可按状态机或字典规则流转 | 最近保存端 |
| edu_homework_draft | HomeworkDraft | conflict_status | CONFLICT_STATUS | 无冲突、有冲突、已合并 | 非终态,可按状态机或字典规则流转 | 无冲突/有冲突/已合并 |
| edu_homework_submit | HomeworkSubmit | tenant_id | TENANT_ID | 集团、租户隔离字段 | 非终态,可按状态机或字典规则流转 | 集团/租户隔离字段,所有查询必须带租户上下文 |
| edu_homework_submit | HomeworkSubmit | is_deleted | BOOL_DELETED | 0 未删除、1 已删除 | 非终态,可按状态机或字典规则流转 | 是否已删除,0 未删除,1 已删除 |
| edu_homework_submit | HomeworkSubmit | submit_status | SUBMIT_STATUS | 待提交、已提交、已批改、需订正 | 非终态,可按状态机或字典规则流转 | 待提交/已提交/已批改/需订正 |
| stu_wrong_question_practice | WrongQuestionPractice | tenant_id | TENANT_ID | 集团、租户隔离字段 | 非终态,可按状态机或字典规则流转 | 集团/租户隔离字段,所有查询必须带租户上下文 |
| stu_wrong_question_practice | WrongQuestionPractice | is_deleted | BOOL_DELETED | 0 未删除、1 已删除 | 非终态,可按状态机或字典规则流转 | 是否已删除,0 未删除,1 已删除 |
| stu_wrong_question_practice | WrongQuestionPractice | practice_mode | PRACTICE_MODE | 一键 5 题复练、错题重组测试、知识点专项 | 非终态,可按状态机或字典规则流转 | 一键 5 题复练/错题重组测试/知识点专项 |
| stu_wrong_question_practice | WrongQuestionPractice | practice_status | PRACTICE_STATUS | 待练习、进行中、已完成、生成失败 | 包含终态,终态禁止直接编辑,需走变更/红冲/撤回流程 | 待练习/进行中/已完成/生成失败 |
| stu_portfolio_item | StudentPortfolioItem | tenant_id | TENANT_ID | 集团、租户隔离字段 | 非终态,可按状态机或字典规则流转 | 集团/租户隔离字段,所有查询必须带租户上下文 |
| stu_portfolio_item | StudentPortfolioItem | is_deleted | BOOL_DELETED | 0 未删除、1 已删除 | 非终态,可按状态机或字典规则流转 | 是否已删除,0 未删除,1 已删除 |
| stu_portfolio_item | StudentPortfolioItem | item_type | ITEM_TYPE | 图片、音频、视频、作业、测评报告、课堂作品 | 非终态,可按状态机或字典规则流转 | 图片/音频/视频/作业/测评报告/课堂作品 |
| stu_portfolio_item | StudentPortfolioItem | media_type | MEDIA_TYPE | 图片、音频、视频、PDF、链接 | 非终态,可按状态机或字典规则流转 | 图片/音频/视频/PDF/链接 |
| stu_portfolio_item | StudentPortfolioItem | transcode_status | TRANSCODE_STATUS | 无需转码、转码中、成功、失败 | 包含终态,终态禁止直接编辑,需走变更/红冲/撤回流程 | 无需转码/转码中/成功/失败 |
| stu_portfolio_item | StudentPortfolioItem | share_status | SHARE_STATUS | 不可分享、可分享、已分享、分享失效 | 非终态,可按状态机或字典规则流转 | 不可分享/可分享/已分享/分享失效 |
| pts_account | PointsAccount | tenant_id | TENANT_ID | 集团、租户隔离字段 | 非终态,可按状态机或字典规则流转 | 集团/租户隔离字段,所有查询必须带租户上下文 |
| pts_account | PointsAccount | is_deleted | BOOL_DELETED | 0 未删除、1 已删除 | 非终态,可按状态机或字典规则流转 | 是否已删除,0 未删除,1 已删除 |
| pts_lock | PointsLock | tenant_id | TENANT_ID | 集团、租户隔离字段 | 非终态,可按状态机或字典规则流转 | 集团/租户隔离字段,所有查询必须带租户上下文 |
| pts_lock | PointsLock | is_deleted | BOOL_DELETED | 0 未删除、1 已删除 | 非终态,可按状态机或字典规则流转 | 是否已删除,0 未删除,1 已删除 |
| pts_lock | PointsLock | lock_status | LOCK_STATUS | 锁定中、已确认、已释放、已过期 | 非终态,可按状态机或字典规则流转 | 锁定中/已确认/已释放/已过期 |
| pts_order | PointsOrder | tenant_id | TENANT_ID | 集团、租户隔离字段 | 非终态,可按状态机或字典规则流转 | 集团/租户隔离字段,所有查询必须带租户上下文 |
| pts_order | PointsOrder | is_deleted | BOOL_DELETED | 0 未删除、1 已删除 | 非终态,可按状态机或字典规则流转 | 是否已删除,0 未删除,1 已删除 |
| pts_order | PointsOrder | order_status | ORDER_STATUS | DRAFT 草稿、PENDING 待处理、PARTIAL 部分完成、COMPLETED 已完成、CANCELLED 已取消、AFTER_SALES 售后中 | 包含终态,终态禁止直接编辑,需走变更/红冲/撤回流程 | 待领取/已核销/已取消/售后中 |
| pts_write_off_code | PointsWriteOffCode | tenant_id | TENANT_ID | 集团、租户隔离字段 | 非终态,可按状态机或字典规则流转 | 集团/租户隔离字段,所有查询必须带租户上下文 |
| pts_write_off_code | PointsWriteOffCode | is_deleted | BOOL_DELETED | 0 未删除、1 已删除 | 非终态,可按状态机或字典规则流转 | 是否已删除,0 未删除,1 已删除 |
| pts_write_off_code | PointsWriteOffCode | code_type | CODE_TYPE | 二维码、条形码、数字码 | 非终态,可按状态机或字典规则流转 | 二维码/条形码/数字码 |
| pts_write_off_code | PointsWriteOffCode | write_off_status | WRITE_OFF_STATUS | 待核销、已核销、已过期、已作废 | 包含终态,终态禁止直接编辑,需走变更/红冲/撤回流程 | 待核销/已核销/已过期/已作废 |
| pts_write_off_code | PointsWriteOffCode | brightness_hint | BOOL | 按业务字典配置,需在字典中心维护编码、名称、排序、启停和终态标识 | 非终态,可按状态机或字典规则流转 | 端侧是否建议自动调高亮度 |
| pts_after_sales | PointsRedemptionAfterSales | tenant_id | TENANT_ID | 集团、租户隔离字段 | 非终态,可按状态机或字典规则流转 | 集团/租户隔离字段,所有查询必须带租户上下文 |
| pts_after_sales | PointsRedemptionAfterSales | is_deleted | BOOL_DELETED | 0 未删除、1 已删除 | 非终态,可按状态机或字典规则流转 | 是否已删除,0 未删除,1 已删除 |
| pts_after_sales | PointsRedemptionAfterSales | request_type | REQUEST_TYPE | 取消、退积分、补发、异常核销 | 非终态,可按状态机或字典规则流转 | 取消/退积分/补发/异常核销 |
| pts_after_sales | PointsRedemptionAfterSales | handle_status | HANDLE_STATUS | 待处理、已处理、已驳回 | 非终态,可按状态机或字典规则流转 | 待处理/已处理/已驳回 |
| stu_desktop_sync_task | DesktopSyncTask | tenant_id | TENANT_ID | 集团、租户隔离字段 | 非终态,可按状态机或字典规则流转 | 集团/租户隔离字段,所有查询必须带租户上下文 |
| stu_desktop_sync_task | DesktopSyncTask | is_deleted | BOOL_DELETED | 0 未删除、1 已删除 | 非终态,可按状态机或字典规则流转 | 是否已删除,0 未删除,1 已删除 |
| stu_desktop_sync_task | DesktopSyncTask | strong_prompt | BOOL | 按业务字典配置,需在字典中心维护编码、名称、排序、启停和终态标识 | 非终态,可按状态机或字典规则流转 | 是否已触发强提示 |
| stu_desktop_sync_task | DesktopSyncTask | sync_status | SYNC_STATUS | 待同步、同步中、成功、失败、冲突 | 包含终态,终态禁止直接编辑,需走变更/红冲/撤回流程 | 待同步/同步中/成功/失败/冲突 |
敏感字段与数据安全策略
| 来源 | 表名 | 对象 | 字段 | 数据级别 | 脱敏/返回策略 | 明文查看条件 | 导出策略 | 审计要求 | 端侧展示规则 |
|---|---|---|---|---|---|---|---|---|---|
| 本模块对象 | stu_account | StudentAccount | account_no | 普通 | BANK_ACCOUNT_MASK | 默认展示后 4 位;付款、报销、工资发放场景按岗位权限展示 | 导出银行账号必须走财务/安全双审批 | 查看、变更、付款使用、导出均记录业务单号和操作者 | 财务 PC 可按权限明文;员工端和移动端默认脱敏 |
| 本模块对象 | stu_account | StudentAccount | login_name | 普通 | BIZ_FIELD_MASK | 按字段权限、数据范围和业务角色展示;明文查看按敏感字段审批规则执行 | 导出时按数据级别触发审批、水印、下载有效期和日志 | 查看、修改、删除、导出、下载和审批均记录操作审计 | 默认遵循总部、区域、校区、团队、本人数据范围和端侧最小可见原则 |
| 本模块对象 | stu_account | StudentAccount | account_type | 普通 | BIZ_FIELD_MASK | 按字段权限、数据范围和业务角色展示;明文查看按敏感字段审批规则执行 | 导出时按数据级别触发审批、水印、下载有效期和日志 | 查看、修改、删除、导出、下载和审批均记录操作审计 | 默认遵循总部、区域、校区、团队、本人数据范围和端侧最小可见原则 |
| 本模块对象 | stu_account | StudentAccount | mobile | 敏感 | MOBILE_MASK | 默认展示 138****0000;明文查看需字段权限或敏感字段查看审批 | 导出手机号必须触发导出审批、下载水印和有效期控制 | 明文查看、复制、导出和批量下载均写入 SensitiveAccessLog | PC 管理端按字段权限展示;移动端仅展示本人授权范围内脱敏信息 |
| 本模块对象 | stu_account | StudentAccount | wechat_openid | 敏感 | BIZ_FIELD_MASK | 按字段权限、数据范围和业务角色展示;明文查看按敏感字段审批规则执行 | 导出时按数据级别触发审批、水印、下载有效期和日志 | 查看、修改、删除、导出、下载和审批均记录操作审计 | 默认遵循总部、区域、校区、团队、本人数据范围和端侧最小可见原则 |
| 本模块对象 | stu_account | StudentAccount | password_hash | 敏感 | NEVER_RETURN | 禁止接口返回明文;仅密钥中心/鉴权服务按服务身份读取密钥引用 | 禁止导出;配置导出只允许导出脱敏引用和启停状态 | 配置新增、修改、启停、轮换和失败读取均记录安全审计 | 前端只展示已配置/未配置、到期时间和连通性状态,不展示密钥值 |
| 本模块对象 | stu_account_registration | StudentAccountRegistration | mobile | 敏感 | MOBILE_MASK | 默认展示 138****0000;明文查看需字段权限或敏感字段查看审批 | 导出手机号必须触发导出审批、下载水印和有效期控制 | 明文查看、复制、导出和批量下载均写入 SensitiveAccessLog | PC 管理端按字段权限展示;移动端仅展示本人授权范围内脱敏信息 |
| 本模块对象 | stu_account_registration | StudentAccountRegistration | student_name | 敏感 | BIZ_FIELD_MASK | 按字段权限、数据范围和业务角色展示;明文查看按敏感字段审批规则执行 | 导出时按数据级别触发审批、水印、下载有效期和日志 | 查看、修改、删除、导出、下载和审批均记录操作审计 | 默认遵循总部、区域、校区、团队、本人数据范围和端侧最小可见原则 |
| 本模块对象 | stu_account_registration | StudentAccountRegistration | password_set_status | 普通 | NEVER_RETURN | 禁止接口返回明文;仅密钥中心/鉴权服务按服务身份读取密钥引用 | 禁止导出;配置导出只允许导出脱敏引用和启停状态 | 配置新增、修改、启停、轮换和失败读取均记录安全审计 | 前端只展示已配置/未配置、到期时间和连通性状态,不展示密钥值 |
| 本模块对象 | edu_homework_submit | HomeworkSubmit | answer_payload | 普通 | PAYLOAD_DESENSITIZE | 接口报文、快照和文件地址默认脱敏;排障查看需运维/安全授权 | 导出日志或报文时自动清理手机号、证件号、密钥、票据和人脸字段 | 查看报文、下载附件、失败重放和人工补偿均记录审计 | 业务端展示摘要和状态,完整报文仅运维/安全后台查看 |
| 本模块对象 | stu_desktop_sync_task | DesktopSyncTask | sync_payload | 普通 | 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 | 按字段权限、数据范围和业务角色展示;明文查看按敏感字段审批规则执行 | 导出时按数据级别触发审批、水印、下载有效期和日志 | 查看、修改、删除、导出、下载和审批均记录操作审计 | 默认遵循总部、区域、校区、团队、本人数据范围和端侧最小可见原则 |
| 引用对象 | stu_student | Student | remark | 普通 | BIZ_FIELD_MASK | 按字段权限、数据范围和业务角色展示;明文查看按敏感字段审批规则执行 | 导出时按数据级别触发审批、水印、下载有效期和日志 | 查看、修改、删除、导出、下载和审批均记录操作审计 | 默认遵循总部、区域、校区、团队、本人数据范围和端侧最小可见原则 |
核心数据表完整字段
| 表名 | 对象 | 字段 | 类型 | 必填 | 规则 | 数据级别 |
|---|---|---|---|---|---|---|
| stu_account | StudentAccount | id | BIGINT | 是 | 主键,雪花或号段生成,禁止复用 | 普通 |
| stu_account | StudentAccount | tenant_id | BIGINT | 是 | 集团/租户隔离字段,所有查询必须带租户上下文 | 普通 |
| stu_account | StudentAccount | org_id | BIGINT | 否 | 所属组织,集团级或公共配置为空 | 普通 |
| stu_account | StudentAccount | campus_id | BIGINT | 否 | 所属校区,跨校区或总部级数据为空 | 普通 |
| stu_account | StudentAccount | created_by | BIGINT | 是 | 创建人账号 ID | 普通 |
| stu_account | StudentAccount | created_at | DATETIME | 是 | 创建时间 | 普通 |
| stu_account | StudentAccount | updated_by | BIGINT | 否 | 最后更新人账号 ID | 普通 |
| stu_account | StudentAccount | updated_at | DATETIME | 否 | 最后更新时间 | 普通 |
| stu_account | StudentAccount | is_deleted | TINYINT | 是 | 是否已删除,0 未删除,1 已删除 | 普通 |
| stu_account | StudentAccount | deleted_at | DATETIME | 否 | 删除时间,未删除为空 | 普通 |
| stu_account | StudentAccount | deleted_by | BIGINT | 否 | 删除人账号 ID,未删除为空 | 普通 |
| stu_account | StudentAccount | version | INT | 是 | 乐观锁版本号,写操作必须校验 | 普通 |
| stu_account | StudentAccount | account_no | VARCHAR(64) | 是 | 学员账号编号,唯一 | 普通 |
| stu_account | StudentAccount | login_name | VARCHAR(64) | 是 | 学校下发的学员用户名或手机号登录名 | 普通 |
| stu_account | StudentAccount | student_id | BIGINT | 否 | 默认绑定学员 ID,多学员账号可为空 | 普通 |
| stu_account | StudentAccount | account_type | VARCHAR(32) | 是 | 学校下发/手机号自主注册/家长代开通 | 普通 |
| stu_account | StudentAccount | mobile | VARCHAR(32) | 否 | 手机号,敏感 | 敏感 |
| stu_account | StudentAccount | wechat_openid | VARCHAR(128) | 否 | 微信 OpenID,敏感 | 敏感 |
| stu_account | StudentAccount | password_hash | VARCHAR(255) | 否 | 密码哈希,禁止明文存储 | 敏感 |
| stu_account | StudentAccount | login_status | VARCHAR(32) | 是 | 待激活/正常/锁定/停用 | 普通 |
| stu_account | StudentAccount | activated_at | DATETIME | 否 | 账号激活时间 | 普通 |
| stu_account | StudentAccount | cancel_request_status | VARCHAR(32) | 否 | 注销申请状态:无/申请中/已通过/已驳回 | 普通 |
| stu_account | StudentAccount | last_login_at | DATETIME | 否 | 最近登录时间 | 普通 |
| stu_account_registration | StudentAccountRegistration | id | BIGINT | 是 | 主键,雪花或号段生成,禁止复用 | 普通 |
| stu_account_registration | StudentAccountRegistration | tenant_id | BIGINT | 是 | 集团/租户隔离字段,所有查询必须带租户上下文 | 普通 |
| stu_account_registration | StudentAccountRegistration | org_id | BIGINT | 否 | 所属组织,集团级或公共配置为空 | 普通 |
| stu_account_registration | StudentAccountRegistration | campus_id | BIGINT | 否 | 意向校区 | 普通 |
| stu_account_registration | StudentAccountRegistration | created_by | BIGINT | 是 | 创建人账号 ID | 普通 |
| stu_account_registration | StudentAccountRegistration | created_at | DATETIME | 是 | 创建时间 | 普通 |
| stu_account_registration | StudentAccountRegistration | updated_by | BIGINT | 否 | 最后更新人账号 ID | 普通 |
| stu_account_registration | StudentAccountRegistration | updated_at | DATETIME | 否 | 最后更新时间 | 普通 |
| stu_account_registration | StudentAccountRegistration | is_deleted | TINYINT | 是 | 是否已删除,0 未删除,1 已删除 | 普通 |
| stu_account_registration | StudentAccountRegistration | deleted_at | DATETIME | 否 | 删除时间,未删除为空 | 普通 |
| stu_account_registration | StudentAccountRegistration | deleted_by | BIGINT | 否 | 删除人账号 ID,未删除为空 | 普通 |
| stu_account_registration | StudentAccountRegistration | version | INT | 是 | 乐观锁版本号,写操作必须校验 | 普通 |
| stu_account_registration | StudentAccountRegistration | register_no | VARCHAR(64) | 是 | 注册单编号,唯一 | 普通 |
| stu_account_registration | StudentAccountRegistration | mobile | VARCHAR(32) | 是 | 注册手机号,敏感 | 敏感 |
| stu_account_registration | StudentAccountRegistration | sms_verify_id | VARCHAR(64) | 是 | 短信验证码校验流水,不存储明文验证码 | 普通 |
| stu_account_registration | StudentAccountRegistration | student_name | VARCHAR(64) | 否 | 注册时填写的学员姓名,敏感 | 敏感 |
| stu_account_registration | StudentAccountRegistration | password_set_status | VARCHAR(32) | 是 | 未设置/已设置/需重置 | 普通 |
| stu_account_registration | StudentAccountRegistration | agreement_version | VARCHAR(32) | 是 | 已勾选协议版本 | 普通 |
| stu_account_registration | StudentAccountRegistration | register_status | VARCHAR(32) | 是 | 待提交/审核中/已开通/已驳回/已取消 | 普通 |
| stu_account_registration | StudentAccountRegistration | linked_account_id | BIGINT | 否 | 开通后的学员账号 ID | 普通 |
| stu_session_selection | StudentSessionSelection | id | BIGINT | 是 | 主键,雪花或号段生成,禁止复用 | 普通 |
| stu_session_selection | StudentSessionSelection | tenant_id | BIGINT | 是 | 集团/租户隔离字段,所有查询必须带租户上下文 | 普通 |
| stu_session_selection | StudentSessionSelection | org_id | BIGINT | 否 | 所属组织,集团级或公共配置为空 | 普通 |
| stu_session_selection | StudentSessionSelection | campus_id | BIGINT | 否 | 所属校区,跨校区或总部级数据为空 | 普通 |
| stu_session_selection | StudentSessionSelection | created_by | BIGINT | 是 | 创建人账号 ID | 普通 |
| stu_session_selection | StudentSessionSelection | created_at | DATETIME | 是 | 创建时间 | 普通 |
| stu_session_selection | StudentSessionSelection | updated_by | BIGINT | 否 | 最后更新人账号 ID | 普通 |
| stu_session_selection | StudentSessionSelection | updated_at | DATETIME | 否 | 最后更新时间 | 普通 |
| stu_session_selection | StudentSessionSelection | is_deleted | TINYINT | 是 | 是否已删除,0 未删除,1 已删除 | 普通 |
| stu_session_selection | StudentSessionSelection | deleted_at | DATETIME | 否 | 删除时间,未删除为空 | 普通 |
| stu_session_selection | StudentSessionSelection | deleted_by | BIGINT | 否 | 删除人账号 ID,未删除为空 | 普通 |
| stu_session_selection | StudentSessionSelection | version | INT | 是 | 乐观锁版本号,写操作必须校验 | 普通 |
| stu_session_selection | StudentSessionSelection | account_id | BIGINT | 是 | 学员端账号 ID | 普通 |
| stu_session_selection | StudentSessionSelection | selected_student_id | BIGINT | 是 | 当前上课学员 ID | 普通 |
| stu_session_selection | StudentSessionSelection | source_channel | VARCHAR(32) | 是 | 小程序/App/H5/Tauri | 普通 |
| stu_session_selection | StudentSessionSelection | remember_last | TINYINT | 是 | 是否记住本次选择 | 普通 |
| stu_session_selection | StudentSessionSelection | selected_at | DATETIME | 是 | 选择时间 | 普通 |
| stu_session_selection | StudentSessionSelection | selection_status | VARCHAR(32) | 是 | 有效/权益过期/已切换/同步失败 | 普通 |
| stu_session_selection | StudentSessionSelection | last_sync_result | VARCHAR(512) | 否 | 最近一次端侧同步结果 | 普通 |
| stu_device_session | StudentDeviceSession | id | BIGINT | 是 | 主键,雪花或号段生成,禁止复用 | 普通 |
| stu_device_session | StudentDeviceSession | tenant_id | BIGINT | 是 | 集团/租户隔离字段,所有查询必须带租户上下文 | 普通 |
| stu_device_session | StudentDeviceSession | org_id | BIGINT | 否 | 所属组织,集团级或公共配置为空 | 普通 |
| stu_device_session | StudentDeviceSession | campus_id | BIGINT | 否 | 所属校区,跨校区或总部级数据为空 | 普通 |
| stu_device_session | StudentDeviceSession | created_by | BIGINT | 是 | 创建人账号 ID | 普通 |
| stu_device_session | StudentDeviceSession | created_at | DATETIME | 是 | 创建时间 | 普通 |
| stu_device_session | StudentDeviceSession | updated_by | BIGINT | 否 | 最后更新人账号 ID | 普通 |
| stu_device_session | StudentDeviceSession | updated_at | DATETIME | 否 | 最后更新时间 | 普通 |
| stu_device_session | StudentDeviceSession | is_deleted | TINYINT | 是 | 是否已删除,0 未删除,1 已删除 | 普通 |
| stu_device_session | StudentDeviceSession | deleted_at | DATETIME | 否 | 删除时间,未删除为空 | 普通 |
| stu_device_session | StudentDeviceSession | deleted_by | BIGINT | 否 | 删除人账号 ID,未删除为空 | 普通 |
| stu_device_session | StudentDeviceSession | version | INT | 是 | 乐观锁版本号,写操作必须校验 | 普通 |
| stu_device_session | StudentDeviceSession | account_id | BIGINT | 是 | 学员端账号 ID | 普通 |
| stu_device_session | StudentDeviceSession | student_id | BIGINT | 否 | 当前选择学员 ID | 普通 |
| stu_device_session | StudentDeviceSession | device_id | VARCHAR(128) | 是 | 端侧设备 ID | 普通 |
| stu_device_session | StudentDeviceSession | client_type | VARCHAR(32) | 是 | 微信小程序/iOS/iPadOS/Android/安卓平板/H5/Tauri-macOS/Tauri-Windows | 普通 |
| stu_device_session | StudentDeviceSession | app_version | VARCHAR(32) | 否 | 客户端版本号 | 普通 |
| stu_device_session | StudentDeviceSession | login_at | DATETIME | 是 | 登录时间 | 普通 |
| stu_device_session | StudentDeviceSession | last_active_at | DATETIME | 否 | 最近活跃时间 | 普通 |
| stu_device_session | StudentDeviceSession | session_status | VARCHAR(32) | 是 | 有效/过期/踢下线/设备超限 | 普通 |
| 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 | 否 | 学习画像快照 | 普通 |
| stu_learning_task | LearningTask | id | BIGINT | 是 | 主键,雪花或号段生成,禁止复用 | 普通 |
| stu_learning_task | LearningTask | tenant_id | BIGINT | 是 | 集团/租户隔离字段,所有查询必须带租户上下文 | 普通 |
| stu_learning_task | LearningTask | org_id | BIGINT | 否 | 所属组织,集团级或公共配置为空 | 普通 |
| stu_learning_task | LearningTask | campus_id | BIGINT | 否 | 所属校区,跨校区或总部级数据为空 | 普通 |
| stu_learning_task | LearningTask | created_by | BIGINT | 是 | 创建人账号 ID | 普通 |
| stu_learning_task | LearningTask | created_at | DATETIME | 是 | 创建时间 | 普通 |
| stu_learning_task | LearningTask | updated_by | BIGINT | 否 | 最后更新人账号 ID | 普通 |
| stu_learning_task | LearningTask | updated_at | DATETIME | 否 | 最后更新时间 | 普通 |
| stu_learning_task | LearningTask | is_deleted | TINYINT | 是 | 是否已删除,0 未删除,1 已删除 | 普通 |
| stu_learning_task | LearningTask | deleted_at | DATETIME | 否 | 删除时间,未删除为空 | 普通 |
| stu_learning_task | LearningTask | deleted_by | BIGINT | 否 | 删除人账号 ID,未删除为空 | 普通 |
| stu_learning_task | LearningTask | version | INT | 是 | 乐观锁版本号,写操作必须校验 | 普通 |
| stu_learning_task | LearningTask | task_no | VARCHAR(64) | 是 | 任务编号,唯一 | 普通 |
| stu_learning_task | LearningTask | student_id | BIGINT | 是 | 学员 ID | 普通 |
| stu_learning_task | LearningTask | task_type | VARCHAR(32) | 是 | 课程/作业/测评/直播/回放 | 普通 |
| stu_learning_task | LearningTask | biz_id | BIGINT | 是 | 业务 ID | 普通 |
| stu_learning_task | LearningTask | deadline_at | DATETIME | 否 | 截止时间 | 普通 |
| stu_learning_task | LearningTask | complete_status | VARCHAR(32) | 是 | 未开始/进行中/已完成/逾期 | 普通 |
| edu_homework_draft | HomeworkDraft | id | BIGINT | 是 | 主键,雪花或号段生成,禁止复用 | 普通 |
| edu_homework_draft | HomeworkDraft | tenant_id | BIGINT | 是 | 集团/租户隔离字段,所有查询必须带租户上下文 | 普通 |
| edu_homework_draft | HomeworkDraft | org_id | BIGINT | 否 | 所属组织,集团级或公共配置为空 | 普通 |
| edu_homework_draft | HomeworkDraft | campus_id | BIGINT | 否 | 所属校区,跨校区或总部级数据为空 | 普通 |
| edu_homework_draft | HomeworkDraft | created_by | BIGINT | 是 | 创建人账号 ID | 普通 |
| edu_homework_draft | HomeworkDraft | created_at | DATETIME | 是 | 创建时间 | 普通 |
| edu_homework_draft | HomeworkDraft | updated_by | BIGINT | 否 | 最后更新人账号 ID | 普通 |
| edu_homework_draft | HomeworkDraft | updated_at | DATETIME | 否 | 最后更新时间 | 普通 |
| edu_homework_draft | HomeworkDraft | is_deleted | TINYINT | 是 | 是否已删除,0 未删除,1 已删除 | 普通 |
| edu_homework_draft | HomeworkDraft | deleted_at | DATETIME | 否 | 删除时间,未删除为空 | 普通 |
| edu_homework_draft | HomeworkDraft | deleted_by | BIGINT | 否 | 删除人账号 ID,未删除为空 | 普通 |
| edu_homework_draft | HomeworkDraft | version | INT | 是 | 乐观锁版本号,写操作必须校验 | 普通 |
| edu_homework_draft | HomeworkDraft | draft_no | VARCHAR(64) | 是 | 草稿编号,唯一 | 普通 |
| edu_homework_draft | HomeworkDraft | homework_id | BIGINT | 是 | 作业 ID | 普通 |
| edu_homework_draft | HomeworkDraft | student_id | BIGINT | 是 | 学员 ID | 普通 |
| edu_homework_draft | HomeworkDraft | draft_status | VARCHAR(32) | 是 | 草稿中/已提交/已删除/已过期/冲突待处理 | 普通 |
| edu_homework_draft | HomeworkDraft | answer_snapshot | JSON | 是 | 答案草稿 | 普通 |
| edu_homework_draft | HomeworkDraft | attachment_temp_ids | JSON | 否 | 临时附件 | 普通 |
| edu_homework_draft | HomeworkDraft | auto_save_version | INT | 是 | 自动保存版本 | 普通 |
| edu_homework_draft | HomeworkDraft | last_saved_at | DATETIME | 是 | 最近保存时间 | 普通 |
| edu_homework_draft | HomeworkDraft | expire_at | DATETIME | 否 | 草稿过期时间 | 普通 |
| edu_homework_draft | HomeworkDraft | client_type | VARCHAR(32) | 否 | 最近保存端 | 普通 |
| edu_homework_draft | HomeworkDraft | delete_reason | VARCHAR(255) | 否 | 删除或过期原因 | 普通 |
| edu_homework_draft | HomeworkDraft | conflict_status | VARCHAR(32) | 是 | 无冲突/有冲突/已合并 | 普通 |
| edu_homework_submit | HomeworkSubmit | id | BIGINT | 是 | 主键,雪花或号段生成,禁止复用 | 普通 |
| edu_homework_submit | HomeworkSubmit | tenant_id | BIGINT | 是 | 集团/租户隔离字段,所有查询必须带租户上下文 | 普通 |
| edu_homework_submit | HomeworkSubmit | org_id | BIGINT | 否 | 所属组织,集团级或公共配置为空 | 普通 |
| edu_homework_submit | HomeworkSubmit | campus_id | BIGINT | 否 | 所属校区,跨校区或总部级数据为空 | 普通 |
| edu_homework_submit | HomeworkSubmit | created_by | BIGINT | 是 | 创建人账号 ID | 普通 |
| edu_homework_submit | HomeworkSubmit | created_at | DATETIME | 是 | 创建时间 | 普通 |
| edu_homework_submit | HomeworkSubmit | updated_by | BIGINT | 否 | 最后更新人账号 ID | 普通 |
| edu_homework_submit | HomeworkSubmit | updated_at | DATETIME | 否 | 最后更新时间 | 普通 |
| edu_homework_submit | HomeworkSubmit | is_deleted | TINYINT | 是 | 是否已删除,0 未删除,1 已删除 | 普通 |
| edu_homework_submit | HomeworkSubmit | deleted_at | DATETIME | 否 | 删除时间,未删除为空 | 普通 |
| edu_homework_submit | HomeworkSubmit | deleted_by | BIGINT | 否 | 删除人账号 ID,未删除为空 | 普通 |
| edu_homework_submit | HomeworkSubmit | version | INT | 是 | 乐观锁版本号,写操作必须校验 | 普通 |
| edu_homework_submit | HomeworkSubmit | submit_no | VARCHAR(64) | 是 | 提交编号,唯一 | 普通 |
| edu_homework_submit | HomeworkSubmit | homework_id | BIGINT | 是 | 作业 ID | 普通 |
| edu_homework_submit | HomeworkSubmit | student_id | BIGINT | 是 | 学员 ID | 普通 |
| edu_homework_submit | HomeworkSubmit | answer_payload | JSON | 是 | 最终答案 | 普通 |
| edu_homework_submit | HomeworkSubmit | submit_status | VARCHAR(32) | 是 | 待提交/已提交/已批改/需订正 | 普通 |
| edu_homework_submit | HomeworkSubmit | submitted_at | DATETIME | 否 | 提交时间 | 普通 |
| stu_wrong_question_practice | WrongQuestionPractice | id | BIGINT | 是 | 主键,雪花或号段生成,禁止复用 | 普通 |
| stu_wrong_question_practice | WrongQuestionPractice | tenant_id | BIGINT | 是 | 集团/租户隔离字段,所有查询必须带租户上下文 | 普通 |
| stu_wrong_question_practice | WrongQuestionPractice | org_id | BIGINT | 否 | 所属组织,集团级或公共配置为空 | 普通 |
| stu_wrong_question_practice | WrongQuestionPractice | campus_id | BIGINT | 否 | 所属校区,跨校区或总部级数据为空 | 普通 |
| stu_wrong_question_practice | WrongQuestionPractice | created_by | BIGINT | 是 | 创建人账号 ID | 普通 |
| stu_wrong_question_practice | WrongQuestionPractice | created_at | DATETIME | 是 | 创建时间 | 普通 |
| stu_wrong_question_practice | WrongQuestionPractice | updated_by | BIGINT | 否 | 最后更新人账号 ID | 普通 |
| stu_wrong_question_practice | WrongQuestionPractice | updated_at | DATETIME | 否 | 最后更新时间 | 普通 |
| stu_wrong_question_practice | WrongQuestionPractice | is_deleted | TINYINT | 是 | 是否已删除,0 未删除,1 已删除 | 普通 |
| stu_wrong_question_practice | WrongQuestionPractice | deleted_at | DATETIME | 否 | 删除时间,未删除为空 | 普通 |
| stu_wrong_question_practice | WrongQuestionPractice | deleted_by | BIGINT | 否 | 删除人账号 ID,未删除为空 | 普通 |
| stu_wrong_question_practice | WrongQuestionPractice | version | INT | 是 | 乐观锁版本号,写操作必须校验 | 普通 |
| stu_wrong_question_practice | WrongQuestionPractice | practice_no | VARCHAR(64) | 是 | 复练任务编号,唯一 | 普通 |
| stu_wrong_question_practice | WrongQuestionPractice | student_id | BIGINT | 是 | 学员 ID | 普通 |
| stu_wrong_question_practice | WrongQuestionPractice | course_id | BIGINT | 否 | 课程 ID | 普通 |
| stu_wrong_question_practice | WrongQuestionPractice | source_question_ids | JSON | 是 | 来源错题 ID 列表 | 普通 |
| stu_wrong_question_practice | WrongQuestionPractice | practice_mode | VARCHAR(32) | 是 | 一键 5 题复练/错题重组测试/知识点专项 | 普通 |
| stu_wrong_question_practice | WrongQuestionPractice | question_count | INT | 是 | 题目数量 | 普通 |
| stu_wrong_question_practice | WrongQuestionPractice | practice_status | VARCHAR(32) | 是 | 待练习/进行中/已完成/生成失败 | 普通 |
| stu_wrong_question_practice | WrongQuestionPractice | result_snapshot | JSON | 否 | 练习结果快照 | 普通 |
| stu_portfolio_item | StudentPortfolioItem | id | BIGINT | 是 | 主键,雪花或号段生成,禁止复用 | 普通 |
| stu_portfolio_item | StudentPortfolioItem | tenant_id | BIGINT | 是 | 集团/租户隔离字段,所有查询必须带租户上下文 | 普通 |
| stu_portfolio_item | StudentPortfolioItem | org_id | BIGINT | 否 | 所属组织,集团级或公共配置为空 | 普通 |
| stu_portfolio_item | StudentPortfolioItem | campus_id | BIGINT | 否 | 所属校区,跨校区或总部级数据为空 | 普通 |
| stu_portfolio_item | StudentPortfolioItem | created_by | BIGINT | 是 | 创建人账号 ID | 普通 |
| stu_portfolio_item | StudentPortfolioItem | created_at | DATETIME | 是 | 创建时间 | 普通 |
| stu_portfolio_item | StudentPortfolioItem | updated_by | BIGINT | 否 | 最后更新人账号 ID | 普通 |
| stu_portfolio_item | StudentPortfolioItem | updated_at | DATETIME | 否 | 最后更新时间 | 普通 |
| stu_portfolio_item | StudentPortfolioItem | is_deleted | TINYINT | 是 | 是否已删除,0 未删除,1 已删除 | 普通 |
| stu_portfolio_item | StudentPortfolioItem | deleted_at | DATETIME | 否 | 删除时间,未删除为空 | 普通 |
| stu_portfolio_item | StudentPortfolioItem | deleted_by | BIGINT | 否 | 删除人账号 ID,未删除为空 | 普通 |
| stu_portfolio_item | StudentPortfolioItem | version | INT | 是 | 乐观锁版本号,写操作必须校验 | 普通 |
| stu_portfolio_item | StudentPortfolioItem | student_id | BIGINT | 是 | 学员 ID | 普通 |
| stu_portfolio_item | StudentPortfolioItem | course_id | BIGINT | 否 | 课程 ID | 普通 |
| stu_portfolio_item | StudentPortfolioItem | item_type | VARCHAR(32) | 是 | 图片/音频/视频/作业/测评报告/课堂作品 | 普通 |
| stu_portfolio_item | StudentPortfolioItem | title | VARCHAR(128) | 是 | 作品标题 | 普通 |
| stu_portfolio_item | StudentPortfolioItem | file_id | BIGINT | 否 | 文件中心文件 ID | 普通 |
| stu_portfolio_item | StudentPortfolioItem | media_type | VARCHAR(32) | 否 | 图片/音频/视频/PDF/链接 | 普通 |
| stu_portfolio_item | StudentPortfolioItem | transcode_status | VARCHAR(32) | 否 | 无需转码/转码中/成功/失败 | 普通 |
| stu_portfolio_item | StudentPortfolioItem | teacher_comment_id | BIGINT | 否 | 关联教师点评 ID | 普通 |
| stu_portfolio_item | StudentPortfolioItem | share_status | VARCHAR(32) | 是 | 不可分享/可分享/已分享/分享失效 | 普通 |
| pts_account | PointsAccount | id | BIGINT | 是 | 主键,雪花或号段生成,禁止复用 | 普通 |
| pts_account | PointsAccount | tenant_id | BIGINT | 是 | 集团/租户隔离字段,所有查询必须带租户上下文 | 普通 |
| pts_account | PointsAccount | org_id | BIGINT | 否 | 所属组织,集团级或公共配置为空 | 普通 |
| pts_account | PointsAccount | campus_id | BIGINT | 否 | 所属校区,跨校区或总部级数据为空 | 普通 |
| pts_account | PointsAccount | created_by | BIGINT | 是 | 创建人账号 ID | 普通 |
| pts_account | PointsAccount | created_at | DATETIME | 是 | 创建时间 | 普通 |
| pts_account | PointsAccount | updated_by | BIGINT | 否 | 最后更新人账号 ID | 普通 |
| pts_account | PointsAccount | updated_at | DATETIME | 否 | 最后更新时间 | 普通 |
| pts_account | PointsAccount | is_deleted | TINYINT | 是 | 是否已删除,0 未删除,1 已删除 | 普通 |
| pts_account | PointsAccount | deleted_at | DATETIME | 否 | 删除时间,未删除为空 | 普通 |
| pts_account | PointsAccount | deleted_by | BIGINT | 否 | 删除人账号 ID,未删除为空 | 普通 |
| pts_account | PointsAccount | version | INT | 是 | 乐观锁版本号,写操作必须校验 | 普通 |
| pts_account | PointsAccount | student_id | BIGINT | 是 | 学员 ID | 普通 |
| pts_account | PointsAccount | available_points | INT | 是 | 可用积分 | 普通 |
| pts_account | PointsAccount | frozen_points | INT | 是 | 冻结积分 | 普通 |
| pts_account | PointsAccount | total_earned_points | INT | 是 | 累计获得积分 | 普通 |
| pts_account | PointsAccount | total_used_points | INT | 是 | 累计消耗积分 | 普通 |
| pts_lock | PointsLock | id | BIGINT | 是 | 主键,雪花或号段生成,禁止复用 | 普通 |
| pts_lock | PointsLock | tenant_id | BIGINT | 是 | 集团/租户隔离字段,所有查询必须带租户上下文 | 普通 |
| pts_lock | PointsLock | org_id | BIGINT | 否 | 所属组织,集团级或公共配置为空 | 普通 |
| pts_lock | PointsLock | campus_id | BIGINT | 否 | 所属校区,跨校区或总部级数据为空 | 普通 |
| pts_lock | PointsLock | created_by | BIGINT | 是 | 创建人账号 ID | 普通 |
| pts_lock | PointsLock | created_at | DATETIME | 是 | 创建时间 | 普通 |
| pts_lock | PointsLock | updated_by | BIGINT | 否 | 最后更新人账号 ID | 普通 |
| pts_lock | PointsLock | updated_at | DATETIME | 否 | 最后更新时间 | 普通 |
| pts_lock | PointsLock | is_deleted | TINYINT | 是 | 是否已删除,0 未删除,1 已删除 | 普通 |
| pts_lock | PointsLock | deleted_at | DATETIME | 否 | 删除时间,未删除为空 | 普通 |
| pts_lock | PointsLock | deleted_by | BIGINT | 否 | 删除人账号 ID,未删除为空 | 普通 |
| pts_lock | PointsLock | version | INT | 是 | 乐观锁版本号,写操作必须校验 | 普通 |
| pts_lock | PointsLock | lock_no | VARCHAR(64) | 是 | 锁库编号,唯一 | 普通 |
| pts_lock | PointsLock | student_id | BIGINT | 是 | 学员 ID | 普通 |
| pts_lock | PointsLock | gift_sku_id | BIGINT | 是 | 礼品 SKU ID,关联物料库存 | 普通 |
| pts_lock | PointsLock | quantity | INT | 是 | 锁定数量 | 普通 |
| pts_lock | PointsLock | points_amount | INT | 是 | 锁定积分 | 普通 |
| pts_lock | PointsLock | lock_status | VARCHAR(32) | 是 | 锁定中/已确认/已释放/已过期 | 普通 |
| pts_lock | PointsLock | expire_at | DATETIME | 是 | 锁库过期时间 | 普通 |
| pts_order | PointsOrder | id | BIGINT | 是 | 主键,雪花或号段生成,禁止复用 | 普通 |
| pts_order | PointsOrder | tenant_id | BIGINT | 是 | 集团/租户隔离字段,所有查询必须带租户上下文 | 普通 |
| pts_order | PointsOrder | org_id | BIGINT | 否 | 所属组织,集团级或公共配置为空 | 普通 |
| pts_order | PointsOrder | campus_id | BIGINT | 否 | 所属校区,跨校区或总部级数据为空 | 普通 |
| pts_order | PointsOrder | created_by | BIGINT | 是 | 创建人账号 ID | 普通 |
| pts_order | PointsOrder | created_at | DATETIME | 是 | 创建时间 | 普通 |
| pts_order | PointsOrder | updated_by | BIGINT | 否 | 最后更新人账号 ID | 普通 |
| pts_order | PointsOrder | updated_at | DATETIME | 否 | 最后更新时间 | 普通 |
| pts_order | PointsOrder | is_deleted | TINYINT | 是 | 是否已删除,0 未删除,1 已删除 | 普通 |
| pts_order | PointsOrder | deleted_at | DATETIME | 否 | 删除时间,未删除为空 | 普通 |
| pts_order | PointsOrder | deleted_by | BIGINT | 否 | 删除人账号 ID,未删除为空 | 普通 |
| pts_order | PointsOrder | version | INT | 是 | 乐观锁版本号,写操作必须校验 | 普通 |
| pts_order | PointsOrder | order_no | VARCHAR(64) | 是 | 积分订单编号,唯一 | 普通 |
| pts_order | PointsOrder | student_id | BIGINT | 是 | 学员 ID | 普通 |
| pts_order | PointsOrder | gift_sku_id | BIGINT | 是 | 礼品 SKU ID,关联物料 | 普通 |
| pts_order | PointsOrder | lock_id | BIGINT | 否 | 积分锁库记录 ID | 普通 |
| pts_order | PointsOrder | points_amount | INT | 是 | 消耗积分 | 普通 |
| pts_order | PointsOrder | write_off_code_id | BIGINT | 否 | 核销码 ID | 普通 |
| pts_order | PointsOrder | order_status | VARCHAR(32) | 是 | 待领取/已核销/已取消/售后中 | 普通 |
| pts_write_off_code | PointsWriteOffCode | id | BIGINT | 是 | 主键,雪花或号段生成,禁止复用 | 普通 |
| pts_write_off_code | PointsWriteOffCode | tenant_id | BIGINT | 是 | 集团/租户隔离字段,所有查询必须带租户上下文 | 普通 |
| pts_write_off_code | PointsWriteOffCode | org_id | BIGINT | 否 | 所属组织,集团级或公共配置为空 | 普通 |
| pts_write_off_code | PointsWriteOffCode | campus_id | BIGINT | 否 | 所属校区,跨校区或总部级数据为空 | 普通 |
| pts_write_off_code | PointsWriteOffCode | created_by | BIGINT | 是 | 创建人账号 ID | 普通 |
| pts_write_off_code | PointsWriteOffCode | created_at | DATETIME | 是 | 创建时间 | 普通 |
| pts_write_off_code | PointsWriteOffCode | updated_by | BIGINT | 否 | 最后更新人账号 ID | 普通 |
| pts_write_off_code | PointsWriteOffCode | updated_at | DATETIME | 否 | 最后更新时间 | 普通 |
| pts_write_off_code | PointsWriteOffCode | is_deleted | TINYINT | 是 | 是否已删除,0 未删除,1 已删除 | 普通 |
| pts_write_off_code | PointsWriteOffCode | deleted_at | DATETIME | 否 | 删除时间,未删除为空 | 普通 |
| pts_write_off_code | PointsWriteOffCode | deleted_by | BIGINT | 否 | 删除人账号 ID,未删除为空 | 普通 |
| pts_write_off_code | PointsWriteOffCode | version | INT | 是 | 乐观锁版本号,写操作必须校验 | 普通 |
| pts_write_off_code | PointsWriteOffCode | points_order_id | BIGINT | 是 | 积分兑换订单 ID | 普通 |
| pts_write_off_code | PointsWriteOffCode | write_off_code | VARCHAR(64) | 是 | 核销码,唯一 | 普通 |
| pts_write_off_code | PointsWriteOffCode | code_type | VARCHAR(32) | 是 | 二维码/条形码/数字码 | 普通 |
| pts_write_off_code | PointsWriteOffCode | expire_at | DATETIME | 是 | 核销码有效期 | 普通 |
| pts_write_off_code | PointsWriteOffCode | refresh_count | INT | 是 | 刷新次数 | 普通 |
| pts_write_off_code | PointsWriteOffCode | write_off_status | VARCHAR(32) | 是 | 待核销/已核销/已过期/已作废 | 普通 |
| pts_write_off_code | PointsWriteOffCode | brightness_hint | TINYINT | 是 | 端侧是否建议自动调高亮度 | 普通 |
| pts_after_sales | PointsRedemptionAfterSales | id | BIGINT | 是 | 主键,雪花或号段生成,禁止复用 | 普通 |
| pts_after_sales | PointsRedemptionAfterSales | tenant_id | BIGINT | 是 | 集团/租户隔离字段,所有查询必须带租户上下文 | 普通 |
| pts_after_sales | PointsRedemptionAfterSales | org_id | BIGINT | 否 | 所属组织,集团级或公共配置为空 | 普通 |
| pts_after_sales | PointsRedemptionAfterSales | campus_id | BIGINT | 否 | 所属校区,跨校区或总部级数据为空 | 普通 |
| pts_after_sales | PointsRedemptionAfterSales | created_by | BIGINT | 是 | 创建人账号 ID | 普通 |
| pts_after_sales | PointsRedemptionAfterSales | created_at | DATETIME | 是 | 创建时间 | 普通 |
| pts_after_sales | PointsRedemptionAfterSales | updated_by | BIGINT | 否 | 最后更新人账号 ID | 普通 |
| pts_after_sales | PointsRedemptionAfterSales | updated_at | DATETIME | 否 | 最后更新时间 | 普通 |
| pts_after_sales | PointsRedemptionAfterSales | is_deleted | TINYINT | 是 | 是否已删除,0 未删除,1 已删除 | 普通 |
| pts_after_sales | PointsRedemptionAfterSales | deleted_at | DATETIME | 否 | 删除时间,未删除为空 | 普通 |
| pts_after_sales | PointsRedemptionAfterSales | deleted_by | BIGINT | 否 | 删除人账号 ID,未删除为空 | 普通 |
| pts_after_sales | PointsRedemptionAfterSales | version | INT | 是 | 乐观锁版本号,写操作必须校验 | 普通 |
| pts_after_sales | PointsRedemptionAfterSales | after_sales_no | VARCHAR(64) | 是 | 售后编号,唯一 | 普通 |
| pts_after_sales | PointsRedemptionAfterSales | points_order_id | BIGINT | 是 | 积分订单 ID | 普通 |
| pts_after_sales | PointsRedemptionAfterSales | request_type | VARCHAR(32) | 是 | 取消/退积分/补发/异常核销 | 普通 |
| pts_after_sales | PointsRedemptionAfterSales | request_reason | VARCHAR(512) | 是 | 申请原因 | 普通 |
| pts_after_sales | PointsRedemptionAfterSales | handle_result | VARCHAR(512) | 否 | 处理结果 | 普通 |
| pts_after_sales | PointsRedemptionAfterSales | handle_status | VARCHAR(32) | 是 | 待处理/已处理/已驳回 | 普通 |
| stu_desktop_sync_task | DesktopSyncTask | id | BIGINT | 是 | 主键,雪花或号段生成,禁止复用 | 普通 |
| stu_desktop_sync_task | DesktopSyncTask | tenant_id | BIGINT | 是 | 集团/租户隔离字段,所有查询必须带租户上下文 | 普通 |
| stu_desktop_sync_task | DesktopSyncTask | org_id | BIGINT | 否 | 所属组织,集团级或公共配置为空 | 普通 |
| stu_desktop_sync_task | DesktopSyncTask | campus_id | BIGINT | 否 | 所属校区,跨校区或总部级数据为空 | 普通 |
| stu_desktop_sync_task | DesktopSyncTask | created_by | BIGINT | 是 | 创建人账号 ID | 普通 |
| stu_desktop_sync_task | DesktopSyncTask | created_at | DATETIME | 是 | 创建时间 | 普通 |
| stu_desktop_sync_task | DesktopSyncTask | updated_by | BIGINT | 否 | 最后更新人账号 ID | 普通 |
| stu_desktop_sync_task | DesktopSyncTask | updated_at | DATETIME | 否 | 最后更新时间 | 普通 |
| stu_desktop_sync_task | DesktopSyncTask | is_deleted | TINYINT | 是 | 是否已删除,0 未删除,1 已删除 | 普通 |
| stu_desktop_sync_task | DesktopSyncTask | deleted_at | DATETIME | 否 | 删除时间,未删除为空 | 普通 |
| stu_desktop_sync_task | DesktopSyncTask | deleted_by | BIGINT | 否 | 删除人账号 ID,未删除为空 | 普通 |
| stu_desktop_sync_task | DesktopSyncTask | version | INT | 是 | 乐观锁版本号,写操作必须校验 | 普通 |
| stu_desktop_sync_task | DesktopSyncTask | sync_batch_no | VARCHAR(64) | 是 | 同步批次号,唯一 | 普通 |
| stu_desktop_sync_task | DesktopSyncTask | student_id | BIGINT | 是 | 学员 ID | 普通 |
| stu_desktop_sync_task | DesktopSyncTask | device_id | VARCHAR(128) | 是 | Tauri 桌面端设备 ID | 普通 |
| stu_desktop_sync_task | DesktopSyncTask | sync_payload | JSON | 是 | 学习进度、播放位置、作业草稿等同步内容 | 普通 |
| stu_desktop_sync_task | DesktopSyncTask | retry_count | INT | 是 | 已重试次数 | 普通 |
| stu_desktop_sync_task | DesktopSyncTask | next_retry_at | DATETIME | 否 | 下次静默重试时间 | 普通 |
| stu_desktop_sync_task | DesktopSyncTask | strong_prompt | TINYINT | 是 | 是否已触发强提示 | 普通 |
| stu_desktop_sync_task | DesktopSyncTask | sync_status | VARCHAR(32) | 是 | 待同步/同步中/成功/失败/冲突 | 普通 |
| stu_desktop_sync_task | DesktopSyncTask | failed_reason | VARCHAR(512) | 否 | 失败原因 | 普通 |
数据表与对象映射
| 表名 | 对象 | 用途 | 完整字段 | 索引建议 |
|---|---|---|---|---|
| stu_account | StudentAccount | 学员端独立账号 | 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,必填)、account_no(VARCHAR(64),必填)、login_name(VARCHAR(64),必填)、student_id(BIGINT)、account_type(VARCHAR(32),必填)、mobile(VARCHAR(32))、wechat_openid(VARCHAR(128))、password_hash(VARCHAR(255))、login_status(VARCHAR(32),必填)、activated_at(DATETIME)、cancel_request_status(VARCHAR(32))、last_login_at(DATETIME) | uk_account_no、uk_login_name、idx_student、idx_mobile_status |
| stu_account_registration | StudentAccountRegistration | 非学员手机号自主注册记录 | 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,必填)、register_no(VARCHAR(64),必填)、mobile(VARCHAR(32),必填)、sms_verify_id(VARCHAR(64),必填)、student_name(VARCHAR(64))、password_set_status(VARCHAR(32),必填)、agreement_version(VARCHAR(32),必填)、register_status(VARCHAR(32),必填)、linked_account_id(BIGINT) | uk_register_no、idx_mobile_status |
| stu_session_selection | StudentSessionSelection | 当前上课学员选择记录 | 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,必填)、account_id(BIGINT,必填)、selected_student_id(BIGINT,必填)、source_channel(VARCHAR(32),必填)、remember_last(TINYINT,必填)、selected_at(DATETIME,必填)、selection_status(VARCHAR(32),必填)、last_sync_result(VARCHAR(512)) | idx_account_status、idx_selected_student |
| stu_device_session | StudentDeviceSession | 学员端设备登录会话 | 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,必填)、account_id(BIGINT,必填)、student_id(BIGINT)、device_id(VARCHAR(128),必填)、client_type(VARCHAR(32),必填)、app_version(VARCHAR(32))、login_at(DATETIME,必填)、last_active_at(DATETIME)、session_status(VARCHAR(32),必填) | idx_account_client、uk_device_active |
| stu_learning_profile | LearningProfile | 学员学习进度档案 | 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,必填)、student_id(BIGINT,必填)、course_id(BIGINT,必填)、progress_percent(DECIMAL(6,2),必填)、ability_tags(JSON)、last_active_at(DATETIME)、profile_snapshot(JSON) | uk_student_course、idx_progress |
| stu_learning_task | LearningTask | 学员学习任务 | 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,必填)、task_no(VARCHAR(64),必填)、student_id(BIGINT,必填)、task_type(VARCHAR(32),必填)、biz_id(BIGINT,必填)、deadline_at(DATETIME)、complete_status(VARCHAR(32),必填) | uk_task_no、idx_student_status |
| edu_homework_draft | HomeworkDraft | 学员作业草稿箱 | 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,必填)、draft_no(VARCHAR(64),必填)、homework_id(BIGINT,必填)、student_id(BIGINT,必填)、draft_status(VARCHAR(32),必填)、answer_snapshot(JSON,必填)、attachment_temp_ids(JSON)、auto_save_version(INT,必填)、last_saved_at(DATETIME,必填)、expire_at(DATETIME)、client_type(VARCHAR(32))、delete_reason(VARCHAR(255))、conflict_status(VARCHAR(32),必填) | uk_homework_student、idx_student_status、idx_expire |
| edu_homework_submit | HomeworkSubmit | 学员作业提交 | 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,必填)、submit_no(VARCHAR(64),必填)、homework_id(BIGINT,必填)、student_id(BIGINT,必填)、answer_payload(JSON,必填)、submit_status(VARCHAR(32),必填)、submitted_at(DATETIME) | uk_submit_no、idx_homework_student |
| stu_wrong_question_practice | WrongQuestionPractice | 错题复练与重组测试 | 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,必填)、practice_no(VARCHAR(64),必填)、student_id(BIGINT,必填)、course_id(BIGINT)、source_question_ids(JSON,必填)、practice_mode(VARCHAR(32),必填)、question_count(INT,必填)、practice_status(VARCHAR(32),必填)、result_snapshot(JSON) | uk_practice_no、idx_student_status |
| stu_portfolio_item | StudentPortfolioItem | 学习档案作品集 | 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,必填)、student_id(BIGINT,必填)、course_id(BIGINT)、item_type(VARCHAR(32),必填)、title(VARCHAR(128),必填)、file_id(BIGINT)、media_type(VARCHAR(32))、transcode_status(VARCHAR(32))、teacher_comment_id(BIGINT)、share_status(VARCHAR(32),必填) | idx_student_type、idx_course |
| pts_account | PointsAccount | 学员积分账户 | 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,必填)、student_id(BIGINT,必填)、available_points(INT,必填)、frozen_points(INT,必填)、total_earned_points(INT,必填)、total_used_points(INT,必填) | uk_student |
| pts_lock | PointsLock | 积分兑换锁库记录 | 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,必填)、lock_no(VARCHAR(64),必填)、student_id(BIGINT,必填)、gift_sku_id(BIGINT,必填)、quantity(INT,必填)、points_amount(INT,必填)、lock_status(VARCHAR(32),必填)、expire_at(DATETIME,必填) | uk_lock_no、idx_student_status、idx_expire |
| pts_order | PointsOrder | 积分商城兑换订单 | 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,必填)、order_no(VARCHAR(64),必填)、student_id(BIGINT,必填)、gift_sku_id(BIGINT,必填)、lock_id(BIGINT)、points_amount(INT,必填)、write_off_code_id(BIGINT)、order_status(VARCHAR(32),必填) | uk_order_no、idx_student_status、idx_lock |
| pts_write_off_code | PointsWriteOffCode | 积分兑换线下核销码 | 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,必填)、points_order_id(BIGINT,必填)、write_off_code(VARCHAR(64),必填)、code_type(VARCHAR(32),必填)、expire_at(DATETIME,必填)、refresh_count(INT,必填)、write_off_status(VARCHAR(32),必填)、brightness_hint(TINYINT,必填) | uk_write_off_code、idx_order_status、idx_expire |
| pts_after_sales | PointsRedemptionAfterSales | 积分兑换售后 | 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,必填)、after_sales_no(VARCHAR(64),必填)、points_order_id(BIGINT,必填)、request_type(VARCHAR(32),必填)、request_reason(VARCHAR(512),必填)、handle_result(VARCHAR(512))、handle_status(VARCHAR(32),必填) | uk_after_sales_no、idx_order_status |
| stu_desktop_sync_task | DesktopSyncTask | 学员桌面端学习同步任务 | 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,必填)、sync_batch_no(VARCHAR(64),必填)、student_id(BIGINT,必填)、device_id(VARCHAR(128),必填)、sync_payload(JSON,必填)、retry_count(INT,必填)、next_retry_at(DATETIME)、strong_prompt(TINYINT,必填)、sync_status(VARCHAR(32),必填)、failed_reason(VARCHAR(512)) | uk_sync_batch_no、idx_student_status、idx_retry |
12 · 状态机与业务规则
约束业务对象如何流转、何时可编辑、何时触发审批
原型需要把状态标签、可操作按钮和禁用原因展示清楚。| 对象 | 状态 | 触发与说明 |
|---|---|---|
| 学员账号登录 | 启动检查 -> 未登录 -> 学员账号待激活 -> 手机号注册中 -> 登录中 -> 登录成功 -> 登录失败 -> 账号锁定 -> 注销申请中 | 启动页、登录页、注册页、找回密码和账号注销申请的端侧状态 |
| 当前上课学员选择 | 无需选择 -> 待选择 -> 已选择 -> 权益过期 -> 学员未激活 -> 同步失败 -> 无绑定学员 | 同一手机号或账号关联多个学员时,学习记录、作业、积分和直播签到按当前 studentId 隔离 |
| 课程权益访问 | 有权益 -> 权益不足 -> 合同到期 -> 课时耗尽 -> 资源过期 -> 资源下架 -> 播放鉴权失败 | 课程、资源、回放、直播和补看任务统一走权益鉴权 |
| 学员直播连麦 | 未申请 -> 已举手排队 -> 教师邀请中 -> 连接中 -> 上麦中 -> 已被静音 -> 全班发言中 -> 已下麦 -> 已拒绝 -> 已取消 -> 已超时 -> 连接失败 | 学员端展示全部连麦状态,教师端处理队列和座席 |
| 作业草稿 | 无草稿 -> 自动保存中 -> 已保存 -> 保存失败 -> 本地草稿 -> 云端草稿 -> 版本冲突 -> 已删除 -> 已过期 -> 已提交关闭 | 作业草稿支持自动保存、手动保存、恢复、删除、冲突处理和提交后关闭 |
| 测评与错题复练 | 待考试 -> 考试中 -> 自动交卷 -> 已提交 -> 报告生成中 -> 报告失败 -> 待复练 -> 复练中 -> 已掌握 -> 已移出错题本 | 测评报告、错题解析、一键 5 题复练和错题重组测试闭环 |
| 学习作品预览 | 无作品 -> 可预览 -> 转码中 -> 播放中 -> 加载失败 -> 资源过期 -> 无权限 | 图片、录音、视频和教师点评在学习档案轻量画板展示 |
| 积分兑换 | 待锁库 -> 锁库中 -> 锁库成功待确认 -> 兑换成功 -> 库存不足 -> 积分不足 -> 核销码待出示 -> 核销码放大中 -> 已核销 -> 已取消 -> 积分退回中 -> 售后中 -> 已关闭 | 积分、库存、兑换订单、核销码和售后状态一致 |
| 桌面端同步 | 正常 -> 静默重试中 -> 弱提示 -> 强提示 -> 同步成功 -> 同步失败 -> 资源无权限 -> 版本过低 | 桌面端学习进度同步失败先 30 秒静默重试,连续失败 3 次以上强提示 |
学员端学习中心涉及该规则时,必须在前端提示、后端校验、审计日志和测试用例中同时覆盖。
学员端学习中心涉及该规则时,必须在前端提示、后端校验、审计日志和测试用例中同时覆盖。
学员端学习中心涉及该规则时,必须在前端提示、后端校验、审计日志和测试用例中同时覆盖。
学员端学习中心涉及该规则时,必须在前端提示、后端校验、审计日志和测试用例中同时覆盖。
学员端学习中心涉及该规则时,必须在前端提示、后端校验、审计日志和测试用例中同时覆盖。
学员端学习中心涉及该规则时,必须在前端提示、后端校验、审计日志和测试用例中同时覆盖。
13 · 权限、审批与消息
动作权限、数据范围、审批触发和消息触达必须闭环
权限需要覆盖菜单、按钮、字段、接口和导出。动作权限
- 启动检查:需映射菜单、按钮、接口和字段权限
- 学员用户名密码登录:需映射菜单、按钮、接口和字段权限
- 手机号注册:需映射菜单、按钮、接口和字段权限
- 选择当前上课学员:需映射菜单、按钮、接口和字段权限
- 打开课程:需映射菜单、按钮、接口和字段权限
- 观看直播:需映射菜单、按钮、接口和字段权限
- 举手上麦:需映射菜单、按钮、接口和字段权限
- 补看回放:需映射菜单、按钮、接口和字段权限
- 完成任务:需映射菜单、按钮、接口和字段权限
- 保存草稿:需映射菜单、按钮、接口和字段权限
- 恢复草稿:需映射菜单、按钮、接口和字段权限
- 提交作业:需映射菜单、按钮、接口和字段权限
- 一键复练:需映射菜单、按钮、接口和字段权限
- 错题重组测试:需映射菜单、按钮、接口和字段权限
- 作品预览:需映射菜单、按钮、接口和字段权限
- 参加测评:需映射菜单、按钮、接口和字段权限
- 查看档案:需映射菜单、按钮、接口和字段权限
- 积分兑换:需映射菜单、按钮、接口和字段权限
- 锁库确认:需映射菜单、按钮、接口和字段权限
- 核销码放大:需映射菜单、按钮、接口和字段权限
- 兑换取消:需映射菜单、按钮、接口和字段权限
- 桌面同步重试:需映射菜单、按钮、接口和字段权限
数据范围
- 总部全量
- 区域辖区
- 校区本地
- 部门/岗位
- 本人负责
- 授权班级/学员
审批配置
| 审批名称 | 触发条件 | 流程 | 结果 | 留痕 |
|---|---|---|---|---|
| 转校审批 | 学员权益跨校区转移 | 原校区校长 -> 目标校区校长 -> 财务确认 | 权益和服务归属迁移 | 记录转出转入校区和余额 |
| 数据导出审批 | 导出客户、学员、人脸、工资、利润等敏感数据 | 申请人 -> 部门主管 -> 数据管理员 | 生成限时下载链接 | 记录用途、字段、下载人和 IP |
| 人脸授权撤回处理 | 家长撤回人脸授权 | 家长提交 -> 系统确认 -> 设备管理员执行 | 停止识别并下发删除任务 | 保留撤回凭证和删除结果 |
| 活码外部资源审批 | 活码跳转外部链接或公开资源 | 教研提交 -> 品牌负责人审核 | 发布或下架活码规则 | 记录资源版本和访问范围 |
| 监管异常人工关闭 | 监管报送连续失败或需人工确认 | 财务提交 -> 财务主管审批 | 异常关闭或重报 | 保留回执、原因和处理附件 |
| 直播回放导出审批 | 导出直播回放、聊天记录、观看明细或会议参会明细 | 申请人 -> 业务主管 -> 数据管理员 | 通过后生成限时下载链接,驳回后保留申请原因 | 保留导出范围、用途、文件哈希和下载日志 |
| 集团会议直播发布审批 | 会议范围包含全集团、跨区域或敏感经营主题 | 发起人 -> 部门负责人 -> 总部管理员 | 通过后推送会议通知并开放观看入口 | 保留会议主题、参会范围、资料和审批意见 |
| 直播供应商配置审批 | 新增或变更直播供应商密钥、回调地址、录制存储、转码模板和域名配置 | 技术运维 -> 系统管理员 -> 安全管理员 | 通过后配置生效并触发连通性校验,同一租户仅保留一个启用供应商 | 保留配置前后快照和验签结果 |
消息模板
| 消息 | 接收人 | 触发 | 渠道 | 变量 |
|---|---|---|---|---|
| 学员账号状态提醒 | 学员/非学员 | 账号待激活、绑定审核中、登录异常或注销申请状态变化 | 学员端小程序/App/H5、站内信 | 账号状态、处理入口、客服入口 |
| 当前上课学员切换提醒 | 学员 | 同一账号切换当前上课学员或学员同步失败 | 学员端小程序/App/H5、桌面端 | 当前学员、权益状态、切换时间、同步结果 |
| 课程权益与资源提醒 | 学员 | 课程权益不足、资源过期、回放补传、补看任务生成或资源重新发布 | 学员端小程序/App/H5、Push | 课程、资源、有效期、补看截止时间 |
| 作业草稿与截止提醒 | 学员 | 自动保存失败、草稿即将过期、作业即将截止、补交开放或教师已批改 | 学员端小程序/App/H5、Push | 作业、草稿时间、截止时间、处理入口 |
| 直播与连麦提醒 | 学员 | 直播即将开始、教师邀请连麦、连麦超时、回放生成完成或回放替换 | 学员端小程序/App/H5、桌面端 | 直播间、排队位次、邀请倒计时、回放入口 |
| 错题复练提醒 | 学员 | 测评报告生成、错题复练任务生成或错题掌握状态变化 | 学员端小程序/App/H5、Push | 错题数量、知识点、复练入口 |
| 积分兑换与核销提醒 | 学员 | 兑换成功、核销码即将过期、取消兑换、积分退回、售后处理完成 | 学员端小程序/App/H5、站内信 | 订单号、礼品、积分、核销码有效期、处理结果 |
| 桌面端同步异常提醒 | 学员 | 桌面端连续 3 次同步失败、版本过低或设备超限 | Tauri 桌面端、站内信 | 设备、重试次数、失败原因、处理入口 |
14 · 接口与技术细节
接口需支持幂等、权限、审计、重试和回执
每个写接口必须有 requestId 或业务幂等键,外部回调必须验签和去重。| 接口 | 方法 | 方向 | 请求字段 | 响应字段 | 幂等/权限 |
|---|---|---|---|---|---|
| /api/v1/student/auth/login | POST | 学员端到认证中心 | loginType, username, password, mobile, smsCode, agreementAccepted, clientType, deviceId | accessToken, accountStatus, studentCandidates, needStudentSelection | 学员用户名密码或手机号登录;账号状态校验 |
| /api/v1/student/auth/register | POST | 学员端到认证中心 | mobile, smsCode, password, studentName, birthday, campusId, agreementAccepted, requestId | accountId, accountStatus, bindStatus, studentCandidates | mobile + requestId 幂等;非学员手机号自主注册 |
| /api/v1/student/auth/password/reset | POST | 学员端到认证中心 | mobile, smsCode, newPassword, requestId | resetStatus, loginHint | 验证码校验;密码规则校验 |
| /api/v1/student/accounts/cancel | POST/GET | 学员端到账号中心 | studentAccountId, verifyCode, cancelReason, riskConfirmed, requestId | cancelApplyId, cancelStatus, revokeUntil | 敏感操作审计;逻辑删除策略 |
| /api/v1/student/session/selection | GET/POST | 学员端到账号中心 | accountId, selectedStudentId, clientType, rememberLast, requestId | currentStudentId, courseRights, learningSummary, switchStatus | 多学员选择后按 studentId 隔离 |
| /api/v1/student/profile | GET | 学员端到平台 | studentId, clientType | profile, courseRights, learningSummary, selectedStudent, deviceSession | 本人账号校验 |
| /api/v1/student/courses | GET | 学员端到课程中心 | studentId, courseStatus, rightStatus, pageNo, pageSize | courseList, rightSummary, expiredTips | 课程权益校验 |
| /api/v1/student/resources | GET | 学员端到资源中心 | studentId, courseId, resourceType, progressStatus, replayId | resources, authToken, progress, replayAccess, watchTask | 课程权益、资源有效期和回放权限校验 |
| /api/v1/student/homework/drafts/{draftId} | PATCH/DELETE | 学员端到学习中心 | draftId, answerSnapshot, attachmentTempIds, autoSaveVersion, deleteReason | draftStatus, lastSavedAt, conflictStatus | autoSaveVersion 乐观锁 |
| /api/v1/student/homework/drafts | GET/POST | 学员端到学习中心 | homeworkId, studentId, answerSnapshot, attachmentTempIds, clientVersion, requestId | draftId, draftStatus, autoSaveVersion, lastSavedAt, conflictStatus, expireAt | studentId + homeworkId 单草稿幂等 |
| /api/v1/student/tasks/submit | POST | 学员端到学习中心 | taskId, answers, attachments, requestId | submissionId, scoreStatus, nextTask | requestId 幂等 |
| /api/v1/student/assessments/{id}/submit | POST | 学员端到测评服务 | assessmentId, studentId, answers, submitAt, requestId | attemptId, scoreStatus, reportStatus, wrongQuestionCount | requestId 幂等;超时自动交卷 |
| /api/v1/student/wrong-questions/practice | POST/GET | 学员端到学习中心 | studentId, courseId, mode, questionCount=5, knowledgeTags, requestId | practiceId, questionList, practiceStatus, resultSummary | 一键 5 题复练或错题重组测试 |
| /api/v1/student/wrong-questions/{id}/mastery | PATCH | 学员端到学习中心 | wrongQuestionId, studentId, masteryStatus, operationId | masteryStatus, removedFromBook, nextPracticeHint | 本人错题校验 |
| /api/v1/student/portfolio/items | GET | 学员端到学习档案 | studentId, courseId, itemType, pageNo, pageSize | portfolioItems, previewPolicy, sharePolicy | 作品权限与资源状态校验 |
| /api/v1/student/portfolio/items/{id}/preview | POST | 学员端到学习档案 | itemId, studentId, clientType, requestId | previewUrl, mediaType, transcodeStatus, expireAt | 预览地址短期有效 |
| /api/v1/points/locks | POST | 学员端到积分商城 | studentId, giftSkuId, quantity, requestId | lockId, lockStatus, expireAt, pointsPreview | 锁库成功前不扣减积分 |
| /api/v1/points/redemptions | POST/GET | 学员端到积分商城 | giftId, quantity, deliveryType, requestId | orderId, writeOffCode, pointsBalance | 积分余额和库存锁定 |
| /api/v1/points/redemptions/{id}/cancel | POST | 学员端到积分商城 | orderId, cancelReason, requestId | afterSaleStatus, pointsRefundStatus, stockReleaseStatus | orderId + requestId 幂等 |
| /api/v1/points/redemptions/{id}/write-off-code | GET | 学员端到积分商城 | orderId, studentId, displayMode, refreshToken | writeOffCode, barcodeUrl, qrCodeUrl, expireAt, brightnessHint | 核销码一次性使用且可刷新 |
| /api/v1/live/rooms/{id}/join | POST | 学员端到直播中心 | roomId, studentId, clientType | playUrl, replayUrl, watchTask | 课程权益校验 |
| /api/v1/live/rooms/{id}/mic-requests | POST | 学员端到直播中心 | liveRoomId, requesterId, action, deviceCheckResult, clientRequestId | micRequestId, requestStatus, queueNo, inviteExpireAt | 重复举手返回当前排队状态 |
| /api/v1/student/desktop/sync | POST | Tauri 桌面端到学习中心 | studentId, clientType, deviceId, syncItems, retryCount, requestId | syncStatus, successItems, failedItems, nextRetryAt, strongPrompt | 失败后 30 秒静默重试;连续 3 次强提示 |
| /api/v1/student/device-sessions | GET/DELETE | 学员端到账号中心 | studentAccountId, deviceId, clientType | deviceSessions, currentDevice, revokeStatus | 设备超限和退出登录审计 |
前端约束
- 统一登录态和租户校区上下文
- 列表分页、筛选、排序、列显隐
- 表单本地校验与服务端错误映射
- 移动/平板/TV 按终端适配交互
后端约束
- 领域服务封装业务规则
- 写操作事务一致性
- 关键操作审计快照
- 异步任务失败重试和告警
集成约束
- 第三方接口统一走开放集成中心
- 回执文件归档
- 接口日志可按业务单号追踪
- 密钥和回调地址按环境隔离
15 · 数据库与存储设计
核心表建议、关键字段和索引方向
详细 DDL 已在平台技术设计文档中统一展开,本处保留模块核心表、关键字段和索引方向。| 表名 | 用途 | 核心字段 | 索引建议 |
|---|---|---|---|
| stu_account | 学员端独立账号 | id、tenant_id、org_id、campus_id、created_by、created_at、updated_by、updated_at、is_deleted、deleted_at、deleted_by、version、account_no、login_name、student_id、account_type、mobile、wechat_openid、password_hash、login_status、activated_at、cancel_request_status、last_login_at | uk_account_no、uk_login_name、idx_student、idx_mobile_status |
| stu_account_registration | 非学员手机号自主注册记录 | id、tenant_id、org_id、campus_id、created_by、created_at、updated_by、updated_at、is_deleted、deleted_at、deleted_by、version、register_no、mobile、sms_verify_id、student_name、password_set_status、agreement_version、register_status、linked_account_id | uk_register_no、idx_mobile_status |
| stu_session_selection | 当前上课学员选择记录 | id、tenant_id、org_id、campus_id、created_by、created_at、updated_by、updated_at、is_deleted、deleted_at、deleted_by、version、account_id、selected_student_id、source_channel、remember_last、selected_at、selection_status、last_sync_result | idx_account_status、idx_selected_student |
| stu_device_session | 学员端设备登录会话 | id、tenant_id、org_id、campus_id、created_by、created_at、updated_by、updated_at、is_deleted、deleted_at、deleted_by、version、account_id、student_id、device_id、client_type、app_version、login_at、last_active_at、session_status | idx_account_client、uk_device_active |
| stu_learning_profile | 学员学习进度档案 | id、tenant_id、org_id、campus_id、created_by、created_at、updated_by、updated_at、is_deleted、deleted_at、deleted_by、version、student_id、course_id、progress_percent、ability_tags、last_active_at、profile_snapshot | uk_student_course、idx_progress |
| stu_learning_task | 学员学习任务 | id、tenant_id、org_id、campus_id、created_by、created_at、updated_by、updated_at、is_deleted、deleted_at、deleted_by、version、task_no、student_id、task_type、biz_id、deadline_at、complete_status | uk_task_no、idx_student_status |
| edu_homework_draft | 学员作业草稿箱 | id、tenant_id、org_id、campus_id、created_by、created_at、updated_by、updated_at、is_deleted、deleted_at、deleted_by、version、draft_no、homework_id、student_id、draft_status、answer_snapshot、attachment_temp_ids、auto_save_version、last_saved_at、expire_at、client_type、delete_reason、conflict_status | uk_homework_student、idx_student_status、idx_expire |
| edu_homework_submit | 学员作业提交 | id、tenant_id、org_id、campus_id、created_by、created_at、updated_by、updated_at、is_deleted、deleted_at、deleted_by、version、submit_no、homework_id、student_id、answer_payload、submit_status、submitted_at | uk_submit_no、idx_homework_student |
| stu_wrong_question_practice | 错题复练与重组测试 | id、tenant_id、org_id、campus_id、created_by、created_at、updated_by、updated_at、is_deleted、deleted_at、deleted_by、version、practice_no、student_id、course_id、source_question_ids、practice_mode、question_count、practice_status、result_snapshot | uk_practice_no、idx_student_status |
| stu_portfolio_item | 学习档案作品集 | id、tenant_id、org_id、campus_id、created_by、created_at、updated_by、updated_at、is_deleted、deleted_at、deleted_by、version、student_id、course_id、item_type、title、file_id、media_type、transcode_status、teacher_comment_id、share_status | idx_student_type、idx_course |
| pts_account | 学员积分账户 | id、tenant_id、org_id、campus_id、created_by、created_at、updated_by、updated_at、is_deleted、deleted_at、deleted_by、version、student_id、available_points、frozen_points、total_earned_points、total_used_points | uk_student |
| pts_lock | 积分兑换锁库记录 | id、tenant_id、org_id、campus_id、created_by、created_at、updated_by、updated_at、is_deleted、deleted_at、deleted_by、version、lock_no、student_id、gift_sku_id、quantity、points_amount、lock_status、expire_at | uk_lock_no、idx_student_status、idx_expire |
| pts_order | 积分商城兑换订单 | id、tenant_id、org_id、campus_id、created_by、created_at、updated_by、updated_at、is_deleted、deleted_at、deleted_by、version、order_no、student_id、gift_sku_id、lock_id、points_amount、write_off_code_id、order_status | uk_order_no、idx_student_status、idx_lock |
| pts_write_off_code | 积分兑换线下核销码 | id、tenant_id、org_id、campus_id、created_by、created_at、updated_by、updated_at、is_deleted、deleted_at、deleted_by、version、points_order_id、write_off_code、code_type、expire_at、refresh_count、write_off_status、brightness_hint | uk_write_off_code、idx_order_status、idx_expire |
| pts_after_sales | 积分兑换售后 | id、tenant_id、org_id、campus_id、created_by、created_at、updated_by、updated_at、is_deleted、deleted_at、deleted_by、version、after_sales_no、points_order_id、request_type、request_reason、handle_result、handle_status | uk_after_sales_no、idx_order_status |
| stu_desktop_sync_task | 学员桌面端学习同步任务 | id、tenant_id、org_id、campus_id、created_by、created_at、updated_by、updated_at、is_deleted、deleted_at、deleted_by、version、sync_batch_no、student_id、device_id、sync_payload、retry_count、next_retry_at、strong_prompt、sync_status、failed_reason | uk_sync_batch_no、idx_student_status、idx_retry |
DDL 草案
stu_accountStudentAccount
CREATE TABLE `stu_account` (
`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 '乐观锁版本号,写操作必须校验;数据级别:普通',
`account_no` VARCHAR(64) NOT NULL COMMENT '学员账号编号,唯一;数据级别:普通',
`login_name` VARCHAR(64) NOT NULL COMMENT '学校下发的学员用户名或手机号登录名;数据级别:普通',
`student_id` BIGINT NULL COMMENT '默认绑定学员 ID,多学员账号可为空;数据级别:普通',
`account_type` VARCHAR(32) NOT NULL COMMENT '学校下发/手机号自主注册/家长代开通;数据级别:普通',
`mobile` VARCHAR(32) NULL COMMENT '手机号,敏感;数据级别:敏感',
`wechat_openid` VARCHAR(128) NULL COMMENT '微信 OpenID,敏感;数据级别:敏感',
`password_hash` VARCHAR(255) NULL COMMENT '密码哈希,禁止明文存储;数据级别:敏感',
`login_status` VARCHAR(32) NOT NULL COMMENT '待激活/正常/锁定/停用;数据级别:普通',
`activated_at` DATETIME NULL COMMENT '账号激活时间;数据级别:普通',
`cancel_request_status` VARCHAR(32) NULL COMMENT '注销申请状态:无/申请中/已通过/已驳回;数据级别:普通',
`last_login_at` DATETIME NULL COMMENT '最近登录时间;数据级别:普通',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_account_no` (`account_no`),
UNIQUE KEY `uk_login_name` (`login_name`),
KEY `idx_student` (`student_id`),
KEY `idx_mobile_status` (`mobile`, `login_status`),
KEY `idx_tenant_deleted` (`tenant_id`, `is_deleted`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='StudentAccount:学员端独立账号';
stu_account_registrationStudentAccountRegistration
CREATE TABLE `stu_account_registration` (
`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 '乐观锁版本号,写操作必须校验;数据级别:普通',
`register_no` VARCHAR(64) NOT NULL COMMENT '注册单编号,唯一;数据级别:普通',
`mobile` VARCHAR(32) NOT NULL COMMENT '注册手机号,敏感;数据级别:敏感',
`sms_verify_id` VARCHAR(64) NOT NULL COMMENT '短信验证码校验流水,不存储明文验证码;数据级别:普通',
`student_name` VARCHAR(64) NULL COMMENT '注册时填写的学员姓名,敏感;数据级别:敏感',
`password_set_status` VARCHAR(32) NOT NULL COMMENT '未设置/已设置/需重置;数据级别:普通',
`agreement_version` VARCHAR(32) NOT NULL COMMENT '已勾选协议版本;数据级别:普通',
`register_status` VARCHAR(32) NOT NULL COMMENT '待提交/审核中/已开通/已驳回/已取消;数据级别:普通',
`linked_account_id` BIGINT NULL COMMENT '开通后的学员账号 ID;数据级别:普通',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_register_no` (`register_no`),
KEY `idx_mobile_status` (`mobile`, `password_set_status`),
KEY `idx_tenant_deleted` (`tenant_id`, `is_deleted`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='StudentAccountRegistration:非学员手机号自主注册记录';
stu_session_selectionStudentSessionSelection
CREATE TABLE `stu_session_selection` (
`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 '乐观锁版本号,写操作必须校验;数据级别:普通',
`account_id` BIGINT NOT NULL COMMENT '学员端账号 ID;数据级别:普通',
`selected_student_id` BIGINT NOT NULL COMMENT '当前上课学员 ID;数据级别:普通',
`source_channel` VARCHAR(32) NOT NULL COMMENT '小程序/App/H5/Tauri;数据级别:普通',
`remember_last` TINYINT NOT NULL DEFAULT 1 COMMENT '是否记住本次选择;数据级别:普通',
`selected_at` DATETIME NOT NULL COMMENT '选择时间;数据级别:普通',
`selection_status` VARCHAR(32) NOT NULL COMMENT '有效/权益过期/已切换/同步失败;数据级别:普通',
`last_sync_result` VARCHAR(512) NULL COMMENT '最近一次端侧同步结果;数据级别:普通',
PRIMARY KEY (`id`),
KEY `idx_account_status` (`account_id`, `selection_status`),
KEY `idx_selected_student` (`selected_student_id`),
KEY `idx_tenant_deleted` (`tenant_id`, `is_deleted`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='StudentSessionSelection:当前上课学员选择记录';
stu_device_sessionStudentDeviceSession
CREATE TABLE `stu_device_session` (
`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 '乐观锁版本号,写操作必须校验;数据级别:普通',
`account_id` BIGINT NOT NULL COMMENT '学员端账号 ID;数据级别:普通',
`student_id` BIGINT NULL COMMENT '当前选择学员 ID;数据级别:普通',
`device_id` VARCHAR(128) NOT NULL COMMENT '端侧设备 ID;数据级别:普通',
`client_type` VARCHAR(32) NOT NULL COMMENT '微信小程序/iOS/iPadOS/Android/安卓平板/H5/Tauri-macOS/Tauri-Windows;数据级别:普通',
`app_version` VARCHAR(32) NULL COMMENT '客户端版本号;数据级别:普通',
`login_at` DATETIME NOT NULL COMMENT '登录时间;数据级别:普通',
`last_active_at` DATETIME NULL COMMENT '最近活跃时间;数据级别:普通',
`session_status` VARCHAR(32) NOT NULL COMMENT '有效/过期/踢下线/设备超限;数据级别:普通',
PRIMARY KEY (`id`),
KEY `idx_account_client` (`account_id`, `client_type`),
UNIQUE KEY `uk_device_active` (`device_id`, `last_active_at`),
KEY `idx_tenant_deleted` (`tenant_id`, `is_deleted`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='StudentDeviceSession:学员端设备登录会话';
stu_learning_profileLearningProfile
CREATE TABLE `stu_learning_profile` (
`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 '乐观锁版本号,写操作必须校验;数据级别:普通',
`student_id` BIGINT NOT NULL COMMENT '学员 ID;数据级别:普通',
`course_id` BIGINT NOT NULL COMMENT '课程 ID;数据级别:普通',
`progress_percent` DECIMAL(6,2) NOT NULL COMMENT '学习进度百分比;数据级别:普通',
`ability_tags` JSON NULL COMMENT '能力标签;数据级别:普通',
`last_active_at` DATETIME NULL COMMENT '最近学习时间;数据级别:普通',
`profile_snapshot` JSON NULL COMMENT '学习画像快照;数据级别:普通',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_student_course` (`student_id`, `course_id`),
KEY `idx_progress` (`progress_percent`),
KEY `idx_tenant_deleted` (`tenant_id`, `is_deleted`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='LearningProfile:学员学习进度档案';
stu_learning_taskLearningTask
CREATE TABLE `stu_learning_task` (
`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 '乐观锁版本号,写操作必须校验;数据级别:普通',
`task_no` VARCHAR(64) NOT NULL COMMENT '任务编号,唯一;数据级别:普通',
`student_id` BIGINT NOT NULL COMMENT '学员 ID;数据级别:普通',
`task_type` VARCHAR(32) NOT NULL COMMENT '课程/作业/测评/直播/回放;数据级别:普通',
`biz_id` BIGINT NOT NULL COMMENT '业务 ID;数据级别:普通',
`deadline_at` DATETIME NULL COMMENT '截止时间;数据级别:普通',
`complete_status` VARCHAR(32) NOT NULL COMMENT '未开始/进行中/已完成/逾期;数据级别:普通',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_task_no` (`task_no`),
KEY `idx_student_status` (`student_id`, `complete_status`),
KEY `idx_tenant_deleted` (`tenant_id`, `is_deleted`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='LearningTask:学员学习任务';
edu_homework_draftHomeworkDraft
CREATE TABLE `edu_homework_draft` (
`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 '乐观锁版本号,写操作必须校验;数据级别:普通',
`draft_no` VARCHAR(64) NOT NULL COMMENT '草稿编号,唯一;数据级别:普通',
`homework_id` BIGINT NOT NULL COMMENT '作业 ID;数据级别:普通',
`student_id` BIGINT NOT NULL COMMENT '学员 ID;数据级别:普通',
`draft_status` VARCHAR(32) NOT NULL COMMENT '草稿中/已提交/已删除/已过期/冲突待处理;数据级别:普通',
`answer_snapshot` JSON NOT NULL COMMENT '答案草稿;数据级别:普通',
`attachment_temp_ids` JSON NULL COMMENT '临时附件;数据级别:普通',
`auto_save_version` INT NOT NULL COMMENT '自动保存版本;数据级别:普通',
`last_saved_at` DATETIME NOT NULL COMMENT '最近保存时间;数据级别:普通',
`expire_at` DATETIME NULL COMMENT '草稿过期时间;数据级别:普通',
`client_type` VARCHAR(32) NULL COMMENT '最近保存端;数据级别:普通',
`delete_reason` VARCHAR(255) NULL COMMENT '删除或过期原因;数据级别:普通',
`conflict_status` VARCHAR(32) NOT NULL COMMENT '无冲突/有冲突/已合并;数据级别:普通',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_homework_student` (`homework_id`, `student_id`),
KEY `idx_student_status` (`student_id`, `draft_status`),
KEY `idx_expire` (`expire_at`),
KEY `idx_tenant_deleted` (`tenant_id`, `is_deleted`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='HomeworkDraft:学员作业草稿箱';
edu_homework_submitHomeworkSubmit
CREATE TABLE `edu_homework_submit` (
`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 '乐观锁版本号,写操作必须校验;数据级别:普通',
`submit_no` VARCHAR(64) NOT NULL COMMENT '提交编号,唯一;数据级别:普通',
`homework_id` BIGINT NOT NULL COMMENT '作业 ID;数据级别:普通',
`student_id` BIGINT NOT NULL COMMENT '学员 ID;数据级别:普通',
`answer_payload` JSON NOT NULL COMMENT '最终答案;数据级别:普通',
`submit_status` VARCHAR(32) NOT NULL COMMENT '待提交/已提交/已批改/需订正;数据级别:普通',
`submitted_at` DATETIME NULL COMMENT '提交时间;数据级别:普通',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_submit_no` (`submit_no`),
KEY `idx_homework_student` (`homework_id`, `student_id`),
KEY `idx_tenant_deleted` (`tenant_id`, `is_deleted`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='HomeworkSubmit:学员作业提交';
stu_wrong_question_practiceWrongQuestionPractice
CREATE TABLE `stu_wrong_question_practice` (
`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 '乐观锁版本号,写操作必须校验;数据级别:普通',
`practice_no` VARCHAR(64) NOT NULL COMMENT '复练任务编号,唯一;数据级别:普通',
`student_id` BIGINT NOT NULL COMMENT '学员 ID;数据级别:普通',
`course_id` BIGINT NULL COMMENT '课程 ID;数据级别:普通',
`source_question_ids` JSON NOT NULL COMMENT '来源错题 ID 列表;数据级别:普通',
`practice_mode` VARCHAR(32) NOT NULL COMMENT '一键 5 题复练/错题重组测试/知识点专项;数据级别:普通',
`question_count` INT NOT NULL COMMENT '题目数量;数据级别:普通',
`practice_status` VARCHAR(32) NOT NULL COMMENT '待练习/进行中/已完成/生成失败;数据级别:普通',
`result_snapshot` JSON NULL COMMENT '练习结果快照;数据级别:普通',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_practice_no` (`practice_no`),
KEY `idx_student_status` (`student_id`, `practice_status`),
KEY `idx_tenant_deleted` (`tenant_id`, `is_deleted`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='WrongQuestionPractice:错题复练与重组测试';
stu_portfolio_itemStudentPortfolioItem
CREATE TABLE `stu_portfolio_item` (
`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 '乐观锁版本号,写操作必须校验;数据级别:普通',
`student_id` BIGINT NOT NULL COMMENT '学员 ID;数据级别:普通',
`course_id` BIGINT NULL COMMENT '课程 ID;数据级别:普通',
`item_type` VARCHAR(32) NOT NULL COMMENT '图片/音频/视频/作业/测评报告/课堂作品;数据级别:普通',
`title` VARCHAR(128) NOT NULL COMMENT '作品标题;数据级别:普通',
`file_id` BIGINT NULL COMMENT '文件中心文件 ID;数据级别:普通',
`media_type` VARCHAR(32) NULL COMMENT '图片/音频/视频/PDF/链接;数据级别:普通',
`transcode_status` VARCHAR(32) NULL COMMENT '无需转码/转码中/成功/失败;数据级别:普通',
`teacher_comment_id` BIGINT NULL COMMENT '关联教师点评 ID;数据级别:普通',
`share_status` VARCHAR(32) NOT NULL COMMENT '不可分享/可分享/已分享/分享失效;数据级别:普通',
PRIMARY KEY (`id`),
KEY `idx_student_type` (`student_id`, `item_type`),
KEY `idx_course` (`course_id`),
KEY `idx_tenant_deleted` (`tenant_id`, `is_deleted`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='StudentPortfolioItem:学习档案作品集';
pts_accountPointsAccount
CREATE TABLE `pts_account` (
`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 '乐观锁版本号,写操作必须校验;数据级别:普通',
`student_id` BIGINT NOT NULL COMMENT '学员 ID;数据级别:普通',
`available_points` INT NOT NULL COMMENT '可用积分;数据级别:普通',
`frozen_points` INT NOT NULL COMMENT '冻结积分;数据级别:普通',
`total_earned_points` INT NOT NULL COMMENT '累计获得积分;数据级别:普通',
`total_used_points` INT NOT NULL COMMENT '累计消耗积分;数据级别:普通',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_student` (`student_id`),
KEY `idx_tenant_deleted` (`tenant_id`, `is_deleted`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='PointsAccount:学员积分账户';
pts_lockPointsLock
CREATE TABLE `pts_lock` (
`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 '乐观锁版本号,写操作必须校验;数据级别:普通',
`lock_no` VARCHAR(64) NOT NULL COMMENT '锁库编号,唯一;数据级别:普通',
`student_id` BIGINT NOT NULL COMMENT '学员 ID;数据级别:普通',
`gift_sku_id` BIGINT NOT NULL COMMENT '礼品 SKU ID,关联物料库存;数据级别:普通',
`quantity` INT NOT NULL COMMENT '锁定数量;数据级别:普通',
`points_amount` INT NOT NULL COMMENT '锁定积分;数据级别:普通',
`lock_status` VARCHAR(32) NOT NULL COMMENT '锁定中/已确认/已释放/已过期;数据级别:普通',
`expire_at` DATETIME NOT NULL COMMENT '锁库过期时间;数据级别:普通',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_lock_no` (`lock_no`),
KEY `idx_student_status` (`student_id`, `lock_status`),
KEY `idx_expire` (`expire_at`),
KEY `idx_tenant_deleted` (`tenant_id`, `is_deleted`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='PointsLock:积分兑换锁库记录';
pts_orderPointsOrder
CREATE TABLE `pts_order` (
`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 '乐观锁版本号,写操作必须校验;数据级别:普通',
`order_no` VARCHAR(64) NOT NULL COMMENT '积分订单编号,唯一;数据级别:普通',
`student_id` BIGINT NOT NULL COMMENT '学员 ID;数据级别:普通',
`gift_sku_id` BIGINT NOT NULL COMMENT '礼品 SKU ID,关联物料;数据级别:普通',
`lock_id` BIGINT NULL COMMENT '积分锁库记录 ID;数据级别:普通',
`points_amount` INT NOT NULL COMMENT '消耗积分;数据级别:普通',
`write_off_code_id` BIGINT NULL COMMENT '核销码 ID;数据级别:普通',
`order_status` VARCHAR(32) NOT NULL COMMENT '待领取/已核销/已取消/售后中;数据级别:普通',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_order_no` (`order_no`),
KEY `idx_student_status` (`student_id`, `order_status`),
KEY `idx_lock` (`lock_id`),
KEY `idx_tenant_deleted` (`tenant_id`, `is_deleted`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='PointsOrder:积分商城兑换订单';
pts_write_off_codePointsWriteOffCode
CREATE TABLE `pts_write_off_code` (
`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 '乐观锁版本号,写操作必须校验;数据级别:普通',
`points_order_id` BIGINT NOT NULL COMMENT '积分兑换订单 ID;数据级别:普通',
`write_off_code` VARCHAR(64) NOT NULL COMMENT '核销码,唯一;数据级别:普通',
`code_type` VARCHAR(32) NOT NULL COMMENT '二维码/条形码/数字码;数据级别:普通',
`expire_at` DATETIME NOT NULL COMMENT '核销码有效期;数据级别:普通',
`refresh_count` INT NOT NULL DEFAULT 0 COMMENT '刷新次数;数据级别:普通',
`write_off_status` VARCHAR(32) NOT NULL COMMENT '待核销/已核销/已过期/已作废;数据级别:普通',
`brightness_hint` TINYINT NOT NULL DEFAULT 1 COMMENT '端侧是否建议自动调高亮度;数据级别:普通',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_write_off_code` (`write_off_code`),
KEY `idx_order_status` (`points_order_id`, `write_off_status`),
KEY `idx_expire` (`expire_at`),
KEY `idx_tenant_deleted` (`tenant_id`, `is_deleted`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='PointsWriteOffCode:积分兑换线下核销码';
pts_after_salesPointsRedemptionAfterSales
CREATE TABLE `pts_after_sales` (
`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 '乐观锁版本号,写操作必须校验;数据级别:普通',
`after_sales_no` VARCHAR(64) NOT NULL COMMENT '售后编号,唯一;数据级别:普通',
`points_order_id` BIGINT NOT NULL COMMENT '积分订单 ID;数据级别:普通',
`request_type` VARCHAR(32) NOT NULL COMMENT '取消/退积分/补发/异常核销;数据级别:普通',
`request_reason` VARCHAR(512) NOT NULL COMMENT '申请原因;数据级别:普通',
`handle_result` VARCHAR(512) NULL COMMENT '处理结果;数据级别:普通',
`handle_status` VARCHAR(32) NOT NULL COMMENT '待处理/已处理/已驳回;数据级别:普通',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_after_sales_no` (`after_sales_no`),
KEY `idx_order_status` (`points_order_id`, `handle_status`),
KEY `idx_tenant_deleted` (`tenant_id`, `is_deleted`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='PointsRedemptionAfterSales:积分兑换售后';
stu_desktop_sync_taskDesktopSyncTask
CREATE TABLE `stu_desktop_sync_task` (
`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 '乐观锁版本号,写操作必须校验;数据级别:普通',
`sync_batch_no` VARCHAR(64) NOT NULL COMMENT '同步批次号,唯一;数据级别:普通',
`student_id` BIGINT NOT NULL COMMENT '学员 ID;数据级别:普通',
`device_id` VARCHAR(128) NOT NULL COMMENT 'Tauri 桌面端设备 ID;数据级别:普通',
`sync_payload` JSON NOT NULL COMMENT '学习进度、播放位置、作业草稿等同步内容;数据级别:普通',
`retry_count` INT NOT NULL DEFAULT 0 COMMENT '已重试次数;数据级别:普通',
`next_retry_at` DATETIME NULL COMMENT '下次静默重试时间;数据级别:普通',
`strong_prompt` TINYINT NOT NULL DEFAULT 0 COMMENT '是否已触发强提示;数据级别:普通',
`sync_status` VARCHAR(32) NOT NULL COMMENT '待同步/同步中/成功/失败/冲突;数据级别:普通',
`failed_reason` VARCHAR(512) NULL COMMENT '失败原因;数据级别:普通',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_sync_batch_no` (`sync_batch_no`),
KEY `idx_student_status` (`student_id`, `sync_status`),
KEY `idx_retry` (`retry_count`),
KEY `idx_tenant_deleted` (`tenant_id`, `is_deleted`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='DesktopSyncTask:学员桌面端学习同步任务';
16 · 异常、指标、测试与初始化
保证模块上线后可运营、可追踪、可验收
测试要覆盖主流程、异常流、权限流、接口失败和数据一致性。异常状态
指标埋点
测试用例
| 编号 | 场景 | 前置 | 步骤 | 预期 | 优先级 |
|---|---|---|---|---|---|
| TC-001 | 线索从活动落地页进入 CRM | 活动已发布且表单字段完整 | 提交报名表单并查看 CRM 线索池 | 线索生成、渠道归因正确、自动分配顾问 | 高 |
| TC-002 | 重复线索查重合并 | 已有相同手机号客户 | 再次提交报名并选择合并 | 客户唯一,来源和跟进记录保留 | 高 |
| TC-003 | 试听预约和反馈 | 线索已分配并选择体验课 | 预约试听、教师填写反馈 | 客户状态更新,生成报价任务 | 高 |
| TC-004 | 报价优惠审批 | 折扣低于阈值 | 顾问提交报价 | 审批待办生成,通过后可创建合同 | 高 |
| TC-005 | 电子合同签署和收款 | 合同模板启用 | 生成合同、家长签署、支付 | 合同已签署、订单已收款、权益生效 | 高 |
| TC-006 | 合同监管备案失败重报 | 监管接口模拟字段失败 | 提交备案后修复字段重报 | 失败回执保留,重报成功 | 高 |
| TC-007 | 入班排课冲突校验 | 教师同时间已有课程 | 为同教师同时间排课 | 系统拦截并提示冲突对象 | 高 |
| TC-008 | 人脸签到自动课消 | 学员已授权人脸且课次待签到 | 模拟设备回传识别事件 | 签到成功、课消成功、家长收到通知 | 高 |
| TC-009 | 人脸未匹配异常 | 设备回传未绑定人员 | 提交识别事件 | 进入异常队列,可人工确认或忽略 | 高 |
| TC-010 | 家长撤回人脸授权 | 学员已授权并下发设备 | 家长撤回授权 | 系统停止识别并生成设备删除任务 | 高 |
| TC-APP-AUTH-001 | 学员用户名密码登录 | 学校已为学员发放账号并开通课程权益 | 学员输入学员用户名和密码登录,系统同步学员信息、课程权益和班级任务 | 登录成功后展示学习首页;账号未激活、密码错误、信息同步失败均有明确提示和处理入口 | 高 |
| TC-APP-AUTH-002 | 非学员手机号自主注册与登录 | 手机号未注册且短信服务可用 | 非学员输入手机号、验证码、密码、学员信息和校区后提交注册,再用手机号密码或验证码登录 | 注册成功生成账号和绑定状态;手机号已注册、验证码错误、协议未勾选时阻断 | 高 |
| TC-APP-STU-001 | 当前上课学员选择与数据隔离 | 同一手机号绑定两个学员且两人均有课程权益 | 登录后选择当前上课学员,分别进入课程、提交作业、进入直播和查看积分 | 学习记录、作业、积分、直播签到均写入被选 studentId;切换学员后不串数据 | 高 |
| TC-APP-DRAFT-001 | 学员作业草稿箱闭环 | 学员有待完成作业且可上传附件 | 学员编辑作业、自动保存、手动保存草稿、退出后进入草稿箱继续编辑并提交 | 草稿 10 秒内保存成功;重新进入恢复最近版本;提交后草稿关闭且作业状态变为已提交 | 高 |
| TC-APP-DRAFT-002 | 作业草稿多端冲突 | 同一学员在小程序和 App 同时编辑同一作业 | 两端分别修改并触发自动保存 | 系统通过 autoSaveVersion 检测冲突,提示保留本端/服务端版本或手动合并,不覆盖已保存内容 | 高 |
| TC-APP-DRAFT-003 | 作业草稿过期与删除 | 作业已过截止时间或学员删除草稿 | 打开草稿箱并尝试继续编辑、删除和恢复 | 过期草稿提示截止原因;删除为逻辑删除并写审计;如作业允许补交则展示补交流程入口 | 中 |
| TC-APP-MIC-001 | 学员直播举手上麦 | 直播间已开播且连麦策略允许学员举手 | 学员举手、查看排队序号、接受教师邀请、完成设备检测并上麦 | 队列状态 2 秒内同步;邀请倒计时默认 30 秒;失败提示明确 | 高 |
| TC-APP-MIC-002 | 学员连麦异常状态 | 直播间连麦人数已满、教师静音或邀请超时 | 学员申请连麦、取消排队、接受邀请、被静音、结束连麦并查看提示 | 排队、邀请、连接中、上麦、被静音、超时、失败、结束状态均准确展示 | 高 |
| TC-APP-WRONG-001 | 错题本复练与错题重组测试 | 学员存在 8 道未掌握错题 | 进入错题本,一键挑 5 题复练,随后生成错题重组测试并标记部分错题已掌握 | 复练题量、掌握状态、移出错题本和继续复练入口正确;生成失败可重试 | 中 |
| TC-APP-PORT-001 | 学习档案作品预览 | 学习档案存在图片、录音、视频和教师点评作品 | 打开学习档案作品 Tab,预览图片、播放录音和视频,分享作品给家长 | 图片大图、录音播放、视频播放、转码中、加载失败和无权限状态均可见 | 中 |
| TC-APP-POINTS-001 | 积分兑换锁库与核销码放大 | 学员积分足够且礼品库存充足 | 进入礼品详情,点击立即兑换,观察按钮 loading、锁库确认、兑换成功、核销码放大和亮度增强 | 锁库成功后才确认兑换;重复点击被拦截;核销码二维码/条形码可放大并提示有效期 | 高 |
| TC-APP-POINTS-002 | 积分兑换取消与实物售后 | 兑换订单未核销或已领取但发生异常 | 取消兑换、查看积分退回,或提交礼品坏损/补发售后并查看进度 | 积分流水、库存释放、售后状态和订单状态一致 | 中 |
| TC-APP-DESK-001 | 学员 Tauri 桌面学习中心 | 学员有课程权益且已安装桌面端 | 登录 macOS/Windows Tauri 桌面端,打开课程视频、进入直播、补看回放并提交作业 | 视频、直播观看、回放、作业和学习进度同步正确 | 高 |
| TC-APP-DESK-002 | 学员桌面端直播创作能力隔离 | 学员账号登录桌面端 | 尝试访问开播、屏幕共享、系统音频采集或本地录制入口 | 系统不展示教师直播创作入口,越权接口被拒绝并审计 | 高 |
| TC-APP-DESK-003 | 桌面端同步失败重试与快捷键 | 桌面端网络间歇性异常 | 播放课程时双击全屏、方向键调节音量、Esc 退出全屏,并模拟学习进度同步连续失败 3 次 | 30 秒静默重试;连续失败 3 次以上强提示;快捷键和全屏状态正确 | 中 |
| TC-APP-ENH-001 | 草稿闭环交付闭环验收 | 作业详情、草稿箱、草稿恢复弹窗相关基础数据、权限、审批流、消息模板和接口配置已初始化 | 按补齐草稿箱、自动保存、手动保存、多端冲突、删除恢复、提交后关闭草稿。执行前端提交、后端处理、状态流转、异常重试和消息触达 | 草稿不丢失,提交后草稿状态与作业状态一致。;同时产生审计日志、指标埋点和必要的补偿任务 | 高 |
| TC-APP-ENH-002 | 直播闭环交付闭环验收 | 直播间、连麦状态、回放列表相关基础数据、权限、审批流、消息模板和接口配置已初始化 | 按补齐排队序号、邀请倒计时、设备检测、拒绝/超时/失败提示和回放补看提醒。执行前端提交、后端处理、状态流转、异常重试和消息触达 | 学员每个直播状态都有明确提示和下一步动作。;同时产生审计日志、指标埋点和必要的补偿任务 | 高 |
| TC-APP-ENH-003 | 积分商城交付闭环验收 | 积分商城、兑换详情、核销码、售后进度相关基础数据、权限、审批流、消息模板和接口配置已初始化 | 按补齐兑换订单、核销码、取消、过期、售后、积分退回和库存释放。执行前端提交、后端处理、状态流转、异常重试和消息触达 | 积分流水、库存流水和兑换状态一致。;同时产生审计日志、指标埋点和必要的补偿任务 | 高 |
上线初始化
| 初始化项 | 动作 | 数据 | 验收 |
|---|---|---|---|
| 账号与权限 | 初始化总部、区域、校区、顾问、教务、教师、财务、家长、学员角色 | 账号、角色、菜单、按钮、字段、数据范围 | 测试账号可按角色访问指定页面 |
| 课程与价格 | 导入课程、班型、课包、课时、价格、适用校区 | 课程编码、班型、价格表、有效期、赠课规则 | 报价和合同可正确引用价格 |
| 优惠规则 | 初始化折扣、满减、优惠券、老带新、多科联报和组合包规则 | 规则编码、叠加互斥、适用课程、校区、有效期、审批阈值 | 报价单可正确计算并生成分摊明细 |
| 监管账户 | 维护资金监管账户和教育局监管平台参数 | 账户编号、校区映射、接口地址、证书、回调 | 合同、收款、课消、退费可报送测试 |
| 设备参数 | 登记人脸考勤机设备和校区绑定 | 设备编号、位置、API 密钥、心跳阈值、识别阈值 | 设备心跳正常且可接收人员下发 |
| 远程巡课 | 导入存量教室摄像头并配置品牌接入、地图点位和录像留存策略 | 摄像头编号、品牌型号、网关配置、校区教室、楼层点位、存储策略 | 摄像头可在地图中显示状态,直播和回放链路可抽检通过 |
| 微信与 App | 配置小程序、公众号、App 推送和登录参数 | AppID、Secret、模板消息、包名、证书 | 家长、学员、教师可正常登录和收消息 |
| 教研资源 | 导入首批课程资源、题库、作业、测评和活码规则 | 资源分类、课次、权限、有效期、版本 | 学员端可按权益访问资源 |
| 学员登录注册策略 | 初始化学员用户名密码登录、非学员手机号注册、手机号密码登录、手机号验证码登录、协议版本和账号锁定策略 | studentUsernamePolicy、mobileRegisterPolicy、smsLoginPolicy、passwordRule、agreementVersion、lockRule | 学员账号和非学员注册路径清晰,异常状态可追踪 |
| 当前上课学员选择策略 | 初始化同手机号多学员选择、上次选择记忆、无绑定学员提示、权益过期提示和 studentId 数据隔离规则 | multiStudentSelectRequired、rememberLastStudent、emptyBindingTip、expiredRightTip、studentDataIsolation | 学习记录、作业、积分和直播签到不串学员 |
| 课程权益与回放补看策略 | 初始化课程权益、资源有效期、回放访问、补看任务、资源过期提示和学习进度回写规则 | courseRightRule、resourceValidRule、replayAccessRule、makeupWatchTaskRule、progressSyncRule | 课程资源和回放访问均按权益和有效期校验 |
| 学员作业草稿策略 | 初始化自动保存间隔、草稿保留天数、附件临时存储、冲突处理、截止后补交规则和提醒模板 | autoSaveIntervalSeconds=10、draftRetentionDays、tempAttachmentBucket、conflictPolicy、lateSubmitPolicy | 学员可在多端恢复草稿,提交成功后草稿自动关闭 |
| 学员直播举手上麦策略 | 初始化举手入口、排队状态、设备检测、邀请超时、失败提示和教师处理消息 | allowRaiseHand、inviteTimeoutSeconds=30、deviceCheckPolicy、micNotifyTemplate | 学员端可举手、取消、接收邀请并查看处理结果 |
| 错题复练策略 | 初始化一键复练题量、错题重组测试规则、掌握状态、移出错题本和复练提醒模板 | quickPracticeCount=5、recomposeRule、masteryRule、removePolicy、practiceNotifyTemplate | 错题本从查看升级为复练和消灭错题 |
| 作品集预览策略 | 初始化作品类型、转码状态、预览地址有效期、分享范围、教师点评展示和失败兜底 | portfolioTypes、transcodePolicy、previewExpireSeconds、sharePolicy、teacherCommentVisible | 图片、录音、视频作品可预览、分享且权限可控 |
| 积分锁库与核销策略 | 初始化兑换锁库时长、防重复点击、积分扣减、核销码有效期、二维码/条形码展示、亮度增强和取消退回规则 | lockExpireSeconds、antiRepeatSubmit、pointsDeductRule、writeOffExpireRule、codeDisplayMode、brightnessHint、refundRule | 积分、库存、核销码和售后状态一致 |
| 学员 Tauri 桌面端 | 初始化 macOS/Windows 桌面端下载入口、版本号、自动更新策略和学习中心域名 | desktopAppVersion、downloadUrl、updateChannel、webLearningUrl、clientType | 桌面端可登录并完成视频播放、直播观看、回放和学习进度同步 |
| 学员桌面端同步策略 | 初始化学习进度同步、30 秒静默重试、连续失败 3 次强提示、快捷键和设备会话限制 | syncRetryIntervalSeconds=30、strongPromptRetryCount=3、keyboardShortcutPolicy、deviceSessionLimit、versionPolicy | 桌面端同步失败低打扰处理且支持双击全屏、方向键音量和 Esc 退出 |
| 学员桌面端权限隔离 | 初始化学员桌面端菜单、接口权限和直播创作能力禁用规则 | 菜单权限、接口白名单、clientType、auditRule | 学员桌面端不出现开播、屏幕共享、系统音频采集和本地录制入口 |
| 草稿闭环交付配置 | 初始化补齐草稿箱、自动保存、手动保存、多端冲突、删除恢复、提交后关闭草稿。所需的页面入口、功能开关、审批流、消息模板、状态枚举、异常原因和角色权限 | 作业详情、草稿箱、草稿恢复弹窗 | 草稿不丢失,提交后草稿状态与作业状态一致。 |
| 直播闭环交付配置 | 初始化补齐排队序号、邀请倒计时、设备检测、拒绝/超时/失败提示和回放补看提醒。所需的页面入口、功能开关、审批流、消息模板、状态枚举、异常原因和角色权限 | 直播间、连麦状态、回放列表 | 学员每个直播状态都有明确提示和下一步动作。 |
| 积分商城交付配置 | 初始化补齐兑换订单、核销码、取消、过期、售后、积分退回和库存释放。所需的页面入口、功能开关、审批流、消息模板、状态枚举、异常原因和角色权限 | 积分商城、兑换详情、核销码、售后进度 | 积分流水、库存流水和兑换状态一致。 |