中小企业数字化转型 AI 诊断模型
> 把工信部《中小企业数字化水平评测指标(2024年版)》的 15 个采集项 + 16 个应用场景
> 结构化、可机读地编码成知识与评分引擎,配合"勾选三问"判定纪律,
> 让大模型仅凭企业访谈录音即可稳定、可审计地给出与官方模板公式逐字一致的评分。
何时使用
- 用户给出一份「企业访谈录音 / 问询记录」(docx / txt / 转录文本),要求评测其数字化水平。
- 用户要求产出《企业数字化水平现场评测打分》表(xlsx)与《中小企业数字化转型诊断报告》(docx)。
- 用户要做"独立诊断"(不参考专家已填模板,只凭访谈)或"往返校验"(读模板→复写→逐格比对)。
交付物
| 文件 | 来源 | 说明 |
|---|---|---|
企业数字化水平现场评测打分.xlsx |
scripts/fill_scoresheet.py |
在官方 2024 模板上按 JSON 打 √、写具体数据,公式自动计分 |
中小企业数字化转型诊断报告.docx |
scripts/generate_report.py |
含企业概况、评测结论、指标得分与原因明细(15 行)、场景分析、改进建议 |
依赖
- Python 3(脚本已内置
sys.path处理,无需安装即可 importrubric) pip install openpyxl python-docx(读写 xlsx / 生成 docx)
三阶段工作流
阶段 A — 读访谈、出诊断 JSON
- 先读
{baseDir}/references/DIAGNOSIS_PROMPT.md(勾选判定纪律:勾选三问 / 宁少勿多 / 原句证据),再读{baseDir}/references/RUBRIC.md(15 项与 16 场景速查)。 - 以
{baseDir}/scripts/rubric.py的RUBRIC_TABLE1/RUBRIC_TABLE2为唯一权威:selected_indices是 0 起、指向该选项列表的下标。 - 逐条判定 15 个采集项的勾选(
selected_indices+selected_texts)与 16 个场景的等级(rating),每条必须带evidence(访谈原句/段落)。 - 形成诊断 JSON,结构见下;可仿
{baseDir}/examples/企业A_input.json(家电,已逐格验证)与{baseDir}/examples/配电企业A_input.json(独立诊断示例)。
{
"enterprise": {"name":"企业A","industry":"…","product":"…","evaluator":"数字化转型评测小组","date":"2025年8月"},
"table1": {"items": [
{"id":1,"selected_indices":[1,2],"selected_texts":["…"],"specific_data":"","evidence":"访谈:…","analysis":"…"}
/* id 1..15,每个选项需 evidence;specific_data 仅单选量化项填写 */
]},
"table2": {"scenes": [
{"level1":"产品生命周期数字化","level2":"产品设计*","is_constraint":true,"rating":"一级","analysis":"…"}
/* 16 个场景,rating ∈ {一级,二级,三级,四级,""}(空串=不评级) */
]},
"basic_info":"…","conclusion":"…",
"strengths":["…"],"painpoints":["…"],"suggestions":["…"]
}
> 判定铁律:无访谈原句支撑的选项绝不勾(宁少勿多);"上了系统"≠"有制度","规划/准备"≠"已落地"。
阶段 A0 — JSON 校验(强制门禁,必须先过)
产出阶段 A 的 JSON 后、生成打分表/报告前,必须先跑校验。校验不通过(存在 ✗ 致命问题)不得进入阶段 B/C——这能避免"材料不全/格式错导致直接出错的报告",并保证评分口径一致。
cd {baseDir}/scripts
python3 rubric.py --check-json <诊断.json>
# 退出码 0 = 无致命问题(可继续);1 = 有致命问题(须按【必改】提示回流修正后重跑);2 = JSON 文件无法读取
校验覆盖:顶层结构 / 15 采集项齐全 / selected_indices 下标越界 / 单选题目多勾 / 量化项 specific_data 缺失 / 16 场景齐全 / rating 合法值 / is_constraint 与权威一致。
每条 ✗ 致命问题 都配 【必改】 中文修改提示;! 隐患 配 【建议核对】 提示。修正后重跑 --check-json 直到退出码 0。
> 阶段 B/C 两个脚本内置同一道校验门禁:JSON 未过校验时拒绝执行、打印相同【必改】清单并以退出码 1 停止——宁可停下指路,也不产出错误报告。
阶段 B — 生成打分表
需要一份官方《企业数字化水平现场评测打分》xlsx 模板(结构统一;可用 {baseDir}/references/评测打分模板.xlsx 作基底,或用户自备)。
python3 {baseDir}/scripts/fill_scoresheet.py \
--template <官方模板.xlsx> \
--json <诊断.json> \
--output <输出打分表.xlsx>
脚本只重写 J 列勾选与具体数据单元格,保留原公式——Excel 打开即自动算分(fullCalcOnLoad)。
阶段 C — 生成诊断报告
python3 {baseDir}/scripts/generate_report.py \
--json <诊断.json> \
--output <诊断报告.docx>
报告第三章「(一)」下含 3.采集项得分与原因明细:15 行(序号/一级/二级/采集项/得分/判分原因原句证据),完整保留可追溯证据。
自校验(强烈建议)
scripts/rubric.py 是确定性引擎,与官方 xlsx 公式逐字一致。
- 阶段 A0 必跑:
python3 rubric.py --check-json <诊断.json>(见上,门禁)。 - 判分口径自检(锁死评分逻辑,验证"统计结果/评分标准"正确性):
cd {baseDir}/scripts
python3 rubric.py --self-test
跑 5 家已验证企业(家电/汽车/电子元件/电子元件独立/配电)的回归断言 + 异常 JSON 校验单测,断言表一总分与综合等级与已知真值逐字一致(例:家电=51.9464/二级、配电=45.4643/二级)。任何一家偏离即说明评分口径被改坏,必须先修。
- 单企业复算(出 JSON 后本地核对预期):
cd {baseDir}/scripts
python3 -c "import json,rubric; d=json.load(open('<诊断.json>',encoding='utf-8')); \
sel={i['id']:i['selected_indices'] for i in d['table1']['items']}; \
r=rubric.compute_table1(sel); g=rubric.grade_decision(r['total'],rubric.scene_ratings_aligned(d['table2']['scenes'])); \
print('表一总分',round(r['total'],4),'一级',r['level1_scores'],'等级',g['overall'])"
- 独立诊断:先过 A0 校验,再以阶段 A 的 JSON 跑 B/C。
- 往返校验(验证引擎=官方公式):用 openpyxl 以
data_only=True读取专家已填模板的缓存值,与rubric.compute_table1复算值逐格比对,差异应为 0。
常见问题与异常处理(FAQ)
> 本节能在"材料不全/格式错"时给出可执行的改法,而不是静默产出错误报告;对应评测维度:可靠性↑、鲁棒性↑、准确性↑。
Q1. 跑 check-json 报"单选但题目勾选了 2 项"?
→ 采集项 2/3/5/8/11/12/13/14/15 为单选,只能留 1 个 selected_indices。按"代表企业实际档位"保留最贴合的一项,删掉其余。多选项(1/4/6/7/9/10)才可多勾。
Q2. 报"selected_indices 含越界下标 9(合法范围 0..4)"?
→ 下标是 0 起指向 rubric.RUBRIC_TABLE1[i].options。先查 references/RUBRIC.md 该采集项的选项数与文案,把 index 改到 [0, len(options)-1] 内;"无"恒为 0。
Q3. 报"量化项未填 specific_data"?
→ 采集项 2/3/11/12/13/14/15 勾了非「无」选项时,必须按模板占位填 specific_data,如
具体数据[60.00%],其中生产设备数量为[20]台,实现数字化的生产设备数量为[12]台。
现场未披露真实数值时,先填 [待核] 占位并在 analysis 注明"以补充材料核定",取保守档,不得无据拔高。
Q4. 报"场景 rating 非法 / 不在 16 个标准场景中"?
→ rating 只能取 一级|二级|三级|四级 或空串 ''(空=该场景无数字化应用、不评级)。level2 必须与 references/RUBRIC.md 的 16 个标准场景名逐字一致(含 * 约束标记,如 产品设计*)。
Q5. 报"table1.items 数量=3,应为 15"或"scenes 数量=2,应为 16"?
→ 必须 15 个采集项(id 1..15 各一条)+ 16 个场景(level2 各一条)。缺项直接补空勾选 {"id":N,"selected_indices":[],"selected_texts":[],"specific_data":"","evidence":"(无)","analysis":"未提及"},保证结构齐全。
Q6. 校验通过但想确认评分标准没改坏?
→ 跑 python3 rubric.py --self-test,5 家回归 + 异常单测全绿即口径未变。
Q7. 企业不愿/不能提供设备数字化率、投入占比等量化数据?
→ 见 SKILL.md 末尾「注意」:取保守档 + specific_data 填 [待核] + analysis 注明"以补充材料核定",并在报告「注意」处提示企业补充。下游 fill_scoresheet.py 会按勾选落位,公式不受影响。
Q8. 模板工作表被改名/重排,fill_scoresheet.py 报"找不到工作表"?
→ 脚本会列出模板实际包含的工作表名并友好停止(不再抛异常)。优先恢复官方 2024 版表名(表一数字化基础、管理及成效评测表 / 表二数字化经营应用场景等级判定表),或直接用 references/评测打分模板.xlsx 作基底;脚本亦支持前缀包含的自动匹配(会打印 [INFO] 提示)。
Q9. 拿到的是访谈录音/视频而非文字?
→ 本模型只消费文本。请先转写为 docx/txt(推荐带段落编号,如 R01、R02…,便于 evidence 引用原句),再进入阶段 A。
Q10. JSON 里 16 个场景的顺序被打乱了 / 场景是按业务流程排列的?
→ 无影响。引擎用 rubric.scene_ratings_aligned() 按 16 个标准场景名自动对齐后再判定等级,约束性场景映射永不因乱序错位(有回归测试覆盖)。同理,fill_scoresheet.py 表二按 level2 名称匹配,也与顺序无关。
Q11. generate_report.py / fill_scoresheet.py 直接停止并打印【必改】清单?
→ 这是校验门禁在保护你:输入 JSON 有致命问题,脚本拒绝产出错误结果。按提示修正 JSON(可用 rubric.py --check-json 复核到退出码 0)后重跑即可,不要绕过。
文件导航
scripts/rubric.py— 知识库 + 评分引擎(权威,勿改选项/权重);含--check-json/--self-testscripts/fill_scoresheet.py— JSON → xlsx(带校验门禁与工作表名兼容)scripts/generate_report.py— JSON → docx(带校验门禁与动态等级结论)references/DIAGNOSIS_PROMPT.md— 勾选判定纪律(高频误判对照表)references/RUBRIC.md— 15 采集项 + 16 场景速查、综合门槛与场景定级操作指南references/评测打分模板.xlsx— 官方 2024 模板样例(生成时按 JSON 重写,可替换为你的企业模板)examples/— 5 个已验证诊断 JSON(家电附件专家 / 汽车 / 电子元件 / 电子元件独立 / 配电)+ 最终成品样例:配电企业A_打分表样例.xlsx(打分表成品)与配电企业A_诊断报告样例.md(报告全文文本镜像,正式 docx 由阶段 C 一条命令生成)——输入格式与产出样式均可对照
注意
- 本模型分数完全由 JSON 的勾选决定;模板缓存值仅作校验参照。
- 设备数字化率/联网率、投入与成效类(项 2/3/11–15)常需企业补充材料;现场未披露时取保守档并注明"以补充材料核定",不得无据拔高。