fix: нормализация чисел (пробелы/запятые) и дат (DD.MM.YYYY→YYYY-MM-DD)
This commit is contained in:
@@ -63,10 +63,26 @@ class ClassifyMetrics:
|
||||
|
||||
|
||||
def _to_decimal(val) -> Decimal | None:
|
||||
"""Safe conversion to Decimal."""
|
||||
"""Safe conversion to Decimal with number normalization."""
|
||||
if val is None or val == "":
|
||||
return None
|
||||
try:
|
||||
return Decimal(str(val))
|
||||
s = str(val).replace("\xa0", "").replace(" ", "").replace(",", ".")
|
||||
return Decimal(s)
|
||||
except (InvalidOperation, ValueError):
|
||||
return None
|
||||
|
||||
|
||||
def normalize_date(ds: str) -> str | None:
|
||||
"""Normalize date to YYYY-MM-DD. Handles DD.MM.YYYY, YYYY-MM-DD, etc."""
|
||||
if not ds:
|
||||
return None
|
||||
import re
|
||||
# DD.MM.YYYY → YYYY-MM-DD
|
||||
m = re.match(r"(\d{2})\.(\d{2})\.(\d{4})", ds)
|
||||
if m:
|
||||
return f"{m.group(3)}-{m.group(2)}-{m.group(1)}"
|
||||
# YYYY-MM-DD — already canonical
|
||||
if re.match(r"\d{4}-\d{2}-\d{2}", ds):
|
||||
return ds
|
||||
return ds # return as-is if unrecognized format
|
||||
|
||||
Reference in New Issue
Block a user