| import re | |
| from error_taxonomy import ERROR_CATEGORIES | |
| COMPILED_PATTERNS = { | |
| cat: [re.compile(p) for p in pats] | |
| for cat, pats in ERROR_CATEGORIES.items() | |
| } | |
| def extract_error_features(log_text: str) -> dict: | |
| result = { | |
| "category": "unknown", | |
| "matched_signals": [], | |
| "line_numbers": [] | |
| } | |
| for category, patterns in COMPILED_PATTERNS.items(): | |
| for pattern in patterns: | |
| if pattern.search(log_text): | |
| result["category"] = category | |
| result["matched_signals"].append(pattern.pattern) | |
| result["line_numbers"] = re.findall(r"line (\d+)", log_text) | |
| return result | |