Spaces:
Running
Running
| from __future__ import annotations | |
| from dataclasses import dataclass, field | |
| from enum import Enum | |
| class Severity(str, Enum): | |
| CRITICAL = "critical" | |
| HIGH = "high" | |
| MEDIUM = "medium" | |
| LOW = "low" | |
| SUGGESTION = "suggestion" | |
| class Category(str, Enum): | |
| VISUAL_HIERARCHY = "visual_hierarchy" | |
| TYPOGRAPHY = "typography" | |
| SPACING = "spacing" | |
| CONSISTENCY = "consistency" | |
| ACCESSIBILITY = "accessibility" | |
| CONTRAST = "contrast" | |
| COMPONENT_QUALITY = "component_quality" | |
| CONVERSION_OPTIMIZATION = "conversion_optimization" | |
| UX_QUALITY = "ux_quality" | |
| PERFORMANCE = "performance" | |
| INTERACTIVITY = "interactivity" | |
| class Issue: | |
| rule_id: str | |
| category: Category | |
| severity: Severity | |
| confidence: float # 0.0–1.0 | |
| message: str | |
| recommendation: str | |
| evidence: str | |
| estimated_time: str # human-readable, e.g. "5 minutes" | |
| estimated_gain: float = field(default=0.0) # overall score points; set by scoring engine | |
| why: str = "" # why this issue matters to users (Learning Mode) | |
| references: list[str] = field(default_factory=list) # products/specs that do it right | |
| fix_snippet: str | None = None # ready-to-paste CSS or HTML that resolves this issue | |
| selector: str | None = None # CSS selector identifying the offending element | |
| source: str = "rule" # "rule" (deterministic) | "ai_vision" (Module 23) | |
| hidden: bool = False # True = counts for scoring but not shown in issue list | |