风险台账检查·措施与责任人
风险台账最常见的翻车不是「没登记」,而是「登记了却没人管」:负责人空着、应对措施空着,或者写一句「加强管理、密切关注」就当交差;高风险没有措施、截止日期早已过期却没人更新;概率乘影响明明算出来是「高」,填报等级却是「低」。
本工具在风险台账评审或向上汇报前,把每一条的写法与管理问题扫一遍,并给出可定位到条目的整改建议。
何时使用
- 风险登记册(Excel/CSV)刚填完,想确认「每条风险有没有人负责、有没有可执行的应对措施」。
- 用户给出风险台账,问「帮我看看这张风险表中有什么问题」。
- 项目评审 / 月度风控汇报前,检查高风险是否有措施、截止日期是否逾期、等级是否自洽。
怎么用
python3 scripts/risk_lint.py risks.csv
python3 scripts/risk_lint.py risks.csv --json
python3 scripts/risk_lint.py risks.csv --as-of 2026-10-11 # 指定基准日判断逾期
python3 scripts/risk_lint.py --sample
- 退出码:
0= 无问题,1= 发现问题(便于接入 CI / 脚本)。 --as-of用于判断「截止日期是否过期」,默认取运行当天。
输入格式
风险登记册 CSV(首行为表头)。列名自动识别,大小写、空格差异兼容;列顺序不限。
| 角色 | 候选关键词 |
|---|---|
| 风险描述 | 风险描述 / 风险 / 风险项 / 风险事件 / 描述 / risk |
| 类别 | 风险类别 / 类别 / 分类 / 类型 / category |
| 概率 | 概率 / 可能性 / 发生概率 / 频度 / probability |
| 影响 | 影响 / 影响程度 / 后果 / 严重程度 / impact |
| 等级 | 风险等级 / 等级 / 风险值 / 级别 / level |
| 应对措施 | 应对措施 / 缓解措施 / 措施 / 应对 / 缓解 / mitigation |
| 负责人 | 负责人 / 责任人 / owner |
| 截止日期 | 截止日期 / 截止 / 期限 / 计划完成 / due |
| 残余风险 | 残余风险 / 剩余风险 / residual |
取值约定:
- 概率 / 影响:填
1–5的整数,或高 / 中 / 低(分别按 5 / 3 / 1 折算)。 - 等级:填
高 / 中 / 低;若填的是数字,则按「风险值」分档(≥12 高,6–11 中,≤5 低)。 - 缺失占位(
无/暂无/待定/N/A/-等)视同留空。 - 「有措施但无截止日期」才报缺期限;截止日期写了但无法解析时不判逾期。
检查项与规则码
| 规则码 | 含义 | 严重度 |
|---|---|---|
K1 MISSING_OWNER |
风险无负责人 | 高 |
K2 MISSING_MEASURE |
无应对措施 | 高 |
K6 LEVEL_VS_MEASURE |
高等级风险但措施为空或过宽泛 | 高 |
K3 MEASURE_VAGUE |
措施是空话(加强管理 / 密切关注 / 持续跟进 / 提高认识 / 高度重视) | 中 |
K4 MISSING_LEVEL |
既无等级,也无可推算的概率×影响 | 中 |
K5 LEVEL_MISMATCH |
概率×影响推算等级与填报等级相差一档以上 | 中 |
K7 MISSING_DUE |
有措施但无截止日期 | 中 |
K8 DUE_OVERDUE |
截止日期早于基准日(默认今天) | 中 |
K9 DUPLICATE_RISK |
风险描述重复或高度相似 | 中 |
K11 PROB_IMPACT_INVALID |
概率/影响取值非法(非 1–5 且非 高/中/低) | 中 |
K10 CATEGORY_MISSING |
无风险类别 | 低 |
K12 NO_RESIDUAL |
无残余风险说明(台账含残余风险列时检查) | 低 |
> 等级分档口径(概率×影响):≥12 判高、6–11 判中、≤5 判低;K5 仅在相差「一档以上」(如 高 ↔ 低)时报告,相邻档位差视为口径误差不报。
输出示例(节选)
文件:risks.csv(基准日:2026-10-11)
=== 风险台账体检报告 ===
风险条目:8
问题合计 21 项:高 3 · 中 11 · 低 7
结论:存在硬伤(无责任人 / 无应对措施 / 高风险无措施),先补再改
—— 高风险 ——
[K1] R1「数据泄露导致客户信息外流」无负责人(R1,第 2 行)
· 说明:负责人列为空,没有人对这条风险的处置负责
· 建议:指定明确的责任人(到岗到人,不要写「相关部门」)
[K6] R2「核心成员离职造成项目延期」为高等级风险,措施却缺位或空泛(R2,第 3 行)
· 说明:高风险却只有「空话」式的应对措施,等于放任
· 建议:高风险必须落到具体措施、责任人与时限
—— 中风险 ——
[K8] R1「数据泄露导致客户信息外流」截止日期 2024-01-01 已过期(R1,第 2 行)
· 说明:截止日期早于基准日 2026-10-11,措施可能已逾期未完成
· 建议:确认该措施是否已完成/延期,更新状态与新的截止日期
[K5] R7「数据泄露导致客户信息外流」填报等级与概率×影响不符(R7,第 8 行)
· 说明:填报为「低」,但按概率×影响推算应为「高」,相差一档以上
· 建议:复核概率/影响打分或等级判定口径,二者对齐
设计边界
- 纯标准库 Python,只读,无网络请求,无
subprocess/eval;输入按 UTF-8(含 BOM)读取。 - 只做写法与管理完整性检查(责任人、措施、等级自洽、期限、重复、类别、残余风险),不做风险发生概率预测、风险量化建模、措施有效性评估或项目整体风险打分。
K3空话识别为词表匹配:命中「加强管理 / 密切关注 / 持续跟进 / 提高认识 / 高度重视」等固定短语才报,属提示而非定论;像「加强数据加密」这类具体措施不会误报。K5等级比对基于「概率×影响」的启发式分档,分档阈值(12 / 6)可按组织口径调整;仅报相差一档以上的明显不符。K9重复判断基于文本归一化与关键词相似度,近似描述会归为「高度相似」,需人工确认。K8依赖运行当天(或--as-of指定日期)判断逾期,跨时区/历史台账请显式传入基准日。- 样例为构造的演示数据,人名与公司均为虚构。