From 8aa114df4a7012dc6da9f4e06adaa25257ecbdc9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=A9=AC=E4=B8=80=E4=B8=81?= <1769123563@qq.com> Date: Sat, 15 Nov 2025 02:08:24 +0800 Subject: [PATCH] Fix-Multiple Directories --- ReportEngine/renderers/html_renderer.py | 50 +++++++++++++++++++++++++ 1 file changed, 50 insertions(+) diff --git a/ReportEngine/renderers/html_renderer.py b/ReportEngine/renderers/html_renderer.py index 89a9c3f..a3d3199 100644 --- a/ReportEngine/renderers/html_renderer.py +++ b/ReportEngine/renderers/html_renderer.py @@ -59,6 +59,8 @@ class HTMLRenderer: self.heading_label_map: Dict[str, Dict[str, Any]] = {} self.primary_heading_index = 0 self.secondary_heading_index = 0 + self.toc_rendered = False + self.hero_kpi_signature: tuple | None = None # ====== 公共入口 ====== @@ -78,6 +80,7 @@ class HTMLRenderer: self.heading_counter = 0 self.metadata = self.document.get("metadata", {}) or {} raw_chapters = self.document.get("chapters", []) or [] + self.toc_rendered = False self.chapters = self._prepare_chapters(raw_chapters) self.chapter_anchor_map = { chapter.get("chapterId"): chapter.get("anchor") @@ -90,6 +93,8 @@ class HTMLRenderer: metadata = self.metadata theme_tokens = metadata.get("themeTokens") or self.document.get("themeTokens", {}) title = metadata.get("title") or metadata.get("query") or "智能舆情报告" + hero_kpis = (metadata.get("hero") or {}).get("kpis") + self.hero_kpi_signature = self._kpi_signature_from_items(hero_kpis) head = self._render_head(title, theme_tokens) body = self._render_body() @@ -320,12 +325,15 @@ class HTMLRenderer: """ if not self.toc_entries: return "" + if self.toc_rendered: + return "" toc_config = self.metadata.get("toc") or {} toc_title = toc_config.get("title") or "📚 目录" toc_items = "".join( self._format_toc_entry(entry) for entry in self.toc_entries ) + self.toc_rendered = True return f"""