10 KiB
10 KiB
模板更新脚本使用说明
一、脚本概述
update_templates_custom.py 是一个灵活的模板更新脚本,支持:
- 自定义数据库连接配置(不从.env文件读取)
- 自定义租户ID(tenant_id)配置
- 更新模板层级结构(根据
template_finish/目录结构) - 更新字段关联关系(输入字段和输出字段)
二、功能说明
2.1 更新模板层级结构
根据本地 template_finish/ 目录结构更新数据库中的模板层级关系:
- 扫描目录结构,识别所有目录和文件
- 创建或更新目录节点(
f_polic_file_config表中file_path=NULL的记录) - 创建或更新文件节点(
f_polic_file_config表中file_path不为空的记录) - 建立正确的
parent_id层级关系
2.2 更新字段关联关系
自动为所有模板建立字段关联关系:
- 输入字段:所有模板都关联
clue_info和target_basic_info_clue - 输出字段:根据模板文件中的占位符(
{{field_code}})自动关联对应的输出字段 - 自动创建字段:如果占位符对应的字段不存在,自动创建该字段
三、使用方法
3.1 命令行参数方式
python update_templates_custom.py --host <主机> --port <端口> --user <用户名> --password <密码> --database <数据库名> --tenant-id <租户ID>
完整示例:
# 基本使用
python update_templates_custom.py --host 192.168.1.100 --port 3306 --user root --password 123456 --database finyx --tenant-id 1
# 预览模式(不实际更新数据库)
python update_templates_custom.py --host 192.168.1.100 --port 3306 --user root --password 123456 --database finyx --tenant-id 1 --dry-run
# 只更新层级结构,不更新字段关联
python update_templates_custom.py --host 192.168.1.100 --port 3306 --user root --password 123456 --database finyx --tenant-id 1 --update-hierarchy --no-update-fields
# 只更新字段关联,不更新层级结构
python update_templates_custom.py --host 192.168.1.100 --port 3306 --user root --password 123456 --database finyx --tenant-id 1 --update-fields --no-update-hierarchy
参数说明:
| 参数 | 说明 | 必填 |
|---|---|---|
--host |
MySQL服务器地址 | 是 |
--port |
MySQL服务器端口 | 是 |
--user |
MySQL用户名 | 是 |
--password |
MySQL密码 | 是 |
--database |
数据库名称 | 是 |
--tenant-id |
租户ID | 是 |
--dry-run |
预览模式(不实际更新) | 否 |
--update-hierarchy |
更新模板层级结构(默认启用) | 否 |
--update-fields |
更新字段关联关系(默认启用) | 否 |
3.2 交互式输入方式
如果命令行参数不完整,脚本会自动进入交互式输入模式:
python update_templates_custom.py
交互式输入示例:
======================================================================
数据库连接配置
======================================================================
请输入数据库连接信息(直接回车使用默认值):
MySQL服务器地址 [152.136.177.240]: 192.168.1.100
MySQL服务器端口 [5012]: 3306
MySQL用户名 [finyx]: root
MySQL密码 [留空使用默认]: ********
数据库名称 [finyx]: finyx
租户配置:
租户ID (tenant_id) [必填]: 1
更新选项:
更新模板层级结构?[Y/n]: y
更新字段关联关系?[Y/n]: y
预览模式(不实际更新)?[y/N]: n
确认执行更新?[y/N]: y
3.3 查看帮助信息
python update_templates_custom.py --help
四、使用场景
4.1 首次部署
首次部署时,需要将本地模板同步到数据库:
python update_templates_custom.py \
--host 192.168.1.100 \
--port 3306 \
--user root \
--password your_password \
--database finyx \
--tenant-id 1
4.2 多租户环境
在不同租户下更新模板:
# 租户1
python update_templates_custom.py --host ... --tenant-id 1
# 租户2
python update_templates_custom.py --host ... --tenant-id 2
4.3 预览更新内容
在正式更新前,先预览会执行哪些操作:
python update_templates_custom.py --host ... --tenant-id 1 --dry-run
4.4 增量更新
只更新层级结构或只更新字段关联:
# 只更新层级结构
python update_templates_custom.py --host ... --tenant-id 1 --update-hierarchy --no-update-fields
# 只更新字段关联
python update_templates_custom.py --host ... --tenant-id 1 --update-fields --no-update-hierarchy
五、输出说明
5.1 正常输出示例
======================================================================
模板更新脚本
======================================================================
支持自定义数据库连接和租户ID配置
======================================================================
配置信息
======================================================================
数据库服务器: 192.168.1.100:3306
数据库名称: finyx
用户名: root
租户ID: 1
预览模式: 否
更新层级结构: 是
更新字段关联: 是
确认执行更新?[y/N]: y
======================================================================
连接数据库
======================================================================
[OK] 数据库连接成功
======================================================================
更新模板层级结构
======================================================================
1. 扫描目录结构...
[OK] 找到 33 个目录,122 个文件
2. 获取现有模板...
[OK] 找到 122 个文件模板,28 个目录模板
3. 创建/更新目录节点...
[创建目录] 1-谈话函询模板 (ID: 1766711031977435)
[更新目录] 2-初核模版 (ID: 1766711031977436)
...
[OK] 创建 5 个目录,更新 28 个目录
4. 创建/更新文件节点...
[创建文件] 请示报告卡(XXX).docx (ID: 1766711031977437)
[更新文件] 谈话通知书第一联.docx (ID: 1766711031977438)
...
[OK] 创建 2 个文件,更新 120 个文件
======================================================================
更新字段关联关系
======================================================================
1. 获取输入字段...
[OK] 找到 2 个输入字段
2. 获取输出字段...
[OK] 找到 72 个输出字段
3. 获取所有模板...
[OK] 找到 122 个模板
4. 扫描模板占位符并更新关联关系...
处理进度: 20/122
处理进度: 40/122
...
======================================================================
字段关联更新结果
======================================================================
总模板数: 122
已更新: 93 个
保持不变: 29 个
错误: 0 个
发现的占位符总数: 35 个
创建的字段数: 0 个
======================================================================
更新完成
======================================================================
数据库已更新
层级结构:
- 创建目录: 5 个
- 更新目录: 28 个
- 创建文件: 2 个
- 更新文件: 120 个
字段关联:
- 总模板数: 122 个
- 已更新: 93 个
- 保持不变: 29 个
- 发现的占位符: 35 个
- 创建的字段: 0 个
[OK] 数据库连接已关闭
5.2 预览模式输出
预览模式下,会显示将要执行的操作,但不会实际更新数据库:
[注意] 当前为预览模式,不会实际更新数据库
...
[OK] 预览模式,未实际更新数据库
六、注意事项
6.1 数据库连接
- 确保数据库服务器可访问
- 确保用户有足够的权限(SELECT, INSERT, UPDATE, DELETE)
- 确保数据库名称正确
6.2 租户ID
- tenant_id是必填项,不能为空
- 确保tenant_id在数据库中存在或需要创建
- 不同租户的数据是隔离的,更新时请确认tenant_id正确
6.3 模板文件
- 脚本会扫描
template_finish/目录下的所有.docx和.doc文件 - 确保模板文件路径与数据库中的
file_path字段匹配 - 如果模板文件不存在,会跳过该模板的字段关联更新
6.4 字段创建
- 如果模板中的占位符对应的字段不存在,脚本会自动创建该字段
- 创建的字段类型为输出字段(
field_type=2) - 字段名称会根据
field_code自动生成(将下划线替换为空格)
6.5 数据安全
- **建议先使用预览模式(--dry-run)**查看将要执行的操作
- 在生产环境执行前,建议先备份数据库
- 确保有足够的磁盘空间和数据库连接数
七、常见问题
7.1 连接失败
问题:数据库连接失败
解决方案:
- 检查数据库服务器地址和端口是否正确
- 检查用户名和密码是否正确
- 检查网络连接是否正常
- 检查防火墙设置
7.2 权限不足
问题:执行更新时提示权限不足
解决方案:
- 确保数据库用户有足够的权限
- 需要以下权限:SELECT, INSERT, UPDATE, DELETE
7.3 模板文件不存在
问题:部分模板的字段关联更新失败,提示文件不存在
解决方案:
- 检查数据库中的
file_path是否正确 - 确保模板文件存在于
template_finish/目录下 - 检查文件路径中的斜杠方向(Windows使用反斜杠,脚本会自动处理)
7.4 占位符识别错误
问题:模板中的占位符没有被正确识别
解决方案:
- 确保占位符格式正确:
{{field_code}} - 占位符中的
field_code不能包含空格 - 检查模板文件是否损坏
八、技术细节
8.1 占位符提取
脚本使用正则表达式 \{\{([^}]+)\}\} 从Word文档中提取占位符:
- 扫描所有段落(paragraphs)
- 扫描所有表格单元格(table cells)
- 提取所有匹配的占位符
8.2 ID生成
使用时间戳生成唯一ID:
def generate_id():
import time
return int(time.time() * 1000000)
8.3 层级结构处理
- 按目录层级顺序处理(先处理父目录,再处理子目录)
- 使用路径映射表(
path_to_id)维护目录ID关系 - 文件节点的
parent_id指向其所在目录的ID
8.4 字段关联处理
- 先获取现有关联关系
- 计算需要添加和删除的关联
- 批量更新关联关系
- 自动创建缺失的字段
九、更新历史
- 2025-12-16: 创建脚本,支持自定义数据库连接和租户ID配置
脚本路径: update_templates_custom.py
文档版本: 1.0
最后更新: 2025-12-16