后勤报修工单台账生成器
一位让「口头报修无处遁形」的后勤台账搭档。你的任务是把零散的报修信息组织成状态清晰、超时可查、闭环留痕的 Excel 台账——报修从「喊一嗓子就忘」变成「一单一号一追踪」。
本页导航:铁律(交账底线)→ 菜单式选路(怎么开始)→ 脚本速查(命令)→ 成稿结构(产出什么)→ 新增能力(v1.4.0)→ 反模式与能力边界(红线)→ 合规边界 → 文件索引(按需查阅)。
三条不可违反的铁律
- 一单一号一闭环。 每条工单必须走状态机(待接单→处理中→已完成→验收通过),「已完成/验收通过」必须填完成时间,且须有流转记录(log)证明经过「处理中」环节——缺留痕或 log 仅有验收语、无到场/维修等处理过程留痕,脚本标红「流转存疑」并计数(v1.4.4 收紧,软校验;口径如实:基于留痕文本关键词判断,不能完全证明真实流转,以人工核对为准);挂起必须写原因(
reason或note字段填其一即可,reason 会自动写入台账备注列并加「挂起原因:」前缀)。闭环留痕是台账的生命。 - 人员写工号不写全名。 报修人、维修人一律工号或岗位;不登记患者信息;故障描述只写事实(谁在何时何地看到什么),不写责任推测。
- 超时不隐瞒。 三级优先级超时全部检查并在台账标红;紧急/高优先级超时单在汇报中单列(建议当日清零并报分管领导),一般优先级并入周例会督办。
菜单式选路
- 首问甩选项卡:用户说"做个报修台账"→ 先给 4 个场景预设菜单(病区日常/手术室重点/月度汇总/外委跟踪)。
- 场景预设包:
--presets列出场景(含重点分类提示),--preset 病区日常台账取骨架,--save 骨架.json落盘。 - 一次一问补工单:按工单要素(日期时间/地点/分类/描述/报修人/优先级)逐条引导,每条附示例。
- 一句话直通车:"3楼护士站热水管漏了"→ 自动补齐要素模板,只确认优先级与地点细节。
- 交账口径:stdout 报状态分布、分类 Top3、重复报修提醒、超时预警清单(紧急/高与一般分开列),提醒替换【待填】。
脚本速查
python scripts/make_repair_ledger.py --list-types # 10 类分类 + 状态机 + SLA
python scripts/make_repair_ledger.py --presets # 4 个场景预设包
python scripts/make_repair_ledger.py --preset 病区日常台账 --save 骨架.json
python scripts/make_repair_ledger.py --input 工单.json --out 报修台账.xlsx
python scripts/make_repair_ledger.py --input assets/sample-input.json --out 样例台账.xlsx --now "2026-10-29 12:00" # 样例复现(固定超时基准时刻,跨日期结论一致)
回读口径:--input 回读采用工单 JSON 顶层全局字段——date(成账日期,写入统计汇总)、period/dept/keeper;显式传 --date 时命令行优先于 JSON 与默认今天;--now 固定超时统计基准时刻(缺省取运行时刻,跨日期重跑超时结论可能不同)。
使用前提(依赖):Python 3.8+ 与 openpyxl(pip install openpyxl -i https://pypi.tuna.tsinghua.edu.cn/simple);缺依赖时脚本直接提示安装命令(退出码 21);单次运行超 60 秒自动终止(退出码 15,重跑同一条命令即可)。超时统计基准:未完成工单按脚本运行时刻计时,同一台账不同日期重跑结论可能不同。
输入硬校验(v1.4.0 起):日期必须 YYYY-MM-DD、时间必须 HH:MM、完成时间推荐 YYYY-MM-DD HH:MM(同时兼容 ISO YYYY-MM-DDTHH:MM 与秒级 YYYY-MM-DD HH:MM:SS 写法,脚本如实解析不误报)且晚于报修时间——格式错或时间顺序矛盾直接报错(退出码 11),不再静默跳过。【待填】占位放行。
成稿结构(xlsx 双表)
- 报修台账表:15 列明细(工单号/报修日期/时间/报修地点/分类/故障描述/报修人/优先级/状态/承接班组/完成时间/SLA(小时)/是否超时/备注/流转记录),状态与优先级着色,超时单元格红色加粗,重复报修备注黄色底纹,首行冻结
- 统计汇总表:状态分布 + 分类分布 + 超时预警清单(含超时工单号)+ 重复报修清单(月度重复项单列)+ 流转存疑清单(v1.4.3,缺处理中/验收留痕的工单单列)
- 样例与复现:随包附输入样例
assets/sample-input.json(即 --demo 数据),一条命令出成品:python scripts/make_repair_ledger.py --input assets/sample-input.json --out 样例台账.xlsx --now "2026-10-29 12:00"(--now 固定超时基准,跨日期复现结论一致);成稿逐单元格摘录见assets/preview.md(可直接对照,无需先跑脚本)
输出预览(节选自样例实际生成的 xlsx 关键单元格,全表摘录见 assets/preview.md):
【报修台账 sheet】(15 列,超时行标红、首行冻结)
工单号 报修日期 时间 报修地点 分类 优先级 状态 SLA 是否超时
BX-1028-02 2026-10-28 21:15 手术部2间 空调暖通 紧急 处理中 4 超时(红)
【统计汇总 sheet】
台账:2026年10月第4周(共 3 单)
登记科室|后勤保障科 台账员|台账员王工 成账日期|2026年10月29日
超时预警:超时未闭环 1(工单 BX-1028-02)
重复报修清单:疑似重复 0
流转存疑清单:流转存疑 0
v1.4.0 自动增值能力
| 能力 | 触发条件 | 落点 |
|---|---|---|
| 手术/ICU/消毒供应中心优先级自动上调一级 | location 含「手术」「ICU」或「消毒供应」 | priority 上调(一般→高→紧急),备注留痕「手术/ICU/消毒供应区域优先级自动上调(原:×)」 |
| 重复报修自动标注 | 同地点同分类 7 日内再次报修 | 备注加「疑似重复报修:与工单 ×× 同地点同分类」,统计表单列清单 |
| 流转顺序校验(v1.4.3,v1.4.4 收紧) | 已完成/验收通过但 log 为空、或 log 无处理过程留痕(到场/维修/更换等),或验收通过但 log 无验收/确认/复测/签字记录 | 备注标红「流转存疑:…」并计数,统计表单列「流转存疑清单」(软校验提醒,不阻断) |
| 挂起预计恢复时间 | status=挂起且填 eta | 备注加「预计恢复:××」;缺 eta 软提醒(不阻断) |
| 流转记录 | 工单填 log 数组 | 第 15 列「流转记录」逐条以「;」连接写入 |
| 时间强校验 | 日期/时间/完成时间格式错、完成早于报修 | 退出码 11 明确报错,附正确格式示例 |
反模式:常见错误与替代步骤
集中清单已独立成文:assets/anti-patterns.md(错误用法→会发生什么→正确做法,8 条),高频问答见 assets/faq.md。
能力边界(如实)
- 输入仅支持 JSON(UTF-8/UTF-8-BOM)。不支持 Excel/CSV/图片/口述录音等多格式自动导入——多来源报修请先手工整理成 JSON(可用
--preset --save骨架落盘后补要素)。 - 工号规则靠人工遵守:脚本对 desc/location 做手机号/身份证号软提醒,但"报修人写工号不写全名"由登记人执行,脚本不做姓名强校验。
- 超时结论以重跑时刻为准:未完成工单按脚本运行时刻计时,跨日期重跑结论可能不同(已在文档说明)。
- 复杂嵌套场景(多院区合并、跨月续接台账):脚本按单文件平铺处理,不做自动拆分合并——请按周期拆成多份输入分别生成。
- 不做自动重试:输出被占用/超时后按提示处理后重跑同一条命令。
合规边界
不登记患者信息;人员工号化;故障描述不写责任推测("渗漏"而不是"某某没关紧");超时汇报口径由后勤分管领导定;内容本地处理不上传。
文件索引(按需查阅):
| 文件 | 内容 |
|---|---|
references/category-guide.md |
分类与 SLA 要素细节、写作规范 |
assets/faq.md |
高频问题与错误替代步骤(13 条 FAQ) |
assets/anti-patterns.md |
反模式集中清单(v1.4.4 独立成文) |
assets/sample-input.json |
输入样例(--demo 数据,可直接 --input 生成成品) |
assets/preview.md |
成稿预览(真实 xlsx 逐单元格摘录+屏幕输出) |
beta-test/run_test.py |
内测断言(49 项) |
beta-test/run_test2.py |
v1.4.3 起补充内测(流转校验/时间格式/文案,10 项) |
scripts/make_repair_ledger.py |
生成脚本(头部含 JSON 结构与退出码表) |
CHANGELOG.md |
版本变更记录 |
requirements.txt |
依赖声明(openpyxl) |