## 资金流向（Fund Flow / 主力净流入）

工具：`get_fund_flow`（`src.tools.fund_flow_tool.FundFlowTool`）
描述：东方财富免费免鉴权资金流向序列，把每根 bar 的净流入拆成 主力/超大单/大单/中单/小单 五档（"主力/超大单/大单/中单/小单"分解），可取日线历史或当日分钟线。
市场：A 股（.SH / .SZ / .BJ）、港股（.HK）、美股（.US）。
限速：经共享 `eastmoney` per-host 节流层；东财按源 IP 限流。

<br>

**端点**

| 周期 | 端点 URL |
| ---- | -------- |
| daily（日线历史） | `https://push2his.eastmoney.com/api/qt/stock/fflow/daykline/get` |
| min（当日分钟） | `https://push2.eastmoney.com/api/qt/stock/fflow/kline/get` |

二者均以 `secid`（`resolve_secid(symbol)` 得到）寻址。

<br>

**输入参数（工具入参）**

名称 | 类型 | 必选 | 描述
---- | ---- | ---- | ----
codes | list[str] | Y | 带后缀的 symbol 列表，如 `["600519.SH", "00700.HK", "AAPL.US"]`。单个不可解析 symbol 按 per-symbol error 上报，不中断批次。
period | str | N | `"daily"`（默认，日线净流入历史）或 `"min"`（当日分钟线）。
days | int | N | period='daily' 时保留最近 N 根日线（1–250，默认 30）；period='min' 忽略。

<br>

**端点查询参数**

名称 | 取值 | 描述
---- | ---- | ----
secid | `<market>.<code>` | 由 symbol 解析
fields1 | `f1,f2,f3,f7` | 请求级 meta 选择器
fields2 | daily=`f51..f65` / min=`f51..f56` | 逐 bar 字段选择器
klt | daily=`101` / min=`1` | 周期代码
lmt | `0` | 不限条数

<br>

**返回字段**

每根 bar 行以逗号拼接，首列为时间戳，其后 5 列依次为五档净流入（单位：人民币元）：

字段 | 类型 | 描述
---- | ---- | ----
timestamp | str | daily 为 `YYYY-MM-DD`；min 为 `YYYY-MM-DD HH:MM`
main | float | 主力净流入（主力净额）
small | float | 小单净流入
medium | float | 中单净流入
large | float | 大单净流入
super_large | float | 超大单净流入

信封：`{"ok": true, "market": "stock", "source": "eastmoney", "period": <period>, "buckets": ["main","small","medium","large","super_large"], "data": {symbol: {"symbol","secid","rows":[...]}}}`。

<br>

**调用范例**

```python
from src.tools.fund_flow_tool import FundFlowTool

out = FundFlowTool().execute(codes=["600519.SH"], period="daily", days=30)
print(out)  # {"ok": true, ... "data": {"600519.SH": {"rows": [{"timestamp": "...", "main": ...}]}}}
```
