{"openapi":"3.0.3","info":{"title":"飞送 FlyGo API · M4 补齐交付","version":"0.4.0-m4","description":"纯无人机即时配送平台（仿真演示，非真实飞行）。唯一运力 = 无人机 + 自动机巢 + 智能投放点。含 M2 的 55 条 path、M3 的仿真/派单/12 类控制指令/双路视频/录制回放增量，以及 M4 的商家端 / 机务端 / 后台补齐（订单池、投放点审核、天气熔断、柜门看板、CSV 导入）；WS 通道见 /api/v1/sim/meta，M3 增量契约见 docs/m3-api.md，M4 增量契约见 docs/m4-api.md。"},"servers":[{"url":"http://127.0.0.1:3000","description":"本机 M4 服务（REST + /ws/*）"}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"JWT"}},"schemas":{"ApiResponse":{"type":"object","required":["code","data","message","request_id"],"properties":{"code":{"type":"integer","example":0},"message":{"type":"string","example":"ok"},"request_id":{"type":"string"},"data":{"nullable":true}}},"Quote":{"type":"object","properties":{"quote_id":{"type":"string"},"pad_id":{"type":"string"},"pad_name":{"type":"string"},"door_no":{"type":"string"},"items_amount":{"type":"number"},"packing_fee":{"type":"number"},"delivery_fee":{"type":"number"},"promotion_discount":{"type":"number"},"first_order_discount":{"type":"number"},"coupon_discount":{"type":"number"},"red_packet_discount":{"type":"number"},"total_amount":{"type":"number"},"distance_m":{"type":"integer"},"payload_kg":{"type":"number"},"min_order_amount":{"type":"number"},"min_order_gap":{"type":"number"},"can_submit":{"type":"boolean"},"breakdown":{"type":"array","items":{"type":"object","properties":{"label":{"type":"string"},"amount":{"type":"number"}}}}}},"PadErrorCode":{"type":"string","enum":["PAD_NOT_SELECTED","PAD_NOT_APPROVED","PAD_UNAVAILABLE","PAD_OUT_OF_RANGE","PAD_CAPACITY_EXCEEDED","PAD_DOOR_BUSY","PAD_WEATHER_CLOSED","PAD_IN_NO_FLY_BUFFER"]},"Order":{"type":"object","properties":{"order_id":{"type":"string"},"status":{"type":"string"},"delivery_pad_id":{"type":"string"},"door_id":{"type":"string"},"door_no":{"type":"string"},"pickup_code":{"type":"string","example":"483120"},"total_amount":{"type":"number"},"created_at":{"type":"string","format":"date-time"},"timeline":{"type":"array","items":{"type":"object"}}}},"ScoreBreakdown":{"type":"object","description":"可解释派单评分，满分 100","properties":{"distance":{"type":"number","description":"距离分，满分 40"},"battery":{"type":"number","description":"余电分，满分 20"},"payload_fit":{"type":"number","description":"载荷匹配分，满分 10"},"weather":{"type":"number","description":"天气分，满分 10"},"pad":{"type":"number","description":"投放点维度分，满分 10"},"bundle":{"type":"number","description":"顺路合单加分，满分 10"},"total":{"type":"number"},"reasons":{"type":"array","items":{"type":"string"}}}},"Assignment":{"type":"object","description":"assignDrones() 纯函数输出","properties":{"order_id":{"type":"string"},"drone_id":{"type":"string"},"nest_id":{"type":"string"},"pad_id":{"type":"string"},"door_id":{"type":"string"},"door_no":{"type":"string"},"score":{"type":"number"},"score_breakdown":{"$ref":"#/components/schemas/ScoreBreakdown"},"eliminations":{"type":"array","items":{"type":"object"}},"waypoints":{"type":"array","description":"NEST→STORE→[DETOUR]→PAD，仅 PAD 带 pad_id","items":{"type":"object"}},"distance_m":{"type":"number"},"eta_sec":{"type":"number"},"battery_required_pct":{"type":"number"},"bundled_orders":{"type":"array","items":{"type":"string"}}}},"ControlCommand":{"type":"object","description":"12 类控制指令闭环；状态 PENDING→ACKED|REJECTED|TIMEOUT","properties":{"command_id":{"type":"string"},"command_type":{"type":"string"},"idempotency_key":{"type":"string"},"status":{"type":"string","enum":["PENDING","ACKED","REJECTED","TIMEOUT"]},"drone_id":{"type":"string"},"mission_id":{"type":"string"},"order_id":{"type":"string"},"reason":{"type":"string"},"issued_at":{"type":"number"},"ack_ts":{"type":"number"},"reject_reason":{"type":"string"},"actor":{"type":"string"},"effect":{"type":"string","description":"指令对仿真产生的实际影响"},"audit":{"type":"array","items":{"type":"object"}}}},"SimulationRuntimeState":{"type":"object","properties":{"state":{"type":"string","enum":["IDLE","RUNNING","PAUSED"]},"milestone":{"type":"string"},"speed":{"type":"integer","enum":[1,10,60]},"tick":{"type":"integer"},"sim_time_ms":{"type":"number"},"weather":{"type":"object"},"global_hold":{"type":"boolean"},"active_missions":{"type":"integer"},"active_streams":{"type":"integer"},"completed_orders":{"type":"integer"},"note":{"type":"string"}}},"FaultEvent":{"type":"object","description":"6 类故障注入之一，均走真实状态机分支","properties":{"fault_id":{"type":"string"},"fault_type":{"type":"string","enum":["LOW_BATTERY","HIGH_WIND","GPS_DRIFT","MOTOR_FAULT","NO_FLY_ZONE_APPEARS","PAD_DOOR_FAULT"]},"drone_id":{"type":"string"},"mission_id":{"type":"string"},"injected_at":{"type":"number"},"branch":{"type":"string"},"note":{"type":"string"}}},"ReplayBundle":{"type":"object","description":"两路 clip + 遥测时间轴 + 9 类打点，按同下标三联动","properties":{"recording_id":{"type":"string"},"mission_id":{"type":"string"},"order_id":{"type":"string"},"drone_id":{"type":"string"},"title":{"type":"string"},"status":{"type":"string"},"start_ts":{"type":"number"},"end_ts":{"type":"number"},"duration_sec":{"type":"number"},"frames":{"type":"integer"},"clips":{"type":"array","items":{"type":"object"}},"timeline":{"type":"array","items":{"type":"object"}},"markers":{"type":"array","items":{"type":"object"}},"frame_tracks":{"type":"object","description":"FLIGHT_VIEW / FPV_CAMERA 两组 FrameData[]"}}}}},"security":[{"bearerAuth":[]}],"paths":{"/api/v1/auth/login":{"post":{"summary":"登录并获取 JWT","tags":["通用"],"responses":{"200":{"description":"成功","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}},"409":{"description":"非法状态流转 / 并发占柜冲突"},"422":{"description":"业务校验失败（含 8 个 PAD_* 错误码）"}}}},"/api/v1/auth/me":{"get":{"summary":"当前登录用户","tags":["通用"],"responses":{"200":{"description":"成功","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}},"409":{"description":"非法状态流转 / 并发占柜冲突"},"422":{"description":"业务校验失败（含 8 个 PAD_* 错误码）"}}}},"/api/v1/stores/nearby":{"get":{"summary":"附近门店（支持 sort/category/keyword/pad_id）","tags":["通用"],"responses":{"200":{"description":"成功","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}},"409":{"description":"非法状态流转 / 并发占柜冲突"},"422":{"description":"业务校验失败（含 8 个 PAD_* 错误码）"}}}},"/api/v1/stores/{id}":{"get":{"summary":"门店详情（分类 + SKU + 满减）","tags":["通用"],"responses":{"200":{"description":"成功","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}},"409":{"description":"非法状态流转 / 并发占柜冲突"},"422":{"description":"业务校验失败（含 8 个 PAD_* 错误码）"}}}},"/api/v1/stores/{id}/skus":{"get":{"summary":"门店商品","tags":["通用"],"responses":{"200":{"description":"成功","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}},"409":{"description":"非法状态流转 / 并发占柜冲突"},"422":{"description":"业务校验失败（含 8 个 PAD_* 错误码）"}}}},"/api/v1/categories":{"get":{"summary":"金刚区 10 项","tags":["通用"],"responses":{"200":{"description":"成功","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}},"409":{"description":"非法状态流转 / 并发占柜冲突"},"422":{"description":"业务校验失败（含 8 个 PAD_* 错误码）"}}}},"/api/v1/banners":{"get":{"summary":"首页 banner","tags":["通用"],"responses":{"200":{"description":"成功","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}},"409":{"description":"非法状态流转 / 并发占柜冲突"},"422":{"description":"业务校验失败（含 8 个 PAD_* 错误码）"}}}},"/api/v1/search/hot":{"get":{"summary":"热搜词","tags":["通用"],"responses":{"200":{"description":"成功","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}},"409":{"description":"非法状态流转 / 并发占柜冲突"},"422":{"description":"业务校验失败（含 8 个 PAD_* 错误码）"}}}},"/api/v1/search":{"get":{"summary":"搜索门店与商品","tags":["通用"],"responses":{"200":{"description":"成功","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}},"409":{"description":"非法状态流转 / 并发占柜冲突"},"422":{"description":"业务校验失败（含 8 个 PAD_* 错误码）"}}}},"/api/v1/pads/nearby":{"get":{"summary":"附近投放点","tags":["投放点"],"responses":{"200":{"description":"成功","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}},"409":{"description":"非法状态流转 / 并发占柜冲突"},"422":{"description":"业务校验失败（含 8 个 PAD_* 错误码）"}}}},"/api/v1/pads/{id}/doors":{"get":{"summary":"投放点柜门","tags":["投放点"],"responses":{"200":{"description":"成功","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}},"409":{"description":"非法状态流转 / 并发占柜冲突"},"422":{"description":"业务校验失败（含 8 个 PAD_* 错误码）"}}}},"/api/v1/pads/mine":{"get":{"summary":"我的投放点","tags":["投放点"],"responses":{"200":{"description":"成功","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}},"409":{"description":"非法状态流转 / 并发占柜冲突"},"422":{"description":"业务校验失败（含 8 个 PAD_* 错误码）"}}},"post":{"summary":"收藏投放点","tags":["投放点"],"responses":{"200":{"description":"成功","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}},"409":{"description":"非法状态流转 / 并发占柜冲突"},"422":{"description":"业务校验失败（含 8 个 PAD_* 错误码）"}}}},"/api/v1/pads/mine/{id}":{"put":{"summary":"改别名/设默认","tags":["投放点"],"responses":{"200":{"description":"成功","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}},"409":{"description":"非法状态流转 / 并发占柜冲突"},"422":{"description":"业务校验失败（含 8 个 PAD_* 错误码）"}}},"delete":{"summary":"取消收藏","tags":["投放点"],"responses":{"200":{"description":"成功","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}},"409":{"description":"非法状态流转 / 并发占柜冲突"},"422":{"description":"业务校验失败（含 8 个 PAD_* 错误码）"}}}},"/api/v1/pads":{"post":{"summary":"用户提交投放点（PENDING）","tags":["投放点"],"responses":{"200":{"description":"成功","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}},"409":{"description":"非法状态流转 / 并发占柜冲突"},"422":{"description":"业务校验失败（含 8 个 PAD_* 错误码）"}}}},"/api/v1/pads/audit/{id}":{"get":{"summary":"投放点审核状态","tags":["投放点"],"responses":{"200":{"description":"成功","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}},"409":{"description":"非法状态流转 / 并发占柜冲突"},"422":{"description":"业务校验失败（含 8 个 PAD_* 错误码）"}}}},"/api/v1/control/pads":{"get":{"summary":"投放点后台列表","tags":["控制后台"],"responses":{"200":{"description":"成功","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}},"409":{"description":"非法状态流转 / 并发占柜冲突"},"422":{"description":"业务校验失败（含 8 个 PAD_* 错误码）"}}},"post":{"summary":"新增投放点","tags":["控制后台"],"responses":{"200":{"description":"成功","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}},"409":{"description":"非法状态流转 / 并发占柜冲突"},"422":{"description":"业务校验失败（含 8 个 PAD_* 错误码）"}}}},"/api/v1/control/pads/board":{"get":{"summary":"投放点看板","tags":["控制后台"],"responses":{"200":{"description":"成功","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}},"409":{"description":"非法状态流转 / 并发占柜冲突"},"422":{"description":"业务校验失败（含 8 个 PAD_* 错误码）"}}}},"/api/v1/control/pads/audit":{"get":{"summary":"投放点审计日志","tags":["控制后台"],"responses":{"200":{"description":"成功","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}},"409":{"description":"非法状态流转 / 并发占柜冲突"},"422":{"description":"业务校验失败（含 8 个 PAD_* 错误码）"}}}},"/api/v1/control/pads/import":{"post":{"summary":"CSV 批量导入","tags":["控制后台"],"responses":{"200":{"description":"成功","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}},"409":{"description":"非法状态流转 / 并发占柜冲突"},"422":{"description":"业务校验失败（含 8 个 PAD_* 错误码）"}}}},"/api/v1/control/pads/{id}":{"put":{"summary":"改状态/审核","tags":["控制后台"],"responses":{"200":{"description":"成功","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}},"409":{"description":"非法状态流转 / 并发占柜冲突"},"422":{"description":"业务校验失败（含 8 个 PAD_* 错误码）"}}},"delete":{"summary":"下线","tags":["控制后台"],"responses":{"200":{"description":"成功","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}},"409":{"description":"非法状态流转 / 并发占柜冲突"},"422":{"description":"业务校验失败（含 8 个 PAD_* 错误码）"}}}},"/api/v1/control/pads/{id}/doors/{doorId}/open":{"post":{"summary":"远程开柜","tags":["控制后台"],"responses":{"200":{"description":"成功","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}},"409":{"description":"非法状态流转 / 并发占柜冲突"},"422":{"description":"业务校验失败（含 8 个 PAD_* 错误码）"}}}},"/api/v1/control/pads/{id}/doors/{doorId}/lock":{"post":{"summary":"远程锁柜","tags":["控制后台"],"responses":{"200":{"description":"成功","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}},"409":{"description":"非法状态流转 / 并发占柜冲突"},"422":{"description":"业务校验失败（含 8 个 PAD_* 错误码）"}}}},"/api/v1/carts":{"post":{"summary":"创建购物车","tags":["通用"],"responses":{"200":{"description":"成功","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}},"409":{"description":"非法状态流转 / 并发占柜冲突"},"422":{"description":"业务校验失败（含 8 个 PAD_* 错误码）"}}}},"/api/v1/carts/current":{"get":{"summary":"当前购物车","tags":["通用"],"responses":{"200":{"description":"成功","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}},"409":{"description":"非法状态流转 / 并发占柜冲突"},"422":{"description":"业务校验失败（含 8 个 PAD_* 错误码）"}}}},"/api/v1/carts/quote":{"post":{"summary":"费用试算 + 8 个 PAD_* 强校验","tags":["通用"],"responses":{"200":{"description":"成功","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}},"409":{"description":"非法状态流转 / 并发占柜冲突"},"422":{"description":"业务校验失败（含 8 个 PAD_* 错误码）"}}}},"/api/v1/orders":{"get":{"summary":"订单列表","tags":["订单"],"responses":{"200":{"description":"成功","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}},"409":{"description":"非法状态流转 / 并发占柜冲突"},"422":{"description":"业务校验失败（含 8 个 PAD_* 错误码）"}}},"post":{"summary":"下单（强校验 + 原子占柜）","tags":["订单"],"responses":{"200":{"description":"成功","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}},"409":{"description":"非法状态流转 / 并发占柜冲突"},"422":{"description":"业务校验失败（含 8 个 PAD_* 错误码）"}}}},"/api/v1/orders/current":{"get":{"summary":"进行中订单","tags":["订单"],"responses":{"200":{"description":"成功","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}},"409":{"description":"非法状态流转 / 并发占柜冲突"},"422":{"description":"业务校验失败（含 8 个 PAD_* 错误码）"}}}},"/api/v1/orders/{id}":{"get":{"summary":"订单详情","tags":["订单"],"responses":{"200":{"description":"成功","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}},"409":{"description":"非法状态流转 / 并发占柜冲突"},"422":{"description":"业务校验失败（含 8 个 PAD_* 错误码）"}}}},"/api/v1/orders/{id}/timeline":{"get":{"summary":"订单时间轴","tags":["订单"],"responses":{"200":{"description":"成功","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}},"409":{"description":"非法状态流转 / 并发占柜冲突"},"422":{"description":"业务校验失败（含 8 个 PAD_* 错误码）"}}}},"/api/v1/orders/{id}/pay":{"post":{"summary":"模拟支付（SUCCESS/FAIL）","tags":["订单"],"responses":{"200":{"description":"成功","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}},"409":{"description":"非法状态流转 / 并发占柜冲突"},"422":{"description":"业务校验失败（含 8 个 PAD_* 错误码）"}}}},"/api/v1/orders/{id}/refund":{"post":{"summary":"退款","tags":["订单"],"responses":{"200":{"description":"成功","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}},"409":{"description":"非法状态流转 / 并发占柜冲突"},"422":{"description":"业务校验失败（含 8 个 PAD_* 错误码）"}}}},"/api/v1/orders/{id}/cancel":{"post":{"summary":"取消订单","tags":["订单"],"responses":{"200":{"description":"成功","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}},"409":{"description":"非法状态流转 / 并发占柜冲突"},"422":{"description":"业务校验失败（含 8 个 PAD_* 错误码）"}}}},"/api/v1/orders/{id}/urge":{"post":{"summary":"催单","tags":["订单"],"responses":{"200":{"description":"成功","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}},"409":{"description":"非法状态流转 / 并发占柜冲突"},"422":{"description":"业务校验失败（含 8 个 PAD_* 错误码）"}}}},"/api/v1/orders/{id}/open-box":{"post":{"summary":"6 位取餐码开柜","tags":["订单"],"responses":{"200":{"description":"成功","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}},"409":{"description":"非法状态流转 / 并发占柜冲突"},"422":{"description":"业务校验失败（含 8 个 PAD_* 错误码）"}}}},"/api/v1/orders/{id}/review":{"post":{"summary":"评价","tags":["订单"],"responses":{"200":{"description":"成功","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}},"409":{"description":"非法状态流转 / 并发占柜冲突"},"422":{"description":"业务校验失败（含 8 个 PAD_* 错误码）"}}}},"/api/v1/orders/{id}/reorder":{"post":{"summary":"再来一单","tags":["订单"],"responses":{"200":{"description":"成功","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}},"409":{"description":"非法状态流转 / 并发占柜冲突"},"422":{"description":"业务校验失败（含 8 个 PAD_* 错误码）"}}}},"/api/v1/orders/{id}/accept":{"post":{"summary":"接单","tags":["订单"],"responses":{"200":{"description":"成功","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}},"409":{"description":"非法状态流转 / 并发占柜冲突"},"422":{"description":"业务校验失败（含 8 个 PAD_* 错误码）"}}}},"/api/v1/orders/{id}/prepare":{"post":{"summary":"备餐","tags":["订单"],"responses":{"200":{"description":"成功","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}},"409":{"description":"非法状态流转 / 并发占柜冲突"},"422":{"description":"业务校验失败（含 8 个 PAD_* 错误码）"}}}},"/api/v1/orders/{id}/ready-to-load":{"post":{"summary":"待装载","tags":["订单"],"responses":{"200":{"description":"成功","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}},"409":{"description":"非法状态流转 / 并发占柜冲突"},"422":{"description":"业务校验失败（含 8 个 PAD_* 错误码）"}}}},"/api/v1/orders/{id}/load":{"post":{"summary":"装载确认（M2 终点）","tags":["订单"],"responses":{"200":{"description":"成功","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}},"409":{"description":"非法状态流转 / 并发占柜冲突"},"422":{"description":"业务校验失败（含 8 个 PAD_* 错误码）"}}}},"/api/v1/coupons/mine":{"get":{"summary":"我的券与红包","tags":["通用"],"responses":{"200":{"description":"成功","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}},"409":{"description":"非法状态流转 / 并发占柜冲突"},"422":{"description":"业务校验失败（含 8 个 PAD_* 错误码）"}}}},"/api/v1/merchant/orders":{"get":{"summary":"商家订单","tags":["商家端"],"responses":{"200":{"description":"成功","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}},"409":{"description":"非法状态流转 / 并发占柜冲突"},"422":{"description":"业务校验失败（含 8 个 PAD_* 错误码）"}}}},"/api/v1/merchant/stores/{id}/skus":{"get":{"summary":"商家 SKU","tags":["商家端"],"responses":{"200":{"description":"成功","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}},"409":{"description":"非法状态流转 / 并发占柜冲突"},"422":{"description":"业务校验失败（含 8 个 PAD_* 错误码）"}}}},"/api/v1/ops/drones":{"get":{"summary":"无人机","tags":["控制后台"],"responses":{"200":{"description":"成功","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}},"409":{"description":"非法状态流转 / 并发占柜冲突"},"422":{"description":"业务校验失败（含 8 个 PAD_* 错误码）"}}}},"/api/v1/ops/nests":{"get":{"summary":"机巢","tags":["控制后台"],"responses":{"200":{"description":"成功","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}},"409":{"description":"非法状态流转 / 并发占柜冲突"},"422":{"description":"业务校验失败（含 8 个 PAD_* 错误码）"}}}},"/api/v1/ops/missions":{"get":{"summary":"历史任务","tags":["控制后台"],"responses":{"200":{"description":"成功","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}},"409":{"description":"非法状态流转 / 并发占柜冲突"},"422":{"description":"业务校验失败（含 8 个 PAD_* 错误码）"}}}},"/api/v1/ops/telemetry":{"get":{"summary":"历史遥测点","tags":["控制后台"],"responses":{"200":{"description":"成功","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}},"409":{"description":"非法状态流转 / 并发占柜冲突"},"422":{"description":"业务校验失败（含 8 个 PAD_* 错误码）"}}}},"/api/v1/ops/replays":{"get":{"summary":"回放列表","tags":["控制后台"],"responses":{"200":{"description":"成功","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}},"409":{"description":"非法状态流转 / 并发占柜冲突"},"422":{"description":"业务校验失败（含 8 个 PAD_* 错误码）"}}}},"/api/v1/ops/replays/{id}":{"get":{"summary":"回放详情","tags":["控制后台"],"responses":{"200":{"description":"成功","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}},"409":{"description":"非法状态流转 / 并发占柜冲突"},"422":{"description":"业务校验失败（含 8 个 PAD_* 错误码）"}}}},"/api/v1/ops/alerts":{"get":{"summary":"告警（含 snapshot_id）","tags":["控制后台"],"responses":{"200":{"description":"成功","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}},"409":{"description":"非法状态流转 / 并发占柜冲突"},"422":{"description":"业务校验失败（含 8 个 PAD_* 错误码）"}}}},"/api/v1/simulation/state":{"get":{"summary":"仿真状态（M3 实时 stateView + WS + video 统计）","tags":["仿真"],"responses":{"200":{"description":"成功","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}},"409":{"description":"非法状态流转 / 并发占柜冲突"},"422":{"description":"业务校验失败（含 8 个 PAD_* 错误码）"}}}},"/api/v1/control/commands":{"get":{"summary":"控制指令列表（可按 status 过滤）","tags":["控制后台"],"responses":{"200":{"description":"成功","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}},"409":{"description":"非法状态流转 / 并发占柜冲突"},"422":{"description":"业务校验失败（含 8 个 PAD_* 错误码）"}}},"post":{"summary":"控制指令闭环（校验/二次确认/幂等/执行/ACK/审计）","tags":["控制后台"],"responses":{"200":{"description":"成功","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}},"409":{"description":"非法状态流转 / 并发占柜冲突"},"422":{"description":"业务校验失败（含 8 个 PAD_* 错误码）"}}}},"/api/v1/control/video/snapshots":{"post":{"summary":"手动抓帧（两路，写入录制会话打点）","tags":["控制后台"],"responses":{"200":{"description":"成功","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}},"409":{"description":"非法状态流转 / 并发占柜冲突"},"422":{"description":"业务校验失败（含 8 个 PAD_* 错误码）"}}}},"/api/v1/sim/start":{"post":{"summary":"启动仿真 tick","tags":["仿真"],"responses":{"200":{"description":"成功","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}},"409":{"description":"非法状态流转 / 并发占柜冲突"},"422":{"description":"业务校验失败（含 8 个 PAD_* 错误码）"}}}},"/api/v1/sim/pause":{"post":{"summary":"暂停仿真","tags":["仿真"],"responses":{"200":{"description":"成功","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}},"409":{"description":"非法状态流转 / 并发占柜冲突"},"422":{"description":"业务校验失败（含 8 个 PAD_* 错误码）"}}}},"/api/v1/sim/speed":{"post":{"summary":"切换仿真倍率 1|10|60","tags":["仿真"],"responses":{"200":{"description":"成功","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}},"409":{"description":"非法状态流转 / 并发占柜冲突"},"422":{"description":"业务校验失败（含 8 个 PAD_* 错误码）"}}}},"/api/v1/sim/reset":{"post":{"summary":"复位天气/禁飞区/柜门/预约/录制","tags":["仿真"],"responses":{"200":{"description":"成功","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}},"409":{"description":"非法状态流转 / 并发占柜冲突"},"422":{"description":"业务校验失败（含 8 个 PAD_* 错误码）"}}}},"/api/v1/sim/dispatch":{"post":{"summary":"执行可解释派单 assignDrones()","tags":["仿真"],"responses":{"200":{"description":"成功","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}},"409":{"description":"非法状态流转 / 并发占柜冲突"},"422":{"description":"业务校验失败（含 8 个 PAD_* 错误码）"}}}},"/api/v1/sim/fleet":{"get":{"summary":"机队运行快照 DroneRuntime[]","tags":["仿真"],"responses":{"200":{"description":"成功","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}},"409":{"description":"非法状态流转 / 并发占柜冲突"},"422":{"description":"业务校验失败（含 8 个 PAD_* 错误码）"}}}},"/api/v1/sim/missions":{"get":{"summary":"在飞任务（含 score_breakdown / eliminations / waypoints）","tags":["仿真"],"responses":{"200":{"description":"成功","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}},"409":{"description":"非法状态流转 / 并发占柜冲突"},"422":{"description":"业务校验失败（含 8 个 PAD_* 错误码）"}}}},"/api/v1/sim/alerts":{"get":{"summary":"运维告警（含两路抓帧）","tags":["仿真"],"responses":{"200":{"description":"成功","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}},"409":{"description":"非法状态流转 / 并发占柜冲突"},"422":{"description":"业务校验失败（含 8 个 PAD_* 错误码）"}}}},"/api/v1/sim/faults":{"get":{"summary":"故障注入记录 FaultEvent[]","tags":["仿真"],"responses":{"200":{"description":"成功","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}},"409":{"description":"非法状态流转 / 并发占柜冲突"},"422":{"description":"业务校验失败（含 8 个 PAD_* 错误码）"}}}},"/api/v1/sim/emergency":{"get":{"summary":"迫降记录","tags":["仿真"],"responses":{"200":{"description":"成功","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}},"409":{"description":"非法状态流转 / 并发占柜冲突"},"422":{"description":"业务校验失败（含 8 个 PAD_* 错误码）"}}}},"/api/v1/sim/inject":{"post":{"summary":"注入 6 类故障","tags":["仿真"],"responses":{"200":{"description":"成功","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}},"409":{"description":"非法状态流转 / 并发占柜冲突"},"422":{"description":"业务校验失败（含 8 个 PAD_* 错误码）"}}}},"/api/v1/sim/demo/order":{"post":{"summary":"一键演示订单（复用 M2 真实下单链路）","tags":["仿真"],"responses":{"200":{"description":"成功","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}},"409":{"description":"非法状态流转 / 并发占柜冲突"},"422":{"description":"业务校验失败（含 8 个 PAD_* 错误码）"}}}},"/api/v1/sim/health":{"get":{"summary":"运行时全快照（sim + ws + video + recorder）","tags":["仿真"],"responses":{"200":{"description":"成功","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}},"409":{"description":"非法状态流转 / 并发占柜冲突"},"422":{"description":"业务校验失败（含 8 个 PAD_* 错误码）"}}}},"/api/v1/sim/meta":{"get":{"summary":"M3 静态元数据（12 指令 / 6 故障 / 7 通道 / 3 档速度）","tags":["仿真"],"responses":{"200":{"description":"成功","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}},"409":{"description":"非法状态流转 / 并发占柜冲突"},"422":{"description":"业务校验失败（含 8 个 PAD_* 错误码）"}}}},"/api/v1/control/commands/audit":{"get":{"summary":"拉平的指令审计链","tags":["控制后台"],"responses":{"200":{"description":"成功","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}},"409":{"description":"非法状态流转 / 并发占柜冲突"},"422":{"description":"业务校验失败（含 8 个 PAD_* 错误码）"}}}},"/api/v1/control/commands/{id}/timeout":{"post":{"summary":"人工触发 ACK 超时演练","tags":["控制后台"],"responses":{"200":{"description":"成功","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}},"409":{"description":"非法状态流转 / 并发占柜冲突"},"422":{"description":"业务校验失败（含 8 个 PAD_* 错误码）"}}}},"/api/v1/video/clips":{"get":{"summary":"录制会话列表","tags":["视频与回放"],"responses":{"200":{"description":"成功","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}},"409":{"description":"非法状态流转 / 并发占柜冲突"},"422":{"description":"业务校验失败（含 8 个 PAD_* 错误码）"}}}},"/api/v1/video/clips/{id}/frames":{"get":{"summary":"按区间取帧序列（?camera&from&to）","tags":["视频与回放"],"responses":{"200":{"description":"成功","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}},"409":{"description":"非法状态流转 / 并发占柜冲突"},"422":{"description":"业务校验失败（含 8 个 PAD_* 错误码）"}}}},"/api/v1/video/clips/file/{name}":{"get":{"summary":"帧序列文件下载（支持 HTTP Range）","tags":["视频与回放"],"responses":{"200":{"description":"成功","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}},"409":{"description":"非法状态流转 / 并发占柜冲突"},"422":{"description":"业务校验失败（含 8 个 PAD_* 错误码）"}}}},"/api/v1/video/mjpeg/{droneId}/{camera}":{"get":{"summary":"MJPEG multipart SVG 帧流","tags":["视频与回放"],"responses":{"200":{"description":"成功","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}},"409":{"description":"非法状态流转 / 并发占柜冲突"},"422":{"description":"业务校验失败（含 8 个 PAD_* 错误码）"}}}},"/api/v1/video/missions/{id}/replay":{"get":{"summary":"按任务查三联动回放 ReplayBundle","tags":["视频与回放"],"responses":{"200":{"description":"成功","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}},"409":{"description":"非法状态流转 / 并发占柜冲突"},"422":{"description":"业务校验失败（含 8 个 PAD_* 错误码）"}}}},"/api/v1/video/orders/{id}/replay":{"get":{"summary":"按订单查回放（用户端回看）","tags":["视频与回放"],"responses":{"200":{"description":"成功","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}},"409":{"description":"非法状态流转 / 并发占柜冲突"},"422":{"description":"业务校验失败（含 8 个 PAD_* 错误码）"}}}},"/api/v1/video/recordings/{id}/stop":{"post":{"summary":"手动停录并生成两路 clip","tags":["视频与回放"],"responses":{"200":{"description":"成功","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}},"409":{"description":"非法状态流转 / 并发占柜冲突"},"422":{"description":"业务校验失败（含 8 个 PAD_* 错误码）"}}}},"/api/v1/ops/kpi":{"get":{"summary":"7 项 KPI + 仿真速度/天气/熔断","tags":["控制后台"],"responses":{"200":{"description":"成功","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}},"409":{"description":"非法状态流转 / 并发占柜冲突"},"422":{"description":"业务校验失败（含 8 个 PAD_* 错误码）"}}}},"/api/v1/ops/world":{"get":{"summary":"世界坐标（投放点/机巢/门店/禁飞区/柜门）","tags":["控制后台"],"responses":{"200":{"description":"成功","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}},"409":{"description":"非法状态流转 / 并发占柜冲突"},"422":{"description":"业务校验失败（含 8 个 PAD_* 错误码）"}}}},"/api/v1/ops/no-fly-zones":{"post":{"summary":"手绘临时圆形管制区（写审计并发告警）","tags":["控制后台"],"responses":{"200":{"description":"成功","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}},"409":{"description":"非法状态流转 / 并发占柜冲突"},"422":{"description":"业务校验失败（含 8 个 PAD_* 错误码）"}}}},"/api/v1/ops/audit":{"get":{"summary":"合并审计日志（指令 + 投放点 + 订单事件）","tags":["控制后台"],"responses":{"200":{"description":"成功","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}},"409":{"description":"非法状态流转 / 并发占柜冲突"},"422":{"description":"业务校验失败（含 8 个 PAD_* 错误码）"}}}},"/api/v1/ops/video-stats":{"get":{"summary":"视频 Worker 池与录制统计","tags":["控制后台"],"responses":{"200":{"description":"成功","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}},"409":{"description":"非法状态流转 / 并发占柜冲突"},"422":{"description":"业务校验失败（含 8 个 PAD_* 错误码）"}}}},"/api/v1/ws/stats":{"get":{"summary":"WS 连接数 / 按通道分布 / 背压丢弃数","tags":["实时链路"],"responses":{"200":{"description":"成功","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}},"409":{"description":"非法状态流转 / 并发占柜冲突"},"422":{"description":"业务校验失败（含 8 个 PAD_* 错误码）"}}}},"/api/v1/merchant/board":{"get":{"summary":"商家看板：8 项 KPI + 订单列表（备餐倒计时 / 箱码 / 期望重量）","tags":["商家端"],"responses":{"200":{"description":"成功","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}},"409":{"description":"非法状态流转 / 并发占柜冲突"},"422":{"description":"业务校验失败（含 8 个 PAD_* 错误码）"}}}},"/api/v1/merchant/skus":{"get":{"summary":"商家 SKU 列表（含 stock / low_stock）","tags":["商家端"],"responses":{"200":{"description":"成功","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}},"409":{"description":"非法状态流转 / 并发占柜冲突"},"422":{"description":"业务校验失败（含 8 个 PAD_* 错误码）"}}}},"/api/v1/merchant/skus/{id}":{"put":{"summary":"更新 SKU 库存 / 上下架","tags":["商家端"],"responses":{"200":{"description":"成功","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}},"409":{"description":"非法状态流转 / 并发占柜冲突"},"422":{"description":"业务校验失败（含 8 个 PAD_* 错误码）"}}}},"/api/v1/merchant/settlement":{"get":{"summary":"日结算（按日聚合 + summary）","tags":["商家端"],"responses":{"200":{"description":"成功","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}},"409":{"description":"非法状态流转 / 并发占柜冲突"},"422":{"description":"业务校验失败（含 8 个 PAD_* 错误码）"}}}},"/api/v1/merchant/reviews":{"get":{"summary":"评价列表（含回复状态）","tags":["商家端"],"responses":{"200":{"description":"成功","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}},"409":{"description":"非法状态流转 / 并发占柜冲突"},"422":{"description":"业务校验失败（含 8 个 PAD_* 错误码）"}}}},"/api/v1/merchant/reviews/{id}/reply":{"post":{"summary":"商家回复评价（不可重复）","tags":["商家端"],"responses":{"200":{"description":"成功","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}},"409":{"description":"非法状态流转 / 并发占柜冲突"},"422":{"description":"业务校验失败（含 8 个 PAD_* 错误码）"}}}},"/api/v1/merchant/orders/{id}/load-confirm":{"post":{"summary":"装载确认：扫箱码 + 称重校验（4 类错误码）→ LOADED","tags":["商家端"],"responses":{"200":{"description":"成功","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}},"409":{"description":"非法状态流转 / 并发占柜冲突"},"422":{"description":"业务校验失败（含 8 个 PAD_* 错误码）"}}}},"/api/v1/merchant/events":{"get":{"summary":"装载确认取证事件（含 evidence）","tags":["商家端"],"responses":{"200":{"description":"成功","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}},"409":{"description":"非法状态流转 / 并发占柜冲突"},"422":{"description":"业务校验失败（含 8 个 PAD_* 错误码）"}}}},"/api/v1/ground/board":{"get":{"summary":"机务看板：机队 / 机巢舱位图 / 维保工单 / summary","tags":["机务端"],"responses":{"200":{"description":"成功","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}},"409":{"description":"非法状态流转 / 并发占柜冲突"},"422":{"description":"业务校验失败（含 8 个 PAD_* 错误码）"}}}},"/api/v1/ground/work-orders":{"get":{"summary":"维保工单列表","tags":["机务端"],"responses":{"200":{"description":"成功","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}},"409":{"description":"非法状态流转 / 并发占柜冲突"},"422":{"description":"业务校验失败（含 8 个 PAD_* 错误码）"}}}},"/api/v1/ground/drones/{id}/swap-battery":{"post":{"summary":"换电（维保中 409）","tags":["机务端"],"responses":{"200":{"description":"成功","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}},"409":{"description":"非法状态流转 / 并发占柜冲突"},"422":{"description":"业务校验失败（含 8 个 PAD_* 错误码）"}}}},"/api/v1/ground/drones/{id}/maintenance":{"post":{"summary":"创建维保工单 → MAINTENANCE","tags":["机务端"],"responses":{"200":{"description":"成功","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}},"409":{"description":"非法状态流转 / 并发占柜冲突"},"422":{"description":"业务校验失败（含 8 个 PAD_* 错误码）"}}}},"/api/v1/ground/work-orders/{id}/close":{"post":{"summary":"关闭维保工单 → 恢复 IDLE / 健康度 100","tags":["机务端"],"responses":{"200":{"description":"成功","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}},"409":{"description":"非法状态流转 / 并发占柜冲突"},"422":{"description":"业务校验失败（含 8 个 PAD_* 错误码）"}}}},"/api/v1/ground/drones/{id}/fault":{"post":{"summary":"设备故障标记（走 MOTOR_FAULT 真实状态机分支，非真实飞控）","tags":["机务端"],"responses":{"200":{"description":"成功","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}},"409":{"description":"非法状态流转 / 并发占柜冲突"},"422":{"description":"业务校验失败（含 8 个 PAD_* 错误码）"}}}},"/api/v1/control/orders":{"get":{"summary":"后台订单池（含用户 / 柜门状态）","tags":["控制后台"],"responses":{"200":{"description":"成功","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}},"409":{"description":"非法状态流转 / 并发占柜冲突"},"422":{"description":"业务校验失败（含 8 个 PAD_* 错误码）"}}}},"/api/v1/control/pads/{id}/audit":{"post":{"summary":"投放点审核 APPROVE | REJECT（写审计日志）","tags":["控制后台"],"responses":{"200":{"description":"成功","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}},"409":{"description":"非法状态流转 / 并发占柜冲突"},"422":{"description":"业务校验失败（含 8 个 PAD_* 错误码）"}}}},"/api/v1/control/weather":{"get":{"summary":"天气熔断视图（级别 / 风速 / 关闭投放点 / 全局熔断）","tags":["控制后台"],"responses":{"200":{"description":"成功","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}},"409":{"description":"非法状态流转 / 并发占柜冲突"},"422":{"description":"业务校验失败（含 8 个 PAD_* 错误码）"}}}},"/api/v1/control/doors/board":{"get":{"summary":"柜门看板（总数守恒 + 按投放点明细）","tags":["控制后台"],"responses":{"200":{"description":"成功","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}},"409":{"description":"非法状态流转 / 并发占柜冲突"},"422":{"description":"业务校验失败（含 8 个 PAD_* 错误码）"}}}},"/api/v1/control/pads/import-csv":{"post":{"summary":"CSV 批量导入投放点（PENDING 待审核，不绕过强校验）","tags":["控制后台"],"responses":{"200":{"description":"成功","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}},"409":{"description":"非法状态流转 / 并发占柜冲突"},"422":{"description":"业务校验失败（含 8 个 PAD_* 错误码）"}}}},"/api/v1/m4/meta":{"get":{"summary":"M4 元信息（模块 / 路由清单 / CSV 列定义）","tags":["通用"],"responses":{"200":{"description":"成功","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}},"409":{"description":"非法状态流转 / 并发占柜冲突"},"422":{"description":"业务校验失败（含 8 个 PAD_* 错误码）"}}}},"/api/v1/health":{"get":{"summary":"健康检查","tags":["通用"],"responses":{"200":{"description":"成功","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse"}}}},"409":{"description":"非法状态流转 / 并发占柜冲突"},"422":{"description":"业务校验失败（含 8 个 PAD_* 错误码）"}}}},"/health":{"get":{"summary":"健康检查（根路径）","responses":{"200":{"description":"ok"}}}}}}