import io
import re
import streamlit as st
import plotly.io as pio
from utils.sanitize_code import sanitize_code
import base64
def write_html(agents):
report_agent = agents[-1]
report_obj = report_agent.load_report() # Reportcore
# 图像分析列表
analysis_list = agents[2].summary_fig_analysis_list()
# 给 heading 加唯一 id
heading_counter = {"count": 0}
def _gen_id(text):
heading_counter["count"] += 1
return f"sec-{heading_counter['count']}"
# 遍历树 → 正文 & TOC
toc_items, content_items = [], []
def _process_node(node):
if node.type == "heading":
sec_id = _gen_id(node.text)
toc_items.append((sec_id, node.text, node.level))
content_items.append(
f"
[图像插入失败: {e}]
" html_parts.append(fig_html) else: html_parts.append(f"{part}
") content_items.append("".join(html_parts)) else: # root for ch in node.children: _process_node(ch) _process_node(report_obj.root) # TOC HTML toc_html = ["") # 拼接完整 HTML html_content = f"""