7.8 KiB
7.8 KiB
模板树状结构更新 - 使用说明
概述
本工具用于根据 template_finish 目录结构,更新数据库 f_polic_file_config 表中的 parent_id 字段,建立正确的树状层级结构。
数据库现状分析
根据检查,数据库中现有:
- 总记录数: 32 条
- 有 parent_id: 2 条
- 无 parent_id: 30 条
需要更新的主要记录包括:
- 初步核实审批表
- 请示报告卡(各种类型)
- 初核方案
- 谈话通知书(第一联、第二联、第三联)
- XXX初核情况报告
- 走读式谈话审批相关文件
- 走读式谈话流程相关文件
- 等等...
脚本说明
1. check_existing_data.py - 检查现有数据
功能: 查看数据库中的现有记录,分析缺少 parent_id 的情况
使用方法:
python check_existing_data.py
输出:
- 列出所有无 parent_id 的记录
- 显示有 parent_id 的记录及其树状关系
2. improved_match_and_update.py - 改进的匹配分析
功能: 使用改进的匹配逻辑分析目录结构和数据库,生成匹配报告
特点:
- 三级匹配策略:
- template_code 精确匹配(最高优先级)
- 名称精确匹配
- 标准化名称匹配(去掉编号和括号后的模糊匹配)
使用方法:
python improved_match_and_update.py
输出:
- 匹配报告(显示哪些记录已匹配,哪些需要创建)
- 可选择性生成 SQL 更新脚本
3. update_template_tree.py - 交互式更新工具(推荐)
功能: 完整的更新工具,包含预览、确认和执行功能
特点:
- 使用改进的匹配逻辑
- 支持预览模式(dry-run)
- 交互式确认
- 按层级顺序自动更新
- 安全的事务处理
使用方法:
python update_template_tree.py
执行流程:
- 扫描目录结构
- 获取数据库现有数据
- 规划树状结构(使用改进的匹配逻辑)
- 显示更新预览
- 询问是否执行(输入
yes) - 执行模拟更新
- 再次确认执行实际更新
4. analyze_and_update_template_tree.py - 生成 SQL 脚本
功能: 分析并生成 SQL 更新脚本(不直接修改数据库)
使用方法:
python analyze_and_update_template_tree.py
输出:
update_template_tree.sql- SQL 更新脚本
适用场景:
- 生产环境
- 需要 DBA 审核的场景
- 需要手动执行的场景
5. verify_tree_structure.py - 验证更新结果
功能: 验证更新后的树状结构是否正确
使用方法:
python verify_tree_structure.py
输出:
- 树状结构可视化
- 统计信息
- 父子关系验证
匹配逻辑说明
三级匹配策略
-
template_code 精确匹配(最高优先级)
- 通过
template_code字段精确匹配 - 例如:
REPORT_CARD匹配REPORT_CARD
- 通过
-
名称精确匹配
- 通过
name字段精确匹配 - 例如:
"1.请示报告卡(XXX)"匹配"1.请示报告卡(XXX)"
- 通过
-
标准化名称匹配(模糊匹配)
- 去掉开头的编号(如
"1."、"2."、"8-1") - 去掉括号及其内容(如
"(XXX)"、"(初核谈话)") - 例如:
"1.请示报告卡(XXX)"→"请示报告卡"→ 匹配"请示报告卡"
- 去掉开头的编号(如
匹配示例
| 目录结构中的名称 | 数据库中的名称 | 匹配方式 |
|---|---|---|
1.请示报告卡(XXX) |
请示报告卡 |
template_code: REPORT_CARD |
2.初步核实审批表(XXX) |
初步核实审批表 |
template_code: PRELIMINARY_VERIFICATION_APPROVAL |
谈话通知书第一联 |
谈话通知书第一联 |
名称精确匹配 |
走读式谈话审批 |
走读式谈话审批 |
名称精确匹配 |
树状结构规划
根据 template_finish 目录结构,规划的层级关系如下:
2-初核模版 (一级目录)
├── 1.初核请示 (二级目录)
│ ├── 1.请示报告卡(XXX).docx
│ ├── 2.初步核实审批表(XXX).docx
│ └── 3.附件初核方案(XXX).docx
├── 2.谈话审批 (二级目录)
│ ├── 谈话通知书 (三级目录)
│ │ ├── 谈话通知书第一联.docx
│ │ ├── 谈话通知书第二联.docx
│ │ └── 谈话通知书第三联.docx
│ ├── 走读式谈话审批 (三级目录)
│ │ ├── 1.请示报告卡(初核谈话).docx
│ │ ├── 2谈话审批表.docx
│ │ ├── 3.谈话前安全风险评估表.docx
│ │ ├── 4.谈话方案.docx
│ │ └── 5.谈话后安全风险评估表.docx
│ └── 走读式谈话流程 (三级目录)
│ ├── 1.谈话笔录.docx
│ ├── 2.谈话询问对象情况摸底调查30问.docx
│ ├── 3.被谈话人权利义务告知书.docx
│ ├── 4.点对点交接单.docx
│ ├── 5.陪送交接单(新).docx
│ ├── 6.1保密承诺书(谈话对象使用-非中共党员用).docx
│ ├── 6.2保密承诺书(谈话对象使用-中共党员用).docx
│ └── 7.办案人员-办案安全保密承诺书.docx
└── 3.初核结论 (二级目录)
├── 8-1请示报告卡(初核报告结论) .docx
└── 8.XXX初核情况报告.docx
执行步骤
推荐流程(使用交互式工具)
-
检查现有数据
python check_existing_data.py -
运行更新工具
python update_template_tree.py -
查看预览信息
- 检查匹配情况
- 确认更新计划
-
确认执行
- 输入
yes确认 - 再次确认执行实际更新
- 输入
-
验证结果
python verify_tree_structure.py
备选流程(使用 SQL 脚本)
-
生成 SQL 脚本
python improved_match_and_update.py # 或 python analyze_and_update_template_tree.py -
检查 SQL 脚本
# 查看 update_template_tree.sql -
备份数据库(重要!)
-
执行 SQL 脚本
-- 在 MySQL 客户端中执行 source update_template_tree.sql; -
验证结果
python verify_tree_structure.py
注意事项
- 备份数据库: 执行更新前务必备份数据库
- 检查匹配: 确认匹配结果是否正确
- 层级顺序: 更新会按照层级顺序执行,确保父节点先于子节点
- 重复执行: 脚本支持重复执行,已正确设置的记录会被跳过
- 目录节点: 如果目录节点不存在,脚本会自动创建
匹配结果
根据最新分析,匹配情况如下:
- ✅ 已匹配: 26 条记录
- ⚠️ 需创建: 2 条记录(目录节点)
2-初核模版(一级目录)1.初核请示(二级目录)
所有文件记录都已正确匹配到数据库中的现有记录。
问题排查
问题1: 某些记录无法匹配
原因: 名称或 template_code 不匹配
解决:
- 检查
DOCUMENT_TYPE_MAPPING字典 - 确认数据库中的
template_code是否正确 - 使用
check_existing_data.py查看数据库中的实际数据
问题2: 匹配到错误的记录
原因: 标准化名称匹配时选择了错误的候选
解决:
- 检查匹配报告,确认匹配方式
- 如果 template_code 匹配失败,检查数据库中的 template_code 是否正确
- 可以手动调整匹配逻辑
问题3: parent_id 更新失败
原因: 父节点ID不存在或层级关系错误
解决:
- 使用
verify_tree_structure.py验证父子关系 - 检查生成的 SQL 脚本,确认父节点ID是否正确
联系信息
如有问题,请检查:
- 数据库连接配置是否正确
- 目录结构是否与预期一致
- 数据库中的记录是否完整
- template_code 是否正确设置