fix(ping): raporteaza mediul RAR efectiv al contului, nu ancora globala

GET /v1/ping intorcea settings.rar_env (mediul global al serverului, ex.
"prod") in campul `mediu`, desi contul poate opera pe alt mediu. Un cont cu
doar creds de test primea "prod", iar clientul ROAAUTO afisa badge rosu
PRODUCTIE desi prezentarile ruleaza in test. Acum `mediu` = rar_env_efectiv
al contului (doar din mediile disponibile = activate + cu creds), cu fallback
pe ancora globala doar cand contul nu are niciun mediu disponibil.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Claude Agent
2026-07-11 19:03:23 +00:00
parent 37172ae2f9
commit 0a9ad71cdd

View File

@@ -21,6 +21,7 @@ from ...auth import _extract_key, account_for_key, resolve_account_id
from ...config import get_settings from ...config import get_settings
from ...db import get_connection from ...db import get_connection
from ...mapping import account_or_default from ...mapping import account_or_default
from ...rar_env import rar_env_efectiv
router = APIRouter(prefix="/v1", tags=["integrare"]) router = APIRouter(prefix="/v1", tags=["integrare"])
@@ -35,7 +36,8 @@ def ping(
Intoarce: Intoarce:
account_id — contul rezolvat din cheie (sau 1 in dev fara cheie) account_id — contul rezolvat din cheie (sau 1 in dev fara cheie)
mediu — "test" / "prod" (settings.rar_env) mediu — mediul RAR efectiv al contului ("test"/"prod"),
nu ancora globala settings.rar_env
autentificat_cu_cheie — True daca cererea a venit cu o cheie API reala valida autentificat_cu_cheie — True daca cererea a venit cu o cheie API reala valida
are_creds_rar — True daca contul are creds RAR stocate pe cel putin un mediu (test sau prod) are_creds_rar — True daca contul are creds RAR stocate pe cel putin un mediu (test sau prod)
are_creds_test — True daca contul are creds RAR pentru mediul Testare are_creds_test — True daca contul are creds RAR pentru mediul Testare
@@ -62,7 +64,8 @@ def ping(
conn = get_connection() conn = get_connection()
try: try:
row = conn.execute( row = conn.execute(
"SELECT rar_creds_test_enc, rar_creds_prod_enc FROM accounts WHERE id=?", (aid,) "SELECT rar_test_enabled, rar_prod_enabled, rar_creds_test_enc, "
"rar_creds_prod_enc, rar_env_default FROM accounts WHERE id=?", (aid,)
).fetchone() ).fetchone()
finally: finally:
conn.close() conn.close()
@@ -71,9 +74,15 @@ def ping(
are_creds_prod = bool(row and row["rar_creds_prod_enc"]) are_creds_prod = bool(row and row["rar_creds_prod_enc"])
are_creds_rar = are_creds_test or are_creds_prod are_creds_rar = are_creds_test or are_creds_prod
# mediu = mediul RAR EFECTIV al contului (REQ-DEFAULT), nu ancora globala
# settings.rar_env: un cont cu doar creds de test trebuie sa raporteze "test"
# chiar daca serverul ruleaza global pe "prod". Fallback pe ancora globala doar
# cand contul nu are niciun mediu disponibil (rar_env_efectiv -> None).
mediu_efectiv = (rar_env_efectiv(row) if row else None) or settings.rar_env
return JSONResponse({ return JSONResponse({
"account_id": aid, "account_id": aid,
"mediu": settings.rar_env, "mediu": mediu_efectiv,
"autentificat_cu_cheie": autentificat_cu_cheie, "autentificat_cu_cheie": autentificat_cu_cheie,
"are_creds_rar": are_creds_rar, "are_creds_rar": are_creds_rar,
"are_creds_test": are_creds_test, "are_creds_test": are_creds_test,