---
name: baoyu-workbench-patterns
description: 宝锐销售工作台构建模式 — 零依赖HTML Tab式仪表盘，日/周/月/累计切换+数据透视，JSON驱动，DOM事件绑定，localStorage持久化。
category: productivity
---


# 宝锐销售工作台构建模式

## 新增 Tab 三步 + 多基址回退（2026-09-15）

1. `TABS` 加项 → 2. `render()` switch 加 case → 3. **`PERM_TAB_LABELS` 加标签**（漏了则权限页看不到该 Tab）。
复杂表单做成独立子页 + Tab 内 iframe（参考 `宝锐活动录入.html`）。详见 `baoyu-workbench-frontend-pitfalls/references/new-tab-and-api-fallback.md`。

**API 多基址回退必须按 HTTP 状态码判断**：`fetch().then(r=>r.json())` 会在公网 Tunnel 返回 401 时就把错误当结果 resolve，本地兜底端口永不尝试；须 `if (r.status===401||403||>=500) throw` 再换下一个基址，基址列表首位放**同源 origin**。

**前后端字段契约要对齐**：前端发 `sections`、后端只读 `values` → `ok:true` 但数据落空；落盘接口必须**回读一条记录核对字段长度**。

**UI 密度（用户偏好）**：多层级选择（如 20 个产品方向）用**两级级联下拉**（一级类型 → 二级方向，唯一项自动选中），**不要用卡片网格**——用户明确反馈“选择这块篇幅占得太大”。自动填充必须与操作顺序无关（先选产品还是先选订单都要能带出）。

## 核心原则

1. **零外部依赖** — 不用 Chart.js / HermesTable / CDN库（除 html2canvas 用于截图分享）
2. **JSON驱动** — 所有数据先生成 JSON → HTML fetch
3. **DOM事件绑定** — 用 `createElement` + `onclick` / 事件代理，**禁止 inline onclick 字符串拼接**
4. **`node --check` 验证** — 每次修改 HTML 中的 JS 必须跑语法检查
5. **localStorage 持久化** — 用户上传/填写的数据存 localStorage，渲染时恢复
6. **🛑 铁律：数据必须真实，禁止估算** — 用户明确要求所有数字必须来自真实数据源（ERP/MCP），禁止按比例分摊、线性推算、或任何形式的估算。宁可不显示部门拆分，也不给不真实的数字。此条优先级最高，违反即为不可接受的错误。

## 标准页面骨架

```html
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8"><meta name="viewport" content="width=device-width,initial-scale=1.0">
<title>宝锐 · {页面名}</title>
<style>
:root{--pri:#1852B6;--pri-light:#e8f1fd;--ok:#0d904f;--warn:#e37400;--bad:#d93025;--bg:#f5f7fa;--card:#fff;--text:#202124;--sub:#5f6368;--border:#e0e0e0}
/* ... 统一配色 + 顶栏 + 卡片 + 表格 ... */
</style>
</head>
<body>
<div class="topbar">
<a href="http://127.0.0.1:8765/工具/宝锐统一工作平台.html"><img src="logo.png" alt="宝锐生物" style="height:28px"></a>
</div>
<div class="content"><!-- Tab结构 --></div>
<script>
var DATA=null;
fetch('/数据/{xxx}.json').then(r=>r.json()).then(d=>{DATA=d;render();});
</script>
</body>
</html>
```

## 周期切换模式（日/周/月/累计）

UI：`<button>` 组，`.on` 类标记当前

```javascript
// CSS: .tab-btn.on{background:var(--pri);color:#fff}
var period='day';
function setPeriod(p){
  period=p;
  document.querySelectorAll('#pnl-xxx .tab-btn').forEach(function(b,i){
    b.classList.toggle('on',i===['day','week','month','cum'].indexOf(p));
  });
  renderXxx();
}
```

聚合函数：
```javascript
function getWeekRange(dateStr){
  var d=new Date(dateStr),day=d.getDay()||7;
  d.setDate(d.getDate()-day+1); var mon=d.toISOString().slice(0,10);
  d.setDate(d.getDate()+6); return mon+' ~ '+d.toISOString().slice(0,10);
}

// 累计：遍历所有 days <= anchorDate
if(period==='cum'){
  source.days.forEach(function(d){if(d<=anchorDate){...}});
}
```

## 数据透视模式

下拉 `<select>` 切换数据聚合维度：

```javascript
var pivot='detail'; // detail | client | product | sales

function pivotData(details, pivot){
  if(pivot==='detail') return details;
  var map={}, key=pivot==='client'?'client':pivot==='product'?'product':'sales';
  details.forEach(function(d){
    if(!map[d[key]]) map[d[key]]={count:0,amount:0};
    map[d[key]].count++; map[d[key]].amount+=d.amount||0;
  });
  return Object.values(map).sort(function(a,b){return b.amount-a.amount});
}
```

**表格结构切换**：
- `detail` 模式：完整列（7列）+ 每条明细一行
- 透视模式：3列（名称/笔数/金额），聚合后排序

## 事件绑定铁律

### 工作项关联关系（获取客户名）
```
# 销售订单 → 客户
relation_id: "6593cd71471290e3cc6be6e6:work_item_relation:relation_1713785263022"
# 销售订单 → 商机
relation_id: "6593cd71471290e3cc6be6e6:work_item_relation:relation_1715302203273"
# 活动 → 销售订单
relation_id: "6593cd71471290e3cc6be6e6:work_item_relation:relation_1715284999934"
```
**⚠️ timeout 必须 60 秒**（默认30s不够），加重试逻辑（3次）。

### 飞书活动导航 URL 模式

**🔴 不要依赖 MCP 写权限**（用户通常未开启，需个人偏好设置中手动启用）。所有\"创建活动\"操作改用 URL 跳转飞书原生页面。

| 跳转目标 | URL 格式 | 示例 |
|----------|---------|------|
| 活动主页（列表） | `https://project.feishu.cn/{simple_name}/{api_name}/homepage` | `https://project.feishu.cn/xsguanli/sj/homepage` |
| 新建活动（带预填） | `https://project.feishu.cn/baoyu/workitem/create?project_key={pk}&work_item_type_key={type_key}` | 支持 `&name=xxx` 参数预填标题 |

**宝锐各空间 simple_name + api_name 速查**：
- 销售管理: xsguanli / 活动=sj, 客户=kh, 商机=story, 销售订单=xsdd
- 客诉空间: br-shgl / 客诉=khts

**代码模式**：无客户上下文→跳主页；有客户名→跳新建+预填
```javascript
var FEISHU_ACTIVITY_HOME = 'https://project.feishu.cn/xsguanli/sj/homepage';
var FEISHU_NEW_ACTIVITY = 'https://project.feishu.cn/baoyu/workitem/create?project_key=6593cd71471290e3cc6be6e6&work_item_type_key=65ae1e5d44338dbe7c39a29a';

function openFeishuCreateActivity(customerName) {
  if (customerName) {
    window.open(FEISHU_NEW_ACTIVITY + '&name=' + encodeURIComponent('拜访' + customerName + ' - ' + today()), '_blank');
  } else {
    window.open(FEISHU_ACTIVITY_HOME, '_blank');
  }
}
```

活动类型 option_id: 线下拜访=v4zlj721e, 线上跟进=5vezmmm1y, 陌拜=wg15dd75b, 协同拜访=wsxnxsd60

### 销售活动录入功能（「新建拜访纪要」· 7 规范 5 核心）

工作台「我的活动」Tab 的「新建拜访纪要」按钮 → `openActivityEntry()` → iframe 内嵌 `/工具/宝锐活动录入.html`。设计基础是用户定的「销售活动描述撰写规范」。

**7 规范（结构化录入字段）**：①结构化分点 ②技术参数+产品信息（带货号+量化）③问题现象+客户反馈（记客户原话）⑤关联商机+客户 ⑥标准化术语（"冻干球吸潮率30%"非"有点潮"）⑦竞对对比+差异化。**5 核心特征**：结构化/数据化/可追溯/行动导向/差异化。

**落地架构**：
- 页面 `工具/宝锐活动录入.html`：左侧表单（关联信息+活动内容+下一步）+ 右侧质量检查面板 + 生成描述/一键复制
- 后端 `ai_chat.py`：`_activity_options(user)`（下拉选项，`_visible_for_user` 权限过滤）、`_add_competitor_intel(payload,user)`（竞对沉淀）
- 接口 `销售工作台服务.py`：`/api/activity/options`（GET）、`/api/competitor/intel`（POST）
- 竞对情报库 `数据/competitor_intel.json`：品牌归一化 `_normalize_competitor_brand`（复用 `_COMPETITOR_BRANDS` 20 品牌别名表）、去重键（品牌+货号+客户）
- 货号字典 `数据/sku_list.json`：从 ERP Excel `货号#` 列去重提取，datalist 联想

**关键决策**：
- **MVP 用「生成描述+一键复制」而非 MCP 直写**——MCP create_workitem 默认只读（需销售逐个手动开写权限），且活动「关联客户」是关系字段（MQL 不暴露），直写能否挂关系字段未知。复制粘贴到飞书原生表单、销售手动选客户/订单，关系字段天然正确。
- 活动描述真实落点字段是 `field_b99055`（跟进内容），不是内建 `description`（恒空）。

**字段级质量检查（纯前端零后端）**：硬性黄灯项=货号、量化数据（% / copy/μL / ct）、客户原话、关联商机+客户、下一步行动（行动+责任人+截止日必填）。全绿才解锁「生成描述+复制」。口语词检测（"还可以/有点/不错"→黄灯）。

**权限隔离 + 登录态共享**：下拉选项必须后端过滤（sales 只看自己名下客户/商机/联系人，**不能前端过滤**——前端可伪造；货号全量非敏感）。子页面 iframe 内嵌同源共享 `bior_auth_token` + `bior_sw_user_v2`（localStorage），免二次登录。


### CloudBase 部署 URL 注意事项

飞书网页应用配置要求纯英文 HTTP/HTTPS URL，含中文路径（如 `/工具/index.html`）会校验失败。解决：部署到根目录 `index.html`。
```bash
tcb hosting deploy index.html index.html -e {env_id}
# 飞书应用主页使用: https://{env_id}.tcloudbaseapp.com/index.html
```

## 工作台入口注册

## 暗色顶栏变体（统一工作平台风格）

用户偏好：顶栏使用暗色渐变，匹配 `宝锐统一工作平台.html` 和其他主力工作台。

```css
/* 暗色顶栏 — 统一工作平台 / MCP面板 等使用 */
.topbar-dark{
  position:fixed;top:0;left:0;right:0;height:56px;
  background:linear-gradient(135deg,#1a1a2e,#16213e,#0f3460);
  display:flex;align-items:center;padding:0 16px;z-index:999;
  box-shadow:0 2px 8px rgba(0,0,0,.15);gap:10px;
}
.topbar-dark .brand{color:#fff;font-weight:700;font-size:14px;letter-spacing:1px}
.topbar-dark a{color:rgba(255,255,255,.7)}
.topbar-dark a:hover,.topbar-dark a.active{background:rgba(255,255,255,.12);color:#fff}
```

**两种顶栏风格对照**：
| 风格 | 使用场景 | 背景 | 文字色 |
|------|---------|------|--------|
| 白底 | 作战室 | `#fff` + `1px solid #e0e0e0` | `var(--text)` |
| 暗色 | 统一工作台、MCP面板 | `linear-gradient(135deg,#1a1a2e,#16213e,#0f3460)` | `#fff` |

## MCP数据面板三Tab模式

从飞书MCP实时拉取数据的面板标准结构：

```
顶栏（暗色）→ Tab切换（📋活动 / 🔴客诉 / 🚧阻塞）
              ↓
         KPI卡片行（左侧色条）
              ↓
         筛选栏（部门下拉+人员下拉+搜索框+计数）
              ↓
      面板（暗色标题 + 表格/趋势图）
```

**交互组件**：
- 部门 `<select>` filter — 从数据动态生成选项
- 人员 `<select>` filter — 从创建者列表生成
- 文本 `<input>` search — 实时 `oninput` 过滤
- CSS trend-bar — 零依赖柱状图（`flex` 布局，hover tooltip）
- 列排序 — 点击表头 `↕` 切换 asc/desc
- 事件代理导航 — 顶栏 `onclick` 代理所有Tab切换

**筛选+排序模板**：
```javascript
var filter={dept:'all',person:'all',search:''};
var sort={col:'date',dir:-1};

function applyFilter(){
  var filtered=source.filter(function(item){
    if(filter.dept!=='all'&&item.dept!==filter.dept)return false;
    if(filter.person!=='all'&&item.creator!==filter.person)return false;
    if(filter.search&&item.name.toLowerCase().indexOf(filter.search)<0)return false;
    return true;
  });
  // Sort
  filtered.sort(function(a,b){
    var va=a[sort.col]||'',vb=b[sort.col]||'';
    return (typeof va==='number')?(va-vb)*sort.dir:va.localeCompare(vb)*sort.dir;
  });
  renderTable(filtered);
}
```

### 表格结构

列：月份 | 2024当月 | 2024累计 | 25vs24同比 | 2025当月 | 2025累计 | 26vs25同比 | 2026当月 | 2026累计

行：Q1-Q4季度小计（可折叠）+ 1-12月明细 + 全年合计行

### 密码速查

| 角色 | 密码 |
|------|------|
| 总经理 (gm) | `biorigm` |
| 大客户部总监 (director) | `bioridir` |
| 赵云浩 | `biorizhao` |
| 张立娅 | `bioriliya` |

## 商机沙盘 Tab 模式（2026-07-21）

从年初商机预测 Excel 提取多Sheet数据，在销售工作台增加独立 Tab，按销售员汇总+商机明细折叠展示。

### 三步流程

1. **分析阶段**：Python/pandas 确认 Sheet名/列名/数据量
2. **提取阶段**：逐文件提取关键指标，生成中间JSON
3. **注入阶段**：Turing 读JSON + patch 仪表盘HTML

### Tailscale Funnel（公网暴露）

```bash
tailscale funnel 8765  # → https://<node>.ts.net 公网可访问
```

⚠️ Mac 必须开机；页面已有登录鉴权可做安全加固。

### 审批流程

首次使用需要 Tailscale 管理员在控制台批准 HTTPS 证书和 Serve 功能：
1. `tailscale serve` 输出审批链接
2. Admin 打开链接 → 勾选 HTTPS certificates → Save
3. 重新执行 `tailscale serve --bg http://127.0.0.1:8765`

### 渲染结构

```javascript
function render(){
  // 先渲染 tabs + stats + tabContent容器
  document.getElementById('app').innerHTML=tabs+stats+'<div id="tabContent"></div>';
  // ⚠️ 然后渲染tab内容——不要先innerHTML再querySelector
  if(TAB==='dashboard')renderDashboard(custs);
  else if(TAB==='custs')renderCusts(custs);
  document.getElementById('tabContent').innerHTML=content;
}
```

### 架构

```
CloudBase 匿名登录 → cbDb.collection('user_roles').where({name}).get()
  → 验证 password 字段 → 返回 {name, role, dept, tabs, email}
  → state.user = {name, role, dept, tabs, email}
```

### 用户表结构（user_roles 集合，23人）

```json
{"name":"刘新元","dept":"诊断原料销售部","role":"admin","password":"liuxinyuan","status":"在职",
 "tabs":{"dashboard":1,"customers":1,"visitPrep":1,"oppSandbox":1,"complaints":1,"orders":1,"myActivities":1,"todos":1},
 "email":"liuxinyuan@biori.com"}
```

### 角色权限模型

| role | 数据范围 | Tab可见 |
|------|---------|---------|
| admin | 全公司 | 全部 |
| manager | 本部门（dept字段过滤） | 全部（含看板） |
| sales | 本人名下（salesperson字段过滤） | 隐藏看板（tabs.dashboard=0） |

### 日报导出
function syncToDirector(t){
  var dirKey='bior_sw_director_closed';
  var closed=JSON.parse(localStorage.getItem(dirKey)||'[]');
  closed.unshift({salesperson:USER==='zhaoyunhao'?'赵云浩':'张立娅',text:t.text,cat:t.cat,client:t.client,conclusion:t.conclusion,closed:t.closed});
  localStorage.setItem(dirKey,JSON.stringify(closed));
}
```

### 角色选择器层次

```html
<select onchange="switchUser()">
  <option value="director">📊 大客户部</option>  <!-- 总监视图：聚合两人 -->
  <option value="zhaoyunhao">赵云浩</option>     <!-- 个人视图 -->
  <option value="zhangliya">张立娅</option>
</select>
```

### 日报导出
function exportTodos(){
  var today=new Date().toISOString().slice(0,10);
  var report='【销售日报 - '+(USER==='zhaoyunhao'?'赵云浩':'张立娅')+'】'+today+'\n📋 待处理:\n';
  active.forEach(function(t,i){
    report+=(i+1)+'. ['+(CATS[t.cat||'other']||'')+'] '+t.text+(t.client?' (@'+t.client+')':'')+(t.due?' 📅'+t.due:'')+'\n';
  });
  navigator.clipboard.writeText(report).then(function(){alert('已复制！');});
}
```

### 移动端注意事项

## 自包含HTML陷阱（2026-07-12）

| 陷阱 | 现象 | 修复 |
|------|------|------|
| `PROFILE.customer` undefined | 详情页空白 | 嵌入数据用`name`，代码用`customer`→改为`(PROFILE.customer||PROFILE.name)` |
| contacts显示[object Object] | 数组被拼接为字符串 | 加`countOf()`：`Array.isArray(v)?v.length:(v||0)` |
| iframe正则误伤JS | renderDetail崩溃 | 只在HTML模板中替换，不在JS字符串中匹配 |
| **移动端iframe崩溃** | 手机点击客户后空白 | 自包含版移除所有iframe，用链接代替 |

## 工作台入口注册

所有子页面通过工作台顶栏 Tab 注册为 `<a>` 链接：
```html
<a class="tab-btn" href="http://127.0.0.1:8765/工具/{页面}.html" 
   style="text-decoration:none;display:flex;align-items:center;justify-content:center">
   📊 {名称}
</a>
```

## 销售员登录授权模式（2026-07-10）

详见 `references/login-page-pattern.md`。

## 列表→详情双视图导航模式（2026-07-11）

适用于客户档案/CRM类页面：首页为可搜索的客户列表，点击行加载完整档案详情。

### 布局结构

**列表首页**：搜索框 + KPI 汇总卡 + 可排序表格（客户 | 累计采购 | 决策链 | 联系人 | 商机 | 项目 | 客诉 | 查看→），仅显示关键客户（大客户部清单）。

**详情视图**：暗色渐变Hero + IMA统计卡（左色条） + 3列网格面板 + 全宽决策链 + 飞书活动面板 + 待办。

```css
.detail-hero{background:linear-gradient(135deg,#1a1a2e,#16213e);padding:16px 20px;color:#fff;margin-bottom:10px}
.detail-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.detail-grid-2{grid-column:span 2}
.detail-full{grid-column:1/-1}
```

### 入口

统一工作平台顶栏添加 `<a href="/工具/工具管理.html">🔧 管理</a>` 按钮。

## 宝锐三表一书模板（2026-07-22）

竹间咨询「三表一书」销售方法论适配诊断原料业务的 HTML 模板。

### 🔴 铁律：先继承再增强

**当新工具是对旧工具的升级时，绝不要从零搭建。** 必须先完整复制旧工具的全部功能，确认工作正常后，再在新基础上增加新功能。今天的 Copilot 构建中犯了这个错误——先搭建了新的搜索+TOP5，但丢失了访前准备中心原有的材料生成核心流程，用户反馈后才补救。

正确流程：
1. 读取旧工具完整源码，梳理所有功能点
2. 在新页面中逐个复刻每个功能（搜索→选择→材料勾选→生成prompt→复制/已发送→归档→刷新检测→CSV导出）
3. 验证所有旧功能正常工作
4. 再叠加新功能（AI诊断引擎、TOP5排序、作战卡生成）

### 四Tab架构

| Tab | 功能 | 数据源 | 独立性 |
|-----|------|--------|--------|
| 🎯 作战准备 | 客户搜索(1535家) + TOP5商机排序 + 统计卡片 | `customer_list.json` + `opportunity_sandbox.json` | 共享 |
| 📝 拜访执行 | 动态作战卡：选客户→根据商机类型(存量/增量)生成三角色问题 | 商机沙盘数据驱动 | 共享 |
| 📋 待办推进 | 独立CRUD：新建/完成/删除，角色标签(销售/技术/交付)，超期标记 | localStorage(`copilot_todos`) | **独立** |
| 📖 经验库 | 赢单/丢单/话术分类，CRUD + 筛选 | localStorage(`copilot_knowledge`) | **独立** |

### 架构图
```
data/
├── h1_archive.json        3KB   固化H1汇总（月度/客户/部门）
├── h2_live.json          300KB  H2实时订单明细
├── orders_dashboard.json   1KB   看板聚合指标（H1+H2）
└── shipment_status.json = h2_live + h1_summary字段
```

### 流程

```bash
# 1. 本机 deepseek（当前会话直接回复）
# 2. Kimi k2（独立 hermes 调用）
hermes chat -q "prompt..." --provider kimi-coding --model kimi-k2 --quiet
# 3. Ollama 本地模型（后台）
ollama run qwen3:8b "prompt..." &
```

### 注意事项

- k3 在高峰期 429 概率高，对比任务优先用 kimi-k2
- Ollama 本地模型速度取决于硬件，`qwen3:8b` 约 30-60s
- 最终融合方案：取各模型之长，剔除脱离实际的建议

生命科学商机使用不同于诊断原料的层级结构：
1. **Level 1**：大学列表（温州医科大学等）— 可搜索/按区域/销售员筛选
2. **Level 2**：课题组清单（张辉课题组等）— 状态标签（✅实现销售/🧪产品试用/💬需求沟通）
3. **Level 3**：课题组档案 — 含商机详情、大学联系人、大学价格、决策链（商机层级）、待办

## 详细资料（按需查阅）

> 以下文件不在本 SKILL.md 内，需要时再读；正文只保留每次都会用到的部分。

- **`references/auth-permission.md`** — 含 6 节：待办按用户隔离、客诉权限隔离（双重过滤）→ `references/complaints-isolation.md`、Tab 权限过滤、数据权限过滤、权限管理页面、权限过滤：creatorEmail 精确匹配（2026-07-29 升级）
- **`references/data-pipeline.md`** — 含 18 节：MCP 连接参数、销售订单 MQL（关键字段）、管道脚本清单、ERP xlsx 处理陷阱、问题：`/api/activities` MCP卡死导致页面永久白屏、数据管道
- **`references/deploy-cdn.md`** — 含 1 节：缓存破坏
- **`references/details.md`** — 含 46 节：❌ 禁止、✅ 正确方式、实时API服务器(`api_server.py`)、三管齐下修复、启动、任务委派
- **`references/feishu-api.md`** — 含 4 节：销售管理可用工作项类型（13种）、飞书详情页直链、客诉Tab渲染函数位置、决策链在商机层级
- **`references/frontend-ui.md`** — 含 7 节：三Tab面板现代UX升级（2026-07-20）、SVG 绘制要点、渲染函数要点、状态标签颜色规则、渲染、面板排序建议

### 既有参考文件（原正文未引用，此处补齐索引）

- **`references/2026-07-13-session-pitfalls.md`** — 2026-07-13 Session Pitfalls
- **`references/2026-07-25-session-pitfalls.md`** — 2026-07-25 Session Learnings
- **`references/2026-07-28-session-patterns.md`** — 2026-07-28 Session Patterns & Fixes
- **`references/2026-07-29-session-fixes.md`** — 2026-07-29 工作台关键修复
- **`references/2026-07-29-session-lessons.md`** — 今日经验沉淀
- **`references/2026-08-09-session-pitfalls.md`** — 2026-08-09 会话经验总结
- **`references/2026-kpi-targets-confirmed.md`** — 2026年度诊断原料销售目标（已确认）
- **`references/auth-hardcoded-migration.md`** — 登录鉴权：CloudBase DB → 硬编码迁移（2026-07-28）
- **`references/auth-hardcoded-unified.md`** — 统一硬编码登录验证（2026-07-28）
- **`references/auth-state-user-dual-format.md`** — state.user 双格式陷阱：字符串 vs 对象（2026-07-29）
- **`references/auth-system-20260729.md`** — 工作台认证系统 · 2026-07-29 完整架构
- **`references/auth-verification-checklist.md`** — 授权验证检查清单（2026-07-25 实战总结）
- **`references/biori-global-sales-hub-reference.md`** — Biori Global Sales Hub — 参考架构分析
- **`references/cloudbase-auth-20260729.md`** — CloudBase 认证迁移实战 (2026-07-29)
- **`references/cloudbase-auth-migration.md`** — CloudBase 鉴权迁移实战（2026-07-25）
- **`references/cloudbase-deploy-20260729.md`** — CloudBase 静态托管部署 · 2026-07-29
- **`references/cloudbase-deployment.md`** — CloudBase 部署 + 鉴权迁移模式（2026-07-25）
- **`references/cloudbase-http-trigger-limitation.md`** — CloudBase 云函数 HTTP 触发器限制
- **`references/collection-form-page.md`** — 工作台「定向收集」表单页模式（输入型子页）
- **`references/customer-360-inline-integration.md`** — 客户360°档案内联集成（2026-07-29）
- **`references/customer-profile-pipeline.md`** — 客户档案全维度数据管道
- **`references/data-isolation-20260729.md`** — 数据源隔离与校准 (2026-07-29)
- **`references/data-isolation-checklist.md`** — 销售员数据隔离检查清单（2026-07-28）
- **`references/decision-chain-bulk-import.md`** — 决策链批量导入
- **`references/decision-chain-iframe.md`** — 决策链嵌入 Customer 360
- **`references/deployment-options.md`** — 工作台部署方案对比
- **`references/docx-xml-injection.md`** — DOCX 批注注入（免 python-docx）
- **`references/dual-auth-pitfall.md`** — Dual Auth Pitfall — state.user 新旧格式兼容
- **`references/erp-data-cleaning.md`** — ERP 销售数据清洗铁律
- **`references/erp-test-order-analysis.md`** — ERP测试单提取与分析模式（2026-08-06 实战）
- **`references/feishu-app-integration-step5.md`** — 飞书应用免登集成 (Step 5) — 2026-07-26 更新
- **`references/feishu-oauth-cloudflare-tunnel.md`** — 飞书 OAuth 免登 + Cloudflare Tunnel 模式（2026-07-25 实战）
- **`references/h1-h2-data-archiving.md`** — H1/H2 数据分层归档架构
- **`references/html-string-editing.md`** — HTML JS 字符串编辑避坑指南
- **`references/ka-comparison-pipeline.md`** — KA客户3年对比 · 数据管道
- **`references/kanban-kpi-cards-progressive.md`** — 看板 KPI 卡片：当月→当季→当年 三层递进设计
- **`references/kimi-provider-setup.md`** — KIMI API Provider 配置
- **`references/kpi-dashboard-cards.md`** — KPI 看板卡片 · 三层递进布局
- **`references/kpi-dashboard-dual-bar.md`** — KPI 双色同柱对比仪表盘模式
- **`references/mcp-customer-enrichment.md`** — MCP 客户名反查 · list_related_workitem 模式
- **`references/mcp-data-pipeline-v2.md`** — MCP 实时数据管道 v2.0（2026-07-26）
- **`references/mcp-order-pipeline-improvements.md`** — MCP 订单数据管道改进（2026-07-28）
- **`references/mcp-realtime-api-server.md`** — MCP 实时数据 API 服务器模式（2026-07-26 实战）
- **`references/mcp-realtime-api-v2.md`** — MCP 实时数据 API v2.0 架构（2026-07-26 上线）
- **`references/mcp-realtime-data-migration.md`** — MCP 实时数据架构 v2.0 实战笔记（2026-07-26）
- **`references/mcp-sales-data-limitation.md`** — MCP 飞书销售数据硬限制
- **`references/mcp-user-resolution.md`** — MCP 用户ID → 姓名解析
- **`references/multi-select-filter-pattern.md`** — 工作台多选筛选器组件（2026-07-28）
- **`references/new-personnel-onboarding-checklist.md`** — 新增人员全系统权限检查清单
- **`references/new-salesperson-onboarding.md`** — 新增销售员全系统一致性检查
- **`references/new-user-onboarding.md`** — 新用户上线检查清单
- **`references/order-management-patterns-20260724.md`** — 订单管理页面构建实战（2026-07-24）
- **`references/permission-admin-page.md`** — 权限管理后台页面模式（2026-07-26 更新）
- **`references/security-hardening-20260729.md`** — 2026-07-29 安全加固实录
- **`references/session-2026-08-09.md`** — 2026-08-09 Session Pitfalls
- **`references/state-user-dual-format.md`** — 销售工作台认证系统：`state.user` 双格式兼容
- **`references/test-feedback-page.md`** — 科研测试反馈页面
- **`references/three-dept-dashboard-pattern.md`** — 三部门经营分析仪表盘构建模式
