"""NL2SQL 查询结果的基础 Markdown 渲染。""" from __future__ import annotations from typing import Any def _cell(value: Any) -> str: """将单元格转换为不会破坏 Markdown 表格的文本。""" if value is None: return "" return str(value).replace("|", "\\|").replace("\r", " ").replace("\n", " ") def render_markdown(columns: list[str], rows: list[dict[str, Any]]) -> str: """将列和行渲染成 Markdown 表格,空结果返回固定提示。""" if not rows: return "暂无数据。" header = "| " + " | ".join(_cell(column) for column in columns) + " |" divider = "| " + " | ".join("---" for _ in columns) + " |" body = [ "| " + " | ".join(_cell(row.get(column)) for column in columns) + " |" for row in rows ] return "\n".join([header, divider, *body])