street-safety-ledger · 安全隐患台账
街道应急办 / 执法队 / 网格员排查现场的安全生产隐患台账 Skill,把「排查 → 交办 → 整改 → 复核 → 验收 → 销号 → 反弹 → 复盘」九段闭环落到结构化台账、状态机引擎、五红线守门与四个清单同源生成。
不可突破的红线
- AI 不判定风险等级。所有等级字段必须标注【建议等级,待排查人员 / 专业人员确认】,AI 不得替执法人员认定隐患性质、不得替监管部门出具最终结论。
- 销号四要素强制。复核验收人 / 验收时间 / 验收结论 / 佐证材料缺一不可,AI 不得自动销号、不得因到达整改期限自动变更状态、不得绕过验收人提交销号。
- 统计 100% 由明细现算。所有数字由台账明细实时聚合;可点击下钻;不允许手工填写覆盖统计值;不允许填入台账外数字;不允许为凑整改率而虚构已整改。
- 不替代执法与监管。不下达执法文书、不替代现场检查、不做行政处罚;不替代上级应急 / 消防监管系统的法定台账报送;重大隐患紧急转报必须由应急办负责人人工触发。
- 整改期限分级按当地法定标准。重大 7 天 / 一般 30 天等按当地应急 / 消防规定;未配置法定分级时严禁自行设定截止日;默认配置缺失则阻断交办。
- 状态变更四要素留痕。任何状态变更必须含触发原因 / 操作人 / 时间戳 / 佐证材料类型四要素;不满足则状态机引擎阻断流转。
- 已销号记录不可删改。销号归档后记录只读、不可修改、不可删除;反弹时只可关联新隐患记录生成重挂档案,不可改原销号记录。
- 敏感字段本地处理。经营者信息 / 联系方式 / 财务等敏感字段本地落库;脱敏后传给 LLM;全过程字段级访问留痕;导出受控。
一、核心能力速查
| 功能 | 描述 | 触发关键词 | 配套脚本 |
|---|---|---|---|
| F1 排查录入 | 语音 / 文字 / 图片三源录入,隐患要素自动提取,硬字段缺失阻断建档 | 排查建档、现场录入、语音录入 | scripts/ingest_inspection.py |
| F2 台账构建 | 隐患台账统一存储,9 段状态机驱动流转,全过程留痕 | 台账管理、状态流转、合并拆分 | scripts/build_ledger.py |
| F3 交办生成 | 整改交办单生成,立即 / 限期分级,送达留痕 | 整改交办、交办单生成、送达 | scripts/generate_notice.py |
| F4 逾期预警 | 临期 / 逾期多档提醒,逾期升级分管领导,可配置阈值 | 临期预警、逾期升级、督办 | scripts/track_overdue.py |
| F5 复核销号 | 现场复核 + 评分,销号四要素卡口,复核不通过升级 | 复核验收、销号归档、四要素 | scripts/review_closeout.py |
| F6 反弹监测 | 销号后 30/60/90 天监测窗口,同点同类自动重挂 | 反弹监测、重挂、复发 | scripts/monitor_rebound.py |
| F7 清单生成 | 问题 / 整改 / 责任 / 验收四清单由同一台账同源生成 | 四个清单、迎检生成、报表 | scripts/generate_lists.py |
| F8 多维统计 | 按类型 / 区域 / 等级 / 状态统计,100% 由明细现算,可下钻 | 统计、整改率、研判 | scripts/compute_stats.py |
| F9 五红线守门 | 越权表述 / 自动销号 / 编造数字等敏感行为正则阻断 | 红线、守门、guard | scripts/redline_guard.py |
| F10 状态机引擎 | 9 段式 S00-S09 状态流转,支持断点恢复 / skip / back | 状态机、断点恢复、resume | scripts/state_machine.py |
二、标准工作流程
前置检查
- 确认输入类型(排查原始记录 / 已建档台账 / 整改反馈 / 复核申请)。
- 确认场所底账已初始化(场所 ID / 网格 / 责任主体已映射)。
- 确认
config/deadline-rules.yaml已配置当地法定分级。 - 确认
config/overdue-rules.yaml阈值参数符合本地实际。
步骤
| 步骤 | 动作 | 入口动作 | 关键产物 |
|---|---|---|---|
| 1 | 排查录入(F1) | ingest |
排查原始记录(含来源 / 时间戳 / 排查人) |
| 2 | 隐患建档(F2) | build |
隐患台账条目(要素结构化 + 等级建议) |
| 3 | 整改交办(F3) | notice |
整改交办单 + 送达记录 |
| 4 | 临期 / 逾期预警(F4) | overdue |
预警档案 + 升级记录 |
| 5 | 现场复核(F5 上半) | review |
复核评分 + 佐证材料审查 |
| 6 | 销号四要素核验(F5 下半) | close |
销号凭证 / 阻断报告 |
| 7 | 反弹监测(F6) | rebound |
反弹重挂档案 |
| 8 | 四个清单生成(F7) | list |
四份同源清单 |
| 9 | 多维统计(F8) | stats |
统计报表 + 下钻路径 |
| 跨步骤 | 五红线守门(F9) | 自动 | 红线命中日志 + 阻断 |
| 跨步骤 | 状态机引擎(F10) | 自动 | 状态变更记录 + 留痕 |
跨阶段约束
- 任一阶段硬字段缺失立即阻断(不静默降级)。
- 任一红线命中立即拒答 + 提示用户(不静默吞掉)。
- 已销号记录禁止任何修改(只读 + 反弹重挂走新记录)。
三、任务状态机
| 状态 | 进入条件 | 出口 | 异常恢复 |
|---|---|---|---|
S00 初始化 |
收到任务 | 版本 + 角色检查 → S01 | 版本不匹配 → 阻断并询问 |
S01 采集 |
提供排查原始记录 | 隐患要素提取完成 → S02 | 录入失败 → 暂存 → resume |
S02 建档 |
采集完成 | 要素结构化 + 等级建议 + 硬字段校验 → S03 | 缺硬字段 → 标"建档不全"并暂停 |
S03 交办 |
建档完成 | 整改交办单生成 + 送达留痕 → S04 | 交办失败 → 重试 + 警告 |
S04 整改 |
交办送达 | 整改跟踪 + 临期预警 + 逾期升级 → S05 | 逾期不静默,必升级到分管领导 |
S05 复核 |
整改完成申请 | 现场复核 + 评分 + 佐证审查 → S06 | 复核不通过 → 退回 + 累计计数 |
S06 验收 |
复核通过 + 销号申请 | 销号四要素强制 + 授权审核 → S07 | 缺四要素任一项 → 阻断销号 |
S07 销号 |
验收通过 | 状态置已销号 + 归档不可改 + 反弹监测开启 → S08 | 已销号记录不可删改 |
S08 反弹 |
销号后监测 | 同点同类复发 → 自动重挂 + 关联原 ID → S05 | 销号后 N 天内复发自动触发 |
S09 复盘 |
闭环数据 + 异常事件 | 五个口径归因 + 复盘卡沉淀 → 终止 | 异常偏差大时回写交办规则 |
严禁转换:S07 → S02 / S03(销号后不可回到建档或交办,只可走 S08 反弹路径生成新记录);S09 → 任何中间态(终态不可重入主流程)。
验收场景 G/H/I(P1 阶段新增)
场景 G:反弹重挂
- 前置:HZD-001 已销号 30 天,同一网格同一地址同一类型再次出现新隐患 HZD-099。
- 动作:
scripts/monitor_rebound.py触发反弹监测。 - 预期结果:HZD-099 标记
original_hazard_id = HZD-001、rebound_count = 1、overlay_status += ['反弹中'];通知排查人员 + 分管领导;不静默吞掉,不修改原销号记录。
场景 H:复核不通过升级
- 前置:HZD-002 整改完成,复核评分 60 分,复核不通过。
- 动作:
scripts/review_closeout.py review()调用。 - 预期结果:状态机 S05 → S04 退回;累计计数 +1;若连续 ≥ 3 次不通过,自动冻结新增交办 + 升级分管领导 + 启动现场督办。
场景 I:重大隐患紧急转报
- 前置:HZD-003 等级"重大",整改期限 7 天,需上报上级应急办。
- 动作:
scripts/skill_main.py action=notice --deadline-grade=重大。 - 预期结果:生成标准格式转报文档(含 hazard_id / 位置 / 描述 / 期限 / 责任主体);AI 不自动推送,由应急办负责人人工触发;状态机仍走 S03 → S04 → S05 → S06 → S07 完整流程,转报记录在审计日志。
四、数据合规与安全
- 本地处理原则:隐患台账 / 场所底账 / 销号档案全部本地落盘;仅脱敏字段传 LLM。
- 字段级脱敏规则:经营者营收 / 利润 / 联系方式 / 身份证号 / 银行账号进入
sensitive_fields配置,调用 LLM 时替换为[已脱敏]占位符。 - 访问留痕:每条字段读写记录
access_log(含时间戳 / 操作人 / IP / 字段名),保留 24 个月。 - 分级权限:排查人员 / 复核验收人 / 销号授权人 / 分管领导 / 系统管理员五级权限矩阵,见
references/permissions-guide.md。 - 导出受控:含敏感字段的导出须由应急办负责人审批;导出文件加水印 + 加密 + 接收回执。
- 数据保留期:未销号隐患保留至销号后 5 年;销号档案保留 10 年;访问日志保留 24 个月;过期销毁有审计痕迹。
- 网络隔离:内网部署;禁止公网地址硬编码;LLM 调用走专线 + 脱敏管道。
五、性能与容量
| 场景 | 输入规模 | 目标响应 | 降级策略 |
|---|---|---|---|
| 单条建档 | 1 条排查记录 | < 1 秒 | 无降级 |
| 批量录入 | 100 条 / 次 | < 30 秒 | 拆分批次 + 进度条 |
| 逾期扫描 | 全街道未销号隐患(约 500 条) | < 5 秒 | 索引化 + 增量扫描 |
| 四个清单生成 | 全街道 / 月度 | < 10 秒 | 缓存 + 同源视图 |
| 多维统计 | 全街道 / 12 个月 | < 15 秒 | 物化视图 + 增量更新 |
| 反弹监测 | 销号档案(约 5000 条) | 每日定时 < 30 秒 | 增量监测 + 关联查询 |
| LLM 调用 | 单条要素提取 | < 3 秒 | 本地缓存 + 失败重试 1 次 |
容量基线:单街道 5000 条隐患 / 月,30000 条销号历史;超出规模时拆表 + 分区存储。
六、交付形态
| 文件类型 | 命名约定 | 用途 |
|---|---|---|
| 隐患台账 | <YYYY-MM>-hazard-ledger.json |
当前月份隐患台账 |
| 销号凭证 | closeout-<hazard_id>-<YYYYMMDD>.docx |
销号归档凭证 |
| 整改交办单 | notice-<hazard_id>-<YYYYMMDD>.docx |
整改交办单 |
| 四个清单 | lists-<scope>-<YYYYMMDD>.docx |
问题 / 整改 / 责任 / 验收清单 |
| 复盘卡 | review-<YYYYMM>-<scope>.md |
月度复盘卡 |
| 预警日志 | overdue-log-<YYYY-MM>.jsonl |
临期 / 逾期预警留痕 |
| 销号日志 | closeout-log-<YYYY-MM>.jsonl |
销号四要素留痕 |
| 反弹监测 | rebound-log-<YYYY-MM>.jsonl |
反弹重挂监测留痕 |
排版规范:思源宋体正文 / 思源宋体 Bold 标题 / 首行缩进 2 字符 / 1.5 倍行距 / 页脚「AI 辅助生成 · 等级与销号以专业人员 / 授权人员认定为准(街道应急办)」。
七、交付前自检
按 4 维度逐项过:
| 维度 | 检查项 |
|---|---|
| 功能完整性 | 14 项 P0 全部落地?scripts/ 含 9 个核心模块?references/ 含 6 份? |
| 合规与安全 | 五红线守门脚本已实现且单测过?销号四要素阻断单测过?字段级脱敏配置有? |
| 可维护性 | 状态机引擎支持 resume / skip / back?JSON Schema 交接契约齐全?错误码表完整? |
| 可扩展性 | config/ YAML 配置可热加载?P1 / P2 项预留扩展接口?多街道模板预留地区变量? |
八、何时不用本 Skill
| 场景 | 替代方案 |
|---|---|
| 实时烟感 / 燃气监测 | 物联监测平台 + 事件入台账 |
| 上级监管系统法定报送 | 应急管理部 / 消防救援局法定台账系统 |
| 执法文书出具 | 应急办 / 执法队文书系统 |
| 跨地区多街道联合排查 | 上级协调 + 各街道 Skill 实例数据互通 |
| 大型企业内部 EHS | 企业自有 EHS 系统 |
| 食品安全 / 特种设备 | 食品 / 特种设备专项台账系统 |
九、常见问题 FAQ
Q1:AI 判定等级被误用怎么办?
立即停用自动建档;等级字段全部回退到人工填写;开启红线守门日志复盘。
Q2:销号申请缺四要素怎么阻断?
scripts/review_closeout.py 强制四要素校验;缺任一项抛 CloseoutBlockedError,返回阻断报告。
Q3:复核不通过超过 3 次如何升级?
config/overdue-rules.yaml 配置 review_fail_threshold: 3;超阈值自动冻结新增交办 + 升级分管领导。
Q4:销号后 30 天内复发如何处理?
scripts/monitor_rebound.py 触发 S08 反弹路径;自动生成重挂档案 + 关联原 ID + 通知排查人员。
Q5:场所底账缺失怎么初始化?
scripts/skill_main.py action=init 调用场所底账初始化向导;导入 Excel / CSV 模板 → 字段映射 → 网格划分 → 责任体系映射。
Q6:统计与人工计数不一致如何排查?
检查台账明细是否被手工修改(应禁止);检查销号四要素是否齐全(缺项不入统计);查看 references/error-codes.md 的 ERR-STATS-* 错误码。
Q7:临期预警漏报如何处理?
检查 config/overdue-rules.yaml 的 warning_thresholds;检查状态机 S04 → S04-逾期 的触发逻辑;查看预警日志 overdue-log-<YYYY-MM>.jsonl。
Q8:整改期限法定分级缺失如何处理?
config/deadline-rules.yaml 的 grade_rules 为空时阻断交办;需联系应急办提供当地标准后再启用。
Q9:敏感字段如何脱敏?
config/site-schema.yaml 的 sensitive_fields 列出;LLM 调用前由 scripts/redline_guard.py 替换为 [已脱敏]。
Q10:如何回滚到上版本?
详见 docs/ROLLBACK.md;通过 action=rollback 调用版本快照回退;保留现场数据不被覆盖。
十、参考文件
按需读:
references/workflow.md(标准工作流实现细节)references/state-machine.md(9 段状态机详述)references/error-codes.md(错误码表,含红线命中码)references/data-quality-rules.md(数据清洗 / 校验规则)references/closeout-checklist.md(销号四要素核验清单)references/permissions-guide.md(RBAC 角色权限矩阵)docs/ROLLBACK.md(回滚方案与版本快照管理)docs/API.md(各脚本对外接口契约)docs/USER_GUIDE.md(终端用户操作手册)docs/DELIVERY.md(交付验收清单)