# CLAUDE.md ## Project Overview **System:** Import Comenzi Web GoMag → Sistem ROA Oracle Stack: FastAPI + Jinja2 + Bootstrap 5.3 + Oracle PL/SQL + SQLite Documentatie completa: [README.md](README.md) ## Implementare cu TeamCreate **OBLIGATORIU:** Folosim TeamCreate + TaskCreate, NU Agent tool cu subagenti paraleli. Skill-ul `superpowers:dispatching-parallel-agents` NU se aplica in acest proiect. - Team lead citeste TOATE fisierele implicate, creeaza planul - **ASTEAPTA aprobare explicita** de la user inainte de implementare - Task-uri pe fisiere non-overlapping (evita conflicte) - Cache-bust static assets (`?v=N`) la fiecare schimbare UI ## Development Commands ```bash # INTOTDEAUNA via start.sh (seteaza Oracle env vars) ./start.sh # NU folosi uvicorn direct — lipsesc LD_LIBRARY_PATH si TNS_ADMIN ``` ## Testing & CI/CD ```bash # Teste rapide (unit + e2e, ~30s, fara Oracle) ./test.sh ci # Teste complete (totul inclusiv Oracle + sync real + PL/SQL, ~2-3 min) ./test.sh full # Smoke test pe productie (read-only, dupa deploy) ./test.sh smoke-prod --base-url http://79.119.86.134/gomag # Doar un layer specific ./test.sh unit # SQLite CRUD, imports, routes ./test.sh e2e # Browser tests (Playwright) ./test.sh oracle # Oracle integration ./test.sh sync # Sync real GoMag → Oracle ./test.sh qa # API health + responsive + log monitor ./test.sh logs # Doar log monitoring # Validate prerequisites ./test.sh --dry-run ``` **Flow zilnic:** 1. Lucrezi pe branch `fix/*` sau `feat/*` 2. `git push` → pre-push hook ruleaza `./test.sh ci` automat (~30s) 3. Inainte de PR → `./test.sh full` manual (~2-3 min) 4. Dupa deploy pe prod → `./test.sh smoke-prod --base-url http://79.119.86.134/gomag` **Output:** `qa-reports/` — health score, raport markdown, screenshots, baseline comparison. **Markers pytest:** `unit`, `oracle`, `e2e`, `qa`, `sync` ## Reguli critice (nu le incalca) ### Flux import comenzi 1. Download GoMag API → JSON → parse → validate SKU-uri → import Oracle 2. Ordinea: **parteneri** (cauta/creeaza) → **adrese** → **comanda** → **factura cache** 3. SKU lookup: ARTICOLE_TERTI (mapped) are prioritate fata de NOM_ARTICOLE (direct) 4. Complex sets (kituri/pachete): un SKU → multiple CODMAT-uri cu `cantitate_roa`; preturile se preiau din lista de preturi Oracle 5. Comenzi anulate (GoMag statusId=7): verifica daca au factura inainte de stergere din Oracle ### Statusuri comenzi `IMPORTED` / `ALREADY_IMPORTED` / `SKIPPED` / `ERROR` / `CANCELLED` / `DELETED_IN_ROA` - Upsert: `IMPORTED` existent NU se suprascrie cu `ALREADY_IMPORTED` - Recovery: la fiecare sync, comenzile ERROR sunt reverificate in Oracle ### Parteneri - Prioritate: **companie** (PJ, cod_fiscal + registru) daca exista in GoMag, altfel persoana fizica cu **shipping name** - Adresa livrare: intotdeauna GoMag shipping - Adresa facturare: daca shipping ≠ billing person → shipping pt ambele; altfel → billing din GoMag ### Preturi - Dual policy: articolele sunt rutate la `id_pol_vanzare` sau `id_pol_productie` pe baza contului contabil (341/345 = productie) - Daca pretul lipseste, se insereaza automat pret=0 ### Dashboard paginare - Contorul din paginare arata **totalul comenzilor** din perioada selectata (ex: "378 comenzi"), NU doar cele filtrate - Butoanele de filtru (Importat, Omise, Erori, Facturate, Nefacturate, Anulate) arata fiecare cate comenzi are pe langa total - Aceasta este comportamentul dorit: userul vede cate comenzi totale sunt, din care cate importate, cu erori etc. ### Invoice cache - Coloanele `factura_*` pe `orders` (SQLite), populate lazy din Oracle (`vanzari WHERE sters=0`) - Refresh complet: verifica facturi noi + facturi sterse + comenzi sterse din ROA ## Sync articole VENDING → MARIUSM_AUTO ```bash # Dry-run (arată diferențele fără să modifice) python3 scripts/sync_vending_to_mariusm.py # Aplică cu confirmare python3 scripts/sync_vending_to_mariusm.py --apply # Fără confirmare (automatizare) python3 scripts/sync_vending_to_mariusm.py --apply --yes ``` Sincronizează via SSH din VENDING (prod Windows) în MARIUSM_AUTO (dev ROA_CENTRAL): nom_articole (noi by codmat, codmat updatat) + articole_terti (noi, modificate, soft-delete). ## Deploy Windows Vezi [README.md](README.md#deploy-windows)