Files
lindyson-ai/apps/api/migrations/032_order_refund_dispatch.sql
Juno ChowandClaude Fable 5.1 f665082dad chore: 建立产品仓库,完成开源前的敏感信息清理
前端(Vite + React)、API/worker(Fastify + BullMQ)、api-contracts 契约包、
迁移脚本、测试与自托管 docker-compose 示例。

开源准备:运维脚本与机器信息已拆到私有仓库;公司名、备案号、隐私邮箱改读
publicCompliance.local.json(仓库只保留占位模板);站点地址与客服二维码改为
VITE_ 环境变量;fixtures 中的真实用户标识已匿名化;三个 package.json 标注
Apache-2.0。

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-16 02:10:46 +08:00

35 lines
1.3 KiB
SQL

ALTER TABLE orders
ADD COLUMN IF NOT EXISTS refund_dispatch_status text NOT NULL DEFAULT 'idle',
ADD COLUMN IF NOT EXISTS refund_dispatch_attempts integer NOT NULL DEFAULT 0,
ADD COLUMN IF NOT EXISTS refund_dispatch_next_at timestamptz,
ADD COLUMN IF NOT EXISTS refund_dispatch_lease_until timestamptz,
ADD COLUMN IF NOT EXISTS refund_client_ip inet;
UPDATE orders
SET refund_dispatch_status = CASE
WHEN refund_status = 'succeeded' THEN 'completed'
WHEN refund_status = 'failed' THEN 'failed'
WHEN refund_status = 'pending' THEN 'submitted'
ELSE 'idle'
END,
refund_dispatch_next_at = NULL,
refund_dispatch_lease_until = NULL;
ALTER TABLE orders
DROP CONSTRAINT IF EXISTS orders_refund_dispatch_status_check;
ALTER TABLE orders
ADD CONSTRAINT orders_refund_dispatch_status_check
CHECK (refund_dispatch_status IN ('idle', 'queued', 'processing', 'uncertain', 'submitted', 'completed', 'failed'));
ALTER TABLE orders
DROP CONSTRAINT IF EXISTS orders_refund_dispatch_attempts_check;
ALTER TABLE orders
ADD CONSTRAINT orders_refund_dispatch_attempts_check
CHECK (refund_dispatch_attempts >= 0);
CREATE INDEX IF NOT EXISTS idx_orders_refund_dispatch_due
ON orders(refund_dispatch_next_at, created_at)
WHERE refund_dispatch_status IN ('queued', 'uncertain', 'processing');