prival / report.py
EugeneXiang's picture
Upload 6 files
55f57c9 verified
# report.py
"""
生成 HTML 与 Markdown 格式的报告,包含各维度得分和建议。
"""
from jinja2 import Template
HTML_TEMPLATE = """
<html>
<head><title>PRIVAL Prompt 验证报告</title></head>
<body>
<h2>PRIVAL 验证报告</h2>
<p>Overall Score: {{ overall }}</p>
<table border=1 cellpadding=5>
<tr><th>维度</th><th>分数</th><th>建议</th></tr>
{% for dim, score in scores.items() %}
<tr>
<td>{{ dim }}</td>
<td>{{ score }}</td>
<td>{{ suggestions[dim] | join('; ') }}</td>
</tr>
{% endfor %}
</table>
</body>
</html>
"""
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'])