hackathon-ENGIN/engin/config.py
Jakub Famulski 2 8981ae0a00
All checks were successful
ENGIN CI / Build, test and smoke (push) Successful in 31s
ci: enforce Ruff lint checks
2026-08-25 12:37:41 +02:00

78 lines
2.0 KiB
Python

"""Stable domain and UI configuration kept outside the presentation layer."""
from __future__ import annotations
from dataclasses import dataclass
from benchmark_grouped import (
FAULT_LABELS,
FREQ_COLS,
LABELS,
NOT_APPLICABLE,
SEVERITIES,
)
ALLOWED_ENGINE_SIZES = (8, 12, 16)
MAX_UPLOAD_BYTES = 10 * 1024 * 1024
MAX_MISSING_FRACTION_PER_CYLINDER = 0.50
LABEL_DISPLAY = {
"ok": "Sprawny",
"zakoksowany": "Zakoksowany",
"lejacy": "Lejący",
"pompa": "Pompa",
"iglica": "Iglica",
"unknown": "Nieznana anomalia",
}
SEVERITY_DISPLAY = {
NOT_APPLICABLE: "Nie dotyczy",
"male": "Małe",
"srednie": "Średnie",
"duze": "Duże",
}
LABEL_COLORS = {
"ok": "#38d996",
"zakoksowany": "#f5a524",
"lejacy": "#ff6b57",
"pompa": "#a78bfa",
"iglica": "#28b7d9",
"unknown": "#d56cff",
}
LABEL_ICONS = {
"ok": "",
"zakoksowany": "",
"lejacy": "",
"pompa": "",
"iglica": "",
"unknown": "?",
}
RECOMMENDATIONS = {
"ok": "Brak natychmiastowej interwencji. Kontynuuj standardowy harmonogram kontroli.",
"zakoksowany": "Sprawdź nagar na końcówce wtryskiwacza i jakość rozpylania. Rozważ czyszczenie oraz ponowny pomiar.",
"lejacy": "Skontroluj szczelność wtryskiwacza, przelew i ciśnienie paliwa. Ogranicz dalszą pracę przy dużym nasileniu.",
"pompa": "Zweryfikuj ciśnienie pompy, stabilność zasilania i przewody paliwowe przed wymianą elementów.",
"iglica": "Sprawdź ruch iglicy, opory mechaniczne oraz charakter rozpylania wtryskiwacza.",
"unknown": "Wynik jest anomalny, lecz nie pasuje pewnie do znanych sygnatur. Wykonaj pomiar kontrolny i diagnostykę manualną.",
}
@dataclass(frozen=True)
class AppConfig:
allowed_engine_sizes: tuple[int, ...] = ALLOWED_ENGINE_SIZES
max_upload_bytes: int = MAX_UPLOAD_BYTES
max_missing_fraction_per_cylinder: float = MAX_MISSING_FRACTION_PER_CYLINDER
__all__ = [
"AppConfig",
"FAULT_LABELS",
"FREQ_COLS",
"LABELS",
"NOT_APPLICABLE",
"SEVERITIES",
]