# 竞品大表（Excel）→ Markdown 转写 + 价格基准分析 —— 实现与教训

日期：2026-09-30 ｜ 归属：zone-b ｜ 关联技能：`baoyu-competitor-analysis`（**default profile，不可从 zone-b 修改**，故本文件为 zone-b 侧副本）

## 产出与工具

| 项 | 结果 |
|---|---|
| 源文件 | `生命科学产品线-竞品大表-V1.0 2020609.xlsx`（166,925 bytes；2 Sheet × 11 字段） |
| 转写件 | `资料/生命科学产品线-竞品大表-V1.0.md`（48 KB / 156 行 / 127 条逐字保留） |
| 分析件 | `销售分析/生命科学竞品大表_内容分析_20260930.md`（10 KB） |
| 生成器 | `脚本/competitor_table_to_md.py`（合并单元格回填 + 逐字转写 + 频次统计） |
| 分析器 | `脚本/competitor_benchmark.py`（价格归一化 + 重复行 + 梯队 + 价格异常） |

```bash
python3 脚本/competitor_table_to_md.py    # → 资料/生命科学产品线-竞品大表-V1.0.md
python3 脚本/competitor_benchmark.py      # → 价格归一化 / 重复行 / 厂家梯队 / 价格异常
```

## 六个必踩的坑

1. **假厂家（最坑）** —— 「对标竞品」列按换行拆分会造出假实体：①同一单元格列同厂多货号（碧云天「P1005-xxx ⏎ **P1045**-yyy」）②原表用 `/` 占位空值。实测厂家数虚高 **33 → 真值 31**。**修法：拆出的片段必须能归一化到已知厂家白名单才计数**（`split_vendors()` 的 `KNOWN` 过滤），否则丢弃。假实体一进统计，**所有占比的分母都错**。
2. **价格单位有 5 种**（元/支、元/ml、元/T、元/rxn、元/盒），**不能直接比**。归一化时**单位不明确的一律不猜**（实测仅 **63.8%** 可归一），并输出「不可比清单」而不是硬算。
3. **跨产品的「元/T」不可横向比** —— 20μl 体系与 50μl 体系的 1 个 T 成本不等价。**只在同货号内比**，必须在报告里写明这条口径警告。
4. **合并单元格必须补全** —— 「竞争策略」「备注」列常纵向合并（如 `J44:J54`），只有首行有值；Markdown 表格里要铺满每一行（用 `ws.merged_cells.ranges` 回填）。
5. **表里没有宝锐自己的价格** —— 这张表只登记「竞品到手价」，127 条**无一条**本方报价 → 无法算「我们贵/便宜多少」。分析报告必须把「补录本方报价」列为 **P0**，否则再详细也只是情报表、不是决策表。
6. **「客户反馈」列覆盖率普遍很低**（实测 22.8%，能判正负的仅 11%）→ 但**其中「我们不如」的几条是全表最值钱的信息**，必须单独列出来，不能埋在表里。

## 交付前必做：逐格往返校验

只核行数不够。从生成的 md **反向解析回表格**，与 xlsx 逐格比对（换行 ↔ `<br>`、`\|` 反转义后）：

```
✅ 127 行 × 11 列 = 1397 格全部逐字一致
```

## 报告必含的章节

基本盘（条数/货号数/厂家数/区域分布）→ 梯队格局（国际 vs 国内，点出「全战线对手」）→ **价格基准表（同货号最低↔最高↔价差倍数）** → 我方胜负面（正/负极性分列）→ 策略手法分布（数出「靠让利」占比）→ 数据质量问题（P0-P3）→ 建议动作（**落到具体 owner + 时限**）。

## 统计口径的三个易错点（实测踩过）

1. **货号数**：`38` 个「字段取值」，其中 3 个是组合写法（`BR4C101/102/103/104` 等），展开后 ≈**44** 个实际货号。只统计「有竞品可比」的行会得到 35 —— **三个数都对，但必须说清是哪个口径**。
2. **厂家数**：按「单元格」计 vs 按「条目拆分」计不同（诺唯赞 单元格 23 / 条目 26）。**同一份报告里两套口径不能混用**，否则出现 33/32/31 自相矛盾。
3. **正负面**：含 `正：` 的行 ≠ 纯正面（有的同时含 `负：`）。正确表述：仅正面 9 + 仅负面 3 + 正负都有 2 = **14 条可判读**；提到「更好或相当」11 条、提到「不如」5 条。

## ⚠️ 对外禁发

含真实成交价与客户反馈，属内部情报 —— **不可放进对外物料、不可发给客户**。
