feat(api): filtru perioada data_de/data_pana pe GET /v1/prezentari
data_prestatie traieste in payload_json, nu e coloana SQL: filtrarea se aplica in Python dupa derivarea prezentarii (fetch scope+status fara LIMIT, filtreaza, apoi LIMIT dupa filtrare), acelasi pattern deja folosit de dashboard-ul web (/_fragments/submissions). Extrage helper-ul iso_date_prefix in payload_view.py ca sa fie partajat intre canalul web si cel API (elimina duplicarea). Format invalid pe data_de/data_pana -> 422. Fara parametri, comportamentul raspunsului ramane identic cu inainte.
This commit is contained in:
@@ -27,7 +27,7 @@ from .. import __version__
|
||||
from .. import errors as _errors
|
||||
from ..auth import rotate_api_key
|
||||
from ..plans import effective_tier as _eff_tier, monthly_usage as _monthly_usage, PLANS as _PLANS
|
||||
from ..payload_view import prezentare_din_payload
|
||||
from ..payload_view import iso_date_prefix as _iso_date_prefix, prezentare_din_payload
|
||||
from ..web.csrf import get_csrf_token, verify_csrf
|
||||
from .labels import (
|
||||
ETICHETA_ULTIMA_AUTENTIFICARE_RAR,
|
||||
@@ -1100,25 +1100,6 @@ def fragment_trimiteri_versiune(request: Request) -> JSONResponse:
|
||||
conn.close()
|
||||
|
||||
|
||||
def _iso_date_prefix(value: object) -> str | None:
|
||||
"""Intoarce primele 10 caractere (YYYY-MM-DD) daca incep cu o data ISO valida, altfel None.
|
||||
|
||||
Permite filtrarea dupa data_prestatie chiar daca valoarea contine ora/minut/secunda
|
||||
(ex. '2026-06-20 14:35:07' sau '2026-06-20T14:35:07') — extrage portiunea de data
|
||||
fara a exclude timestamp-urile. Valori care nu incep cu o data ISO valida
|
||||
(ex. '05.12.2024') intorc None si sunt excluse din filtru.
|
||||
"""
|
||||
s = str(value or "").strip()
|
||||
if len(s) < 10:
|
||||
return None
|
||||
prefix = s[:10]
|
||||
try:
|
||||
datetime.strptime(prefix, "%Y-%m-%d")
|
||||
return prefix
|
||||
except (ValueError, TypeError):
|
||||
return None
|
||||
|
||||
|
||||
# Stari care semnaleaza o problema ce necesita atentia operatorului. Eticheta umana
|
||||
# scurta de pe rand e ne-goala DOAR pe acestea; pe queued/sending/sent e "".
|
||||
_STARI_CU_PROBLEMA = ("error", "needs_data", "needs_mapping")
|
||||
|
||||
Reference in New Issue
Block a user