# -*- coding: utf-8 -*-
"""生成《全球IVD测试市场 第19版》中文精读页（自包含HTML）"""
import base64, os

SEG = [
    ("POC 专业", 13537, 16751, 4), ("免疫—传染病", 13165, 15494, 3), ("免疫—其它", 12610, 15267, 4),
    ("连续血糖 CGM", 12458, 20600, 11), ("临床生化", 10978, 13308, 4), ("分子微生物", 8672, 10631, 4),
    ("POC OTC 血糖", 6693, 7020, 1), ("微生物 ID/AST", 5586, 6314, 2), ("血液学", 5495, 7455, 6),
    ("组织/细胞学", 5017, 6597, 6), ("分子肿瘤", 4705, 9500, 15), ("POC OTC 其它", 3642, 4489, 4),
    ("凝血", 1794, 2098, 3), ("D-二聚体", 1475, 1710, 3), ("糖化血红蛋白（实验室）", 1342, 1700, 5),
    ("分子遗传/遗传病", 1332, 1950, 8), ("血站分子", 1330, 1790, 6), ("HPV 分子", 1270, 2145, 11),
    ("血型", 1045, 1150, 2), ("质谱", 1032, 1580, 9), ("血站筛查", 834, 885, 1),
    ("滥用药物", 333, 353, 1), ("循环肿瘤细胞", 152, 185, 4), ("其它", 1062, 1474, 7),
]
YOY = [("POC 连续血糖", 16.1), ("HPV 分子", 12.3), ("血液学（核心实验室）", 7.3), ("质谱", 6.3),
       ("NAAT—肿瘤", 5.7), ("非感染类免疫", 5.3), ("凝血（PT/INR、分子）", 5.2), ("组织/细胞学", 5.0),
       ("糖化血红蛋白（实验室）", 4.4), ("POC 专业/医院", 4.4), ("临床生化", 4.0), ("微生物 ID/AST", 3.2),
       ("血型", 3.0), ("血站筛查—分子", 2.6), ("NAAT—遗传/遗传病", 2.4), ("滥用药物", 1.8),
       ("D-二聚体", 1.4), ("POC OTC 其它", 1.1)]
REGION = [("北美（美+加）", 51778, 45, 5.7), ("欧洲（西欧+东欧）", 36176, 31, 5.3), ("亚太", 18249, 16, 4.9),
          ("拉美", 4333, 4, 5.5), ("中东", 3969, 3, 4.8), ("非洲", 1054, 1, 3.7)]
COUNTRY = [("美国", 48349, 42, 6), ("西欧 EU15", 31491, 27, 6), ("中国", 5997, 5, 4), ("日本", 5726, 5, 4),
           ("加拿大", 3429, 3, 4), ("东欧", 2712, 2, 4), ("澳大利亚", 1976, 2, 5), ("巴西", 1885, 2, 6),
           ("印度", 1390, 1, 5), ("俄罗斯", 1307, 1, 3), ("土耳其", 1093, 1, 3)]
TOP20 = [("Abbott Diagnostics", 16146, 16935, 4.9), ("Roche Diagnostics", 15866, 16607, 4.7),
         ("Danaher", 9787, 9940, 1.6), ("Thermo Fisher Scientific", 4512, 4742, 5.1),
         ("Dexcom", 4033, 4662, 15.6), ("Siemens Healthineers", 4577, 4659, 1.8),
         ("bioMérieux", 3497, 3756, 7.4), ("Illumina", 3671, 3709, 1.0),
         ("Exact Sciences", 2760, 3247, 17.6), ("Sysmex", 2947, 3216, 9.1),
         ("Becton Dickinson", 3416, 3117, -8.8), ("QuidelOrtho", 2783, 2708, -2.7),
         ("Werfen", 2300, 2407, 4.7), ("Natera", 1694, 2307, 36.2), ("Mindray", 2208, 1908, -13.6),
         ("Hologic", 1805, 1821, 0.9)]
CN = [("POC 血糖", 21), ("POC 其它", 13), ("临床生化", 12), ("免疫—其它", 9), ("微生物 ID/AST", 8),
      ("免疫—传染病", 8), ("血液学", 8), ("分子微生物", 5), ("组织学", 5), ("凝血", 3), ("血筛分子", 2), ("其它", 6)]
US = [("POC 血糖", 20.4), ("POC 其它", 13.5), ("免疫—传染病", 13.2), ("免疫—其它", 10.9), ("分子微生物", 9.2),
      ("临床生化", 8.3), ("核酸扩增 NAAT", 6.5), ("组织学", 4.7), ("血液学", 4.7), ("微生物 ID/AST", 3.8),
      ("凝血", 2.3), ("血型", 1.1)]

CUST_ROWS = '<tr><td class="tl">圣湘集团</td><td>大客户销售部</td><td class="n">5,598,154</td><td class="n">2,456,728</td><td class="n dn">-56.1%</td><td>分子诊断（核酸扩增·感染类）</td><td class="dn">⚠️ 背离：常规项目量价双压</td></tr>\n<tr><td class="tl">天隆集团</td><td>大客户销售部</td><td class="n">2,593,647</td><td class="n">1,941,569</td><td class="n dn">-25.1%</td><td>分子诊断（仪器+试剂）</td><td class="dn">⚠️ 背离（-25.1%）</td></tr>\n<tr><td class="tl">丽珠集团</td><td>大客户销售部</td><td class="n">2,408,119</td><td class="n">5,673,141</td><td class="n up">+135.6%</td><td>血筛 / 分子（核酸血筛）</td><td class="up">✅ 顺势：血筛分子 CAGR 6%</td></tr>\n<tr><td class="tl">深圳生科原集团</td><td>销售拓展部</td><td class="n">2,391,720</td><td class="n">1,542,274</td><td class="n dn">-35.5%</td><td>分子诊断（仪器平台）</td><td class="dn">⚠️ 背离（-35.5%）</td></tr>\n<tr><td class="tl">广州生凌集团</td><td>销售拓展部</td><td class="n">1,735,500</td><td class="n">1,936,152</td><td class="n ">+11.6%</td><td>分子诊断（待核）</td><td class="">○ 赛道待核</td></tr>\n<tr><td class="tl">佰奥莱博集团</td><td>大客户销售部</td><td class="n">1,110,063</td><td class="n">722,249</td><td class="n ">-34.9%</td><td>宠物 / 兽医诊断</td><td class="">○ 不在报告口径</td></tr>\n<tr><td class="tl">万孚集团</td><td>大客户销售部</td><td class="n">1,027,784</td><td class="n">1,500,875</td><td class="n up">+46.0%</td><td>POCT / 快速检测</td><td class="up">✅ 顺势：中国 POC 占 34%</td></tr>\n<tr><td class="tl">英科新创集团</td><td>销售拓展部</td><td class="n">846,430</td><td class="n">944,519</td><td class="n up">+11.6%</td><td>POCT 免疫（胶体金）</td><td class="up">✅ 顺势</td></tr>\n<tr><td class="tl">海尔施集团</td><td>大客户销售部</td><td class="n">748,341</td><td class="n">153,861</td><td class="n dn">-79.4%</td><td>分子诊断 + 第三方检验渠道</td><td class="dn">⚠️ 背离（-79.4%）</td></tr>\n<tr><td class="tl">知因集团</td><td>销售拓展部</td><td class="n">664,345</td><td class="n">852,376</td><td class="n up">+28.3%</td><td>分子诊断</td><td class="up">✅ 顺势：NAAT 13.7%</td></tr>\n<tr><td class="tl">明德集团</td><td>大客户销售部</td><td class="n">518,953</td><td class="n">111,233</td><td class="n dn">-78.6%</td><td>分子 POCT</td><td class="dn">⚠️ 背离（-78.6%）</td></tr>\n<tr><td class="tl">东方基因集团</td><td>大客户销售部</td><td class="n">399,317</td><td class="n">575,900</td><td class="n up">+44.2%</td><td>POCT / 分子</td><td class="up">✅ 顺势</td></tr>\n<tr><td class="tl">宏微特斯集团</td><td>销售拓展部</td><td class="n">373,195</td><td class="n">717,347</td><td class="n up">+92.2%</td><td>分子 POCT</td><td class="up">✅ 顺势（+92.2%）</td></tr>\n<tr><td class="tl">复星集团</td><td>大客户销售部</td><td class="n">249,254</td><td class="n">967,108</td><td class="n up">+288.0%</td><td>免疫诊断（化学发光）</td><td class="up">✅ 顺势（+288%）</td></tr>\n<tr><td class="tl">安图集团</td><td>大客户销售部</td><td class="n">218,804</td><td class="n">415,102</td><td class="n up">+89.7%</td><td>免疫 + 微生物 ID/AST</td><td class="up">✅ 顺势（+89.7%）</td></tr>\n<tr><td class="tl">国测集团</td><td>销售拓展部</td><td class="n">145,954</td><td class="n">421,518</td><td class="n ">+188.8%</td><td>检测服务（待核）</td><td class="">○ 赛道待核</td></tr>\n<tr><td class="tl">浙江大学</td><td>生命科学销售部</td><td class="n">147,605</td><td class="n">540,595</td><td class="n ">+266.2%</td><td>科研服务 / 高校</td><td class="">○ 不在报告口径</td></tr>'
PLAY_ROWS = '<tr><td class="n"><b>1</b></td><td><b>大客户要「换品类」，不是「守量」。</b>圣湘 -56.1%、天隆 -25.1%，而同部门丽珠 +135.6%、复星 +288%、安图 +89.7% —— 下滑来自品类（常规感染类项目）而非关系。对 TOP 分子客户各做一份<b>高灵敏项目渗透清单</b>（伴随诊断 / MRD / 高灵敏病原），按项目谈原料而非按公斤比价。</td><td class="sub">报告：VBP 压低常规试剂、差异化高值产品不受影响（p142）；我司集团年度汇总</td><td><span class="badge-o">大客户销售部</span></td><td class="sub">产品部（产品定义）、市场部（物料）</td><td class="sub">销售管理部按月核对高值货号占比</td></tr>\n<tr><td class="n"><b>2</b></td><td><b>把「血筛分子」做成可复制的行业包。</b>丽珠 +135.6% 是全司最强增长，而报告显示中国血筛分子仅占市场 <b>2%</b>（渗透最低的分段之一）、全球血筛分子 CAGR <b>6%</b>（1,330→1,790）。把丽珠的打法固化成一页纸行业包，复制到其他血筛/输血客户。</td><td class="sub">报告 Table 3-19（血筛分子 2%）、血站分子 6%</td><td><span class="badge-o">大客户销售部</span></td><td class="sub">产品部、市场部</td><td class="sub">季度血筛客户数 + 收入</td></tr>\n<tr><td class="n"><b>3</b></td><td><b>抓 POCT + 冻干下沉。</b>中国 POC 合计 <b>34%</b>（血糖 21%）、人均 IVD 支出 <b>4.19 美元/年</b>、医院密度仅 <b>0.9 家/10 万人</b> —— 基层与县域是长期确定性；我司万孚 +46.0%、东方基因 +44.2%、英科新创 +11.6% 已在验证。把「原料 + 冻干工艺 + 常温运输」打包报整体成本。</td><td class="sub">报告 Table 3-19 / p137-139（人均 4.19、医院密度 0.9）</td><td><span class="badge-o">产品部（冻干服务线）</span></td><td class="sub">诊断原料销售部、市场部</td><td class="sub">季度冻干服务客户数与单价</td></tr>\n<tr><td class="n"><b>4</b></td><td><b>明确 ICL 不是主战场。</b>报告：中国商业独立实验室仅占市场价值 <b>2%</b>（约 110 家、约 1/3 有 CNAS）；我司 ICL/渠道类客户下滑最重（海尔施 -79.4%、明德 -78.6%）。资源从「单一 ICL 渠道」转向「院内 + 分子厂商」，ICL 客户只供高值分子/肿瘤项目原料。</td><td class="sub">报告 p139-141（商业实验室 2%、110 家）</td><td><span class="badge-o">销售管理部（资源分配）</span></td><td class="sub">销售拓展部、大客户销售部</td><td class="sub">季度资源投向复盘</td></tr>\n<tr><td class="n"><b>5</b></td><td><b>补 NGS / 分子肿瘤客户缺口。</b>报告判断：中国占全球临床基因检测实验室约 <b>10%</b>、NGS 装机 <b>15%</b>、肿瘤检测服务收入近 <b>10%</b>，除北美/欧/日外最有条件成为分子肿瘤检测领先市场（全球对标 Natera +36.2%、Exact Sciences +17.6%）。我司客户以感染类分子为主，肿瘤/NGS 客户基本缺席 —— 列 10 家目标客户纳入拓展池，按高保真酶 / 甲基化 / 建库原料切入。</td><td class="sub">报告 p141（10% / 15% / 10%）、五、TOP20</td><td><span class="badge-o">诊断原料销售部</span></td><td class="sub">市场部（行业锚点物料）、产品部</td><td class="sub">季度新增 NGS/肿瘤客户数</td></tr>\n<tr><td class="n"><b>6</b></td><td><b>把「价格逻辑」变成议价工具。</b>中国 2025 年报销改革不再按检测方法差异化定价，DRG/DIP 按病种付费在多省推开 → 客户对进口原料成本更敏感。做一版《进口替代成本对照表》（同平台进口 vs 宝锐），随行业锚点一起用在议价桌上。</td><td class="sub">报告 p139（报销不再按方法差异化）、p142（DRG/DIP）</td><td><span class="badge-o">市场部</span></td><td class="sub">产品部、大客户销售部</td><td class="sub">季度新增替代项目数</td></tr>\n<tr><td class="n"><b>7</b></td><td><b>随客户出海。</b>2025-07-30 中马医疗器械与 IVD 互认路径生效（NMPA × 马来西亚 MDA）。识别有东南亚注册需求的 POCT / 分子客户，提供原料端合规与批次稳定性资料包，把「合规支持」做成增值服务。</td><td class="sub">报告 p136（中马互认 2025-07-30 生效）</td><td><span class="badge-o">市场部</span></td><td class="sub">质量部、诊断原料销售部</td><td class="sub">季度出海配套客户数</td></tr>\n<tr><td class="n"><b>8</b></td><td><b>掉量客户逐户归因。</b>对 2026 年化下滑且非 ICL 的大客户（天隆 -25.1%、深圳生科原 -35.5%、佰奥莱博 -34.9%）在 30 天内出《掉量归因单》：价格 / 份额 / 项目切换三选一定性，并给出补救动作与时间点。</td><td class="sub">我司集团年度汇总（2026 年 1-5 月年化）</td><td><span class="badge-o">销售管理部</span></td><td class="sub">对应销售员与部门负责人</td><td class="sub">30 天内归因单 100% 覆盖</td></tr>'
CNDEEP = '\n<div class="card">\n  <h3>① 规模与增速：59.97 亿美元，占全球 5%</h3>\n  <table><thead><tr><th>指标</th><th class="n">2025</th><th class="n">2030</th><th class="n">CAGR</th><th>说明</th></tr></thead><tbody>\n  <tr><td class="tl">中国 IVD 市场</td><td class="n">5,997</td><td class="n">7,361</td><td class="n"><b>4%</b></td><td>百万美元；占全球 5%（全球 115,559 → 150,446）</td></tr>\n  <tr><td class="tl">其中：血糖监测</td><td class="n">≈1,259</td><td class="n">—</td><td class="n">—</td><td>按占比折算：POC 血糖占中国市场价值约 <b>21%</b></td></tr>\n  <tr><td class="tl">人均 IVD 支出</td><td class="n">4.19 美元/人·年</td><td class="n">—</td><td class="n">—</td><td>Kalorama 原文用词：a significantly underserved market</td></tr>\n  </tbody></table>\n  <div class="ins"><b>⚠️ 口径提醒：</b>报告正文（p136）把中国增速写作 <b>2.1%</b>，但表 3-7 的 5,997→7,361 折算为 <b>4.2%/年</b>（表中标 4%）。<b>对外引用一律用表数据 4%</b>，并注明按表 3-7。</div>\n  <div class="ins"><b>2025 年的真实体感：</b>多家诊断与器械公司报告中国销售增速放缓 —— 报销、定价与公共采购政策变化压低了高价 IVD 产品需求；同时报告认为中国短期仍具挑战，但长期看好<b>不受 VBP 影响的差异化高值产品</b>（p136、p142）。</div>\n</div>\n\n<div class="card">\n  <h3>② 人口结构：增长只在 65 岁以上（+2.8%/年）</h3>\n  <table><thead><tr><th>年龄组（百万人）</th><th class="n">2020</th><th class="n">2030</th><th class="n">2050</th><th class="n">CAGR 2010-2050</th><th class="n">2050 占比</th></tr></thead><tbody>\n  <tr><td class="tl">0-14 岁</td><td class="n">241.1</td><td class="n">221.1</td><td class="n">170.8</td><td class="n">-0.8%</td><td class="n">13%</td></tr>\n  <tr><td class="tl">15-64 岁</td><td class="n">980.9</td><td class="n">944.1</td><td class="n">782.7</td><td class="n">-0.6%</td><td class="n">60%</td></tr>\n  <tr class="hi"><td class="tl">65 岁以上</td><td class="n">172.0</td><td class="n">238.7</td><td class="n">348.1</td><td class="n"><b>+2.8%</b></td><td class="n"><b>27%</b></td></tr>\n  <tr style="background:#eaf1f8;font-weight:700"><td>合计</td><td class="n">1,394.0</td><td class="n">1,403.9</td><td class="n">1,301.6</td><td class="n">-0.1%</td><td class="n">100%</td></tr>\n  </tbody></table>\n  <div class="note">总人口 2030 年到顶（14.04 亿）后回落；65+ 从 2010 年占 9% 升到 2050 年占 27% —— <b>增量需求全部来自老龄化（肿瘤、慢病、心脑血管）</b>，与报告的高增速分段（分子肿瘤 15%、CGM 11%）方向一致。城镇化率 65%（2025）。</div>\n</div>\n\n<div class="card">\n  <h3>③ 支付与准入：VBP + DRG/DIP 是中国市场的"定价天花板"</h3>\n  <div class="ins"><span class="tag">2021-09</span>国务院发布《"十四五"全民医疗保障规划》，明确完善医保体系以应对老龄化需求。</div>\n  <div class="ins"><span class="tag">定价</span>各省设 <b>省级定价局</b>：产品上市销售前<b>必须定价</b>；常规试剂与半自动仪器已有定价先例，创新高值产品定价空间更大。</div>\n  <div class="ins"><span class="tag">VBP</span>采购由分散转向<b>集中带量采购</b>，是价格压力的首要来源；报告同时指出政策在<b>推动国产制造与本地创新</b>，竞争加剧。</div>\n  <div class="ins"><span class="tag">DRG/DIP</span>按病种/病组付费在多省推行以标准化支付、控制费用；<b>落地程度地区差异大</b>。</div>\n  <div class="ins"><span class="tag">2025</span>报销政策改革：<b>不再按检测方法差异化定价</b> —— 可能打击化学发光（CLIA）等自动免疫系统（原话语境：过去按方法定价有利 CLIA）。</div>\n  <div class="ins"><span class="tag">2025-07-30</span><b>中马医疗器械与 IVD 互认路径生效</b>（中国 NMPA × 马来西亚 MDA），简化审评、加速市场准入 —— 对计划出海的客户是通道。</div>\n</div>\n\n<div class="card">\n  <h3>④ 竞争格局：进口守高端，本土数千家打「性价比 + 下沉」</h3>\n  <div class="ins"><b>进口主导：</b>新兴市场（尤其 top 7）由 Abbott Diagnostics、Roche Diagnostics、Danaher、Siemens Healthineers、QuidelOrtho、Becton Dickinson 把持。</div>\n  <div class="ins"><b>本土力量：</b>数以千计的国产 IVD 厂商正在成为 ELISA 与 POCT 的主要供应商（报告点名 Kehua 科华、Mindray 迈瑞等），靠本地化制造、低成本平台与技术进步把分销从城市做到县乡；在<b>快速检测、常规诊断、中端仪器</b>分段已具竞争力。</div>\n  <div class="ins"><b>外资的痛：</b>Mindray 2024→2025 全球收入 -13.6%（TOP20 中跌幅最大），背景正是中国价格压力与采购政策变化 —— 这轮洗牌把成本压力顺流推到了上游原料端。</div>\n</div>\n\n<div class="card">\n  <h3>⑤ 独立实验室与 NGS：中国最被低估的一块（也是增量所在）</h3>\n  <table><thead><tr><th>指标</th><th class="n">数值</th><th>含义</th></tr></thead><tbody>\n  <tr><td class="tl">中国独立临床实验室</td><td class="n">约 110 家</td><td>多数规模小，约 <b>1/3</b> 取得 CNAS 认可（全球约 20,000 家）</td></tr>\n  <tr><td class="tl">商业实验室占市场价值</td><td class="n">2%</td><td>中国几乎没有 physician office lab，检测集中在院内实验室</td></tr>\n  <tr class="hi"><td class="tl">占全球临床基因检测服务实验室</td><td class="n">约 10%</td><td>基因检测服务体量已不可忽视</td></tr>\n  <tr class="hi"><td class="tl">占全球研究/应用端 NGS 装机</td><td class="n">约 15%</td><td>装机量决定后续试剂/原料的持续消耗</td></tr>\n  <tr class="hi"><td class="tl">占全球肿瘤检测服务收入</td><td class="n">近 10%</td><td>Kalorama：除北美/欧洲/日本外，中国最有条件成为临床 NGS 与分子肿瘤检测的领先市场</td></tr>\n  </tbody></table>\n</div>\n\n<div class="card">\n  <h3>⑥ 疾病负担与实验室结构：需求侧的确定性</h3>\n  <div class="ins"><b>烟草与肺癌：</b>中国有 <b>3.5 亿烟民</b>；过去 25 年肺癌死亡率上升 <b>500%</b>，每年约 <b>62.6 万</b>例肺癌死亡（IARC：中低收入国家约 15% 癌症与吸烟相关且将快速上升）。</div>\n  <div class="ins"><b>慢病：</b>糖尿病（对应中国 IVD 价值 21% 的血糖检测）、心血管疾病随城镇化、饮食与收入变化持续走高。</div>\n  <div class="ins"><b>实验室结构：</b>医院密度 <b>0.9 家/10 万人</b>（日本 &gt;7、韩国 3.42）；医院分三级（ⅢA 最优），检测集中在三级医院实验室 —— 决定了"高端项目先看三级医院、放量靠县域下沉"两条完全不同的打法。</div>\n</div>\n'
PLAYBOOK = '\n<div class="card">\n  <h3>A. 我司客户结构 vs 报告赛道（2025 实际 → 2026 年 1-5 月年化）</h3>\n  <table class="sortable"><thead><tr><th>集团客户</th><th>部门</th><th class="n">2025 正常</th><th class="n">2026 年化</th><th class="n">增长</th><th>终端赛道（对照报告分段）</th><th>判断</th></tr></thead>\n  <tbody>__CUSTROWS__</tbody></table>\n  <div class="note">数据源：<code>销售分析/客户分析报告_2024-2026.xlsx</code>「集团年度汇总」（2026 年化按表内口径）。判断：<span class="up">✅ 顺势</span> = 落在报告高增长或有明确渗透空间的分段；<span class="dn">⚠️ 背离</span> = 逆着报告方向，必须归因；○ = 不在本报告（人用 IVD）口径或赛道待核。</div>\n</div>\n\n<div class="card">\n  <h3>B. 八条启示（每条到部门，主责唯一）</h3>\n  <table><thead><tr><th class="n">#</th><th>启示与动作</th><th>依据</th><th>主责</th><th>协同</th><th>验收</th></tr></thead>\n  <tbody>__PLAYROWS__</tbody></table>\n  <div class="note">原则：<b>主责唯一、协同明确、验收到部门</b>；所有动作可直接落到月度经营会跟踪。</div>\n</div>\n\n<div class="card">\n  <h3>C. 口径提醒（引用前必读）</h3>\n  <div class="ins"><b>① 报告内部口径差异：</b>中国增速正文写 2.1%、表 3-7 折算 4.2% —— 统一按表数据 <b>4%</b> 引用。</div>\n  <div class="ins"><b>② 中国分段占比为价值口径（%），不能当金额直接乘：</b>Table 3-19 给的是份额，明细金额需用总额 5,997 折算，折算值须标注"按占比折算"。</div>\n  <div class="ins"><b>③ 我司数据口径：</b>2026 为 1-5 月年化（表内口径），与报告年度口径不完全可比；客户终端赛道部分为公开信息判定，标注"待核"的需业务确认后再对外使用。</div>\n  <div class="ins"><b>④ 报告为人用 IVD 口径：</b>宠物诊断、食品安全检测、科研服务客户（佰奥莱博、西诺通科、浙大等）不在本报告范围内，只能引用技术侧（酶性能、冻干、NAST 增速）作为参照。</div>\n</div>\n'

logo_b64 = ''
lp = os.path.expanduser('~/work/公司资料/logo_transparent.png')
if os.path.exists(lp) and os.path.getsize(lp) < 200000:
    logo_b64 = 'data:image/png;base64,' + base64.b64encode(open(lp, 'rb').read()).decode()


def pct_w(v, mx):
    return round(v / mx * 100, 1)


mx_cagr = max(s[3] for s in SEG)
seg_bars = '\n'.join(
    '<div class="bar-row"><span class="bar-lb">%s</span><span class="bar-wrap"><span class="bar%s" style="width:%s%%">%s%%</span></span></div>'
    % (n, ' hot' if c >= 8 else '', pct_w(c, mx_cagr), c) for n, a, b, c in sorted(SEG, key=lambda x: -x[3]))
seg_rows = '\n'.join(
    '<tr%s><td class="tl">%s</td><td class="n">%s</td><td class="n">%s</td><td class="n"><b>%s%%</b></td><td class="n">%+.0f%%</td></tr>'
    % (' class="hi"' if c >= 8 else '', n, format(a, ','), format(b, ','), c, (b / a - 1) * 100)
    for n, a, b, c in SEG)
mx_reg = max(r[1] for r in REGION)
reg_bars = '\n'.join(
    '<div class="bar-row"><span class="bar-lb">%s</span><span class="bar-wrap"><span class="bar" style="width:%s%%">%s 亿</span></span><span class="bar-an">%s%% · %s%%</span></div>'
    % (n, pct_w(v, mx_reg), round(v / 100, 1), s, c) for n, v, s, c in REGION)
ctry_rows = '\n'.join('<tr><td class="tl">%s</td><td class="n">%s</td><td class="n">%s%%</td><td class="n">%s%%</td></tr>'
                      % (n, format(v, ','), s, c) for n, v, s, c in COUNTRY)
mx_yoy = max(y[1] for y in YOY)
yoy_bars = '\n'.join(
    '<div class="bar-row"><span class="bar-lb">%s</span><span class="bar-wrap"><span class="bar%s" style="width:%s%%">%s%%</span></span></div>'
    % (n, ' hot' if v >= 6 else '', pct_w(v, mx_yoy), v) for n, v in YOY)
top_rows = '\n'.join(
    '<tr><td class="n">%d</td><td class="tl">%s</td><td class="n">%s</td><td class="n">%s</td>'
    '<td class="n %s">%+.1f%%</td></tr>' % (i, n, format(a, ','), format(b, ','),
                                            'up' if (b - a) > 0 else 'dn', (b / a - 1) * 100)
    for i, (n, a, b, c) in enumerate(TOP20, 1))
mx_cn = max(v for _, v in CN)
cn_bars = '\n'.join('<div class="bar-row"><span class="bar-lb">%s</span><span class="bar-wrap"><span class="bar%s" style="width:%s%%">%s%%</span></span></div>'
                    % (n, ' hot' if v >= 10 else '', pct_w(v, mx_cn), v) for n, v in CN)
us_bars = '\n'.join('<div class="bar-row"><span class="bar-lb">%s</span><span class="bar-wrap"><span class="bar alt" style="width:%s%%">%s%%</span></span></div>'
                    % (n, pct_w(v, max(x for _, x in US)), v) for n, v in US)

HTML = """<!DOCTYPE html>
<html lang="zh-CN"><head><meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<title>全球IVD测试市场 · 第19版 精读</title>
<style>
*{box-sizing:border-box;margin:0;padding:0}
body{font-family:-apple-system,"PingFang SC","Microsoft YaHei",sans-serif;background:#f4f6f9;color:#1c2b3a;font-size:14px;line-height:1.65}
.topbar{background:#fff;border-bottom:3px solid #1F4E79;padding:14px 28px;display:flex;align-items:center;gap:16px;position:sticky;top:0;z-index:20;box-shadow:0 2px 10px rgba(0,0,0,.06)}
.topbar img{height:36px}
.brand{font-weight:800;color:#1F4E79;letter-spacing:.5px;font-size:17px}
.brand small{display:block;font-weight:400;color:#8a97a6;letter-spacing:1.5px;font-size:10px}
.topbar .ttl{margin-left:auto;text-align:right}
.topbar .ttl b{color:#1F4E79;font-size:16px}
.topbar .ttl span{display:block;color:#8a97a6;font-size:12px}
.wrap{max-width:1180px;margin:0 auto;padding:24px 22px 70px}
h2{font-size:18px;color:#1F4E79;margin:34px 0 6px;padding-left:12px;border-left:5px solid #1F4E79}
h2 em{font-style:normal;color:#8a97a6;font-size:12px;font-weight:400;margin-left:8px}
.lead{color:#5b6b7c;font-size:13px;margin:6px 0 16px}
.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:14px;margin:22px 0 8px}
.kpi{background:#fff;border-radius:10px;padding:16px 18px;border:1px solid #e3e9f0;border-top:3px solid #1F4E79}
.kpi .v{font-size:26px;font-weight:800;color:#1F4E79;line-height:1.2}
.kpi .v small{font-size:13px;font-weight:600;color:#5b6b7c}
.kpi .k{color:#5b6b7c;font-size:12.5px;margin-top:4px}
.kpi .d{color:#8a97a6;font-size:11.5px;margin-top:6px;border-top:1px dashed #e3e9f0;padding-top:6px}
.card{background:#fff;border:1px solid #e3e9f0;border-radius:10px;padding:18px 20px;margin:14px 0}
.card h3{font-size:14.5px;color:#1F4E79;margin-bottom:12px}
table{width:100%;border-collapse:collapse;font-size:13px}
th{background:#1F4E79;color:#fff;font-weight:600;padding:8px 10px;text-align:left;position:sticky;top:60px}
th.n,td.n{text-align:right}
td{padding:6px 10px;border-bottom:1px solid #eef2f7}
tbody tr:hover{background:#f7fafd}
tr.hi{background:#fff8e8}tr.hi:hover{background:#fff3d6}
td.up{color:#12805c;font-weight:700}td.dn{color:#c0392b;font-weight:700}
.tl{font-weight:500}
.bar-row{display:flex;align-items:center;gap:10px;margin:5px 0;font-size:12.5px}
.bar-lb{width:170px;flex:none;color:#3d4d5e;text-align:right}
.bar-wrap{flex:1;background:#f0f3f7;border-radius:4px;overflow:hidden;display:block}
.bar{display:block;height:19px;background:#8aa9c6;border-radius:4px;color:#fff;font-size:11px;text-align:right;padding-right:6px;line-height:19px;min-width:32px}
.bar.hot{background:linear-gradient(90deg,#1F4E79,#c9a227);font-weight:700}
.bar.alt{background:#5b8db8}
.bar-an{width:120px;flex:none;color:#8a97a6;font-size:11.5px}
.two{display:grid;grid-template-columns:1fr 1fr;gap:18px}
@media(max-width:820px){.two{grid-template-columns:1fr}.bar-lb{width:96px;font-size:11.5px}.topbar .ttl{display:none}}
.ins{background:#fff;border:1px solid #e3e9f0;border-left:4px solid #c9a227;border-radius:8px;padding:12px 16px;margin:10px 0}
.ins b{color:#1F4E79}
.tag{display:inline-block;background:#eaf1f8;color:#1F4E79;border-radius:4px;padding:1px 7px;font-size:11.5px;margin-right:6px}
.note{color:#8a97a6;font-size:12px;margin-top:8px}
footer{color:#8a97a6;font-size:12px;text-align:center;margin-top:34px;border-top:1px solid #e3e9f0;padding-top:14px}
.sortable th{cursor:pointer;user-select:none}.sortable th:hover{background:#2c5f92}
.tools{display:flex;gap:8px;margin-bottom:10px}
.tools button{background:#fff;border:1px solid #cdd8e3;color:#1F4E79;border-radius:6px;padding:5px 12px;font-size:12.5px;cursor:pointer}
.badge-o{display:inline-block;background:#1F4E79;color:#fff;border-radius:4px;padding:1px 8px;font-size:11.5px}
.sub{font-size:12px;color:#5b6b7c}
code{background:#f0f3f7;border-radius:3px;padding:1px 5px;font-size:11.5px}
.tools input{border:1px solid #cdd8e3;border-radius:6px;padding:5px 10px;font-size:12.5px;width:200px}
</style></head><body>
<div class="topbar">
  __LOGO__<div class="brand">BIORI BIOTECH<small>宝锐生物</small></div>
  <div class="ttl"><b>全球 IVD 测试市场 · 第 19 版 精读</b><span>Kalorama Information｜2026 年 5 月｜1171 页｜内部资料</span></div>
</div>
<div class="wrap">
<div class="kpis">
  <div class="kpi"><div class="v">1,156<small> 亿美元</small></div><div class="k">全球 IVD 市场（2025）</div><div class="d">2030 年 1,504 亿美元</div></div>
  <div class="kpi"><div class="v">5.4<small>%</small></div><div class="k">2025-2030 年复合增速</div><div class="d">2024→2025 实际约 +5%</div></div>
  <div class="kpi"><div class="v">80<small>%</small></div><div class="k">TOP20 厂商市占</div><div class="d">920 亿 / 其余数百家分 20%</div></div>
  <div class="kpi"><div class="v">60<small> 亿美元</small></div><div class="k">中国 IVD 市场（2025）</div><div class="d">占全球 5%｜人均仅 4.19 美元/年</div></div>
  <div class="kpi"><div class="v">15<small>%</small></div><div class="k">分子肿瘤增速（最高）</div><div class="d">核酸扩增 13.7%｜HPV 11%</div></div>
</div>

<h2>一、分子相关赛道：增速全面高于大盘<em>图按 CAGR 排序，金色为 ≥8%</em></h2>
<div class="card">__SEGBARS__</div>

<h2>二、全部分段规模（2025 → 2030，百万美元）<em>点击表头排序</em></h2>
<div class="card"><table class="sortable" id="t_seg"><thead><tr>
<th>产品段</th><th class="n">2025</th><th class="n">2030</th><th class="n">CAGR</th><th class="n">总增幅</th></tr></thead>
<tbody>__SEGROWS__
<tr style="background:#eaf1f8;font-weight:700"><td>合计</td><td class="n">115,559</td><td class="n">150,446</td><td class="n">5%</td><td class="n">+30%</td></tr>
</tbody></table>
<div class="note">另单列（不计入总额）：新冠检测 4,727→5,090（1%）；临床测序 7,505→11,550（9%）；DTC 基因检测 1,195→1,970（11%）；产前检测服务 1,040→1,500（8%）；流式细胞 1,765→2,230（5%）。质控市场 2025 约 12 亿美元（68% 免疫 / 32% 分子）。</div></div>

<h2>三、区域与国家<em>2025 年，百万美元</em></h2>
<div class="card">__REGBARS__<div class="note">全球 2030 年 150,446，区域 CAGR：北美 5.7%、欧洲 5.3%、亚太 4.9%、拉美 5.5%。</div></div>
<div class="card"><table class="sortable"><thead><tr><th>国家/地区</th><th class="n">2025</th><th class="n">占比</th><th class="n">CAGR</th></tr></thead><tbody>__CTRYROWS__</tbody></table></div>

<h2>四、2024 → 2025 实际增速<em>按细分段</em></h2>
<div class="card">__YOYBARS__</div>

<h2>五、TOP20 厂商（2024 → 2025，百万美元）</h2>
<div class="card"><table class="sortable"><thead><tr><th class="n">#</th><th>公司</th><th class="n">2024</th><th class="n">2025</th><th class="n">同比</th></tr></thead>
<tbody>__TOPROWS__</tbody></table>
<div class="note">高增长对标：Natera +36.2%、Exact Sciences +17.6%、Dexcom +15.6%、Sysmex +9.1%；收缩：Mindray -13.6%、BD -8.8%、QuidelOrtho -2.7%。</div></div>

<h2>六、中国 vs 美国：市场结构对比<em>2025 年各细分段占比</em></h2>
<div class="two">
<div class="card"><h3>中国（59.97 亿美元）</h3>__CNBARS__
<div class="note">POC 合计 34%｜分子微生物仅 5%｜商业独立实验室仅占 2%｜医院密度 0.9/10万人（日本 &gt;7）。</div></div>
<div class="card"><h3>美国（483.49 亿美元）</h3>__USBARS__
<div class="note">临床测序单列 32.03 亿美元；核酸扩增（NAAT）占 6.5%。</div></div>
</div>

<h2>七、中国市场深度解读<em>Kalorama 第 3 章 · 中国专章 p136–143</em></h2>
__CNDEEP__

<h2>八、技术趋势</h2>
<div class="card">
<div class="ins"><b>等温扩增正在替代/补充 PCR</b>　无需反复变温、能耗更低、更适配微流控芯片设计；关键厂商 Eiken、BD、bioMérieux、QuidelOrtho。</div>
<div class="ins"><b>样品进-结果出（sample-to-result）台式系统</b>　是分子检测下沉到小实验室与基层的前提，代表厂商 Cepheid、QIAGEN、Hologic、Roche。</div>
<div class="ins"><b>微缩化 / 微流控</b>　降低样本用量、提升自动化，是分子检测降本与普及的关键路径。</div>
<div class="ins"><b>高灵敏应用崛起</b>　分子肿瘤（MRD 微小残留病灶、ctDNA 检测）15%、HPV 11%、分子移植 10%、脓毒症快速检测 14%、核酸扩增 13.7%。</div>
</div>

<h2>九、对宝锐的启示<em>结合我司 2024–2026 客户数据</em></h2>
__PLAYBOOK__
<h3 style="font-size:15px;color:#1F4E79;margin:20px 0 8px">报告给出的直接含义（原文提炼）</h3>
<div class="card">
<div class="ins"><span class="tag">赛道</span><b>方向选对了，位置要往"高灵敏分子"靠。</b>分子肿瘤 15%、HPV 11%、分子遗传 8%、核酸扩增 13.7%，全部高于大盘 5.4%。这些应用对酶的要求（高保真、抗抑制、冻干耐受）正好是 AcuGenix / FastAmpli / Hyperstart 系列的卖点，可以拿这份报告的数字做客户沟通的行业锚点。</div>
<div class="ins"><span class="tag">中国</span><b>POC 占 34%、分子微生物仅 5%。</b>快速检测 + 冻干 + 常温运输是中国刚需场景（对应冻干工艺服务线）；分子微生物渗透率最低，是临床科室方向上空间最大的一块。</div>
<div class="ins"><span class="tag">价格</span><b>集采（VBP）压价不利于低值重复试剂，但利好差异化高值产品。</b>客户被压价后会向上游要降本，这是国产高性价比原料的窗口期；同时 DRG/DIP 按病种付费在推开。</div>
<div class="ins"><span class="tag">客户</span><b>高增长客户池：</b>Natera（+36.2%）、Exact Sciences（+17.6%）、Dexcom（+15.6%）、Sysmex（+9.1%）、bioMérieux（+7.4%）、Thermo Fisher（+5.1%）；收缩名单：Mindray（-13.6%）、BD（-8.8%）。</div>
<div class="ins"><span class="tag">口径</span><b>报告把人头/单价拆得比总量重要。</b>中国人均 IVD 支出 4.19 美元/年、医院密度 0.9/10万人，这两个数比"市场 60 亿美元"更适合解释"为什么这个市场还会长"。</div>
</div>

<footer>来源：Kalorama Information《The Worldwide Market for IVD Tests, 19th Edition》（2026 年 5 月，1171 页）<br>
内部资料 · 请勿外传｜宝锐生物 销售管理 整理于 2026-09-12</footer>
</div>
<script>
document.querySelectorAll('table.sortable').forEach(function(t){
  t.querySelectorAll('th').forEach(function(th,i){
    th.addEventListener('click',function(){
      var tb=t.tBodies[0],rs=Array.prototype.slice.call(tb.rows);
      var asc=th.dataset.asc!=='1';th.dataset.asc=asc?'1':'0';
      rs.sort(function(a,b){
        var x=a.cells[i].textContent.replace(/[,%+]/g,''),y=b.cells[i].textContent.replace(/[,%+]/g,'');
        var nx=parseFloat(x),ny=parseFloat(y);
        if(!isNaN(nx)&&!isNaN(ny))return asc?nx-ny:ny-nx;
        return asc?x.localeCompare(y,'zh'):y.localeCompare(x,'zh');
      });
      rs.forEach(function(r){tb.appendChild(r)});
    });
  });
});
</script>
</body></html>"""

HTML = (HTML.replace('__LOGO__', '<img src="%s" alt="BIORI">' % logo_b64 if logo_b64 else '')
        .replace('__SEGBARS__', seg_bars).replace('__SEGROWS__', seg_rows)
        .replace('__REGBARS__', reg_bars).replace('__CTRYROWS__', ctry_rows)
        .replace('__YOYBARS__', yoy_bars).replace('__TOPROWS__', top_rows)
        .replace('__CNBARS__', cn_bars).replace('__USBARS__', us_bars)
        .replace('__CNDEEP__', CNDEEP).replace('__PLAYBOOK__', PLAYBOOK)
        .replace('__CUSTROWS__', CUST_ROWS).replace('__PLAYROWS__', PLAY_ROWS))

OUT = os.path.expanduser('~/Desktop/Hermes输出-工作类/销售分析/行业研究_全球IVD测试市场19版_精读_2026.html')
os.makedirs(os.path.dirname(OUT), exist_ok=True)
open(OUT, 'w', encoding='utf-8').write(HTML)
print('HTML:', OUT, os.path.getsize(OUT), 'bytes | logo:', 'yes' if logo_b64 else 'no')
