fix: improve govdoc reports and versioned document list
This commit is contained in:
@@ -390,9 +390,31 @@ tbody tr:hover {
|
||||
"""
|
||||
|
||||
|
||||
def _summary_score(summary: object) -> int:
|
||||
for attr in ("score", "totalScore", "total_score"):
|
||||
value = getattr(summary, attr, None)
|
||||
if value is None and isinstance(summary, dict):
|
||||
value = summary.get(attr)
|
||||
if value is None:
|
||||
continue
|
||||
try:
|
||||
return int(float(value))
|
||||
except (TypeError, ValueError):
|
||||
continue
|
||||
return 0
|
||||
|
||||
|
||||
def _severity_label(severity: str) -> str:
|
||||
return {
|
||||
"error": "错误",
|
||||
"warning": "警告",
|
||||
"info": "提示",
|
||||
}.get(severity, severity)
|
||||
|
||||
|
||||
def render_html(result: AuditResult) -> str:
|
||||
summary = result.summary
|
||||
score = int(summary.score or 0)
|
||||
score = _summary_score(summary)
|
||||
score_pct = max(0, min(score, 100))
|
||||
severity_counts = _severity_counts(result)
|
||||
category_count = len([key for key, value in (summary.by_category or {}).items() if key and value])
|
||||
@@ -407,6 +429,8 @@ def render_html(result: AuditResult) -> str:
|
||||
context = escape((finding.location.context or "").strip())
|
||||
message = escape(finding.message)
|
||||
suggestion = escape(finding.suggestion) if finding.suggestion else "按规则要求修正对应内容。"
|
||||
severity = escape(finding.severity)
|
||||
severity_label = escape(_severity_label(finding.severity))
|
||||
|
||||
rows.append(
|
||||
f"""
|
||||
@@ -416,7 +440,7 @@ def render_html(result: AuditResult) -> str:
|
||||
<div class="rule-id">{escape(finding.rule_id)}</div>
|
||||
<div class="rule-name">{escape(finding.rule_name)}</div>
|
||||
</td>
|
||||
<td><span class="severity-tag {escape(finding.severity)}">{escape(finding.severity)}</span></td>
|
||||
<td><span class="severity-tag {severity}">{severity_label}</span></td>
|
||||
<td class="category-cell">{escape(finding.category)}</td>
|
||||
<td class="mono location-cell">{location_label}</td>
|
||||
<td class="message-cell">
|
||||
@@ -441,33 +465,32 @@ def render_html(result: AuditResult) -> str:
|
||||
<section class="card">
|
||||
<div class="card-head">
|
||||
<div class="card-title">报告摘要</div>
|
||||
<div class="card-subtitle">不改报告语义,仅收敛样式、配色与信息层级</div>
|
||||
</div>
|
||||
<div class="summary-grid">
|
||||
<div class="score-box">
|
||||
<div class="score-label">综合得分</div>
|
||||
<div class="score-value">{score}</div>
|
||||
<div class="score-track"><div class="score-fill" style="width:{score_pct}%"></div></div>
|
||||
<div class="score-note">这份正式 HTML 报告沿用平台工作台的版式语言,突出摘要、明细和建议三层信息。</div>
|
||||
<div class="score-note">综合反映本次公文审核结果,可结合下方问题明细逐项核对修正。</div>
|
||||
</div>
|
||||
|
||||
<div class="summary-main">
|
||||
<div class="eyebrow">正式报告样式方向</div>
|
||||
<div class="eyebrow">审核结果</div>
|
||||
<h1 class="report-title">公文格式审核报告</h1>
|
||||
<div class="report-meta">{filename} · 共 {summary.total_findings} 项问题 · 用作正式 HTML 报告输出</div>
|
||||
<div class="report-meta">{filename} · 共 {summary.total_findings} 项问题</div>
|
||||
|
||||
<div class="metrics">
|
||||
<div class="metric">
|
||||
<div class="metric-label">错误项</div>
|
||||
<div class="metric-value"><strong>{severity_counts["error"]}</strong><span>error</span></div>
|
||||
<div class="metric-value"><strong>{severity_counts["error"]}</strong><span>错误</span></div>
|
||||
</div>
|
||||
<div class="metric">
|
||||
<div class="metric-label">警告项</div>
|
||||
<div class="metric-value"><strong>{severity_counts["warning"]}</strong><span>warning</span></div>
|
||||
<div class="metric-value"><strong>{severity_counts["warning"]}</strong><span>警告</span></div>
|
||||
</div>
|
||||
<div class="metric">
|
||||
<div class="metric-label">提示项</div>
|
||||
<div class="metric-value"><strong>{severity_counts["info"]}</strong><span>info</span></div>
|
||||
<div class="metric-value"><strong>{severity_counts["info"]}</strong><span>提示</span></div>
|
||||
</div>
|
||||
<div class="metric">
|
||||
<div class="metric-label">问题类别</div>
|
||||
@@ -488,23 +511,23 @@ def render_html(result: AuditResult) -> str:
|
||||
<aside class="card">
|
||||
<div class="card-head">
|
||||
<div class="card-title">侧边摘要</div>
|
||||
<div class="card-subtitle">工作台侧栏语义</div>
|
||||
<div class="card-subtitle">关键信息</div>
|
||||
</div>
|
||||
<div class="sidebar-body">
|
||||
<article class="summary-row">
|
||||
<div class="summary-row-label">命中最多规则</div>
|
||||
<div class="summary-row-value">{escape(top_rule_id)}</div>
|
||||
<div class="summary-row-desc">当前命中最多的规则共 {top_rule_count} 项,适合在正式版中作为摘要提示保留。</div>
|
||||
<div class="summary-row-desc">当前命中最多的规则共 {top_rule_count} 项。</div>
|
||||
</article>
|
||||
<article class="summary-row">
|
||||
<div class="summary-row-label">集中行号</div>
|
||||
<div class="summary-row-value">{escape(line_range)}</div>
|
||||
<div class="summary-row-desc">问题主要集中在这一段行号范围,便于阅读者快速判断问题分布区域。</div>
|
||||
<div class="summary-row-desc">问题主要集中在以上行号范围。</div>
|
||||
</article>
|
||||
<article class="summary-row">
|
||||
<div class="summary-row-label">实体状态</div>
|
||||
<div class="summary-row-value">{escape(entity_summary)}</div>
|
||||
<div class="summary-row-desc">按现有识别结果汇总实体抽取状态,用于辅助理解顶部结构类问题。</div>
|
||||
<div class="summary-row-desc">按当前识别结果汇总核心实体状态。</div>
|
||||
</article>
|
||||
</div>
|
||||
</aside>
|
||||
@@ -513,7 +536,6 @@ def render_html(result: AuditResult) -> str:
|
||||
<div class="table-toolbar">
|
||||
<div class="toolbar-left">
|
||||
<div class="toolbar-title">问题明细</div>
|
||||
<div class="toolbar-desc">保留当前报告语义,只收敛版式、层级和配色。</div>
|
||||
</div>
|
||||
<div class="toolbar-filters">
|
||||
<span class="filter active">全部</span>
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
+1
-1
Submodule legal-platform-frontend updated: d541eb74ae...c41ddc844c
@@ -20,6 +20,7 @@ dependencies = [
|
||||
"tomli>=2.2.0",
|
||||
"python-multipart>=0.0.18",
|
||||
"pyjwt>=2.10.0",
|
||||
"openai>=1.30.0",
|
||||
"pillow>=11.0.0",
|
||||
"pyyaml>=6.0",
|
||||
"minio>=7.2.8",
|
||||
|
||||
Reference in New Issue
Block a user