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