Files
junhong_cmp_fiber/migrations/000259_add_package_usage_silence_fields.up.sql
邹进 909f4d0ec2
Some checks failed
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Failing after 8m39s
feat: 实名即生效套餐沉默期、延期办理与资产出库时间
- 迁移 000259~000265:套餐记录沉默期字段与扫描索引、套餐默认沉默期、延期政策/流水/订单/批次/明细 5 张表、默认政策与系统配置(总开关默认关闭)、企微审批白名单、卡与设备出库时间及出库记录
- 沉默期设置(订单发放、自动购包、钱包续费)、后台购买时调整(超默认值按政策免审或企微审批)、统一判定与激活闸门、排队与孤儿扫描跳过过期套餐、过期套餐禁止退款、每 10 分钟扫描
- 总开关专用接口与打开前 4 项检查;延期政策;延期资格与计费;H5 自助与后台二维码在线支付(商户池路由)、支付回调与查单恢复、线下登记、特殊/批量延期、异常重试与原路退款;沉默期审批场景与终态处理
- 换货沉默期流水与出库时间;卡/设备列表、详情、导出与出库记录接口;延期订单与即将过期套餐列表及导出;财务流水纳入延期支付
- 沉默期与出库时间回填工具 cmd/silence-backfill;前端接口变更说明

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-27 16:32:58 +09:00

32 lines
2.4 KiB
SQL
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
-- 实名即生效套餐沉默期:套餐记录字段(add-package-silence-period,技术方案 §3.1)。
-- 沉默期按每笔套餐计算,字段只建在套餐记录上,资产上不建沉默期字段。
-- 过期时 status 保持 0,由激活闸门按 silence_status 拦截。
-- 状态与时间类可空;计数类 NOT NULL DEFAULT 0;布尔 NOT NULL DEFAULT false(PostgreSQL 11+ 常量默认值不重写整表)。
ALTER TABLE tb_package_usage
ADD COLUMN silence_status VARCHAR(16),
ADD COLUMN silence_start_at TIMESTAMPTZ,
ADD COLUMN silence_period_days INTEGER,
ADD COLUMN silence_deadline_at TIMESTAMPTZ,
ADD COLUMN silence_extended_days INTEGER NOT NULL DEFAULT 0,
ADD COLUMN silence_paid_extended_days INTEGER NOT NULL DEFAULT 0,
ADD COLUMN silence_extension_count INTEGER NOT NULL DEFAULT 0,
ADD COLUMN silence_free_extension_used INTEGER NOT NULL DEFAULT 0,
ADD COLUMN silence_expired_at TIMESTAMPTZ,
ADD COLUMN silence_adjust_pending BOOLEAN NOT NULL DEFAULT FALSE;
ALTER TABLE tb_package_usage
ADD CONSTRAINT ck_package_usage_silence_status
CHECK (silence_status IS NULL OR silence_status IN ('waiting', 'expired', 'ended'));
COMMENT ON COLUMN tb_package_usage.silence_status IS '沉默期状态:空-不适用 waiting-待实名 expired-沉默期已过期(status 保持 0) ended-截止前已实名';
COMMENT ON COLUMN tb_package_usage.silence_start_at IS '沉默期起算时间(购买支付成功时间)';
COMMENT ON COLUMN tb_package_usage.silence_period_days IS '最终沉默期天数(套餐默认值或购买时调整值)';
COMMENT ON COLUMN tb_package_usage.silence_deadline_at IS '当前沉默期截止时间(截止日 23:59:59 Asia/Shanghai,延期后更新)';
COMMENT ON COLUMN tb_package_usage.silence_extended_days IS '累计已延期天数(全部延期)';
COMMENT ON COLUMN tb_package_usage.silence_paid_extended_days IS '其中付费延期(在线与线下)累计天数,与政策累计上限比较';
COMMENT ON COLUMN tb_package_usage.silence_extension_count IS '累计延期次数';
COMMENT ON COLUMN tb_package_usage.silence_free_extension_used IS '已使用的免费延期次数';
COMMENT ON COLUMN tb_package_usage.silence_expired_at IS '最近一次沉默期过期时间';
COMMENT ON COLUMN tb_package_usage.silence_adjust_pending IS '购买时调整沉默期的审批是否进行中(进行中不过期)';