feat: add contract template v3 api and legacy oss migration

This commit is contained in:
wren
2026-05-19 18:38:17 +08:00
parent afaba4dd99
commit 16e8668150
11 changed files with 1241 additions and 0 deletions
+90
View File
@@ -46,6 +46,11 @@ psql -h <host> -U <user> -d <db_name> -v ON_ERROR_STOP=1 -f scripts/创建sql/<f
3. `schema_v2_add_evaluation_tables.sql`
4. `seed_home_entry_modules.sql`
### 合同模板模块上线
1. `schema_contract_templates.sql`
2. `seed_contract_templates_rbac.sql`
### 系统使用统计上线
1. `schema_add_usage_stats.sql`
@@ -221,6 +226,91 @@ ORDER BY permission_key;
1. `schema_v3_add_cross_review_phase1.sql`
2. `seed_cross_review_phase1_permissions.sql`
### 七、合同模板
- `schema_contract_templates.sql`
- 用途:在主库创建合同模板分类表和模板表
- 主要内容:新增 `contract_categories``contract_templates`、补索引和注释
- 执行时机:上线合同模板新后端接口前必跑
- `seed_contract_templates_rbac.sql`
- 用途:补齐合同模板只读权限点
- 主要内容:新增 `contract_template:list:read``contract_template:search:read``contract_template:detail:read`
- 依赖:`sys_routes` 中已经存在 `/contract-template/list``/contract-template/search`
- `migrate_legacy_contract_templates.py`
- 用途:把老库 `docauditai` 的合同模板分类、模板记录和旧 bucket 文件迁入主库 `leaudit_platform`
- 主要内容:
- 读取老库 `public.contract_categories``public.contract_templates`
- 从旧 bucket `docauditai` 读取 `contract-template/...` 对象
- 复制到新 bucket `leaudit``contract-templates/...` 相对路径
- 回写主库 `contract_categories``contract_templates.file_path``contract_templates.pdf_file_path`
- 适用场景:主库已完成建表与权限初始化,但仍是 demo 数据或空数据时
- 注意:
- 脚本会重置主库 `contract_categories` / `contract_templates` 当前数据并按老库正式数据重建
- 当前已知会自动修正 1 条老脏数据:
- `contract_templates.id=3`
- 标题:`房屋租赁合同(我方承租)`
-`file_path` 误指向“我方出租”docx,迁移时会自动改成“我方承租”docx
#### 推荐顺序
1. `schema_contract_templates.sql`
2. `seed_contract_templates_rbac.sql`
3. `python scripts/migrate_legacy_contract_templates.py`
4. `python scripts/migrate_legacy_contract_templates.py --apply`
#### 标准执行命令
```bash
psql -h <host> -U <user> -d <db_name> -v ON_ERROR_STOP=1 -f scripts/创建sql/schema_contract_templates.sql
psql -h <host> -U <user> -d <db_name> -v ON_ERROR_STOP=1 -f scripts/创建sql/seed_contract_templates_rbac.sql
# 先 dry-run,看旧路径 -> 新路径映射
python scripts/migrate_legacy_contract_templates.py
# 确认无误后正式执行:复制 OSS 文件 + 回写主库
python scripts/migrate_legacy_contract_templates.py --apply
```
#### 执行后验收
```sql
SELECT to_regclass('public.contract_categories');
SELECT to_regclass('public.contract_templates');
SELECT permission_key
FROM permissions
WHERE permission_key LIKE 'contract_template:%'
ORDER BY permission_key;
SELECT r.role_key, p.permission_key, rp.grant_type, rp.data_scope
FROM role_permissions rp
JOIN roles r ON r.id = rp.role_id
JOIN permissions p ON p.id = rp.permission_id
WHERE p.permission_key LIKE 'contract_template:%'
ORDER BY r.role_key, p.permission_key;
SELECT COUNT(*) AS category_count FROM public.contract_categories;
SELECT COUNT(*) AS template_count FROM public.contract_templates;
SELECT id, template_code, title, file_path, pdf_file_path
FROM public.contract_templates
ORDER BY id
LIMIT 10;
```
#### 当前基线验收结果
- 主库 `leaudit_platform`
- `contract_categories = 9`
- `contract_templates = 27`
- 新 bucket `leaudit`
- `contract-templates/...` 对象总数 = `54`
- 新路径样例
- `contract-templates/买卖合同/mmht/source__买卖合同范本.docx`
- `contract-templates/买卖合同/mmht/preview__买卖合同范本.pdf`
### 七、RAG
- `schema_add_rag_chat.sql`