# MCP 销售订单金额字段限制

## 结论

飞书项目 MCP 的 `销售订单` 工作项**不返回任何财务金额**。以下字段查询均返回 `0` 或空值：

| 字段 | MCP 返回值 | 说明 |
|------|:--:|:--|
| `金额` | `0` | 销售订单金额 |
| `价税合计` | `0` | 含税总价 |
| `含税单价` | `0` | 含税单价 |

## 验证方式

```bash
TK='m-abfb29e8-3104-434f-9944-8d0bb592f8cd'
PK='6593cd71471290e3cc6be6e6'

curl -s -X POST https://project.feishu.cn/mcp_server/v1 \
  -H "X-Mcp-Token: $TK" \
  -H "Content-Type: application/json" \
  -d '{
    "jsonrpc":"2.0",
    "method":"tools/call",
    "params":{
      "name":"search_by_mql",
      "arguments":{
        "project_key":"'$PK'",
        "mql":"SELECT \`单据编号\`,\`金额\`,\`价税合计\`,\`含税单价\` FROM \`销售管理\`.\`销售订单\` WHERE \`创建时间\` >= \"2026-07-10\" LIMIT 5"
      }
    },
    "id":1
  }'
```

返回示例（所有订单金额均为 0）：

```json
{"单据编号": "ZHBR260716029", "金额": "0", "价税合计": "0", "含税单价": "0"}
```

## 影响

- 销售 KPI、月度达成、个人排名等**涉及金额的数据不能依赖飞书 MCP 实时拉取**。
- 飞书 MCP 仍可用于非金额字段：订单数量、单据状态、创建时间、负责人、客户关联等。

## 正确做法：ERP 导出为唯一数据源

1. 用户从 ERP 导出 `销售订单*.xlsx` 到 `~/Desktop/hermas输入-工作台数据库/月度销售额数据/`。
2. 运行 `refresh_erp.py` 解析最新文件，写入 `数据/kpi_progress.json`。
3. 前端通过 `fetch('../数据/kpi_progress.json')` 读取。

### refresh_erp.py 核心逻辑

- 扫描 `月度销售额数据/销售订单*.xlsx`。
- 跳过表名含 `合计` 或 `汇总` 的汇总行。
- 按销售员聚合 `价税合计`（或 `金额`）。
- 输出 `kpi_progress.json`：

```json
{
  "updated": "2026-07-17",
  "total": 1133000.0,
  "orders": 1083,
  "by_salesperson": {
    "冯贤平": 207000.0,
    "刘虹晶": 194000.0,
    "赵云浩": 176000.0,
    "张立娅": 141000.0
  }
}
```

## 自动刷新 cron

```bash
# 每30分钟检测新文件
hermes cron create --schedule "every 30m" --name "ERP数据自动刷新" \
  --prompt "运行 python3 ~/Desktop/Hermes输出-工作类/refresh_erp.py 检测并更新ERP销售数据。"
```

## 注意

不要写 cron 去调用 MCP 查询销售订单金额，否则会用空数据（全 0）覆盖正确的 ERP 数据。之前已发生过此类事故：定时任务用 MCP 空数据覆盖 ERP 数据，导致工作台显示 `0 笔订单，总金额 0`。