unis_crm/sql/README.md

3.7 KiB

SQL Scripts

当前项目的数据库脚本按“一个主初始化脚本 + 一组正式增量脚本 + 一组历史归档脚本”的方式整理:

  • 主初始化脚本:sql/init_full_pg17.sql
  • 首页经营分析生产升级脚本:sql/upgrade_dashboard_analytics_prod_pg17.sql
  • 日报提醒功能初始化脚本:sql/init_report_reminder_pg17.sql
  • 归属人转移权限初始化脚本:sql/init_owner_transfer_permissions_pg17.sql
  • 一次性修复/导入工具脚本:
    • sql/import_oms_existing_opportunities_pg17.sql
  • 历史迁移与修数脚本:sql/archive/*.sql

推荐用法

1. 全新初始化数据库

直接执行主脚本:

psql -d your_database -f sql/init_full_pg17.sql

这份脚本已经吸收了目前项目里所有必要的结构兼容调整,适合作为当前唯一推荐的 PostgreSQL 17 初始化入口。

2. 老环境功能补齐

如果是已有生产环境,需要补本次首页相关能力,请执行:

psql -d your_database -f sql/upgrade_dashboard_analytics_prod_pg17.sql

这份脚本会补:

  • dashboard_analytics_panel_config
  • dashboard_analytics_card_config
  • 首页卡片相关权限
  • crm_opportunity.latest_progress
  • crm_opportunity.next_plan
  • crm_channel_expansion.certification_level 注释修正
  • 平台菜单权限纠偏

不会写入默认业务卡片,也不会创建目标值业务表。

上线执行顺序、验收项和风险说明见:

  • docs/首页相关能力SQL发布说明.md

如果老环境需要补“日报提醒”功能,请执行:

psql -d your_database -f sql/init_report_reminder_pg17.sql

如果老环境需要补“归属人转移”权限,请执行:

psql -d your_database -f sql/init_owner_transfer_permissions_pg17.sql

3. 一次性工具脚本

  • sql/import_oms_existing_opportunities_pg17.sql 用于导入指定批次的 OMS 存量商机数据,不属于常规部署脚本。

历史变更脚本保存在:

  • sql/archive/alter_*.sql
  • sql/archive/fix_*.sql
  • sql/archive/init_pg17.sql

这些文件仅用于:

  • 追溯某次字段演进
  • 排查老环境与当前结构差异
  • 定位某次修数逻辑来源

正常部署时,不建议按时间顺序逐个执行 archive 里的脚本。

当前目录说明

  • sql/init_full_pg17.sql 当前项目的完整初始化脚本,也是唯一推荐执行的入口。

  • sql/upgrade_dashboard_analytics_prod_pg17.sql 老环境补齐本次首页相关能力时使用的正式增量脚本,已合并首页权限、商机快照字段升级和平台菜单权限纠偏。

  • sql/init_report_reminder_pg17.sql 老环境补齐“日报提醒”功能时使用的正式增量脚本,已包含表结构与权限。

  • sql/init_owner_transfer_permissions_pg17.sql 老环境补齐“归属人转移”权限时使用的正式增量脚本。

  • sql/import_oms_existing_opportunities_pg17.sql 指定业务数据导入脚本,不属于结构升级脚本。

  • sql/archive/init_pg17.sql 旧版本初始化快照,仅保留历史参考,不再作为正式入口。

  • sql/archive/alter_*.sql 历史结构变更脚本。

  • sql/archive/fix_*.sql 历史修数脚本。

维护约定

  • 新增正式字段时,优先更新 sql/init_full_pg17.sql
  • 若该字段来自一次线上增量功能发布,同时保留对应正式增量脚本
  • 若只是历史修复,不要反向拆散主初始化脚本
  • 已被新脚本完整覆盖的旧增量脚本,应及时删除或归档,避免出现多个入口表达同一能力

这样可以保证:

  • 新环境只需要执行一份脚本
  • 老环境仍然有明确、单一的功能补齐入口
  • 目录里不会同时存在多个重复升级脚本