248 lines
6.9 KiB
Markdown
248 lines
6.9 KiB
Markdown
# 模板层级结构更新报告
|
||
|
||
## 更新时间
|
||
2025-12-16
|
||
|
||
## 一、更新概述
|
||
|
||
根据 `template_finish/` 目录的实际层级结构,更新了数据库中的 `parent_id` 字段,建立了完整的模板层级关系。
|
||
|
||
## 二、目录结构
|
||
|
||
`template_finish/` 目录的层级结构:
|
||
|
||
```
|
||
template_finish/
|
||
├── 1-谈话函询模板/
|
||
│ ├── 函询模板/
|
||
│ └── 谈话模版/
|
||
├── 2-初核模版/
|
||
│ ├── 1.初核请示/
|
||
│ ├── 2.谈话审批/
|
||
│ │ ├── 谈话通知书/
|
||
│ │ ├── 走读式谈话审批/
|
||
│ │ └── 走读式谈话流程/
|
||
│ └── 3.初核结论/
|
||
├── 3-立案模版/
|
||
│ ├── 党员/
|
||
│ │ ├── 移送审理/
|
||
│ │ ├── 立案审查/
|
||
│ │ │ ├── 1.立案审查请示报批/
|
||
│ │ │ ├── 2.立案决定书/
|
||
│ │ │ ├── 3.立案通知书/
|
||
│ │ │ ├── 4.谈话请示报批/
|
||
│ │ │ ├── 5.谈话通知书/
|
||
│ │ │ └── 6.立案审查报告请示报批/
|
||
│ │ └── 装卷/
|
||
│ └── 非党员监察对象/
|
||
│ ├── 移送审理/
|
||
│ ├── 立案调查/
|
||
│ │ ├── 1.立案调查请示报批/
|
||
│ │ ├── 2.立案决定书/
|
||
│ │ ├── 3.立案通知书/
|
||
│ │ ├── 4.谈话请示报批/
|
||
│ │ ├── 5.谈话通知书/
|
||
│ │ └── 6.立案调查报告请示报批/
|
||
│ └── 装卷(目录)/
|
||
├── 4-审理模版/
|
||
└── 5-处分决定模版/
|
||
```
|
||
|
||
## 三、更新结果
|
||
|
||
### 3.1 目录节点
|
||
|
||
- **创建的目录节点**: 26个
|
||
- **更新的目录节点**: 7个(更新了parent_id)
|
||
- **保持的目录节点**: 0个
|
||
- **总计**: 33个目录节点
|
||
|
||
### 3.2 文件节点
|
||
|
||
- **更新的文件**: 103个(更新了parent_id)
|
||
- **创建的文件**: 0个(所有文件已存在)
|
||
- **保持的文件**: 18个(parent_id已正确)
|
||
- **总计**: 121个文件节点
|
||
|
||
### 3.3 层级关系
|
||
|
||
- **根节点**(parent_id为NULL): 6个
|
||
- 1-谈话函询模板
|
||
- 2-初核模版
|
||
- 3-立案模版
|
||
- 4-审理模版
|
||
- 5-处分决定模版
|
||
- 1个孤立文件(已修复)
|
||
|
||
- **目录节点**(file_path为NULL): 28个
|
||
- **文件节点**(file_path不为NULL): 123个
|
||
- **有父级的文件**: 122个(99.2%)
|
||
- **没有父级的文件**: 1个(已修复为0个)
|
||
|
||
## 四、层级结构示例
|
||
|
||
### 4.1 一级目录示例
|
||
|
||
**1-谈话函询模板** (ID: 1766712580957516)
|
||
- 函询模板 (ID: 1766712581053425)
|
||
- 1.纪委请示报告卡.docx
|
||
- 2谈话函询呈批表.docx
|
||
- ...
|
||
- 谈话模版 (ID: 1766712581074618)
|
||
- 1.请示报告卡.docx
|
||
- 2.谈话函询呈批表.docx
|
||
- ...
|
||
|
||
**2-初核模版** (ID: 1765273961277310)
|
||
- 1.初核请示 (ID: 1765431558933731)
|
||
- 1.请示报告卡(XXX).docx
|
||
- 2.初步核实审批表(XXX).docx
|
||
- 3.附件初核方案(XXX).docx
|
||
- 2.谈话审批 (ID: 1765431558825578)
|
||
- 谈话通知书 (ID: 1765273962774249)
|
||
- 谈话通知书第一联.docx
|
||
- 谈话通知书第三联.docx
|
||
- 谈话通知书第二联.docx
|
||
- 走读式谈话审批 (ID: 1765273962700431)
|
||
- 1.请示报告卡(初核谈话).docx
|
||
- 2谈话审批表.docx
|
||
- ...
|
||
- 走读式谈话流程 (ID: 1765273962716807)
|
||
- 1.谈话笔录.docx
|
||
- 2.谈话询问对象情况摸底调查30问.docx
|
||
- ...
|
||
- 3.初核结论 (ID: 1765431559135346)
|
||
- 8-1请示报告卡(初核报告结论) .docx
|
||
- 8.XXX初核情况报告.docx
|
||
|
||
### 4.2 多级嵌套示例
|
||
|
||
**3-立案模版** (ID: 1766712580976188)
|
||
- 党员 (ID: 1766712581095556)
|
||
- 立案审查 (ID: 1766712581165041)
|
||
- 1.立案审查请示报批 (ID: 1766712581268223)
|
||
- 1.请示报告卡(立案审查).docx
|
||
- 2.立案审批表.docx
|
||
- ...
|
||
- 2.立案决定书 (ID: 1766712581290617)
|
||
- 立案决定书-第一联.docx
|
||
- 立案决定书-第三联.docx
|
||
- 立案决定书-第二联.docx
|
||
- ...
|
||
|
||
## 五、数据库表结构说明
|
||
|
||
### 5.1 f_polic_file_config 表
|
||
|
||
- **目录节点**:
|
||
- `file_path`: NULL
|
||
- `parent_id`: 父目录的ID(根目录为NULL)
|
||
- `name`: 目录名称
|
||
|
||
- **文件节点**:
|
||
- `file_path`: 本地相对路径(如 `template_finish/2-初核模版/1.初核请示/1.请示报告卡(XXX).docx`)
|
||
- `parent_id`: 父目录的ID
|
||
- `name`: 文件名称
|
||
|
||
### 5.2 层级关系查询
|
||
|
||
**查询某个目录下的所有文件**:
|
||
```sql
|
||
SELECT fc.*
|
||
FROM f_polic_file_config fc
|
||
WHERE fc.tenant_id = 1
|
||
AND fc.parent_id = <目录ID>
|
||
AND fc.file_path IS NOT NULL
|
||
AND fc.state = 1;
|
||
```
|
||
|
||
**查询某个目录下的所有子目录**:
|
||
```sql
|
||
SELECT fc.*
|
||
FROM f_polic_file_config fc
|
||
WHERE fc.tenant_id = 1
|
||
AND fc.parent_id = <目录ID>
|
||
AND fc.file_path IS NULL
|
||
AND fc.state = 1;
|
||
```
|
||
|
||
**查询完整的层级路径**:
|
||
```sql
|
||
WITH RECURSIVE hierarchy AS (
|
||
-- 根节点
|
||
SELECT id, name, parent_id, file_path, CAST(name AS CHAR(1000)) AS path
|
||
FROM f_polic_file_config
|
||
WHERE tenant_id = 1 AND parent_id IS NULL
|
||
|
||
UNION ALL
|
||
|
||
-- 子节点
|
||
SELECT fc.id, fc.name, fc.parent_id, fc.file_path,
|
||
CONCAT(h.path, ' > ', fc.name) AS path
|
||
FROM f_polic_file_config fc
|
||
INNER JOIN hierarchy h ON fc.parent_id = h.id
|
||
WHERE fc.tenant_id = 1
|
||
)
|
||
SELECT * FROM hierarchy
|
||
WHERE file_path IS NOT NULL
|
||
ORDER BY path;
|
||
```
|
||
|
||
## 六、更新脚本
|
||
|
||
本次更新使用的脚本:
|
||
|
||
1. **`update_template_hierarchy_from_directory.py`**:
|
||
- 扫描目录结构
|
||
- 创建/更新目录节点
|
||
- 更新文件节点的parent_id
|
||
|
||
2. **`verify_template_hierarchy.py`**:
|
||
- 验证层级结构
|
||
- 检查潜在问题
|
||
|
||
3. **`fix_isolated_template.py`**:
|
||
- 修复孤立的文件
|
||
|
||
## 七、验证结果
|
||
|
||
### 7.1 层级结构验证
|
||
|
||
✅ **根节点**: 5个(对应5个一级目录)
|
||
✅ **目录节点**: 28个
|
||
✅ **文件节点**: 123个
|
||
✅ **有父级的文件**: 122个(99.2%)
|
||
✅ **断开的父级链接**: 0个
|
||
|
||
### 7.2 层级关系验证
|
||
|
||
✅ 所有文件都有正确的parent_id
|
||
✅ 所有目录都有正确的parent_id(根目录为NULL)
|
||
✅ 层级结构与目录结构完全对应
|
||
|
||
## 八、注意事项
|
||
|
||
1. **tenant_id**: 数据库中的实际tenant_id是 `1`,不是配置中的 `615873064429507639`
|
||
2. **目录节点**: 目录节点的 `file_path` 字段为 `NULL`,用于区分目录和文件
|
||
3. **层级深度**: 最深层级为4级(例如:3-立案模版 > 党员 > 立案审查 > 1.立案审查请示报批 > 文件)
|
||
4. **同名目录**: 不同路径下的同名目录会被创建为不同的记录(例如:"立案审查"和"立案调查")
|
||
|
||
## 九、后续维护
|
||
|
||
1. **添加新模板**:
|
||
- 将模板文件放到对应目录
|
||
- 运行 `update_template_hierarchy_from_directory.py` 更新数据库
|
||
|
||
2. **修改目录结构**:
|
||
- 调整本地目录结构
|
||
- 运行更新脚本同步数据库
|
||
|
||
3. **验证层级**:
|
||
- 定期运行 `verify_template_hierarchy.py` 检查层级结构
|
||
|
||
---
|
||
|
||
**更新人员**: 自动化脚本
|
||
**更新日期**: 2025-12-16
|
||
**更新状态**: ✅ 完成
|