File size: 1,957 Bytes
3552405 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 | """Report formatting utilities for ClauseGuard."""
from clauseguard.models.findings import Severity
from clauseguard.models.report import FinalReport
SEVERITY_EMOJI_MAP = {
Severity.CRITICAL: "🔴",
Severity.HIGH: "🟠",
Severity.MEDIUM: "🟡",
Severity.LOW: "🟢",
Severity.INFO: "ℹ️",
}
SEVERITY_COLOR_MAP = {
Severity.CRITICAL: "#FF0000",
Severity.HIGH: "#FF8C00",
Severity.MEDIUM: "#FFD700",
Severity.LOW: "#32CD32",
Severity.INFO: "#1E90FF",
}
def severity_badge(severity: Severity) -> str:
"""Return the emoji badge for a severity level.
Alias for severity_emoji — matches PRD specification.
Args:
severity: The Severity enum value.
Returns:
The corresponding emoji string.
"""
return SEVERITY_EMOJI_MAP.get(severity, "⚪")
def severity_emoji(severity: Severity) -> str:
"""Return the emoji representation for a severity level.
Args:
severity: The Severity enum value.
Returns:
The corresponding emoji string.
"""
return severity_badge(severity)
def risk_color(severity: Severity) -> str:
"""Return the hex color code for a severity level.
Alias for severity_color — matches PRD specification.
Args:
severity: The Severity enum value.
Returns:
The corresponding hex color string.
"""
return SEVERITY_COLOR_MAP.get(severity, "#808080")
def severity_color(severity: Severity) -> str:
"""Return the hex color code for a severity level.
Args:
severity: The Severity enum value.
Returns:
The corresponding hex color string.
"""
return risk_color(severity)
def format_markdown(report: FinalReport) -> str:
"""Convert a FinalReport to a formatted markdown string.
Args:
report: The FinalReport to format.
Returns:
The fully formatted markdown report string.
"""
return report.markdown_report
|