fix: save comparison HTML artifacts

This commit is contained in:
kuyua9
2026-05-15 00:36:19 +08:00
committed by Trevin Chow
parent 2e39ee8ce4
commit cd34966b4f
2 changed files with 43 additions and 3 deletions
+23 -3
View File
@@ -97,11 +97,13 @@ def save_output(
save_dir: str,
suffix: str = "",
synthesis_md: str | None = None,
topic_override: str | None = None,
rendered_content: str | None = None,
) -> Path:
from datetime import datetime
path = Path(save_dir).expanduser().resolve()
path.mkdir(parents=True, exist_ok=True)
slug = slugify(report.topic)
slug = slugify(topic_override or report.topic)
extension = "json" if emit == "json" else "html" if emit == "html" else "md"
raw_label = "raw-html" if emit == "html" else "raw"
suffix_part = f"-{suffix}" if suffix else ""
@@ -110,7 +112,9 @@ def save_output(
out_path = path / f"{slug}-{raw_label}{suffix_part}-{datetime.now().strftime('%Y-%m-%d')}.{extension}"
# Markdown saves keep the complete debug artifact. JSON and HTML preserve
# their requested wire format so file extensions match their content.
if emit in {"json", "html"}:
if rendered_content is not None:
content = rendered_content
elif emit in {"json", "html"}:
content = emit_output(report, emit, synthesis_md=synthesis_md)
else:
content = render.render_full(report)
@@ -171,6 +175,10 @@ def emit_comparison_output(
raise SystemExit(f"Unsupported emit mode: {emit}")
def comparison_topic(entity_reports: list[tuple[str, schema.Report]]) -> str:
return " vs ".join(label for label, _ in entity_reports)
def compute_save_path_display(save_dir: str, topic: str, suffix: str, emit: str) -> str:
"""Compute the user-friendly save path string that will be shown in the footer.
@@ -875,8 +883,13 @@ def main() -> int:
fun_level = config.get("FUN_LEVEL", "medium").lower()
footer_save_path = None
if args.save_dir:
save_topic = (
comparison_topic(entity_reports)
if entity_reports and args.emit == "html"
else report.topic
)
footer_save_path = compute_save_path_display(
args.save_dir, report.topic, args.save_suffix or "", args.emit
args.save_dir, save_topic, args.save_suffix or "", args.emit
)
# Signal to render_compact whether pre-research flags were supplied.
@@ -911,12 +924,19 @@ def main() -> int:
)
if args.save_dir:
# Save the main topic's raw file (single-entity or comparison main).
save_topic = (
comparison_topic(entity_reports)
if entity_reports and args.emit == "html"
else None
)
save_path = save_output(
report,
args.emit,
args.save_dir,
suffix=args.save_suffix or "",
synthesis_md=synthesis_md,
topic_override=save_topic,
rendered_content=rendered if entity_reports and args.emit == "html" else None,
)
sys.stderr.write(f"[last30days] Saved output to {save_path}\n")
# Competitor / vs-mode: also save a per-entity raw file for each peer.