# roa2web-service-auto > **Prototip de învățare + hedge de risc de talent.** NU un produs, NU un MVP, NU un > angajament de livrare către clienți. Acest repo explorează o singură întrebare strategică: **Poate stack-ul web (Python / FastAPI async / Vue 3 / PrimeVue) să conducă logica de business Oracle end-to-end prin proceduri PL/SQL — păstrând PL/SQL ca strat durabil?** Domeniul ales pentru probă: **gestiune comenzi service auto** (atelier reparații auto) — cel mai sigur teren de testare, pe o schemă Oracle dedicată de test (`MARIUSM_AUTO`), fără nicio atingere a producției. ## De ce există (driver-ul strategic) Visual FoxPro (VFP) e o limbă moartă. ERP-ul care alimentează 4 clienți de lungă durată e scris în VFP + Oracle, iar **nu se mai pot angaja programatori dispuși să învețe VFP** → risc de talent care se acumulează an de an. Migrarea la Postgres nu e 1:1 (25 de ani de PL/SQL, sinonime cross-schema, arhitectură tenant-per-schemă). Deci calea realistă de hedge este: > **Rămâi pe Oracle, mută stratul de UI + business logic pe Python/Vue, păstrează PL/SQL > ca strat durabil.** Service auto e locul cu cel mai mic risc unde se poate proba dacă această cale funcționează. Hedge-ul rezolvă jumătatea de stack unde **există** forță de muncă (Python+Vue+integrare), NU problema angajării de specialiști PL/SQL. ## Ce probează concret (învățarea reală) Prototipul confirmă sau infirmă 6 ipoteze. Dacă oricare eșuează cu un răspuns **clar**, prototipul s-a încheiat cu succes — learning obținut, decizie clară, zero cod irosit. | # | Ipoteză | Status / referință | |---|---------|--------------------| | 1 | `python-oracledb` async apelează curat PL/SQL cu params IN+OUT | `poc/`, `week1-notes.md` | | 2 | `session_callback` pentru `CURRENT_SCHEMA` nu leak-uiește între requests concurente | `week5-session-callback.md` | | 3 | Grants „EXECUTE pe SP, zero acces direct la tabele" țin în practică | `grants-audit.md`, `week3-auth-audit.md` | | 4 | `RAISE_APPLICATION_ERROR` cu diacritice ajunge în Vue ca eroare user-friendly (encoding corect) | mapare ORA→HTTP în `backend/modules/service_auto/` | | 5 | DX (FastAPI hot-reload + Vite + SSH tunnel Oracle) e acceptabil pt side-work 2-4h/săpt | `week1-notes.md` | | 6 | Auth-ul multi-server existent suportă un server nou **fără modificări la shared code** | `week3-auth-audit.md` | **Livrabilul real NU e ecranul de comandă** — e un **template reutilizabil pentru module Oracle** (`docs/service-auto/template-modul-oracle.md`) + un **decision log** (`docs/service-auto/decision-log.md`). Dacă dovezile sunt pozitive, același pattern se aplică modulului următor. ## Ce e în scope vs NU **În scope** (prototip): 1 ecran (`ComandaNoua.vue`) → 1 SP de scriere → insert într-un tabel dedicat de comenzi pe `MARIUSM_AUTO` → return ID + număr → Toast. **NU în scope** (zid de scop explicit): cei 4 clienți existenți (rămân pe VFP, zero atingere), migrare scheme, eFactura/ANAF, insert în ACT (registrul jurnal — doar la facturare), facturare, mobile/responsive, e2e Playwright, multi-tenant complet. Detalii în `docs/service-auto/claude-main-design-20260411-rethink.md` (secțiunea „Scope wall"). ## Relația cu roa2web Acest repo e un **fork complet** din [`romfast/roa2web`](https://gitea.romfast.ro/romfast/roa2web) (strămoș comun: commit `b0f4800`). Conține tot codul comun roa2web (auth/JWT, pool Oracle multi-tenant, shell-ul Vue SPA, design tokens, `AsyncAutoComplete`) PLUS modulul service-auto, deci **rulează standalone**. Fix-urile se pot face `cherry-pick` în ambele sensuri. Detalii de proveniență: [`PROVENANCE.md`](PROVENANCE.md). ## Cod specific service-auto | Zonă | Cale | |------|------| | Backend | `backend/modules/service_auto/` (router / service / schemas / tests) | | Frontend | `src/modules/service-auto/` + `src/shared/components/AsyncAutoComplete.vue` | | Oracle (pack-uri, DDL, migrări) | `docs/service-auto/` (`pack_auto.pck`, `pack_sesiune.pck`, `migrations/`) | | POC-uri | `poc/` | | Design, decizii, learnings | `docs/service-auto/` | ## ⚠️ Stare curentă **WIP.** Ultimul commit de dezvoltare moștenit era „modificari in curs nu stiu care este faza" (2026-06-05) — proiectul **nu era la un checkpoint curat** când a fost desprins din roa2web (2026-06-13). Înainte de orice reluare: citește `docs/service-auto/decision-log.md` și notele săptămânale (`week*-notes.md`) ca să reconstruiești faza. Teste auto-raportate la desprindere: 62 passed / 3 skipped (dependente de Oracle live). ## Setup Bază de cod identică cu roa2web — vezi instrucțiunile de pornire din scripturile `start.sh` / `start-backend.sh` / `start-frontend.sh` și `docs/`. Necesită acces la serverul Oracle de test (`MARIUSM_AUTO`) prin user-ul tehnic `ROA_WEB`.