实战业务培训 — 功能需求
1. 文档说明
| 项 |
说明 |
| 模块名称 |
实战业务培训(科技平台与服务) |
| 目标 |
在业务后台维护实战类培训活动信息,控制发布与报名时段,展示报名进展,支撑牧业相关实战培训的发布、运营与台账管理 |
| 关联系统 |
业务后台;学员在线报名、签到、评价等若由其他模块承担,本模块侧重培训主档的维护、发布控制与报名状态展示 |
| 修订依据 |
同目录 实战业务培训-草稿.md、界面原型(实战业务培训.png) |
本文档仅描述功能需求与业务规则,不涉及库表结构、接口路径、请求体字段命名、HTTP 报文及技术栈选型。
2. 术语与枚举
2.1 实战培训(一条记录)
- 表示一场可对外(或对内)开放报名的实战业务培训活动。
- 包含培训基本信息、报名时段、计划规模、可选封面与预期成果等。
- 通过 发布状态(§2.2)控制是否对外生效;通过 培训状态
training_status(§2.3)反映当前报名阶段(由系统按时间与人数自动计算并入库,用户不可手工改状态)。
2.2 发布状态
| 状态 |
含义概要 |
| 未发布 |
新建「仅保存」、或下架回流后的状态;可编辑、可删除、可执行发布 |
| 已发布 |
已对外生效的培训;不可修改、不可删除;可查看、在满足条件下可下架 |
发布日期:执行「发布」成功当日,记录为自然日 YYYY-MM-DD;未发布时列表展示「—」或空。下架后建议保留上次发布日期供审计(是否清空由产品确认,默认保留)。
2.3 培训状态(training_status,自动计算入库)
字典父编码 006:006001 未开始、006002 报名中、006003 已报满、006004 已截止。
在已发布前提下,按当前系统时间、报名开始/截止时间、计划人数与实际报名人数判定;未发布时为 006001(未开始)。
判定优先级(满足即停):
| 优先级 |
条件 |
状态 |
| 1 |
发布状态为 未发布 |
006001 未开始 |
| 2 |
当前时间 ≥ 报名截止时间 |
006004 已截止 |
| 3 |
当前时间 < 报名开始时间 |
006001 未开始 |
| 4 |
实际报名人数 ≥ 计划人数 |
006003 已报满 |
| 5 |
报名开始时间 ≤ 当前时间 < 报名截止时间 |
006002 报名中 |
实际报名人数:统计 biz_practical_training_member 中 enroll_status=0(已报名)的记录数,写入主表 actual_enrolled_count;小程序用户可在 报名中 执行报名/取消报名并触发状态刷新。
2.4 时间字段关系(全局约束)
以下比较均基于 YYYY-MM-DD HH:mm:ss(界面 datetime 选择器):
报名开始时间 < 报名截止时间 < 培训时间
- 培训时间:培训举办时点(必填)。
- 报名开始时间:开放报名起点(必填)。
- 报名截止时间:开放报名终点(必填)。
保存、发布前均须满足上述链式关系;任一不满足则拒绝提交并提示。
2.5 列表筛选项与字段关系
| 筛选项 |
与记录字段关系 |
| 培训主题 |
与「培训主题」完全一致(精确匹配);空则不过滤 |
| 培训日期 |
按「培训时间」的日期部分筛选;区间为闭区间(起止日均计入) |
3. 功能范围
本期实现:
| 能力 |
说明 |
| 培训列表 |
培训主题精确、培训日期区间筛选;分页;见 §5.2 |
| 新增培训 |
录入业务字段与封面;见 §5.1 |
| 修改培训 |
仅未发布可改;见 §5.3 |
| 查看详情 |
只读;见 §5.5 |
| 删除培训 |
仅未发布;见 §5.4 |
| 发布 / 下架 |
见 §5.6 |
| 报名状态展示 |
列表/详情按 §2.3 展示 training_status |
| 小程序报名/取消 |
登录用户对 报名中 培训报名或取消,回写人数与状态 |
本期不实现(除非后续单独立项):
- 排队候补
- 培训签到、考核、证书、评价
- 消息通知(短信/站内信提醒报名开始或报满)
- 培训地点地图选点、直播链接自动校验
- 批量导入培训、复制上一场培训
4. 业务流程概览
flowchart TD
A[新增实战培训] --> B{保存方式}
B -->|确定/仅保存| C[未发布]
B -->|发布| D[已发布并记录发布日期]
C --> E[列表查询/筛选]
D --> E
E --> F[查看详情]
E --> G[修改]
E --> H[删除]
E --> I[发布]
E --> J[下架]
G --> C
H --> E
I --> D
J --> C
C --> I
D --> J
F --> E
典型运营顺序:
- 运营人员新增培训,填写主题、培训时间、简介、计划人数、地点、报名时段等,上传封面(可选)。
- 可先仅保存为未发布,经内部核对后再发布;或在新增表单直接发布。
- 发布后对外生效,列表展示报名状态与实际报名人数;到达报名开始后不可下架(§5.6)。
- 报名截止或报满后,状态自动变为 已截止 或 已报满;如需调整内容须下架(若仍允许)→ 修改 → 再发布。
5. 详细功能需求
5.1 新增实战培训
5.1.1 业务字段
| 字段 |
必填 |
规则摘要 |
| 培训主题 |
是 |
1~20 个字符(与草稿「限制 20 字」一致) |
| 培训时间 |
是 |
datetime;打开表单时默认当前时刻(可改);须 晚于 报名截止时间 |
| 培训简介 |
是 |
多行文本;去除首尾空白后非空;长度上限宜 500 字(评审可调整) |
| 计划人数 |
是 |
正整数;单位 人 |
| 培训地点 |
是 |
文本;长度宜 1~200 字 |
| 预期成果 |
否 |
多行文本;选填 |
| 报名开始时间 |
是 |
datetime;须 早于 报名截止时间且 早于 培训时间 |
| 报名截止时间 |
是 |
datetime;须 晚于 报名开始且 早于 培训时间 |
| 封面 |
否 |
单张图片;后缀 jpg、jpeg、png(可扩展 webp);单文件 ≤ 10 MB |
5.1.2 保存方式(与原型一致)
| 操作 |
行为 |
| 确定 |
校验通过后保存,发布状态为未发布;不写入发布日期 |
| 发布(表单内,如橙色按钮) |
校验通过后保存,发布状态为已发布,发布日期为操作当日 |
| 取消 |
关闭表单,不保存 |
5.1.3 校验摘要
| 规则 |
说明 |
| 时间链 |
报名开始 < 报名截止 < 培训时间(§2.4) |
| 计划人数 |
正整数,≥ 1 |
| 封面 |
类型、大小不符时拒绝上传或拒绝保存 |
| 必填 |
任一必填为空或仅空白时拒绝保存 |
5.2 查询实战培训列表
5.2.1 筛选
| 条件 |
规则 |
| 培训主题 |
选填;精确匹配;空则不过滤 |
| 培训日期 |
选填;日期区间(开始~结束,含起止日);按培训时间的日期部分匹配;开始日晚于结束日时提示修正 |
5.2.2 列表规则
- 默认每页 20 条;默认排序:培训时间倒序(或 创建时间倒序,产品择一,全文一致)。
- 工具栏:搜索、重置、新增。
5.2.3 展示列(与原型一致)
培训主题、培训时间、计划人数(人)、培训地点、报名开始时间、报名截止时间、发布日期、报名状态、实际报名人数(人)、操作。
| 列 |
展示说明 |
| 发布日期 |
未发布显示「—」 |
| 报名状态 |
§2.3 中文标签;宜配颜色区分(报名中/已报满/已截止等) |
| 实际报名人数 |
无报名模块时为 0 或「—」;不得超过计划人数展示异常时需产品约定 |
5.2.4 操作列(与 §6 一致)
| 发布状态 |
行内操作 |
| 未发布 |
查看、发布、编辑、删除 |
| 已发布 |
查看、下架(满足 §5.6 下架前置时显示或可点) |
5.3 修改实战培训
| 项 |
要求 |
| 状态约束 |
仅 未发布 可进入编辑并保存 |
| 已发布 |
不可修改;须先 下架(若允许) |
| 可改范围 |
§5.1.1 全部字段(含替换封面) |
| 校验 |
同 §5.1.3 |
| 编辑表单按钮 |
通常 确定(保持未发布)、取消;是否提供 发布 与新增一致 |
5.4 删除实战培训
| 项 |
要求 |
| 允许删除 |
未发布 且具备删除权限 |
| 不允许删除 |
已发布;须先下架 |
| 删除方式 |
建议 逻辑删除(与项目其他业务台账一致):列表不可见,数据可审计 |
| 确认 |
删除前二次确认;本期不提供批量删除(若实现须单独说明) |
| 关联 |
删除时宜清理封面文件;已有关联报名数据时是否禁止删除,由报名模块评审(默认:有报名记录则禁止删除未发布培训) |
5.5 查看实战培训详情
| 项 |
要求 |
| 展示内容 |
§5.1.1 全部字段、封面预览、发布状态、发布日期、报名状态、实际报名人数;宜含创建/修改审计信息 |
| 未发布 |
只读;可提供 编辑、发布、删除(与列表等价) |
| 已发布 |
只读;可提供 下架(满足条件时);不提供编辑、删除 |
| 培训简介/预期成果 |
全文展示,保留换行 |
5.6 发布与下架
发布
| 项 |
说明 |
| 入口 |
列表「发布」、详情「发布」、新增表单「发布」 |
| 前置 |
未发布;§5.1.3 校验通过 |
| 结果 |
已发布;发布日期 = 操作当日(YYYY-MM-DD) |
| 重复 |
已发布不可再次发布 |
下架
| 项 |
说明 |
| 入口 |
列表「下架」、详情「下架」 |
| 前置 |
已发布;且当前时间 早于 报名开始时间(「开始报名后不允许下架」) |
| 不满足前置 |
当前时间 ≥ 报名开始时间时,不展示或禁用下架,并提示原因(如「报名已开始,不可下架」) |
| 结果 |
未发布;对外展示结束;记录与封面保留;可再编辑、再发布 |
| 已报满/已截止 |
若仍早于报名开始才可下架;报名开始后一律不可下架(与草稿一致) |
6. 状态与操作矩阵(汇总)
在已授权前提下:
| 当前发布状态 |
查看 |
新增 |
修改 |
发布 |
下架 |
删除 |
| 未发布 |
✓ |
— |
✓ |
✓ |
— |
✓ |
| 已发布(且当前时间<报名开始) |
✓ |
— |
✗ |
— |
✓ |
✗ |
| 已发布(且当前时间≥报名开始) |
✓ |
— |
✗ |
— |
✗ |
✗ |
| 列表/global |
— |
✓ |
— |
— |
— |
— |
下架成功后按 未发布 行权限处理。
7. 报名状态计算示例(自查)
| 发布 |
当前时间 vs 报名时段 |
实际报名 vs 计划 |
报名状态 |
| 未发布 |
任意 |
任意 |
未开始 |
| 已发布 |
< 报名开始 |
任意 |
未开始 |
| 已发布 |
在 [开始, 截止] 内 |
< 计划 |
报名中 |
| 已发布 |
在 [开始, 截止] 内 |
≥ 计划 |
已报满 |
| 已发布 |
> 报名截止 |
任意 |
已截止 |
8. 错误与提示约定
面向使用方的提示宜语义明确,例如:
| 场景 |
提示方向(示例) |
| 必填项缺失 |
标明字段(如「请填写培训简介」) |
| 培训主题超长 |
「培训主题不能超过 20 字」 |
| 时间链不满足 |
「报名截止时间须早于培训时间」等分项提示 |
| 计划人数非法 |
「计划人数须为正整数」 |
| 封面类型/大小不符 |
「仅支持 jpg、png 格式」「封面不能超过 10MB」 |
| 已发布不可编辑/删除 |
「已发布培训须先下架后再修改」 |
| 报名开始后不可下架 |
「报名已开始,不允许下架」 |
| 删除确认取消 |
不执行删除 |
本文档不约定 HTTP 状态码、错误码字段名及接口报文结构。
9. 非功能需求(建议)
| 类别 |
建议 |
| 权限 |
查询、新增、修改、删除、发布、下架宜分按钮权限 |
| 审计 |
新增、修改、删除、发布、下架记操作日志 |
| 性能 |
列表分页;报名状态宜服务端计算,避免前后端口径不一致 |
| 封面 |
上传鉴权、访问控制;替换时清理旧文件 |
| 双语 |
界面 i18n(汉语 + 藏文,若适用) |
10. 相对草稿的修订说明
| 草稿内容 |
处理 |
| 技术栈、MySQL、RuoYi |
已移除 |
code、msg、data |
已移除 |
| 报名状态四条规则 |
整理为 §2.3 含优先级与未发布特例 |
| 下架与「开始报名后」 |
明确为 当前时间 ≥ 报名开始 不可下架(§5.6) |
| 操作列 发布前/后 |
汇总为 §5.2.4、§6 |
| 仅罗列字段 |
补充流程、矩阵、时间链、删除策略、范围边界 |
| 实际报名人数来源 |
说明本模块展示、报名功能另模块(§2.3) |
11. 需求追溯
| 能力 |
章节 |
| 新增与字段校验 |
§5.1 |
| 列表筛选 |
§5.2 |
| 修改 / 删除 |
§5.3、§5.4 |
| 查看 |
§5.5 |
| 发布 / 下架 |
§5.6 |
| 报名状态 |
§2.3、§7 |
| 操作流程 |
§4 |