feat(advisor): add 0.85 advisory threshold triggering LLM suggestions
- Add advisory_threshold=0.85 field to MetricRule (higher-is-better metrics) - diagnose() now emits severity='low' for scores in (warning_threshold, 0.85) - noise_sensitivity (lower-is-better) keeps its existing two-tier thresholds - writer.py: severity labels mapped to Chinese (严重/警告/待优化) - llm_analyzer.py: prompt explains low/warning/critical tiers in Chinese - Tests: 5 new cases for 'low' severity, updated log summary assertions Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This commit is contained in:
@@ -14,6 +14,9 @@ class MetricRule:
|
||||
higher_is_better: bool # False for noise_sensitivity
|
||||
root_causes: list[str]
|
||||
suggested_actions: list[str]
|
||||
# Scores below this threshold trigger a "low" advisory (LLM suggestion requested).
|
||||
# Only applies to higher_is_better metrics; noise_sensitivity uses existing thresholds.
|
||||
advisory_threshold: float = 0.85
|
||||
|
||||
|
||||
METRIC_RULES: dict[str, MetricRule] = {
|
||||
@@ -208,10 +211,14 @@ def diagnose(
|
||||
elif mean < rule.warning_threshold:
|
||||
severity = "warning"
|
||||
threshold = rule.warning_threshold
|
||||
elif mean < rule.advisory_threshold:
|
||||
# Score is acceptable but below 0.85 — request LLM optimization advice.
|
||||
severity = "low"
|
||||
threshold = rule.advisory_threshold
|
||||
else:
|
||||
continue # above warning threshold → no diagnosis
|
||||
continue # >= advisory_threshold → no diagnosis needed
|
||||
else:
|
||||
# lower is better (noise_sensitivity)
|
||||
# lower is better (noise_sensitivity): keep existing two-tier logic
|
||||
if mean > rule.critical_threshold:
|
||||
severity = "critical"
|
||||
threshold = rule.critical_threshold
|
||||
|
||||
Reference in New Issue
Block a user