Files
junhong_cmp_fiber/migrations
break d5bcda94fe feat(套餐真流量预警): AUG26-004 真流量预警规则、达量扫描通知与导出
新增 000228 迁移:规则表 tb_package_traffic_alert_rule(每套餐商品至多一条,无软删除,package_id
非部分唯一约束)、达量预警快照表 tb_package_traffic_alert(以主套餐使用记录 + 阈值快照为唯一键,
触发时冻结用量、额度、比例、阈值、到期时间、归属与资产快照),并为 tb_package_usage 新增扫描
范围部分索引 idx_package_usage_alert_scope;down 在预警表存在数据时阻断回滚。

新增规则维护接口 GET/POST/PUT /api/admin/package-traffic-alert-rules(仅超级管理员与平台账号):
创建校验套餐存在且真流量额度大于零,阈值为 1%~100% 的两位小数;修改只影响后续扫描,不回填也
不改写既有预警快照;全部写操作记录操作者、前后值与时间。

新增每日 06:00(Asia/Shanghai)扫描任务 package:traffic:alert:scan,与套餐临期扫描共用 data_cleanup
队列:按资产汇总当前有效套餐的真流量,分子取使用记录真已用量、分母取使用记录真总量快照,命中
主套餐规则阈值时在同一事务创建预警与可靠通知事件;重复执行以唯一冲突视为已处理,不重复投递,
不建停机锁、不调用运营商。

新增预警列表、详情与异步导出 GET /api/admin/package-traffic-alerts、GET /api/admin/package-traffic-alerts/:id、
POST /api/admin/package-traffic-alerts/export,列表与详情一律读冻结快照;新增通知类型
package.traffic.alert 与受控目标 package_traffic_alert_detail,目标解析仅对超级管理员与平台账号
返回可跳转,越权与不存在统一按资源不可见处理。

同步 OpenAPI(cmd/gendocs、cmd/api/docs.go、pkg/openapi/handlers.go)、审计动作与资源注册、上下文
健康检查证据;归档变更并同步 package-traffic-alert 主 Spec。
2026-09-16 17:05:55 +08:00
..
2026-08-06 09:35:00 +08:00
2026-08-06 09:35:00 +08:00

数据库迁移说明

当前结构

migrations/
├── 000114_squash_baseline.up.sql   ← ⚠️ 待创建(见下方说明)
├── 000114_squash_baseline.down.sql ← ⚠️ 待创建
├── 000115_init_data.up.sql         ← 初始化数据(轮询配置 + purchase_role 回填)
├── 000115_init_data.down.sql
├── 000116_remove_legacy_commission_fields.up.sql  ← 删除废弃分佣字段
├── 000116_remove_legacy_commission_fields.down.sql
└── archive/                        ← 已归档的历史迁移000000~000113

⚠️ 发布前必做:生成 000114 squash 基线

背景历史迁移000000-000113已归档但尚未生成汇总基线文件。 现有测试环境的表是在 migrate 工具之外创建的,不受影响。 但全新环境本地搭建、CI、生产首次部署必须有 000114 才能通过 migrate up 建表。

执行时机:正式发布前,确认 schema 已稳定后执行一次。

步骤

  1. 安装 PostgreSQL 客户端(若未安装):

    brew install libpq
    export PATH="/opt/homebrew/opt/libpq/bin:$PATH"
    
  2. 生成 schema 基线(仅 DDL不含数据

    PGPASSWORD=<密码> pg_dump \
      --schema-only --no-owner --no-acl \
      -h <host> -U <user> -d <dbname> \
      > migrations/000114_squash_baseline.up.sql
    
  3. 在生成的 000114_squash_baseline.up.sql 头部加上注释(参考其他迁移文件格式)。

  4. 创建 000114_squash_baseline.down.sql(删除所有表):

    -- 回滚:删除所有业务表(谨慎执行)
    DROP TABLE IF EXISTS tb_wechat_config CASCADE;
    DROP TABLE IF EXISTS tb_tag CASCADE;
    -- ... 其他表(按依赖倒序)
    
  5. 找 AI 协助完成 down.sql 和验证步骤(在全新数据库执行 migrate up 验证链路)。

  6. 更新 scripts/reset_db.sh 中的注释,确认脚本可用。

迁移链路(目标状态)

全新数据库
  └─ migrate up
       ├─ 000114: 建表squash 基线)
       ├─ 000115: 写初始化数据
       └─ 000116: 删除废弃字段

现有测试环境说明

测试环境的表通过历史方式创建,schema_migrations 中仅记录版本 116。 对正在运行的服务没有影响。 若需在测试库补齐迁移记录,可手动运行 migrate up000115 全部幂等,安全)。