feat(api): raspuns minim implicit + corelare cerere-raspuns + sugestie cod in raspuns; coloana # in lista trimiteri

- POST /v1/prezentari: camp optional 'raspuns' (minim implicit / complet);
  forma minima = 6 chei fixe (index, submission_id, vehicul, status, motiv,
  id_prezentare), formatul detaliat ramane la cerere
- corelare rezultat<->cerere: index 0-based + ecou vin/nr_inmatriculare
- sugestia principala de cod RAR pe nemapate (GOLD partajat > SILVER >
  embeddings > fuzzy peste prag), in motiv si in nemapate[].sugestie
  (si pe dry-run /valideaza); suggestion-only, nu se aplica automat
- lista Trimiteri: coloana # cu id-ul trimiterii (desktop + mobil)
- README: sectiune 'Mapari si sugestii de cod RAR'; contract actualizat

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Claude Agent
2026-07-09 08:32:55 +00:00
parent c2beede084
commit 3ba35abed2
16 changed files with 239 additions and 20 deletions

View File

@@ -59,6 +59,24 @@ pe semnatura coloanelor, per cont) → **preview** (fiecare rand: `ok` / `needs_
Coloane recunoscute (cu sinonime): `VIN`, `Nr inmatriculare`, `Data prestatie`, `Odometru final`,
`Odometru initial`, `Operatie`, `Observatii`. Fiecare cont poate avea mai multe formate memorate.
## Mapari si sugestii de cod RAR
O operatie fara cod RAR valid (din import sau din API) opreste randul in **Lipsa cod**
(`needs_mapping`) — nimic nu pleaca la RAR pana nu confirma un om codul. Sistemul propune
insa singur un cod ("sugestia principala"), calculat pe loc din denumirea operatiei:
- **Cand:** de fiecare data cand un rand ajunge in `needs_mapping` — sugestia apare imediat
in raspunsul API (`motiv` + `nemapate[].sugestie`), in tab-ul **Mapari** (precompletata
in select) si in `GET /v1/mapari/pending`.
- **Cum (in ordinea increderii):** mapari confirmate de oameni in alte conturi (GOLD partajat) →
clasificari LLM pre-calculate (SILVER) → similaritate semantica (embeddings k-NN) →
potrivire fuzzy pe numele din nomenclatorul RAR. Prima sursa care raspunde castiga;
textele care nu sunt operatii (ITP, taxe, discounturi) nu primesc sugestie.
- **Sugestia NU se aplica singura** — declararea la RAR e definitiva, deci prima asociere
operatie→cod cere confirmarea ta (tab Mapari sau `POST /v1/mapari`). Din acel moment maparea
e memorata: aparitiile viitoare se rezolva automat, iar **toate** trimiterile deja blocate
pe acel cod se deblocheaza pe loc si intra in coada.
## API v1 (curl)
Dev: fara cheie → cont id=1. Productie (`AUTOPASS_REQUIRE_API_KEY=true`): header `X-API-Key: rfak_...`.