#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""艾德生物山头攻坚诊断 + 山头客户需求分析方法论（HTML）"""
import sys
sys.path.insert(0, '/Users/liuxinyuan/Desktop/Hermes输出-工作类/脚本')
import brand_kit as BK

OUT = '/Users/liuxinyuan/Desktop/Hermes输出-工作类/客户管理/艾德生物_2026-10/03_策略与复盘/艾德生物_山头攻坚诊断与需求分析方法论_20261026.html'

# 测试单年度分布
year_n = [('2022', 0), ('2023', 35), ('2024', 0), ('2025', 17), ('2026', 12)]
W, H = 900, 240
L, R, T, B = 70, 30, 20, 45
mx = 40
bars = ''
for i, (y, n) in enumerate(year_n):
    x = L + i * (W - L - R) / len(year_n) + 12
    bw = (W - L - R) / len(year_n) - 30
    h = (n / mx) * (H - T - B)
    bars += f'<rect x="{x:.1f}" y="{H-B-h:.1f}" width="{bw:.1f}" height="{h:.1f}" rx="4" fill="{"#c0392b" if n==0 else "#1a73e8"}"/>'
    bars += f'<text x="{x+bw/2:.1f}" y="{H-B-h-7:.1f}" text-anchor="middle" font-size="12" fill="#12446e">{n}</text>'
    bars += f'<text x="{x+bw/2:.1f}" y="{H-B+18}" text-anchor="middle" font-size="12" fill="#5f7183">{y}</text>'
chart = f'<svg viewBox="0 0 {W} {H}" xmlns="http://www.w3.org/2000/svg" style="width:100%;height:auto">' \
        f'<line x1="{L}" y1="{H-B}" x2="{W-R}" y2="{H-B}" stroke="#dbe6f0"/>{bars}</svg>'

html = f'''<!DOCTYPE html>
<html lang="zh-CN"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1">
<title>艾德生物：久攻不下的山头，怎么打</title>
<style>
:root{{--pri:#1a73e8;--deep:#0d47a1;--ink:#1f2d3d;--mute:#5f7183;--line:#e3ecf4;--bg:#f4f7fb}}
*{{box-sizing:border-box;margin:0;padding:0}}html,body{{max-width:100%;overflow-x:hidden}}
body{{font-family:-apple-system,"PingFang SC","Microsoft YaHei",sans-serif;background:var(--bg);color:var(--ink);line-height:1.68}}
.wrap{{max-width:1180px;margin:0 auto;padding:22px 24px 70px}}
.hero{{background:linear-gradient(135deg,#0d47a1,#1565c0 55%,#1a73e8);color:#fff;border-radius:14px;padding:26px 30px}}
.hero h1{{font-size:25px}}.hero .sub{{opacity:.9;font-size:13px;margin-top:6px}}
.hero .one{{background:rgba(255,255,255,.12);border-left:4px solid #fff;padding:12px 16px;border-radius:8px;margin-top:15px;font-size:14px}}
.kpis{{display:grid;grid-template-columns:repeat(5,1fr);gap:12px;margin:18px 0}}
.kpi{{background:#fff;border-radius:11px;padding:13px 14px;box-shadow:0 1px 4px rgba(16,42,67,.08);border-top:3px solid var(--pri)}}
.kpi b{{display:block;font-size:20px;color:var(--deep)}}.kpi span{{font-size:11.5px;color:var(--mute)}}.kpi small{{display:block;font-size:10.5px;color:#93a6b8}}
.sec{{background:#fff;border-radius:12px;padding:20px 22px;margin:16px 0;box-shadow:0 1px 4px rgba(16,42,67,.07)}}
.sec h2{{font-size:17.5px;color:var(--deep);margin-bottom:12px;display:flex;gap:8px;align-items:center}}
.sec h2 em{{font-style:normal;font-size:11.5px;color:#fff;background:var(--pri);border-radius:4px;padding:2px 7px}}
.sec h3{{font-size:14.5px;color:#17456e;margin:15px 0 8px;padding-left:9px;border-left:3px solid var(--pri)}}
p{{font-size:13.6px;margin:6px 0}}ul,ol{{margin:6px 0 6px 22px;font-size:13.6px}}li{{margin:4px 0}}
table{{width:100%;border-collapse:collapse;font-size:12.8px;margin:8px 0}}
th{{background:#f1f6fb;color:#33566f;text-align:left;padding:8px 9px;border-bottom:1px solid var(--line)}}
td{{padding:8px 9px;border-bottom:1px solid #eef4f9;vertical-align:top}}tr:hover td{{background:#fbfdff}}
.tag{{display:inline-block;font-size:10.5px;color:#fff;border-radius:3px;padding:1px 6px;margin-right:5px;background:var(--pri)}}
.box{{border-radius:8px;padding:11px 14px;font-size:13px;margin:10px 0}}
.good{{background:#eef8f2;border-left:4px solid #1e8e5a}}.warn{{background:#fff8e6;border-left:4px solid #e0a800}}.key{{background:#eef4fd;border:1px solid #d6e4f7}}
.two{{display:grid;grid-template-columns:1fr 1fr;gap:14px}}
.card{{border:1px solid var(--line);border-radius:10px;padding:13px 15px;background:#fcfdff}}
.card h4{{font-size:13.5px;color:#12446e;margin-bottom:6px}}.card p,.card li{{font-size:12.8px}}
.tl{{list-style:none;margin:8px 0 0;padding:0}}
.tl li{{position:relative;padding:0 0 13px 22px;border-left:2px solid #dbe6f0;margin-left:6px;font-size:13px}}
.tl li:before{{content:"";position:absolute;left:-6px;top:4px;width:10px;height:10px;border-radius:50%;background:var(--pri)}}
.tl b{{color:#12446e}}
.step{{display:grid;grid-template-columns:56px 1fr;gap:12px;border:1px solid var(--line);border-radius:10px;padding:13px 15px;margin:10px 0;background:#fcfdff}}
.step .no{{width:44px;height:44px;border-radius:50%;background:var(--pri);color:#fff;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:16px}}
.step h4{{font-size:14px;color:#12446e;margin-bottom:4px}}
.step p,.step li{{font-size:12.8px}}
.foot{{margin-top:22px;font-size:12px;color:#8ba2b8;display:flex;justify-content:space-between;flex-wrap:wrap;gap:8px}}
.note{{font-size:11.5px;color:#8ba2b8;margin-top:6px}}
@media(max-width:900px){{.kpis{{grid-template-columns:repeat(2,1fr)}}.two{{grid-template-columns:1fr}}table{{display:block;overflow-x:auto}}th{{white-space:normal}}}}
@media(max-width:560px){{.wrap{{padding:14px 12px 50px}}.hero{{padding:20px 18px}}.hero h1{{font-size:20px}}}}
@media print{{body{{background:#fff}}.sec{{box-shadow:none;border:1px solid #e3ecf4;break-inside:avoid}}}}
</style></head><body><div class="wrap">

<div class="hero">
<h1>艾德生物：久攻不下的山头，怎么打</h1>
<div class="sub">6 年订单与活动复盘 + 今晚市场/学术调研 + 华为 LTC / 铁三角方法论 ｜ 内部策略版 ｜ 2026-10-26</div>
<div class="one"><b>一句话诊断：</b>六年送了 64 个测试项、0 元成交，不是客户不给我们机会，而是我们一直在“送样”，没有在“做项目”。客户每年 Q4 有一次单酶统一评测，今年窗口就在眼前——这是唯一必须抓住的切口。</div>
</div>

<div class="kpis">
<div class="kpi"><b>64</b><span>六年测试项</span><small>2023/2025/2026</small></div>
<div class="kpi"><b>0 元</b><span>累计成交</span><small>全部为样品</small></div>
<div class="kpi"><b>15 条</b><span>活动记录</span><small>2023-10 ~ 2026-08</small></div>
<div class="kpi"><b>50%</b><span>客户国产替代进度</span><small>客户口径</small></div>
<div class="kpi"><b>Q4</b><span>年度测试窗口</span><small>错过再等一年</small></div>
</div>

<div class="sec">
<h2><em>01</em>六年复盘：我们做了什么，客户怎么回应</h2>
{chart}
<table>
<tr><th>年度</th><th>测试单数</th><th>主要品类</th><th>客户反馈</th></tr>
<tr><td>2022</td><td>0</td><td>—</td><td>无记录</td></tr>
<tr><td>2023</td><td>35</td><td>RTase（E13/E12/E29）、Bst/LAMP（E103、HW206/HW204）、MEIA 试剂盒、dNTP、RNase H、核酸释放剂</td><td>有测试、无结论回收；后续未见量产</td></tr>
<tr><td>2024</td><td>0</td><td>—</td><td>多次拜访研发，回复“老项目稳定、无替换计划”</td></tr>
<tr><td>2025</td><td>17</td><td>Taq（E20/E40/E23）、FastAmpli M2181-4、Pfu E32、AmpHifi、Buffer/MgCl₂</td><td>E32 在 dUTP 体系“完全不起线”，客户愿复测但无下文</td></tr>
<tr><td>2026</td><td>12</td><td>色素 AS46/47/48、苯酚红</td><td>客户 8 月回复：NGS 染料项目不做了</td></tr>
</table>
<div class="warn box"><b>三个扎眼的事实：</b>① 所有订单都是“测试销售订单”，金额 0；② 活动记录里“活动对应商机”全部为空——我们没有把这些测试当商机管；③ 每次测试后没有数据回收表，失败原因、下一步都没有落库。</div>
</div>

<div class="sec">
<h2><em>02</em>为什么久攻不下：五个结构性原因</h2>
<table>
<tr><th style="width:22%">原因</th><th>证据（客户原话/数据）</th><th style="width:26%">我们的误判</th></tr>
<tr><td><b>采购规则是“年度统测”，不是“随时引入”</b></td><td>2026-03-23、2026-04-14、2026-08-07 三次记录均提到：每年 Q4/Q1 发起测试，一年一次</td><td>我们按“有需求就送样”的节奏打，错过了窗口就沉一年</td></tr>
<tr><td><b>只要单酶，不要预混液</b></td><td>“PCR 有自己的体系，一般采购单酶比较多”“只测单酶，不调整体系”</td><td>2025 年送了 M2181-4 预混液、Buffer、MgCl₂，不是他们的采购形态</td></tr>
<tr><td><b>供应商筛选权在采购，不在技术市场</b></td><td>林江辉负责“发现新原料供应商并推介给研发”；许燕彬是技术市场总监</td><td>我们把大量精力放在许燕彬身上，绕过了真正的入口</td></tr>
<tr><td><b>NGS 已锁定诺唯赞，短期不动</b></td><td>2026-03-22：“NGS 用诺唯赞的，暂时应该不会动”</td><td>我们仍把 NGS 当作重点话题，资源错配</td></tr>
<tr><td><b>测试没有闭环</b></td><td>E32 不起线后仅“愿复测”；2023 年 RTase/LAMP 测试无结论；2026 染料项目终止</td><td>送样即结束，没有对照、没有判定标准、没有复盘</td></tr>
</table>
<div class="key box"><b>结论：</b>这不是“关系不到位”，是“打法不对”。客户的采购机制是<b>年度单酶评测 + 现有体系不改</b>，我们的动作却是<b>随时送预混液 + 等技术市场点头</b>。两套逻辑对不上，再送六年也一样。</div>
</div>

<div class="sec">
<h2><em>03</em>关键人地图：谁能放行，谁能否决</h2>
<table>
<tr><th>角色</th><th>姓名</th><th>职责</th><th>对我们的意义</th><th>打法</th></tr>
<tr><td>技术市场高级总监</td><td>许燕彬</td><td>产品策略、市场定位、注册与临床价值</td><td>影响方向，不签采购；能引荐研发</td><td>谈趋势与证据，请他指路，不推销</td></tr>
<tr><td>采购（供应商筛选）</td><td>林江辉</td><td>发现新供应商、筛原料、推介给研发、发起测试</td><td><b>真正的入口</b></td><td>Q4 统测报名 + 单酶对比包</td></tr>
<tr><td>物控</td><td>林江峰</td><td>物料控制，一年一次替换评估</td><td>节奏守门人</td><td>确认 Q4 时间表与评测清单</td></tr>
<tr><td>研发（样本前处理/LAMP）</td><td>林喜建团队</td><td>样本前处理、LAMP 体系</td><td>有明确测试需求</td><td>提供 LAMP/前处理单酶方案</td></tr>
<tr><td>NGS 研发</td><td>黄珊璐</td><td>NGS 建库与熔曲项目</td><td>已锁定诺唯赞，短期不动</td><td>保持信息触达，等替换窗口</td></tr>
<tr><td>研发管理</td><td>李有彩、江凤阁</td><td>研发经理/总监</td><td>项目立项与资源</td><td>通过林江辉或许燕彬引荐</td></tr>
</table>
</div>

<div class="sec">
<h2><em>04</em>切入话题建议：按人、按窗口、按证据</h2>
<table>
<tr><th style="width:16%">对象</th><th style="width:20%">话题</th><th>为什么现在能谈</th><th style="width:22%">我们要带的证据</th><th style="width:14%">成功标准</th></tr>
<tr><td><b>林江辉</b>（采购）</td><td><b>Q4 Taq 酶统一评测</b></td><td>客户明确 Q4 会做 Taq 统一评测，可主动报名</td><td>E20/E40/E23 单酶对比包；按他们指标（稳定性、特异性、1/100 灵敏度）做的测试方案与数据模板</td><td>进入评测名单</td></tr>
<tr><td><b>林江辉</b></td><td>RTase 单酶替换（LAMP/RT-LAMP）</td><td>2023 年测过 E13/E12/E29，有历史数据可续</td><td>E13/E29 与现用 Takara 的对照数据；批间 CV</td><td>拿到复测承诺</td></tr>
<tr><td><b>林喜建团队</b>（研发）</td><td>样本前处理 + LAMP 体系</td><td>2026-03 明确“有样本前处理和 LAMP 测试需求”</td><td>前处理酶/释放剂方案；LAMP 用 Bst 数据</td><td>立项测试</td></tr>
<tr><td><b>黄珊璐</b>（NGS）</td><td>建库辅助（UDG/无核酸酶水/缓冲）</td><td>NGS 主酶锁定诺唯赞，但辅料仍可切</td><td>辅料级 COA 与批间数据</td><td>建立技术触点</td></tr>
<tr><td><b>许燕彬</b>（技术市场）</td><td>MRD/血液版/出海的原料门槛</td><td>他关心产品竞争力与注册，不关心单价</td><td>低背景/冻干/直扩三页证据包；行业情报简报</td><td>引荐研发、进入年度技术交流</td></tr>
<tr><td><b>许燕彬</b></td><td><span style="color:#c0392b">染料（已终止）</span></td><td>2026-08 客户明确“NGS 染料项目不做了”</td><td>—</td><td><b>停止投入</b></td></tr>
</table>
<div class="good box"><b>优先级：</b>Q4 Taq 统测（本周就要动）＞ RTase 复测 ＞ 前处理/LAMP ＞ 许燕彬技术交流 ＞ NGS 辅料。染料不再投入。</div>
</div>

<div class="sec">
<h2><em>05</em>可复制的方法：山头客户需求分析六步法</h2>
<p>这套方法把华为 LTC 的 S1–S5、铁三角（AR/SR/FR）、APPEALS 需求八维、销售项目七步法，压缩成一张可执行的卡。适用于所有“关系久、单子小、久攻不下”的 KA 客户。</p>

<div class="step"><div class="no">1</div><div><h4>定山头：值不值得打</h4>
<p>用两个维度打分：<b>战略价值</b>（年采购潜力、行业标杆效应、出海协同）× <b>可攻克性</b>（采购机制是否开放、是否有年度评测窗口、决策链是否可达）。低于阈值的不投资源，避免“陪跑六年”。</p>
<p class="note">输出：《山头客户分级表》——战略级/培育级/观察级，每级对应资源上限。</p></div></div>

<div class="step"><div class="no">2</div><div><h4>绘地图：谁能放行、谁能否决</h4>
<p>画三张图：组织架构图、决策链（采购/研发/技术市场/管理层）、态度图（支持/中立/反对）。标注每个人的 KPI 与话语权。铁三角对应：AR 维护关系、SR 提供技术、FR 保障交付。</p>
<p class="note">输出：《关键人地图》——姓名、角色、KPI、态度、入口价值、下一步动作。</p></div></div>

<div class="step"><div class="no">3</div><div><h4>拆需求：从“他要什么”到“他怎么买”</h4>
<p>四层拆解：<b>业务痛点</b>（降本/提速/出海）→ <b>技术指标</b>（灵敏度/稳定性/批间 CV）→ <b>采购规则</b>（年度统测、单酶、现有体系不改、供应商准入）→ <b>时间窗</b>（Q4/Q1）。再用 APPEALS 八维逐项追问，避免只听表面需求。</p>
<p class="note">输出：《需求拆解表》——痛点、指标、采购规则、窗口、预算、否决条件。</p></div></div>

<div class="step"><div class="no">4</div><div><h4>找切口：单点、可验证、不改体系</h4>
<p>切口三原则：① 客户现有体系不改；② 一次测试能出结论；③ 失败成本低（单酶、少量、可对照）。不要一上来卖整套方案。</p>
<p class="note">输出：《切口清单》——按“成功概率 × 商业价值”排序，只留前三个。</p></div></div>

<div class="step"><div class="no">5</div><div><h4>做验证：把送样变成项目</h4>
<p>每个测试必须有：对照样（客户现用原料）、判定标准、数据回收表、责任人、复盘日期。测试结束 5 个工作日内必须拿到书面结论，无论成败。</p>
<p class="note">输出：《测试项目卡》——目的、样品、对照、指标、时间表、结论、下一步。</p></div></div>

<div class="step"><div class="no">6</div><div><h4>闭环升级：从测试到回款</h4>
<p>按 LTC S1–S5 推进：线索 → 商机 → 方案 → 合同 → 回款。每次测试结论对应一个商机阶段；没有商机编号的测试不立项。量产后再谈框架协议与年度降本。</p>
<p class="note">输出：《商机阶段表》——阶段、金额、概率、下一步、卡点。</p></div></div>

<div class="key box"><b>和华为体系的对应：</b>六步法 = LTC 的 S1（线索/定山头）+ S2（机会点/绘地图、拆需求）+ S3（方案/找切口、做验证）+ S4–S5（合同与回款/闭环升级）；铁三角负责“人对人”，APPEALS 负责“需求不跑偏”，七步法负责“项目有节奏”。</div>
</div>

<div class="sec">
<h2><em>06</em>艾德 90 天作战计划</h2>
<table>
<tr><th style="width:12%">时间</th><th>动作</th><th>责任人</th><th>交付物</th></tr>
<tr><td>第 1 周</td><td>约林江辉，确认 Q4 评测时间表、评测清单、指标口径</td><td>销售 + 大区经理</td><td>评测确认函/会议纪要</td></tr>
<tr><td>第 2 周</td><td>提交单酶对比方案（E20/E40/E23 vs Takara），附测试方案与数据模板</td><td>销售 + 技术支持</td><td>《Q4 Taq 评测方案》</td></tr>
<tr><td>第 3–6 周</td><td>送样、对照测试、每周回收数据</td><td>技术支持 + 销售</td><td>《测试项目卡》周报</td></tr>
<tr><td>第 7–8 周</td><td>结果复盘：达标/不达标原因，争取小批</td><td>销售 + 产品</td><td>《测试结论与下一步》</td></tr>
<tr><td>第 9–12 周</td><td>报价、账期、首单；同步推进 RTase 复测与前处理/LAMP</td><td>销售 + 商务</td><td>首单合同/商机建档</td></tr>
</table>
<p><b>考核指标：</b>① 进入 Q4 评测名单；② 测试数据回收率 100%；③ 首个小批订单；④ 每个测试在 CRM 有商机编号。</p>
</div>

<div class="sec">
<h2><em>07</em>论据与不确定点</h2>
<table>
<tr><th style="width:34%">论断</th><th style="width:12%">类型</th><th>论据</th></tr>
<tr><td>艾德六年零成交，只有样品测试</td><td><span class="tag">事实</span></td><td>订单导出 2022–2026：64 个测试项，金额全部为 0；无标准销售订单</td></tr>
<tr><td>客户采购机制是年度单酶评测</td><td><span class="tag">事实</span></td><td>2026-03-23、04-14、08-07 三次活动记录一致：每年 Q4/Q1 发起，只测单酶</td></tr>
<tr><td>NGS 已锁定诺唯赞，短期不动</td><td><span class="tag">事实</span></td><td>2026-03-22 活动记录（客户口径）</td></tr>
<tr><td>染料项目已终止</td><td><span class="tag">事实</span></td><td>2026-08-07：“之前需要的 NGS 染料，现在不需要了，项目不做了”</td></tr>
<tr><td>许燕彬不是采购入口</td><td><span class="tag" style="background:#e67e22">推断</span></td><td>其角色为技术市场；采购筛选由林江辉负责。反证：若他兼任供应商准入，则判断需修正——待确认</td></tr>
<tr><td>Q4 统测是我们今年唯一窗口</td><td><span class="tag" style="background:#e67e22">推断</span></td><td>客户一年一次评测；错过则等 2027 Q1。反证：若客户临时项目立项，可另开窗口</td></tr>
<tr><td>先打 Taq 单酶比推预混液成功率高</td><td><span class="tag" style="background:#8e44ad">假设</span></td><td>H1：客户只测单酶且不改体系；成立需要：林江辉确认 Q4 清单包含 Taq</td></tr>
</table>
<ol>
<li><b>Q4 评测是否确定发生</b>：三次记录都说“可能/一般”，需林江辉确认具体月份与清单。</li>
<li><b>测试失败的真正原因</b>：E32 不起线是酶本身、体系不兼容，还是操作问题？没有数据回收，无法判断。</li>
<li><b>预算与决策权</b>：单酶年采购额、谁签字、账期要求，均未掌握，需在首单前补齐。</li>
</ol>
<p class="note">数据来源：艾德订单导出 2022–2026（64 条测试项）、2023-10 至 2026-08 活动导出 15 条、艾德 2025 年报/2026 半年报、NMPA 公告、公开研报；方法论参考《宝锐生物 LTC 体系核心知识点》《后铁三角时代·宝锐适配分析》《华为市场营销体系（6版）》。</p>
</div>

<div class="foot"><span>宝锐生物 · 营销中心 ｜ 山头客户攻坚诊断与方法论 ｜ 2026-10-26</span><span>内部资料 · 请勿外传</span></div>
</div></body></html>'''

html = BK.inject(html, theme='light', tag='营销中心 · 客户攻坚')
open(OUT, 'w', encoding='utf-8').write(html)
print('✅', OUT, len(html))
