Files
junhong_cmp_fiber/migrations/000237_extend_withdrawal_attempt_qualification.up.sql
break 5ed6b39deb
Some checks failed
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Has been cancelled
feat(收口): 补齐 8 月迭代缺口并同步 Spec 与证据链
- 新增六对成对迁移 000232–000237:H5 弹窗类型、退款结算标识与申请人备注、优先轮询事实字段与两个新终态、通道阈值命中留痕、手机号最近解绑人、提现资格校验留痕
- 退款:原因必填与申请人备注、来源支付与渠道流水冻结、线下处理流水号补录审计、按订单查询可选退款方式、企微审批材料补齐且新增字段缺失映射即明确失败
- 优先轮询:人工关闭、有效期到期独立周期任务、失败与过期人工重触发、事实字段与异常重试查询、资产解析端点只读投影
- 通道阈值:命中事实同事务留痕与命中记录查询;员工账单:列表筛选与详情投影;商户池:列表投影与统计周期语义;H5:弹窗类型与类别排序
- 手机号:有效关联数量与最近解绑人、短信验证码失败次数限制;导出:佣金明细十五列与报表序号列
- 时间筛选:三处新增筛选纳入统一严格解析契约,员工账单产生时间参数改名
- 同步 12 份主 Spec 需求、两端点与异步任务证据链,门禁 context-health 与 OpenSpec 校验通过
2026-09-18 15:34:29 +08:00

39 lines
3.6 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.
-- 提现审批尝试补齐「资料资格版本 + 当次校验结果」留痕。
-- 背景:提现申请必须先校验申请店铺存在有效资料资格;本变更要求把本次依据的有效资料资格版本标识
-- 与当次校验结果(校验时间、是否通过、未通过稳定原因)冻结进当次审批尝试快照,并在提现详情可查。
--
-- 设计选择:
-- 1. 记录落在审批尝试表而非提现申请表:尝试记录是每次提交或重提一条的不可变快照,
-- 资格被替换或失效后,历史尝试仍返回提交时冻结的版本与结果,不被新版本改写。
-- 2. 未通过原因为稳定编码列qualification_failure_reason取值域为本变更登记的四种稳定原因
-- (资格不存在、已失效、已停用、资料未通过审批),由 CHECK 兜住半残取值;
-- 通过时该列为空字符串。稳定编码用于机器判定与审计,中文文案由应用层按编码映射。
-- 3. qualification_version_id 记录当次依据的有效资格版本主键;未通过(资格不存在等)时为 0
-- 表示本次未依据任何有效版本。该列不建外键关联由应用层显式校验ENG-MODEL-001
-- 4. 新列一律带默认值既有尝试行零变更historical 尝试的 qualification_passed 为 0 且原因为空,
-- 读侧据此按「历史尝试无资格校验留痕」处理MUST NOT 反推或改写历史结果。
-- 5. 本迁移不新增企业微信模板控件:该留痕只用于本地不可变审批尝试快照与提现详情查询。
ALTER TABLE tb_commission_withdrawal_request_attempt
ADD COLUMN IF NOT EXISTS qualification_version_id BIGINT NOT NULL DEFAULT 0,
ADD COLUMN IF NOT EXISTS qualification_checked_at TIMESTAMPTZ,
ADD COLUMN IF NOT EXISTS qualification_passed SMALLINT NOT NULL DEFAULT 0,
ADD COLUMN IF NOT EXISTS qualification_failure_reason VARCHAR(64) NOT NULL DEFAULT '';
-- 启停类标记必须严格 0/1判定端按 qualification_passed = 1 识别通过,其他取值会被静默视为未通过。
ALTER TABLE tb_commission_withdrawal_request_attempt
ADD CONSTRAINT chk_commission_withdrawal_attempt_qualification_passed
CHECK (qualification_passed IN (0, 1));
-- 通过时不得携带未通过原因;未通过时的稳定原因取值域由应用层校验。
-- qualification_passed = 0 且原因为空是合法的历史状态:早于 000237 的既有尝试行就是该形态,
-- 读侧据此按「无资格校验留痕」处理,因此 MUST NOT 用 CHECK 把空原因一律判为非法。
ALTER TABLE tb_commission_withdrawal_request_attempt
ADD CONSTRAINT chk_commission_withdrawal_attempt_qualification_reason
CHECK (qualification_passed = 0 OR qualification_failure_reason = '');
COMMENT ON COLUMN tb_commission_withdrawal_request_attempt.qualification_version_id IS '本次提现依据的有效提现资料资格版本ID早于 000237 的历史尝试与资格不存在时为 0';
COMMENT ON COLUMN tb_commission_withdrawal_request_attempt.qualification_checked_at IS '本次资料资格校验时间;早于 000237 的历史尝试为空';
COMMENT ON COLUMN tb_commission_withdrawal_request_attempt.qualification_passed IS '本次资料资格校验是否通过 0-未通过 1-通过';
COMMENT ON COLUMN tb_commission_withdrawal_request_attempt.qualification_failure_reason IS '未通过时的稳定原因编码 qualification_missing-资格不存在 qualification_invalidated-已失效 shop_disabled-已停用 qualification_not_approved-资料未通过审批;通过时为空字符串';