Development Requirement Specification · v1.0a

训考通 · 消防技能训练管控考评系统
开发需求说明书

依据 2026-10-21 两轮需求沟通整理定稿。v0.9 初稿的 14 条待确认事项已逐条处置(见第 6 章决策记录),红色建议项已按勾选结果纳入或排除。本文档独立于「内攻入口管控」项目,两者不是同一产品。
文档版本v1.0a 修订版 日期2026-10-21 平台Android APP + Web 管理后台 语言简体中文

00文档信息与版本记录

产品名称
训考通
产品副标题
消防技能训练管控考评系统
文档性质
v1.0 修订版
标注规则
确认=已定稿;待确认=仅剩的 2 个开放项(第 5 章);预留=本期不实现但数据结构已预留

01项目定位与平台范围

一句话定位:给消防队日常技能训练做「管人、管时、管安全」的系统——训练前建事件分任务组,训练中刷卡进出场、倒计时、轮换班、算空呼余量、到点预警,训练后出报告、存档案、支撑考评。

安卓 APP

现场使用端,供管理员、教练员与记录员操作;训练人员不使用 App,仅持 NFC 卡。

Web 管理后台

管理员专用:层级授权、人员库与批量导入、标签字典、公告发布、审计查询。

云端服务

数据云端存储与同步(含防串组的服务端集中校验)。

语言

简体中文。

明确不做

① 不做 iOS;② 不做短信验证;③ 不做气瓶压力传感器等硬件采集(空呼余量为公式计算值);④ 不做多语言切换。

建事件 / 任务组 / 训练单元→ 刷卡进场(教练同意)→ 开始执行 · 倒计时 · 换班 · 空呼余量预警→ 刷卡退场确认→ 自动生成训练报告 · 归档考评 贯穿全程:人员库状态同步、信息流录入、天气展示、公告推送

02角色与权限

角色使用端核心动作限制
管理员Web 管理后台(可配 App 高权限)层级授权;按「身份」配置权限,可新增自定义身份;人员库管理与批量导入;标签字典维护;公告发布;审计查询;强制加入/退场—
教练员安卓 APP在分派的任务组下新增训练单元;刷卡确认他人进场;强制加入(搜索 / 口令申请审批);强制退场与批量退场;换班操作;查看公告与训练报告教练员本人以及带队训练的队员,同一时间均只能在一个未结束任务组中
记录员(安全登记员)安卓 APP信息流录入(余量、被困人员、火点、爆炸物等);报压手动录入默认无强制退场权限(后台可开关开放)
训练人员不使用 App持 NFC 卡刷进刷出,是被记录对象无账号、无界面;训练数据的查看由教练员与管理员完成
权限模型

权限挂在「身份」上而不是挂在具体人身上:管理员在后台新增身份类型并为每种身份配置权限集合;给人员赋身份即获得权限。已明确权限项:添加事件、查看范围、强制进场、强制退场、批量退场、公告可见性、批量导入——其余权限项按第 6 章 Q3 结论,由管理员在后台权限矩阵中逐项配置。

03组织层级与可见性(核心)

层级为三级联动,预留四级扩展,命名已定稿:

训练事件→ 任务组→ 训练单元 三级均由管理员(或有权限者)直接创建,也可由上级创建后逐级下派;每一级均指定记录员与负责人(教练)
层级创建者包含内容通用要素(三级一致)
训练事件管理员(或有权限者)事件名称、任务组列表、装备/车辆/器材清单负责人(教练)与记录员、计划开始时间、计划时长、实际起止时间(自动记录)、位置标注(标签)、任务名称与内容、轮班换班计划(可配置)
任务组管理员 / 教练(按权限)组名、分派教练、成员、轮班计划、训练单元列表
训练单元教练员自主新增单元名、时长(默认 15 分钟)、内容、标签

可见性规则(本级 + 向下 N 级,永不向上)

规则说明
向下可见每一层级用户可看到自己所在层级及其下级全部信息;向下可见的层级数可配置,默认 1 级(即只看直接下级),管理员可按身份调整为 2 级或全部
向上不可见任何层级不可向上查看:教练员看不到所在任务组之外的其他任务组与事件层细节,只接收所在事件/组/单元的结果反馈
教练员与训练人员本规则当前约束的是教练员;若权限开放,可允许训练人员查看自己的训练情况(个人成绩、参训记录),当前不开放,作为预留能力
实现性质是数据可见性按层级裁剪(接口层过滤),不是界面菜单隐藏

04功能需求正文

R1注册与账号

编号功能需求说明状态
R1-01注册用户名 + 密码注册+预留图形验证码能力(默认开启)确认
R1-02登录用户名 + 密码登录,登录态持久化确认
R1-03层级授权管理员对各级人员授权;权限按「身份」批量配置,支持新增自定义身份(后台操作)确认
R1-04密码重置忘记密码只能由管理员在后台重置,无自助找回(产品规则,写入用户引导文案)确认

R2人员库

人员资料提前录入;批量导入在 Web 管理后台完成(Excel),App 端仅作少量增改。

2.1 字段清单

字段说明必填
用户 ID系统唯一编号;NFC 卡内写入的就是它,是刷卡匹配的唯一凭据系统生成
NFC 物理 ID卡片出厂 UID,与用户 ID 绑定,用于防伪校验制卡时写入
姓名 / 性别—必填
肖像照片录入时必须上传必填
年龄 / 身高 / 体重体训基础数据(编制方建议补充,已确认纳入)选填
所属部门队站内部门/班组归属,用于筛选统计必填
职务人工录入(班长、队员等,区别于「身份」)必填
空呼耗时6.8L 气瓶基准耗时,空呼余量计算的输入参数(公式见第 8 章)必填
身份教练员 / 训练人员 / 记录员;管理员可新增身份类型必选
状态训练中 / 训练结束 / 待命 / 绿标,随训练动作自动流转系统维护

2.2 状态流转与排序(已定稿)

待命→ 刷卡进场同意 → 训练中→ 刷卡退场确认 → 训练结束(30 分钟内)→ 超时自动转 → 绿标(空闲) 待命 = 已被排入某个即将开始的组;绿标 = 完全空闲,可随时调入任何组。30 分钟从出场确认时刻起算。列表默认排序:训练中 → 待命 → 训练结束 → 绿标

2.3 批量导入

编号功能需求说明状态
R2-04Excel 批量导入在 Web 管理后台上传 Excel,逐行校验并回报「成功 N / 失败 M / 跳过 K」及失败原因;照片按「姓名.jpg」打包上传自动匹配;增量导入不覆盖已有人员确认

R3NFC 制卡与刷卡

编号功能需求说明状态
R3-01制卡配套 NFC 制卡设备 + 空白卡片;App/后台提供写卡功能,将用户 ID + 校验码写入卡片,同时登记卡片物理 UID 与人员绑定确认
R3-02卡内容规范卡内只有用户 ID 与校验码,不含姓名等隐私信息;非授权人员用其他工具读卡无法识别身份确认
R3-03刷卡识别手机贴卡 → 读取用户 ID → 匹配人员库 → 弹窗显示姓名、性别、职务、照片等 → 有权限者手动点击同意 → 加入当前任务组/单元确认
R3-04防串组校验(服务端集中)任何人(教练员本人、带队队员)刷卡/申请加入时,由服务端集中校验其是否已在某个未结束任务组中:在 → 弹窗提示并禁止加入,教练可点击强制加入-另一个教练(该训练员显示所在训练中的事件/组/单元中的教练,可以手动放行或拒绝【放行则自动加入新组,拒绝则保持。】)。校验必须在服务端完成,不允许仅凭本机数据直接放行确认
R3-05补卡 / 换卡换卡 = 重写新卡 + 解绑旧卡,旧卡立即失效确认

R4训练事件 · 任务组 · 训练单元

编号功能需求说明状态
R4-01三级创建通用字段训练事件、任务组、训练单元创建时均需填写:名称、负责人(教练,标签点选 + 模糊搜索,仅可选取有教练身份者)、记录员、计划开始时间、计划时长、位置标注(标签)确认
R4-02创建权限边界管理员可直接创建一级事件,也可直接创建单个或多个任务组或训练单元执行;各级均可创建单个或多个子任务。确认
R4-03教练新增训练单元教练只能在自己被分派的组下新增单元;单元时长默认 15 分钟,可改确认
R4-04标签体系任务位置、任务名称、任务内容、教练姓名、装备、设备、车辆、器材——全部标签化,后台预维护,创建时点选快填,也允许自由输入确认
R4-05轮班(换班)计划在任务组与训练单元上均可配置:分几班(默认两班,可增至任意班数)、每班时长/换班间隔分钟数、各班成员名单确认
R4-06时间与位置标注三级均展示:计划开始时间、实际开始/结束时间(点击「开始执行」后自动记录)、总时长、位置(标签)确认
R4-07层级可见性裁剪按第 3 章规则:本级 + 向下 N 级(默认 1 级,可配置),永不向上;教练员适用;训练人员当前不开放 App 查看,预留开放能力确认

R5进场登记与加入(三种方式)

① 常规刷卡+ ② 强制进场(刷卡 / 模糊搜索)+ ③ 口令申请加入(教练员) 三条路最终都经过同一道闸门:服务端防串组校验(R3-04)→ 通过才进组
编号功能需求说明状态
R5-01常规刷卡进场训练人员贴卡 → 弹窗显示信息 → 教练点「同意」→ 进入任务组,人员状态同步为「训练中」确认
R5-02强制进场 · 刷卡方式换班或临时补人时刷卡直接确认进入,跳过同意等待确认
R5-03强制进场 · 模糊搜索方式教练/管理员模糊搜索姓名 → 弹出个人信息 → 确认 → 直接加入(无需本人同意)确认
R5-04口令机制教练员在 App 中看到训练事件/组/单元 → 点「申请加入」→ 输入口令 → 加入成功。口令由系统针对该组/单元/事件独立生成,仅本组生效,不跨组通用确认
R5-05口令细则(定稿)有效期 30 分钟,超时自动失效;严禁重复使用,一经输入(核销一次)立即失效确认

R6训练执行与安全预警(核心)

6.1 计时与倒计时

编号功能需求说明状态
R6-01统一计时起点教练点击底部「开始执行训练」按钮后,全组统一开始计时——不是每人刷卡各自起表。理由:多人各自起表会产生 N 条独立时间线,换班、撤离与统计无法对齐;技术上统一单点起表亦规避了并发复杂度确认
R6-02大倒计时按任务/单元时长(一般 15 分钟)显示醒目的大号倒计时确认
R6-03任务进度条与倒计时同步的进度条,标注「任务执行中」确认
R6-04倒计时变色随剩余时间 绿 → 橙 → 红,结束即铃声/语音提醒确认
R6-05换班提醒铃声临近换班节点播放「滴滴滴」铃声/语音播报提示确认

6.2 换班(轮班)

编号功能需求说明状态
R6-06手动换班到点后教练手动点击「换班」,当前班整体切到下一班;上一班整体自动退出训练任务、自动结束,界面即时刷新确认
R6-07换班即视为确认换班动作本身视为出场确认,上一班成员无需再刷卡退场;如现场管理要求保留刷卡确认流程,可做成配置开关确认
R6-08换班记录每次换班的时间与班次写入训练报告与档案确认

6.3 空呼余量计算与预警

编号功能需求说明状态
R6-09余量实时计算从「开始执行训练」统一起算,按人员库登记的 6.8L 空呼耗时 + 需求方提供的公式,实时计算每人空呼余量并以进度条显示确认
R6-10预警值设置可设置余量预警值;达到阈值触发预警声音 + 弹出该人员确认
R6-11预警方式 A · 5 分钟按组询问与倒计时同步,每满 5 分钟按组批量发出提示(对讲机询问);可逐人询问;记录员手动录入每人实际报回的余量(手动报压)确认
R6-12预警方式 B · 紧急撤离空呼余量 ≤5 MPa:红色紧急预警/语音播报提醒 + 「紧急撤离」,训练立即终止(阈值区别于内攻入口管控系统的 6 MPa,两产品独立设定)确认
R6-13个体差异计算预警按个人空呼耗时基准分别计算(肺活量不同,同一时长余量不同),不做全组一刀切确认

R7退场 · 强制退场 · 任务结束

编号功能需求说明状态
R7-01刷卡退场训练人员再刷 NFC → 弹窗显示信息 → 人工确认 → 该成员本次训练自动结束;状态同步回人员库(训练结束 → 30 分钟后自动绿标)确认
R7-02强制退场(单个)教练点「强制退场」直接结束该成员任务;自动打「强制退场」标签记录;备注选填。记录员默认无此权限(后台可开放)确认
R7-03批量强制退场 / 批量结束教练可勾选多人一键批量结束训练任务,不依赖逐个刷 NFC确认
R7-04任务结束与收尾整组/单元/事件结束自动生成训练报告(R8)。遗留场景(待确认 V-3):教练忘记批量结束/退场,或部分人员未带卡未刷卡时,这些人将一直处于「在场」状态——收尾方式见第 5 章 V-3,编制方建议方案已附待确认

R8训练报告

编号功能需求说明状态
R8-01自动生成报告任务结束自动生成,App 内以页面形式展示确认
R8-02已读 / 未读有权限的人看到报告列表,标「已读 / 未读」确认
R8-03报告内容事件/组/单元名称、计划起止时间与实际起止时间、位置、科目、教练、参训人员名单、换班记录(时间与班次)、预警与紧急撤离记录、强制进退场记录、信息流摘要、空呼余量曲线确认

R9信息流(执行情况与进程录入)

主要由记录员手动录入,服务复盘与指挥。设计原则:对讲机沟通的同时能秒录,标签化为主、打字为辅。

编号功能需求说明状态
R9-01录入内容空呼余量、发现被困人员数量、火点位置、发现爆炸物、所处位置等现场信息确认
R9-02标签化快录各类信息预设标签,点选为主、打字为辅确认
R9-03按人录入针对具体人员单独录入确认
R9-04按组批量录入批量对全组人员一次录入(如全组统一报压)——实际场景存在性待确认,功能保留待确认 V-4?已并入 V 列表待确认

R10天气展示

编号功能需求说明状态
R10-01入口简显创建事件/任务组/单元的入口处显示当日温度、湿度、风力、雨、雾等简要信息;不需要实时刷新确认
R10-02点击详情点开展示温湿度记录对应表(详细页)确认

R11档案管理

11.1 任务档案

编号功能需求说明状态
R11-01时间维度筛选今天 / 昨天 / 本周 / 本月 / 本季度 / 本年度,统计各维度内训练的事件与任务数量确认
R11-02字段展示与搜索教练、训练科目、位置、内容、参训人数等;支持按内容、教练等关键词搜索(字段清单按 R8-03 定稿)确认

11.2 考评档案(原「人员档案」,已定名)

编号功能需求说明状态
R11-03个人考评档案可查询任意训练人员:累计课时、训练科目、训练时间、位置、带训教练等确认
R11-04时间维度筛选与搜索与任务档案一致:六档时间筛选 + 关键词搜索确认
R11-05整体统计人员维度整体统计视图(独立页面)确认
R11-06查看权限考评档案由管理员查看;教练员查看权限可在权限矩阵中配置确认
说明:关于「考评」的边界(保留提示)

App 本期不内置评分与考核判定;「考评」由管理者依据系统数据(课时、科目、参训记录)线下开展。数据模型已预留成绩字段,后续如需 App 内考评(评分、达标判定、排行)属二期模块。

R12公告

编号功能需求说明状态
R12-01公告发布与可见性安全提示、加强训练指示、政策文件等;仅教练及以上可见,训练人员不可见;后台发布确认

R13管理后台(Web,本期正式范围)

编号功能需求说明状态
R13-01登录与层级授权管理员登录;按身份配置权限矩阵;新增自定义身份;管理各级创建权限确认
R13-02人员库管理与批量导入人员增删改查、照片上传、Excel 批量导入与照片包匹配(见 R2-04)确认
R13-03标签字典维护任务位置、任务名称、任务内容、科目、装备、设备、车辆、器材、职务等标签的增删改与排序确认
R13-04公告发布公告的发布、撤回,可见范围配置(默认教练及以上)确认
R13-05审计日志查询强制进退场、换班、批量操作、档案修改、导入等敏感操作的留痕查询(谁、何时、改了什么)确认
R13-06数据与账号运维密码重置、账号停用;云端数据备份策略管理确认

05NFC 技术实现方案

核心问题:NFC 贴卡时,系统可能把卡片分发给浏览器或其他默认应用,导致数据读不进 App。结论:采用「自定义 NDEF + 前台 ReaderMode 独占读卡」方案,可实现且无跳转、隐私最优。

5.1 方案(定稿)

环节做法效果
制卡端制卡设备将「用户 ID + 校验码」以自定义 NDEF 格式写入卡片(专有 MIME 类型,非网址);同时记录卡片物理 UID 与人员绑定卡内无姓名等隐私;未装 App 的手机贴卡无任何反应,编号不外泄
读卡端App 在登记/退场相关页面启用安卓 ReaderMode,对 NFC 卡独占处理,绕过系统标签分发贴卡直接进业务流程(匹配 → 弹窗 → 同意 → 入组),无跳转、无系统弹窗
生效范围仅在进场登记与退场页面生效(实际为同一业务页面,含强制退场、任务结束等操作场景);App 其他页面一律不响应 NFC防误读;行为确定

5.2 硬件与兼容要点

  • 卡型:NTAG213/215/216 系列(与制卡设备匹配);同时记录物理 UID 防克隆。
  • 手机:登记用安卓机必须带 NFC,采购清单需标注型号;无 NFC 的低端机不可用作登记端。
  • 权限:安卓 NFC 为普通权限,安装即有,无需用户手动授权;读卡不依赖网络。
  • 平台:本项目只做安卓端,不做 iOS。

06待确认事项(仅剩 2 条)

#问题编制方建议(供选择)
V-2各级创建权限边界:除管理员外,教练员可否直接创建训练事件/任务组?还是只能在自己被分派的组下建训练单元?教练员仅可建训练单元;事件与任务组由管理员/负责人创建
V-3任务结束时的收尾:教练忘记批量结束/退场,或有人未带卡未刷卡,导致部分人员一直处于「在场」状态,如何处理?双方案并存供配置:① 结束时自动对剩余在场人员打「任务结束批量收尾」标记并自动退场;② 结束后保留名单,向教练与管理员推送待处理提醒,人工确认后才收尾。建议 ①+② 叠加:先提醒、超时自动收尾
注:v0.9 的 Q4/Q5/Q6/Q7/Q8/Q9/Q10/Q11/Q13/Q14 均已确认并落入正文(见第 7 章决策记录);R9-04 按组批量录入的存在性并入后续沟通,不影响开发排期。

07决策记录(待确认事项处置结果)

#事项处置结果
Q1三级命名与岗位名定稿:训练事件 / 任务组 / 训练单元;岗位定名「记录员」
Q2注册验证定稿:不做短信;不加其他强验证;预留图形验证码(R1-01)
Q3权限清单定稿:按编制方建议项为基线,管理员在后台权限矩阵中配置,可继续扩展
Q4待命 vs 绿标定稿:待命=已排入即将开始的组;绿标=完全空闲(2.2 节)
Q530 分钟绿标起算点定稿:从出场确认时刻起算
Q6NFC 卡内字段定稿:仅用户 ID + 校验码(R3-02)
Q7补卡换卡定稿:重写新卡 + 解绑旧卡,旧卡立即失效(R3-05)
Q8口令细则定稿:30 分钟有效、一次性使用、即输即失效、仅本组生效(R5-05)
Q9统一计时起点定稿:教练点「开始执行训练」统一起表(R6-01)
Q10换班后上一班收尾定稿:自动结束,换班即视为确认,无需刷卡(R6-06/R6-07)
Q11紧急撤离阈值定稿:≤5 MPa(R6-12)
Q12任务结束收尾转入待确认 V-3,编制方「先提醒、超时自动批量收尾」的叠加方案已附(第 6 章)
Q13报告与档案字段定稿:按编制方起草字段执行(R8-03 / R11),「计划与实际起止时间」双时间字段确认纳入
Q14NFC 生效范围定稿:仅在进场登记与退场相关页面生效,其他页面不响应(5.1)
Q15层级可见性默认级数(原 V-1)定稿(2026-10-21):默认向下 1 级(只看直接下级),管理员可按身份调整为 2 级;永不向上(第 3 章)

08补充功能处置(v0.9 建议项勾选结果)

#功能处置落点
S-01数据本机加密存储纳入非功能需求,本地库加密
S-02操作留痕 / 审计日志纳入R13-05 + 全敏感操作留痕
S-03评估免责声明页纳入长期展示免责页 + 首次启动确认;评估结果标注「以现场指挥员为主」
S-04数据云端同步与备份纳入架构定稿:云端存储 + 本机缓存断网补传(第 1 章)
S-05防串组服务端集中校验纳入R3-04(强制项:不允许仅凭本机数据放行)
S-06语音报警纳入预警方式 A/B 均带语音播报(含人员姓名播报)
S-07App 检查更新纳入内置检查更新 + APK 下载安装(内部分发)
S-08报告导出 PDF纳入R8-04
S-09人员批量导入纳入R2-04,在管理后台上传(App 端不做导入)
S-10考评模块数据预留纳入数据模型预留成绩字段;App 内考评属二期
S-11账号找回规则纳入R1-04:忘记密码仅管理员后台重置
S-12训练时长防篡改待定未确认。如训练数据用于考评,建议启用单调时钟 + 服务端校时(成本不高)

09需求方提供的材料

① 空呼余量计算公式
明确输入输出形式(6.8L 基准耗时 + 已执行时长 → 余量 MPa 或百分比)。训练前装备已检查确认满瓶,不含温度修正与中途换瓶场景
② 训练科目清单
建议提供一份科目清单,系统提前制成标签,方便录入人员快速点选
③ 装备 / 车辆 / 器材标签初始清单
用于标签字典预置,避免上线后空白
④ NFC 硬件确认
制卡设备型号、卡片类型与数量;登记用安卓手机的 NFC 型号清单