# 2026-08-09 会话经验总结

## 看板 KPI 卡片三层递进改造

### 背景
将工作台看板顶部 KPI 卡片从"年度目标·本月vs上月·半年度进度"改为三层递进：
**当月进展 → Q3当季进展 → 年度达成**

### 改造文件
- `工具/index.html`（CloudBase 部署版）
- `工具/app.html`（飞书内嵌版）

两个文件的 `getKPI()` 和 `renderDashboard()` 都需要同步修改。

### 新增数据字段
在 `getKPI()` 中计算并返回：
```javascript
monthTarget: h2TargetsArr[h2Idx],  // 当月目标
monthActual: h2Actuals[h2Idx],     // 当月实际
q3Target: sum(h2TargetsArr[0:3]),  // Q3总目标
q3Actual: sum(h2Actuals[0:3]),     // Q3累计实际
```

数据源：
- H2 目标：`kpi_dashboard.json` depts[].h2_months 汇总
- H2 实际：`three_year_monthly.json` 2026 年 7-12 月

### 关键 Pitfall：只改渲染不改数据源

**症状**：卡片显示"累计达成 2164万"（仅 H1），实际应为 2631万。

**根因**：`getKPI()` 中 `var ytd = dash.total_h1 || 0` 只取了 H1（2164万）。`kpi_dashboard.json` 已经有 `total_h1_h2` 字段（2631万）。

**修复**：`var ytd = dash.total_h1_h2 || dash.total_h1 || 0`

**教训**：改图层（renderDashboard）时必须同步检查数据层（getKPI），两层都要改。

## CloudBase 部署注意事项

### cb_sync_data.sh 只同步 JSON
该脚本遍历 `数据/` 目录下的 JSON 文件部署到 CloudBase，**不包含 HTML 页面**。

任何 HTML 修改后必须手动：
```bash
tcb hosting deploy 工具/index.html /workbench/index.html -e bier-sales-d0gatbvlx288724e9
```

### CDN 缓存
CloudBase 使用 CDN，部署后 2-5 分钟生效。验证方法：
```bash
curl -s -H "Cache-Control: no-cache" "https://bier-sales-...tcloudbaseapp.com/workbench/index.html" | grep "新特征"
```

## 科研测试反馈页面

### 文件
- 页面：`工具/科研测试反馈.html`
- 数据：`数据/test_feedback.json`
- 映射：`数据/tech_mapping.json`

### 页面结构
- KPI 行：总反馈 / 正反馈 / 负反馈 / 已闭环率
- 两个 Tab：🟢正反馈案例（卡片网格）/ 🔴负反馈追踪（表格）
- 支持按产品/销售筛选、图片上传（localStorage）、截图分享（html2canvas）

### 技术支持映射
生命科学部销售员 → 技术支持自动匹配：

| 区域 | 技术支持 |
|------|---------|
| 浙江科研* | 王凡 |
| 广州科研* | 蒋嵘 |

映射规则存储在 `数据/tech_mapping.json`，包含完整的 region → tech 和 sales → region 两级映射。

### 数据管道
Excel 文件（如袁殿果 7 月测试反馈）→ Python 解析 → test_feedback.json：
```python
# Excel 列：课题组 | 样本 | 货号 | 竞品货号 | 聊天截图 | 上机数据
# JSON 字段：group | date | product | category | sales | tech | competitor | feedback | detail
```

## Vision 工具集启用

```bash
hermes tools enable vision
# ⚠️ DeepSeek API 不支持 image_url 格式（报错 unknown variant `image_url`）
# 实测可用：Kimi K3
hermes config set auxiliary.vision.provider kimi
hermes config set auxiliary.vision.model kimi-k3
# 需 gateway restart + /reset 新会话生效
```

验证：`hermes config get auxiliary.vision` 确认 provider=kimi, model=kimi-k3。
