Some checks failed
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Failing after 8m39s
- 迁移 000259~000265:套餐记录沉默期字段与扫描索引、套餐默认沉默期、延期政策/流水/订单/批次/明细 5 张表、默认政策与系统配置(总开关默认关闭)、企微审批白名单、卡与设备出库时间及出库记录 - 沉默期设置(订单发放、自动购包、钱包续费)、后台购买时调整(超默认值按政策免审或企微审批)、统一判定与激活闸门、排队与孤儿扫描跳过过期套餐、过期套餐禁止退款、每 10 分钟扫描 - 总开关专用接口与打开前 4 项检查;延期政策;延期资格与计费;H5 自助与后台二维码在线支付(商户池路由)、支付回调与查单恢复、线下登记、特殊/批量延期、异常重试与原路退款;沉默期审批场景与终态处理 - 换货沉默期流水与出库时间;卡/设备列表、详情、导出与出库记录接口;延期订单与即将过期套餐列表及导出;财务流水纳入延期支付 - 沉默期与出库时间回填工具 cmd/silence-backfill;前端接口变更说明 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
43 lines
2.8 KiB
SQL
43 lines
2.8 KiB
SQL
-- 卡与设备出库时间、出库记录(技术方案 §17)。
|
||
-- outbound_at = 资产当前世代第 1 次购买套餐的订单支付时间;设备上绑定的卡不记;换货新资产取换货完成时间。
|
||
-- 只做记录与展示,不参与业务判断,不受沉默期总开关影响。
|
||
ALTER TABLE tb_iot_card ADD COLUMN outbound_at TIMESTAMPTZ;
|
||
ALTER TABLE tb_device ADD COLUMN outbound_at TIMESTAMPTZ;
|
||
|
||
COMMENT ON COLUMN tb_iot_card.outbound_at IS '出库时间(当前世代首次购买套餐的支付时间)';
|
||
COMMENT ON COLUMN tb_device.outbound_at IS '出库时间(当前世代首次购买套餐的支付时间)';
|
||
|
||
CREATE INDEX IF NOT EXISTS idx_iot_card_outbound_at ON tb_iot_card (outbound_at) WHERE outbound_at IS NOT NULL;
|
||
CREATE INDEX IF NOT EXISTS idx_device_outbound_at ON tb_device (outbound_at) WHERE outbound_at IS NOT NULL;
|
||
|
||
CREATE TABLE tb_asset_outbound_record (
|
||
id BIGSERIAL PRIMARY KEY,
|
||
asset_type VARCHAR(20) NOT NULL,
|
||
asset_id BIGINT NOT NULL,
|
||
asset_identifier_snapshot VARCHAR(100) NOT NULL DEFAULT '',
|
||
generation INTEGER NOT NULL,
|
||
outbound_at TIMESTAMPTZ NOT NULL,
|
||
source VARCHAR(20) NOT NULL,
|
||
order_id BIGINT,
|
||
order_no VARCHAR(40) NOT NULL DEFAULT '',
|
||
exchange_order_id BIGINT,
|
||
exchange_no VARCHAR(64) NOT NULL DEFAULT '',
|
||
shop_id BIGINT,
|
||
ended_at TIMESTAMPTZ,
|
||
end_reason VARCHAR(40) NOT NULL DEFAULT '',
|
||
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
||
CONSTRAINT ck_asset_outbound_asset_type CHECK (asset_type IN ('iot_card', 'device')),
|
||
CONSTRAINT ck_asset_outbound_source CHECK (source IN ('order', 'exchange', 'backfill'))
|
||
);
|
||
|
||
CREATE UNIQUE INDEX uq_asset_outbound_generation ON tb_asset_outbound_record (asset_type, asset_id, generation);
|
||
CREATE INDEX idx_asset_outbound_created ON tb_asset_outbound_record (created_at DESC);
|
||
|
||
COMMENT ON TABLE tb_asset_outbound_record IS '资产出库记录:每个世代一条,只新增与填写结束信息,不修改出库时间、不删除';
|
||
COMMENT ON COLUMN tb_asset_outbound_record.asset_type IS '资产类型:iot_card / device';
|
||
COMMENT ON COLUMN tb_asset_outbound_record.asset_identifier_snapshot IS '写入时的 ICCID / 虚拟号 / IMEI 快照';
|
||
COMMENT ON COLUMN tb_asset_outbound_record.generation IS '资产世代';
|
||
COMMENT ON COLUMN tb_asset_outbound_record.source IS '来源:order-首次购买套餐 exchange-换货新资产 backfill-历史回填';
|
||
COMMENT ON COLUMN tb_asset_outbound_record.ended_at IS '该世代结束时间(当前世代为空)';
|
||
COMMENT ON COLUMN tb_asset_outbound_record.end_reason IS '结束原因:exchange_return-换货回库';
|