diff --git a/docs/HANDOFF.md b/docs/HANDOFF.md index 17aaf83..a2849ae 100644 --- a/docs/HANDOFF.md +++ b/docs/HANDOFF.md @@ -318,13 +318,14 @@ | 位置 | 作用 | |------|------| | `rules/contract_loan/rules.yaml` | 借款合同规则集修复点 | +| `scripts/创建sql/README.md` | SQL 总导航、执行顺序、上线手册入口 | | `scripts/创建sql/seed_frontend_route_scope.sql` | 前端真实路由范围 seed | | `scripts/创建sql/user_rbac_seed.sql` | RBAC 基础 seed | | `scripts/创建sql/seed_home_entry_modules.sql` | 首页入口模块 seed | | `scripts/创建sql/precheck_rule_group_migration.sql` | 分组迁移前检查 | | `scripts/创建sql/migrate_rule_groups_to_business_roots.sql` | 按业务根迁移分组 | | `scripts/创建sql/migrate_rule_groups_to_doc_type_roots.sql` | 按文档类型根迁移分组 | -| `docs/接口/` | 当前有效接口主文档 | +| `docs/README.md` | 当前模块化文档总导航 | --- diff --git a/scripts/创建sql/README.md b/scripts/创建sql/README.md index 0966b40..67a62f6 100644 --- a/scripts/创建sql/README.md +++ b/scripts/创建sql/README.md @@ -1,8 +1,10 @@ -# SQL 脚本目录说明 +# SQL 上线操作手册 -本目录统一存放数据库相关 SQL,避免根目录下脚本分散。 +本目录统一存放数据库相关 SQL。 -## 命名约定 +目标不是只告诉你“文件在哪”,而是让开发、DBA、运维拿到后可以直接按顺序执行、验收、排查。 + +## 目录约定 - `schema_*`:建表、补字段、补索引、结构补丁 - `seed_*`:初始化数据、菜单、权限、路由种子 @@ -11,33 +13,121 @@ - `*_patch.sql`:补丁脚本 - `*_audit.sql`:审计/巡检类脚本 -## 推荐执行方式 +## 通用执行规范 -执行生产脚本时建议统一带上 `ON_ERROR_STOP=1`: +### 1. 推荐命令 + +生产执行时统一带 `ON_ERROR_STOP=1`: ```bash psql -h -U -d -v ON_ERROR_STOP=1 -f scripts/创建sql/.sql ``` -## 按模块分类 +### 2. 执行前要求 + +- 先确认目标库是测试库、预发库还是正式库 +- 先备份,尤其是 `schema_*` 和 `migrate_*` +- 先看脚本头部注释,确认依赖关系 +- 先跑 `precheck_*`,再跑 `migrate_*` +- 生产环境优先按“单脚本执行 -> 验收 -> 下一步”推进,不要一把梭 + +### 3. 执行后要求 + +- 记录执行人、执行时间、执行环境 +- 保存关键查询结果或截图 +- 若脚本涉及后端新接口,执行后重启对应服务 + +## 快速场景索引 + +### 新环境最小起步 + +1. `user_rbac_schema_patch.sql` +2. `user_rbac_seed.sql` +3. `schema_v2_add_evaluation_tables.sql` +4. `seed_home_entry_modules.sql` + +### 系统使用统计上线 + +1. `schema_add_usage_stats.sql` +2. `seed_usage_stats_rbac.sql` + +### 评查点分组迁移 + +1. `precheck_rule_group_migration.sql` +2. `migrate_rule_groups_to_business_roots.sql` +3. `seed_rule_groups_rbac.sql` +4. `seed_evaluation_points_rbac.sql` + +### 交叉评查一期上线 + +1. `schema_v3_add_cross_review_phase1.sql` +2. `seed_cross_review_phase1_permissions.sql` + +### RAG 能力上线 + +1. `schema_add_rag_chat.sql` +2. 视环境决定是否补跑 `user_rbac_seed.sql` + +## 按模块说明 ### 一、系统使用统计 - `schema_add_usage_stats.sql` - 用途:补齐系统使用统计需要的库结构 - 主要内容:新增 `usage_login_events`、给 `sso_users` 增加 `last_login_at`、补 `leaudit_audit_runs.trigger_user_id` 统计索引 - - 场景:上线“系统使用统计”后端接口前必跑 + - 执行时机:上线“系统使用统计”接口前必跑 - `seed_usage_stats_rbac.sql` - 用途:补齐“系统使用统计”菜单、权限点、角色授权 - 主要内容:新增 `/usage-stats` 路由、`usage_stats:*` 权限、给 `super_admin` / `provincial_admin` / `admin` 赋权 - - 场景:库结构准备完成后执行 + - 执行时机:库结构完成后执行 -推荐顺序: +#### 上线顺序 1. `schema_add_usage_stats.sql` 2. `seed_usage_stats_rbac.sql` +#### 标准执行命令 + +```bash +psql -h -U -d -v ON_ERROR_STOP=1 -f scripts/创建sql/schema_add_usage_stats.sql +psql -h -U -d -v ON_ERROR_STOP=1 -f scripts/创建sql/seed_usage_stats_rbac.sql +``` + +#### 执行后验收 + +```sql +SELECT column_name +FROM information_schema.columns +WHERE table_name = 'sso_users' + AND column_name = 'last_login_at'; + +SELECT to_regclass('public.usage_login_events'); + +SELECT route_path, route_title +FROM sys_routes +WHERE route_path = '/usage-stats' + AND deleted_at IS NULL; + +SELECT permission_key +FROM permissions +WHERE permission_key LIKE 'usage_stats:%' +ORDER BY permission_key; +``` + +#### 业务验证 + +- 管理员登录一次,检查 `usage_login_events` +- 上传一个文档,检查上传统计是否可计数 +- 发起一次评查,检查 `leaudit_audit_runs.trigger_user_id` +- 用地区管理员账号访问统计接口,确认只能看到本地区数据 + +#### 失败排查 + +- `schema_add_usage_stats.sql` 失败:先停,不要继续跑 seed +- `seed_usage_stats_rbac.sql` 失败:先查 `/settings` 路由、`roles` 是否存在 +- 统计接口 500:重点检查 `sso_users`、`leaudit_audit_runs`、`usage_login_events` + ### 二、用户 / RBAC / 地区权限 - `user_rbac_schema_patch.sql` @@ -55,12 +145,12 @@ psql -h -U -d -v ON_ERROR_STOP=1 -f scripts/创建sql/ -U -d -v ON_ERROR_STOP=1 -f scripts/创建sql/ -U -d -v ON_ERROR_STOP=1 -f scripts/创建sql/ -U -d -v ON_ERROR_STOP=1 -f scripts/创建sql/ -U -d -v ON_ERROR_STOP=1 -f scripts/创建sql/ -U -d -v ON_ERROR_STOP=1 -f scripts/创建sql/