import { z } from "zod"; export const flockHoldDeclineSchema = z.object({ customer_id: z.string().min(1, "请填写客户标识"), quote_id: z.string().min(1, "请填写报价单号"), quote_session_id: z.string().min(1, "请填写询价会话标识"), }); export const flockHoldContinueSchema = flockHoldDeclineSchema; /** Redis hold JSON(安全审查 #5) */ export const flockQuoteHoldStateSchema = z.object({ quote_id: z.string().min(1), quote_session_id: z.string().min(1), customer_id: z.string().min(1), parked_at_ms: z.number().finite(), decision_deadline_ms: z.number().finite(), total_deadline_ms: z.number().finite(), status: z.enum([ "awaiting_decision", "filling", "checking_out", "declined", "done", "expired", ]), }); const flockFlexibilityOptionSchema = z.object({ key: z.enum(["2_day", "1_day", "none"]), label: z.string(), rateUsd: z.number().finite(), pickupWindow: z.string().optional(), deliverBy: z.string().optional(), }); export const flockFlexibilityByTierSchema = z.object({ flock_direct: z.array(flockFlexibilityOptionSchema).optional(), standard: z.array(flockFlexibilityOptionSchema).optional(), }); const flockCarrierOptionSchema = z.object({ carrierName: z.string().min(1).max(128), transitDays: z.string(), pickupDate: z.string().optional(), deliveryEstimate: z.string().optional(), rateUsd: z.number().finite(), label: z.string(), }); export const flockCarriersByTierSchema = z.object({ flock_direct: z.array(flockCarrierOptionSchema).optional(), standard: z.array(flockCarrierOptionSchema).optional(), });