v1: executing-plans 模式生成,54 文件 1320 行 Python
This commit is contained in:
@@ -0,0 +1,43 @@
|
||||
import json
|
||||
from pathlib import Path
|
||||
from data.diff_result import VerificationRun
|
||||
|
||||
|
||||
class ReportGenerator:
|
||||
def generate_json(self, run: VerificationRun, output_path: Path) -> Path:
|
||||
data = {
|
||||
"program": run.program, "timestamp": run.timestamp,
|
||||
"status": run.status, "exit_code": run.exit_code,
|
||||
"duration_s": run.duration_s, "fields_matched": run.fields_matched,
|
||||
"fields_mismatched": run.fields_mismatched, "runner": run.runner,
|
||||
"branch_rate": run.branch_rate, "llm_cost": run.llm_cost,
|
||||
"field_results": [
|
||||
{"field_name": fr.field_name, "status": fr.status,
|
||||
"cobol_value": fr.cobol_value, "java_value": fr.java_value,
|
||||
"tolerance_applied": fr.tolerance_applied,
|
||||
"rounding_detected": fr.rounding_detected,
|
||||
"suggestion": fr.suggestion}
|
||||
for fr in run.field_results
|
||||
],
|
||||
}
|
||||
output_path.write_text(json.dumps(data, indent=2))
|
||||
return output_path
|
||||
|
||||
def generate_html(self, run: VerificationRun, output_path: Path) -> Path:
|
||||
rows = ""
|
||||
for fr in run.field_results:
|
||||
cls = "pass" if fr.status == "PASS" else ("tolerated" if fr.status == "TOLERATED" else "fail")
|
||||
rows += f'<tr class="{cls}"><td>{fr.field_name}</td><td>{fr.status}</td><td>{fr.cobol_value}</td><td>{fr.java_value}</td><td>{fr.suggestion}</td></tr>'
|
||||
html = f"""<!DOCTYPE html><html><head><meta charset="utf-8"><title>Verify: {run.program}</title>
|
||||
<style>body{{font-family:monospace;max-width:900px;margin:2rem auto}}.pass{{background:#e6ffe6}}.tolerated{{background:#fff7e6}}.fail{{background:#ffe6e6}}pre{{background:#f0f0f0;padding:1rem}}</style></head><body>
|
||||
<h1>{run.program}</h1><pre>Status: {run.status} | Runner: {run.runner} | {run.fields_matched}/{run.total_fields} fields | {run.duration_s}s</pre>
|
||||
<table border=1 cellpadding=4><tr><th>Field</th><th>Status</th><th>COBOL</th><th>Java</th><th>Suggestion</th></tr>{rows}</table></body></html>"""
|
||||
output_path.write_text(html)
|
||||
return output_path
|
||||
|
||||
def generate_machine_json(self, run: VerificationRun, output_path: Path) -> Path:
|
||||
data = {"program": run.program, "timestamp": run.timestamp,
|
||||
"status": run.status, "exit_code": run.exit_code,
|
||||
"duration_s": run.duration_s, "runner": run.runner}
|
||||
output_path.write_text(json.dumps(data))
|
||||
return output_path
|
||||
Reference in New Issue
Block a user