"""HTML views for final-report audit paste (#431).""" from __future__ import annotations import html from final_report_validator import FINAL_REPORT_TASK_KINDS from webui.audit_validator import audit_report from webui.layout import render_page _TASK_KIND_OPTIONS = sorted(FINAL_REPORT_TASK_KINDS) def _escape(text: str) -> str: return html.escape(text, quote=True) def _render_findings(result: dict) -> str: findings = result.get("findings") or [] if not findings: return '
No validator findings — report structure looks complete for the selected task kind.
' rows = [] for finding in findings: rows.append( "{_escape(str(finding.get('rule_id', '')))}| Rule | Severity | Field | " "Reason | Safe next action |
|---|
Safe next action: {safe_next}
" f"{_render_findings(result)}" ) if suggested_prompt: result_html += ( "{_escape(suggested_prompt)}'
)
if suggested_comment:
result_html += (
"{_escape(suggested_comment)}'
)
result_html += "Paste an LLM final report for local validator preview. "
"Uses final_report_validator and review schema checks — "
"does not post to Gitea or store reports server-side.
JSON API (POST report_text, "
"optional task_kind)