fix(severity): extend badge label set + update SYSTEM_PROMPT
This commit is contained in:
+9
-2
@@ -102,7 +102,7 @@ Output STRICT JSON only — no prose, no markdown fences. Shape:
|
||||
{
|
||||
"findings": [
|
||||
{
|
||||
"severity": "critical|high|medium|low",
|
||||
"severity": "critical|high|medium|low|trivial|info",
|
||||
"path": "file path exactly as it appears in the diff (`+++ b/` side)",
|
||||
"line": <int, the NEW-file line number the issue is on, within the diff>,
|
||||
"problem": "one line: what is wrong",
|
||||
@@ -963,12 +963,19 @@ _SEVERITY_EMOJI = {
|
||||
"nit": "⚪",
|
||||
}
|
||||
|
||||
# Severities whose own name is rendered verbatim (uppercased) in the badge.
|
||||
# Anything outside this set falls back to "INFO" so the badge label stays
|
||||
# a clean short token regardless of what the model emits.
|
||||
_BADGED_SEVERITY_LABELS = frozenset({
|
||||
"critical", "high", "medium", "low", "trivial", "info", "nit",
|
||||
})
|
||||
|
||||
|
||||
def _severity_badge(severity: str) -> str:
|
||||
"""Render the severity as emoji + uppercase label (e.g. ``🔴 [HIGH]``)."""
|
||||
sev = (severity or "").lower()
|
||||
emoji = _SEVERITY_EMOJI.get(sev, "⚪")
|
||||
label = sev.upper() if sev in {"critical", "high", "medium", "low"} else "INFO"
|
||||
label = sev.upper() if sev in _BADGED_SEVERITY_LABELS else "INFO"
|
||||
return f"{emoji} [{label}]"
|
||||
|
||||
|
||||
|
||||
@@ -17,6 +17,7 @@ from ai_review import ( # noqa: E402
|
||||
_last_balanced_json,
|
||||
_normalize_finding,
|
||||
_render_collapsible_usage,
|
||||
_severity_badge,
|
||||
build_user_prompt,
|
||||
compute_attribution,
|
||||
findings_table,
|
||||
@@ -321,7 +322,7 @@ def test_inline_comment_body_severity_emoji_mapping():
|
||||
("medium", "🟡 [MEDIUM]"),
|
||||
("low", "🔵 [LOW]"),
|
||||
("info", "⚪ [INFO]"),
|
||||
("nit", "⚪ [INFO]"), # "nit" maps to the INFO label
|
||||
("nit", "⚪ [NIT]"), # legacy alias — renders with its own name
|
||||
("bogus", "⚪ [INFO]"), # unknown severity falls back to INFO
|
||||
]
|
||||
for sev, badge in cases:
|
||||
@@ -1746,3 +1747,11 @@ def test_emoji_for_trivial_and_info_is_neutral():
|
||||
assert _SEVERITY_EMOJI["trivial"] == "⚪"
|
||||
assert _SEVERITY_EMOJI["info"] == "⚪"
|
||||
|
||||
|
||||
def test_severity_badge_labels_each_known_severity():
|
||||
# Trivial and info (and legacy nit) should render with their own name,
|
||||
# not fall back to "INFO".
|
||||
for sev in ("critical", "high", "medium", "low", "trivial", "info", "nit"):
|
||||
badge = _severity_badge(sev)
|
||||
assert f"[{sev.upper()}]" in badge, (sev, badge)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user