### WS 标准化（prices/book/trades/account\_\*）

— 连接与心跳 —

- 主网：`wss://ws.pacifica.fi/ws`（无需 login）
- 订阅报文：`{"method":"subscribe","params":{...}}`
- 心跳：每 ≤60s 需发消息；建议每 30s 发送 `{"method":"ping"}`，服务端返回 `{"channel":"pong"}`

— 符号规范 —

- Pacifica：使用基础符号（如 `BTC`）；若上层传入 `BTC-USD`/`BTCUSDT`，在适配器中归一化为 `BTC`。

— 渠道与字段映射 —

1. prices（全市场价）

- 订阅：`{"method":"subscribe","params":{"source":"prices"}}`
- 输入字段：`symbol, funding, next_funding, oracle, mark, mid, yesterday_price, open_interest, volume_24h, timestamp`
- 标准化映射：
  - `symbol` → `symbol`
  - `mark` → `markPrice`
  - `mid` → `midPrice`
  - `oracle` → `oraclePrice`
  - `funding` → `fundingRate`
  - `next_funding` → `nextFundingRate`
  - `open_interest` → `openInterest`
  - `volume_24h` → `volume24hUsd`
  - `timestamp` → `ts`（毫秒）

2. book（聚合订单簿）

- 订阅：`{"method":"subscribe","params":{"source":"book","symbol":"BTC","agg_level":1}}`
- 响应：`data.l = [ bids[], asks[] ]`，每个层级对象：`{ p: price, a: amount, n: numOrders }`
- 标准化映射：
  - `data.l[0][i].p` → `bids[i].price`
  - `data.l[0][i].a` → `bids[i].qty`
  - `data.l[0][i].n` → `bids[i].numOrders`
  - `data.l[1][i].p` → `asks[i].price`
  - `data.l[1][i].a` → `asks[i].qty`
  - `data.l[1][i].n` → `asks[i].numOrders`
  - `s` → `symbol`
  - `t` → `ts`

3. trades（逐笔）

- 订阅：`{"method":"subscribe","params":{"source":"trades","symbol":"BTC"}}`
- 常见字段：`s(符号), a(数量), p(价格), e(事件类型), d(方向), t(时间戳)`
- 标准化映射：
  - `s` → `symbol`
  - `a` → `qty`
  - `p` → `price`
  - `e` → `eventType`
  - `d` → `direction`
  - `t` → `ts`
- 其他原始字段（如 `u/h/c`）保留在 `raw` 区域，供审计/调试

4. account\_\*（账户类频道）

- 订阅：
  - `account_info`：`{"method":"subscribe","params":{"source":"account_info","account":"<BASE58>"}}`
  - `account_balance`：`{"method":"subscribe","params":{"source":"account_balance","account":"<BASE58>"}}`
  - `account_positions`：`{"method":"subscribe","params":{"source":"account_positions","account":"<BASE58>"}}`
  - `account_orders`：`{"method":"subscribe","params":{"source":"account_orders","account":"<BASE58>"}}`
- 字段举例（account_info）：`b(余额), ae(权益), as(资产), aw(保证金预警), mu(保证金使用), pc/oc/sc(仓位/订单/触发数), t(时间)`
- 标准化（建议）：`{ balance, accountEquity, assets, alertWarning, marginUsed, posCount, openOrderCount, stopCount, ts }`

— 断线与重连 —

- 网络异常/服务端关闭：建议指数退避（250ms 基数，最多 4 次），并按需退订/重订。
- 初次订阅回放：若需要一致性，可在 WS 建立前先用 REST 拉取一次快照，再用 WS 增量叠加。

— 事件转发（多账户） —

- 在 `AccountManager` 中对各适配器 `ws()` 事件打上标签：`{ ...payload, __am: { exchange, accountId } }`，便于统一消费与审计。
