Spaces:
Running
Running
| import io | |
| import re | |
| import base64 | |
| import plotly.io as pio | |
| import streamlit as st | |
| def write_markdown(agents): | |
| report_agent = agents[-1] | |
| report_obj = report_agent.load_report() # Reportcore | |
| # εΎεεζε葨 | |
| analysis_list = agents[2].summary_fig_analysis_list() | |
| md_parts = [] | |
| def _process_node(node): | |
| if node.type == "heading": | |
| prefix = "#" * (node.level if node.level > 0 else 1) | |
| md_parts.append(f"{prefix} {node.text}\n") | |
| for ch in node.children: | |
| _process_node(ch) | |
| elif node.type == "paragraph": | |
| parts = re.split(r'(\[FIG:\d+\])', node.text) | |
| for part in parts: | |
| part = part.strip() | |
| if not part: | |
| continue | |
| if part.startswith("[FIG:") and part.endswith("]"): | |
| idx = int(part[5:-1]) | |
| if 0 <= idx < len(analysis_list): | |
| fig_obj = analysis_list[idx].get("figure") | |
| try: | |
| buf = io.BytesIO() | |
| pio.write_image(fig_obj, buf, format="png") | |
| data = buf.getvalue() | |
| b64 = base64.b64encode(data).decode("utf-8") | |
| # πΉ η΄ζ₯ε ε΅ base64 | |
| md_parts.append( | |
| f"\n" | |
| ) | |
| except Exception as e: | |
| md_parts.append(f"> **εΎεζε ₯ε€±θ΄₯**: {e}\n") | |
| else: | |
| md_parts.append(f"{part}\n\n") | |
| else: # root | |
| for ch in node.children: | |
| _process_node(ch) | |
| _process_node(report_obj.root) | |
| md_content = "\n".join(md_parts) | |
| report_agent.save_markdown(md_content) | |
| st.success("Markdown ζ₯εηζζε β ") |