pub async fn modify_order(
__arg0: State<RestState>,
rec: Option<Extension<Arc<KeyRecord>>>,
headers: HeaderMap,
__arg3: Json<Value>,
) -> Result<Json<Value>, (StatusCode, Json<Value>)>Expand description
POST /api/modify-order — 改单/撤单
v1.2:和 place_order 类似但 ModifyOrder protobuf 给不出 symbol/qty/value
(只有 order_id),只能做 market 白名单 + hours 检查;symbol/value/side
留空让 check_full_skip_rate 自动跳过。
响应语义(v1.4.111 P2-5 doc 沉淀,对齐 C++ APIServer_Trd_ModifyOrder by-design):
ret_type=0 仅表示 backend 接受了 modify 操作 (operation ACK), 不保证 /api/orders
立即可见新 price/qty/status. 客户端不应调完 modify-order 就立即 query /api/orders
期望看到改动 — race window 通常 < 2s (backend push 异步同步 daemon orders cache).
正确 client pattern (ack-based):
- modify-order 返
ret_type=0→ assume backend 接受 - wait push event (REST
/ws订阅 trade notify) 或 sleep 1-2s 后 retry query - 若 2s+ 仍看不到更新 → v1.4.109 stub TTL guard fallback 会主动 refresh orders (post_ack.rs:50-80, 默认 14.5s TTL 兜底)
不修原因: C++ OpenD 同条件也只返 operation ACK (modify_order.rs:809 注释), Rust 同 C++ 行为 = by-design 对齐 (pitfall #51 “对齐 C++ = 减法, 不超越”).