# 账户流水(三所统一) 从**交易所 API**拉取资金账户与交易账户账单,在实例内展示。 不使用程序本地 `transfer_logs` 作为主数据源。 ## 能力概览 | 项 | 说明 | |----|------| | 导航 | 「账户流水」Tab;默认关闭,在 **系统设置 → 导航显示** 打开 | | Tab | **资金账户** / **交易账户** | | 分页 | 每页 10 条,时间倒序 | | 时间窗 | 跟随顶栏 UTC **预设**(与列表 `list_window` 一致) | | 同步 | 后台约 **120s** 拉一次交易所;完成后 **SSE** 推版本,前端自动刷新 | | 币种 | USDT;OKX 另含 **USDC** | | 三所 | Binance / OKX / Gate 同一套 UI 与路由 | ## 使用 1. 系统设置 → 导航显示 → 勾选「账户流水」→ 保存 2. 顶栏选预设时间并点「应用」 3. 打开「账户流水」,切换资金/交易 Tab;可点「立即同步」 ## API | 路由 | 说明 | |------|------| | `GET /api/account_ledger?account=funding\|trading&page=1` | 按当前 session 时间窗分页查询缓存 | | `GET /api/account_ledger/stream` | SSE,`event: ledger`,载荷含 `ledger_version` | | `POST /api/account_ledger/refresh` | 手动触发同步(有冷却,默认 30s) | 均需登录(与实例其他 API 相同)。 ## 交易所数据源 | 所 | 资金账户 | 交易账户 | |----|----------|----------| | Gate | spot `account_book`(USDT) | USDT 永续 `account_book` | | OKX | `asset/bills`(USDT+USDC) | `account/bills` + `bills-archive`(USDT+USDC) | | Binance | 充提 + `fetch_transfers`(USDT) | U 本位 `fapi` income(USDT) | 后台默认回看 **90 天**(`ACCOUNT_LEDGER_LOOKBACK_DAYS`),写入本地 SQLite 缓存后再按顶栏时间窗过滤展示。 「全部 / 近 6 月」等超出回看窗口的部分,仅能看到缓存内数据。 ## 环境变量(可选) | 变量 | 默认 | 说明 | |------|------|------| | `ACCOUNT_LEDGER_POLL_SEC` | `120` | 后台轮询秒数 | | `ACCOUNT_LEDGER_LOOKBACK_DAYS` | `90` | 拉取与手动同步上限天数 | | `ACCOUNT_LEDGER_MANUAL_COOLDOWN_SEC` | `30` | 手动同步冷却 | | `ACCOUNT_LEDGER_SSE_HEARTBEAT_SEC` | `25` | SSE 心跳 | ## 代码位置 ``` lib/account_ledger/ # DB / 同步 / SSE / 注册 / 面板 lib/exchange/*_ledger_lib.py # 三所拉取适配 lib/common/static/account_ledger.js ``` 三所 `app.py` 调用:`install_account_ledger(..., exchange_key=...)`。 ## 审计摘要(2026-08-10) - 路由均 `@login_required`;SSE 仅推版本号,不含账单正文 - SQL 参数化;`account` 白名单;币种服务端固定 - 前端表格字段 `escapeHtml` - **已修复**:手动同步强制套用 lookback 上限 + 冷却,避免滥用刷交易所 API 详见同目录旁注或 PR 说明;安全复查子代理结论:修复后无未关闭的中高危项。