Files
junhong_cmp_fiber/migrations/000231_create_operations_report_snapshot.down.sql
break 5e78809b93
All checks were successful
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 15m33s
feat(运营报表): AUG26-015 设备激活与套餐续费日报快照、查询趋势与受控导出
- 新增成对迁移 000231 与三张快照表:日级头行、设备粒度激活行、到期事件粒度续费行,以快照日期为唯一键
- 新增每日 03:30(Asia/Shanghai)日报快照生成任务与幂等整日替换,失败重试沿用同一目标日
- 新增六条受控入口:两张报表的汇总、日/月趋势与受控导出,配套查询层只读快照事实
- 新增 operations_activation 与 operations_renewal 两个导出场景,创建期冻结筛选与可见店铺范围、派发期冻结表头、执行期只按冻结值复核资格
- 采购数量口径按系统内未删除设备数实施并在 PRD 标注,附实测差额依据
- 同步证据链 requirement-evidence.json 与入口能力矩阵、ARCHITECTURE 与验证记录
- 归档 change add-operations-reports 并新建主 Spec openspec/specs/operations-report/spec.md
2026-09-18 09:42:28 +08:00

33 lines
1.6 KiB
SQL

-- 回滚运营报表日报快照三张表,与 up 严格成对。
-- 删除顺序与 up 的创建顺序严格倒序:先删索引,再按依赖无关的表逐一删除
-- (三张表之间没有外键与视图,删除顺序不产生级联影响;表内 CHECK 约束随表一并移除)。
--
-- 不可逆说明:本迁移的 down 会删除全部已生成的日报快照。
-- 快照是「截至某个上海自然日」的冻结读数,其源事实(实名状态可逆转、到期时间可被改写)
-- 无法事后重算,因此 down 只在确认不需要历史报表时执行。
--
-- 守卫:存在已生成的快照行时直接阻断回滚,避免误删已经无法重建的历史报表事实。
DO $$
BEGIN
IF EXISTS (SELECT 1 FROM tb_operations_report_snapshot LIMIT 1) THEN
RAISE EXCEPTION '已存在运营报表日报快照,拒绝回滚以避免丢失无法重建的历史报表事实';
END IF;
END $$;
LOCK TABLE tb_operations_report_snapshot IN ACCESS EXCLUSIVE MODE;
LOCK TABLE tb_operations_report_activation_row IN ACCESS EXCLUSIVE MODE;
LOCK TABLE tb_operations_report_renewal_row IN ACCESS EXCLUSIVE MODE;
DROP INDEX IF EXISTS idx_operations_report_renewal_series;
DROP INDEX IF EXISTS idx_operations_report_renewal_shop;
DROP INDEX IF EXISTS uk_operations_report_renewal_row;
DROP TABLE IF EXISTS tb_operations_report_renewal_row;
DROP INDEX IF EXISTS idx_operations_report_activation_shop;
DROP INDEX IF EXISTS uk_operations_report_activation_row;
DROP TABLE IF EXISTS tb_operations_report_activation_row;
DROP INDEX IF EXISTS uk_operations_report_snapshot_date;
DROP TABLE IF EXISTS tb_operations_report_snapshot;