价格材料盘点审计 · Pricing Material Auditor
目的
把一个「价格材料 / 定价材料 / 报价材料」文件夹,自动拆成三张可交付的 Excel 盘点表,
让用户一眼看清:目录结构是否全量覆盖、每次报价 6 类必备材料是否齐全、哪些文件重复或该删。
何时使用
- 用户新建 / 收到一个价格材料文件夹,需要盘点目录结构、核对每次报价材料是否齐全。
- 用户提到「盘点定价材料」「报价完整性」「核对每次报价材料」「价格文件夹分析整理」等。
- 用户希望按「报价轮次(价格会)」合并查看,并标记缺失项、列出每批次文件清单。
- 用户想找出多余的重复 Excel 或临时锁文件用于清理。
核心脚本
scripts/audit_pricing_folder.py 一次完成全部三项产出,参数化根目录,不写死路径:
python scripts/audit_pricing_folder.py <ROOT> [--outdir OUT]
<ROOT>:价格材料根目录(必填)。--outdir:输出目录,默认与 ROOT 相同。建议首次验证时用独立临时目录,确认无误再落到业务目录。- 依赖
openpyxl(已在隔离 venv 安装,运行命令见下方)。
运行环境(Windows 隔离运行时示例):
PY="C:/Users/HUAWEI.SK-20220610DUNW/.workbuddy/binaries/python/versions/3.13.12/python.exe"
VENV="C:/Users/HUAWEI.SK-20220610DUNW/.workbuddy/binaries/python/envs/default"
"$PY" "$VENV/Scripts/python.exe" scripts/audit_pricing_folder.py "E:/某价格材料文件夹" --outdir "E:/tmp/audit_test"
> 若 openpyxl 未安装:"$VENV/Scripts/pip.exe" install openpyxl。
三张产出表
| 文件 | 内容 |
|---|---|
目录结构盘点.xlsx |
递归展开到最末级文件,按层级(1级类目 ~ N级类目)逐行列出,标注「文件夹/文件」节点类型 + 完整路径;深红表头、冻结首行、自动筛选。 |
报价材料完整性盘点.xlsx |
明细页:每一行 = 一次报价轮次,列 6 类材料(✓绿/✗红)+ 缺失项 + 完整状态 + 完整路径 + 本轮文件清单(该批次全部文件及数量);汇总页:总轮次、完整/不完整数、各材料缺失率、各项目统计。 |
报价材料待清理Excel清单.xlsx |
Sheet1 固定必备材料备注(6类+关键词);Sheet2 待删除清单(MD5 比对重复副本 → 红删/绿留/灰唯一,含 ~$ 临时锁文件),附汇总。 |
执行流程(建议顺序)
- 先用
--outdir临时目录跑一遍脚本,确认三张表结构正常、轮次拆分正确。 - 抽查「明细页」中缺失项较多的轮次:点开「完整路径」核对是否为文件名异名导致的误标(见下方坑点)。
- 确认无误后,可重新跑(去掉
--outdir)将三张表落到业务目录,或保留临时版由用户决定。
关键判定与坑点(务必先读)
判定规则、关键词表、轮次识别、散件处理、各类坑点集中在 references/keywords.md,执行前先读它。重点提醒:
- 散件不能整目录递归混进一个单元格:项目根/年份下的游离文件,只列其自身(不递归),归入「根目录零散文件」行,避免把所有子文件夹文件重复堆成"全项目大杂烩"。
- 纯年份容器不当轮次:如
2024年下还有更细的价格会子文件夹,只取子事件为轮次。 ~$锁文件:扫描时跳过,但清理清单里单独标「删除」。- 异名文件误判:✗ 用于定位待查,非终审;如
调价模板.xlsx、价格批复审批表.pdf需人工抽查「完整路径」确认。
输出风格约定
深红表头 #C00000 白字、✓绿 #C6EFCE/#006100、✗红 #FFC7CE/#9C0006、文件清单列浅米 #FFF8E1、微软雅黑、冻结首行、自动筛选。