feat: 增强Markdown渲染支持,优化报告HTML样式,并移除报告文件中的自动标题生成。

This commit is contained in:
xucheng 2026-01-03 00:18:19 +08:00
parent b70d696e67
commit 43736b2111
4 changed files with 87 additions and 60 deletions

View File

@ -1,30 +1,38 @@
您是一位专业的证券市场分析师。请为公司 {company_name} (股票代码: {ts_code}) 生成一份详细且专业的公司介绍。**请务必使用搜索工具查找并参考该公司最新的【定期报告】(如年报、半年报、季报)来获取业务结构和财务数据。不要仅依赖训练数据。**开头不要自我介绍直接开始正文。正文用MarkDown输出尽量说明信息来源用斜体显示信息来源。在生成内容时请严格遵循以下要求并采用清晰、结构化的格式
您是一位专业的证券市场分析师。请为公司 {company_name} (股票代码: {ts_code}) 生成一份详细且专业的公司介绍。
1. **公司概览**:
**核心要求**
1. **标题格式**:请严格使用一级标题 `# {company_name} 公司简介` 作为报告的第一行。**严禁**在标题中包含"深度分析"、"详细报告"、"研报"等修饰词。
2. **资料来源****请务必使用搜索工具查找并参考该公司最新的【定期报告】(如年报、半年报、季报)来获取业务结构和财务数据。不要仅依赖训练数据。**
3. **输出规范**开头不要自我介绍直接开始正文。正文用MarkDown输出尽量说明信息来源用斜体显示信息来源。
在生成内容时,请严格遵循以下要求并采用清晰、结构化的格式:
## 一、 公司概览
* 简要介绍公司的性质、核心业务领域及其在行业中的定位。
* 提炼并阐述公司的核心价值理念。
2. **主营业务**:
## 二、 主营业务
* 详细描述公司主要的**产品或服务**。
* **重要提示**:如果能获取到公司最新的官方**年报**或**财务报告**,请从中提取各主要产品/服务线的**收入金额**和其占公司总收入的**百分比**。请**明确标注数据来源**(例如:"数据来源于XX年年度报告")。
* **严格禁止**编造或估算任何财务数据。若无法找到公开、准确的财务数据,请**不要**在这一点中提及具体金额或比例,仅描述业务内容。
3. **发展历程**:
## 三、 发展历程
* 以时间线或关键事件的形式,概述公司自成立以来的主要**里程碑事件**、重大发展阶段、战略转型或重要成就。
4. **核心团队**:
## 四、 核心团队
* 介绍公司**主要管理层和核心技术团队成员**。
* 对于每位核心成员,提供其**职务、主要工作履历、教育背景**。
* 对于每位核心成员,提供其**职务、主要工作履历、教育背景**以及**担任该职位的起始时间**
* 如果公开可查,可补充其**出生年份**。
5. **供应链**:
* 描述公司的**主要原材料、部件或服务来源**。
* 如果公开信息中包含,请列出**主要供应商名称**,并**明确其在总采购金额中的大致占比**。若无此数据,则仅描述采购模式。
## 五、 供应链
* 描述公司的**主要原材料、部件或服务来源**以及各种原材料、部件或服务在总采购金额中的占比。
* 如果公开信息中包含,请列出**主要供应商名称**,并**明确其在总采购金额中的大致占比**。
* 描述采购模式。
6. **主要客户及销售模式**:
## 六、 主要客户及销售模式
* 阐明公司的**销售模式**(例如:直销、经销、线上销售、代理等)。
* 列出公司的**主要客户群体**或**代表性大客户**。
* 如果公开信息中包含,请标明**主要客户(或前五大客户)的销售额占公司总销售额的比例**。若无此数据,则仅描述客户类型。
7. **未来展望**:
## 七、 未来展望
* 基于公司**公开的官方声明、管理层访谈或战略规划**,总结公司未来的发展方向、战略目标、重点项目或市场预期。请确保此部分内容有可靠的信息来源支持。

View File

@ -8,16 +8,20 @@
body {
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
line-height: 1.6;
max-width: 1200px;
margin: 0 auto;
margin: 0;
padding: 20px;
background-color: #f5f5f5;
display: flex;
justify-content: center;
min-height: 100vh;
}
.container {
background-color: white;
padding: 30px;
padding: 40px;
border-radius: 8px;
box-shadow: 0 2px 4px rgba(0,0,0,0.1);
box-shadow: 0 2px 8px rgba(0,0,0,0.1);
max-width: 1200px;
width: 100%;
}
h1 {
color: #2c3e50;
@ -575,7 +579,7 @@
</blockquote>
<h1>公司简介 (Company Profile)</h1>
<h1>麒麟控股株式会社 (Kirin Holdings Company, Limited) 公司深度分析报告</h1>
<p><strong>股票代码</strong>: 2503 (东京证券交易所)
<p><strong>股票代码</strong>: 2503 (东京证券交易所)<br />
<strong>分析师日期</strong>: 2026年1月2日</p>
<hr />
<h3>1. 公司概览</h3>
@ -592,7 +596,7 @@
<hr />
<h3>2. 主营业务与财务结构</h3>
<p>麒麟控股的业务结构高度多元化,已不再是单纯的饮料公司。根据公司发布的最新定期报告(<em>参考来源:麒麟控股 2024财年合并决算短信/综合报告</em>),其业务主要分为以下四大板块。</p>
<p><strong>2024财年FY2024合并收入概况</strong>
<p><strong>2024财年FY2024合并收入概况</strong><br />
公司总收入约为 <strong>23,383亿日元</strong> (约2.34万亿日元)。</p>
<table>
<thead>
@ -832,12 +836,12 @@
<li><strong>功能性食品标识</strong>随着“红曲米事件”非麒麟事件但影响全行业的发生日本消费者厅对功能性标示食品Foods with Function Claims的监管趋严。麒麟的iMUSE免疫系列作为该领域的领头羊面临更高的合规成本和舆论审视风险但如果能顺利通过严监管也将进一步清洗缺乏技术实力的中小竞争对手。</li>
</ul>
<hr />
<p><strong>投资总结</strong>
<p><strong>投资总结</strong><br />
麒麟控股不再是一家单纯的啤酒公司而是一个拥有生物科技内核的健康消费品集团。虽然2024年因激进并购导致财务数据净利润、ROE、负债率暂时恶化但这属于战略转型的“阵痛”。投资者应重点关注其<strong>健康科学业务的整合效率</strong>以及<strong>2026年酒税改革带来的啤酒业务反弹机会</strong>。目前的低估值因利润下滑导致的表观高PE除外可能并未完全反映其转型后的长期价值。</p>
<h1>内部人与机构动向 (Insider Analysis)</h1>
<h1>麒麟控股株式会社 (2503) 内部人与机构动向深度分析报告</h1>
<p><strong>日期</strong>2026年1月2日
<strong>分析师</strong>顶级数据分析师Smart Money Tracker
<p><strong>日期</strong>2026年1月2日<br />
<strong>分析师</strong>顶级数据分析师Smart Money Tracker<br />
<strong>分析标的</strong>:麒麟控股株式会社 (Kirin Holdings Co., Ltd. - 2503.T)</p>
<hr />
<h2>摘要 (Executive Summary)</h2>
@ -910,37 +914,37 @@
<li><strong>筹码沉淀</strong>浮筹正在从散户受恐慌情绪影响向长线机构看重2027年愿景手中转移。</li>
<li><strong>催化剂预期</strong>随着FANCL及Blackmores的整合在2026年逐步完成净利润率有望从2024年的低点2.49%)回升。一旦利润释放,当前在低位吸筹的机构将推动股价展开“戴维斯双击”(估值与业绩双升)。</li>
</ol>
<p><strong>投资启示</strong>
<p><strong>投资启示</strong><br />
目前正处于机构建仓的尾声阶段。对于跟随“聪明钱”的投资者而言关注重点应从“过去的利润下滑”转向“未来的现金流改善DOE政策支撑”。当前是<strong>跟随机构在低位布局</strong>的良机。</p>
<h1>看涨分析 (Bullish Analysis)</h1>
<h1>麒麟控股 (2503) 看涨论述:啤酒巨头的生物科技蜕变 (From Brewer to Bio-Pioneer)</h1>
<h2>一、 深度挖掘:被啤酒泡沫掩盖的生物科技“金矿”</h2>
<p>市场目前对麒麟控股的定价仍停留在“增长缓慢的传统饮料巨头”层面主要是受到2024年净利润大幅下滑-52.45%)的表象干扰。然而,<strong>深度解构其资产负债表和战略布局,我们发现这是一次经典的“破茧成蝶”前的蓄力。</strong> 麒麟正在通过激进的资本配置,将自己重塑为一家高壁垒的生物科技与健康科学集团。</p>
<h3>1.1 资产负债表之外的王牌LC-Plasma (乳酸菌) 平台技术</h3>
<p>麒麟拥有的不仅是饮料品牌而是世界级的微生物发酵与免疫学IP。
* <strong>核心资产</strong><strong>LC-Plasma等离子乳酸菌</strong> 是全球首个获证能激活pDC浆细胞样树突状细胞的乳酸菌。这不仅仅是一款酸奶或饮料的原料而是一个<strong>高毛利的B2B平台技术</strong>
* <strong>价值量化</strong>2024年该系列产品销售额已突破230亿日元+10% YoY且开始向外部伙伴如可口可乐日本、森永制菓等进行原料授权。
* <strong>重估逻辑</strong>:市场将其视为食品添加剂,但其本质是<strong>免疫领域的“英特尔Inside”</strong>。随着2025年该技术通过Blackmores渠道进入东南亚和澳洲市场其高利润率的特许权使用费Licensing模式将爆发该部分无形资产价值远未在股价中体现。
<p>麒麟拥有的不仅是饮料品牌而是世界级的微生物发酵与免疫学IP。<br />
* <strong>核心资产</strong><strong>LC-Plasma等离子乳酸菌</strong> 是全球首个获证能激活pDC浆细胞样树突状细胞的乳酸菌。这不仅仅是一款酸奶或饮料的原料而是一个<strong>高毛利的B2B平台技术</strong><br />
* <strong>价值量化</strong>2024年该系列产品销售额已突破230亿日元+10% YoY且开始向外部伙伴如可口可乐日本、森永制菓等进行原料授权。<br />
* <strong>重估逻辑</strong>:市场将其视为食品添加剂,但其本质是<strong>免疫领域的“英特尔Inside”</strong>。随着2025年该技术通过Blackmores渠道进入东南亚和澳洲市场其高利润率的特许权使用费Licensing模式将爆发该部分无形资产价值远未在股价中体现。<br />
* <em>来源公司2024年LC-Plasma销售快报及2025年展望</em></p>
<h3>1.2 低估的“健康科学三驾马车”:并购后的价值释放</h3>
<p>2024年商誉激增至5385亿日元占总资产34.61%),这并非坏账,而是麒麟完成拼图的关键一步。
* <strong>Fancl (100%收购)</strong> + <strong>Blackmores (澳洲巨头)</strong>2024年的利润下滑主要是由于收购Fancl及整合Blackmores产生的一次性成本。
* <strong>隐形价值</strong>:市场低估了这三者的协同效应。
* <strong>渠道互通</strong>利用Blackmores在澳洲和东南亚的药房监管准入能力将麒麟的LC-Plasma产品快速推向海外计划2025年进军台湾2026年拓展更多区域
* <strong>数据变现</strong>Fancl拥有日本最顶尖的D2C直面消费者用户健康数据结合麒麟的研发能力将极大提升新品成功率。
<p>2024年商誉激增至5385亿日元占总资产34.61%),这并非坏账,而是麒麟完成拼图的关键一步。<br />
* <strong>Fancl (100%收购)</strong> + <strong>Blackmores (澳洲巨头)</strong>2024年的利润下滑主要是由于收购Fancl及整合Blackmores产生的一次性成本。<br />
* <strong>隐形价值</strong>:市场低估了这三者的协同效应。<br />
* <strong>渠道互通</strong>利用Blackmores在澳洲和东南亚的药房监管准入能力将麒麟的LC-Plasma产品快速推向海外计划2025年进军台湾2026年拓展更多区域<br />
* <strong>数据变现</strong>Fancl拥有日本最顶尖的D2C直面消费者用户健康数据结合麒麟的研发能力将极大提升新品成功率。<br />
* <em>来源2024年投资者交流日Investor Day纪要</em></p>
<h3>1.3 药企内核:协和麒麟 (Kyowa Kirin) 的剥离/重估潜力</h3>
<p>麒麟控股旗下的协和麒麟是全球领先的特种制药公司,专注于罕见病和肾病。
* <strong>被掩盖的高成长</strong>协和麒麟拥有重磅药物Crysvita低磷酸酯酶症治疗和Poteligeo。这些全球性创新药的利润率远高于啤酒业务但被集团整体的低估值所掩盖。
* <strong>管线爆发期</strong>:下一代重磅药物<strong>KHK4083</strong>用于治疗特应性皮炎预计将于2026年申请批准这不仅是收入催化剂更是估值体系从“食品股”向“医药股”切换的关键。
<p>麒麟控股旗下的协和麒麟是全球领先的特种制药公司,专注于罕见病和肾病。<br />
* <strong>被掩盖的高成长</strong>协和麒麟拥有重磅药物Crysvita低磷酸酯酶症治疗和Poteligeo。这些全球性创新药的利润率远高于啤酒业务但被集团整体的低估值所掩盖。<br />
* <strong>管线爆发期</strong>:下一代重磅药物<strong>KHK4083</strong>用于治疗特应性皮炎预计将于2026年申请批准这不仅是收入催化剂更是估值体系从“食品股”向“医药股”切换的关键。<br />
* <em>来源:协和麒麟中期经营计划</em></p>
<h2>二、 护城河的加深:从“品牌壁垒”向“技术壁垒”跃迁</h2>
<h3>2.1 护城河动态演变:发酵技术的降维打击</h3>
<p>麒麟的护城河正在经历本质的升维。传统啤酒企业的护城河是“分销网络”,而麒麟利用百年的<strong>酵母发酵技术</strong>,构建了难以复制的生物制造能力。
* <strong>技术代差</strong>:麒麟是全球极少数能同时横跨“食品(酿造)- 健康(功能性成分)- 医药(抗体筛选)”的企业。竞争对手可以模仿口味,但无法模仿其利用发酵技术大规模低成本生产高活性生物制剂的工艺。
<p>麒麟的护城河正在经历本质的升维。传统啤酒企业的护城河是“分销网络”,而麒麟利用百年的<strong>酵母发酵技术</strong>,构建了难以复制的生物制造能力。<br />
* <strong>技术代差</strong>:麒麟是全球极少数能同时横跨“食品(酿造)- 健康(功能性成分)- 医药(抗体筛选)”的企业。竞争对手可以模仿口味,但无法模仿其利用发酵技术大规模低成本生产高活性生物制剂的工艺。<br />
* <strong>研发投入</strong>2024年研发费用率提升至4.96%远超传统食品行业平均的1-2%),证明公司正由营销驱动转向技术驱动。</p>
<h3>2.2 封闭的生态闭环:高昂的转换成本</h3>
<p>通过收购Fancl和Blackmores麒麟构建了一个“诊断 -&gt; 干预 -&gt; 维持”的健康闭环。
<p>通过收购Fancl和Blackmores麒麟构建了一个“诊断 -&gt; 干预 -&gt; 维持”的健康闭环。<br />
* <strong>正反馈循环</strong>消费者通过Fancl的健康测试发现问题 -&gt; 购买麒麟/Blackmores的功能性补充剂 -&gt; 长期订阅。这种生态系统极大提高了用户的转换成本,使得麒麟从单一产品的售卖者变成了健康解决方案的提供者。</p>
<h2>三、 长期景气度:拥抱“银发经济”的黄金十年</h2>
<h3>3.1 长期需求:老龄化与免疫焦虑的结构性红利</h3>
@ -969,20 +973,20 @@
<hr />
<h2>一、 护城河的侵蚀:从“现金牛”到“资本黑洞”</h2>
<h3>1.1 核心啤酒业务的结构性衰退</h3>
<p>虽然麒麟在啤酒行业拥有百年品牌,但其核心护城河正在干涸。
* <strong>人口红利的消失</strong>:日本国内市场的萎缩是不可逆的结构性打击。根据<em>Kirin Brewery Strategy 2025</em>数据,整体啤酒市场规模持续下滑,公司仅靠“提价”维持名义增长,而非销量增长。
<p>虽然麒麟在啤酒行业拥有百年品牌,但其核心护城河正在干涸。<br />
* <strong>人口红利的消失</strong>:日本国内市场的萎缩是不可逆的结构性打击。根据<em>Kirin Brewery Strategy 2025</em>数据,整体啤酒市场规模持续下滑,公司仅靠“提价”维持名义增长,而非销量增长。<br />
* <strong>被动的防御战</strong>公司被迫将提价作为主要策略但这在通胀环境下极易导致客户流失。随着日本酒类税收制度改革2026年全面生效原本具有税收优势的“第三类啤酒”将失去价格竞争力这将直接冲击麒麟在低端市场的防御壁垒。</p>
<h3>1.2 医药护城河的“专利悬崖”</h3>
<p>麒麟的医药子公司 <strong>协和麒麟 (Kyowa Kirin)</strong> 曾是主要的利润贡献者,但护城河正面临决堤。
* <strong>核心药物专利到期</strong>:主力药物 <em>Crysvita</em><em>Poteligeo</em> 正面临专利保护期结束的风险Patent Cliff。一旦仿制药进入市场高毛利将瞬间崩塌。
<p>麒麟的医药子公司 <strong>协和麒麟 (Kyowa Kirin)</strong> 曾是主要的利润贡献者,但护城河正面临决堤。<br />
* <strong>核心药物专利到期</strong>:主力药物 <em>Crysvita</em><em>Poteligeo</em> 正面临专利保护期结束的风险Patent Cliff。一旦仿制药进入市场高毛利将瞬间崩塌。<br />
* <strong>政策性降价</strong>日本每年一度的NHI国民健康保险药价下调是悬在头顶的达摩克利斯之剑持续削弱医药板块的利润率。</p>
<h2>二、 隐藏的负债与风险:商誉泡沫与“赢家的诅咒”</h2>
<h3>2.1 资产负债表中的最大“地雷”:商誉 (Goodwill)</h3>
<p>这是本报告最核心的风险警示。
* <strong>商誉爆炸式增长</strong>根据财报公司商誉从2022年的2566亿日元激增至2024年的<strong>5385亿日元</strong>,占总资产比例高达<strong>34.61%</strong>。这意味着公司超过三分之一的资产是“空气”(溢价收购产生的无形价值)。
* <strong>并购后的整合噩梦</strong>:商誉激增主要源于对 <strong>Blackmores (澳佳宝)</strong><strong>Fancl</strong> 的高溢价收购。历史上,跨国消费品并购失败率极高。
* <em>Fancl收购风险</em>2024年财报中已出现“因Fancl合并产生的阶段性收购损失”。
* <em>Kyowa Hakko Bio困境</em>健康科学板块的另一核心Kyowa Hakko Bio不仅未贡献利润反而因“库存减值”和“结构性改革”造成巨额亏损。
<p>这是本报告最核心的风险警示。<br />
* <strong>商誉爆炸式增长</strong>根据财报公司商誉从2022年的2566亿日元激增至2024年的<strong>5385亿日元</strong>,占总资产比例高达<strong>34.61%</strong>。这意味着公司超过三分之一的资产是“空气”(溢价收购产生的无形价值)。<br />
* <strong>并购后的整合噩梦</strong>:商誉激增主要源于对 <strong>Blackmores (澳佳宝)</strong><strong>Fancl</strong> 的高溢价收购。历史上,跨国消费品并购失败率极高。<br />
* <em>Fancl收购风险</em>2024年财报中已出现“因Fancl合并产生的阶段性收购损失”。<br />
* <em>Kyowa Hakko Bio困境</em>健康科学板块的另一核心Kyowa Hakko Bio不仅未贡献利润反而因“库存减值”和“结构性改革”造成巨额亏损。<br />
* <strong>减值风险</strong>一旦Blackmores或Fancl的业绩不及预期如中国市场需求疲软巨额商誉减值Impairment Loss将直接吞噬股东权益导致净资产大幅缩水。</p>
<h3>2.2 债务负担与利率风险</h3>
<ul>
@ -991,13 +995,13 @@
</ul>
<h2>三、 行业逆风与最坏情况分析</h2>
<h3>3.1 战略转型的“多元恶化” (Diworsification)</h3>
<p>彼得·林奇Peter Lynch曾警告企业盲目多元化的风险。麒麟正从一家简单的啤酒公司变成一家复杂的“发酵技术+制药+护肤品”混合体。
* <strong>资源分散</strong>:公司试图用啤酒赚来的现金去补贴连年亏损或高价收购的“健康科学”业务。这种“左手倒右手”的策略掩盖了资本配置的低效。
<p>彼得·林奇Peter Lynch曾警告企业盲目多元化的风险。麒麟正从一家简单的啤酒公司变成一家复杂的“发酵技术+制药+护肤品”混合体。<br />
* <strong>资源分散</strong>:公司试图用啤酒赚来的现金去补贴连年亏损或高价收购的“健康科学”业务。这种“左手倒右手”的策略掩盖了资本配置的低效。<br />
* <strong>执行风险</strong>:管理层需要在三个完全不同的行业(快消、医药、美妆)同时作战,管理半径过长极易导致决策失误(如之前的缅甸业务退出惨案)。</p>
<h3>3.2 最坏情况压力测试 (Worst-Case Scenario)</h3>
<p>假设以下情景同时发生:
1. <strong>商誉减值</strong>对Blackmores和Fancl的商誉进行50%的减值计提约2700亿日元损失
2. <strong>销量下滑</strong>国内啤酒销量因人口减少和消费降级下滑5%。
<p>假设以下情景同时发生:<br />
1. <strong>商誉减值</strong>对Blackmores和Fancl的商誉进行50%的减值计提约2700亿日元损失<br />
2. <strong>销量下滑</strong>国内啤酒销量因人口减少和消费降级下滑5%。<br />
3. <strong>药价下调</strong>核心药品面临全球范围内10%的价格压力。</p>
<ul>
<li><strong>结果预测</strong>公司将立即陷入巨额亏损净资产可能缩水30%-40%,甚至触发债务契约违约。</li>
@ -1095,9 +1099,9 @@
<li><strong>估值泡沫</strong>:市场可能错误地将一次性会计调整前的利润作为常态,而忽视了公司核心盈利能力的结构性下滑。</li>
</ul>
<h3>4.2 投资建议:极度谨慎</h3>
<p>麒麟控股目前呈现出典型的“价值陷阱”特征:
1. <strong>护城河受损</strong>(啤酒存量博弈,医药面临悬崖)。
2. <strong>资产质量恶化</strong>(商誉占比过高,存在巨额减值雷管)。
<p>麒麟控股目前呈现出典型的“价值陷阱”特征:<br />
1. <strong>护城河受损</strong>(啤酒存量博弈,医药面临悬崖)。<br />
2. <strong>资产质量恶化</strong>(商誉占比过高,存在巨额减值雷管)。<br />
3. <strong>安全边际缺失</strong>(清算价值极低,高市盈率透支了未来)。</p>
<p>对于寻求本金安全的投资者,<strong>目前的麒麟控股不具备足够的安全边际</strong>。建议规避或在持有头寸中加入严格的止损保护。</p>
<h2>API Usage Summary</h2>

Binary file not shown.

View File

@ -208,8 +208,19 @@ def render_html_report(report_file, market, symbol):
with open(financial_html_path, 'r', encoding='utf-8') as f:
financial_html_content = f.read()
# 将Markdown转换为HTML
md = markdown.Markdown(extensions=['tables', 'fenced_code', 'codehilite'])
# 将Markdown转换为HTML,添加更多扩展以支持完整的Markdown语法
md = markdown.Markdown(extensions=[
'tables', # 表格支持
'fenced_code', # 代码块支持
'codehilite', # 代码高亮
'nl2br', # 换行转<br>
'sane_lists', # 更好的列表处理
'attr_list', # 属性列表
'def_list', # 定义列表
'abbr', # 缩写
'footnotes', # 脚注
'md_in_html' # HTML中的Markdown
])
report_html_content = md.convert(md_content)
# 构建完整的HTML文档
@ -223,16 +234,20 @@ def render_html_report(report_file, market, symbol):
body {{
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
line-height: 1.6;
max-width: 1200px;
margin: 0 auto;
margin: 0;
padding: 20px;
background-color: #f5f5f5;
display: flex;
justify-content: center;
min-height: 100vh;
}}
.container {{
background-color: white;
padding: 30px;
padding: 40px;
border-radius: 8px;
box-shadow: 0 2px 4px rgba(0,0,0,0.1);
box-shadow: 0 2px 8px rgba(0,0,0,0.1);
max-width: 1200px;
width: 100%;
}}
h1 {{
color: #2c3e50;
@ -489,7 +504,7 @@ def main():
})
with open(report_file, 'a', encoding='utf-8') as f:
f.write(f"\n\n# {name.split('. ')[1] if '. ' in name else name}\n\n")
f.write(f"\n\n")
f.write(result)
print(f"Finished {name} in {duration:.2f}s.")