# report.py
"""
生成 HTML 与 Markdown 格式的报告,包含各维度得分和建议。
"""
from jinja2 import Template
HTML_TEMPLATE = """
PRIVAL Prompt 验证报告
PRIVAL 验证报告
Overall Score: {{ overall }}
| 维度 | 分数 | 建议 |
{% for dim, score in scores.items() %}
| {{ dim }} |
{{ score }} |
{{ suggestions[dim] | join('; ') }} |
{% endfor %}
"""
MD_TEMPLATE = """
# PRIVAL Prompt 验证报告
**Overall Score:** {{ overall }}
| 维度 | 分数 | 建议 |
|-----|-----|------|
{% for dim, score in scores.items() %}
| {{ dim }} | {{ score }} | {{ suggestions[dim] | join('; ') }} |
{% endfor %}
"""
def generate_html_report(data: dict) -> str:
"""返回 HTML 格式报告字符串。"""
tmpl = Template(HTML_TEMPLATE)
return tmpl.render(scores=data['scores'], suggestions=data['suggestions'], overall=data['overall'])
def generate_md_report(data: dict) -> str:
"""返回 Markdown 格式报告字符串。"""
tmpl = Template(MD_TEMPLATE)
return tmpl.render(scores=data['scores'], suggestions=data['suggestions'], overall=data['overall'])