Files
roa2web-service-auto/README.md
Claude Agent 3a10cc69c0 docs(readme): README orientat pe scop — învățare + hedge VFP, nu produs
Pagina repo-ului arăta README-ul generic roa2web și nu explica ce e
diferit / ce se urmărea. README-ul nou pune scopul pe prima pagină:
prototip de probă „web (Python/Vue) conduce business logic Oracle prin
PL/SQL", driver-ul de risc-talent VFP, cele 6 ipoteze, scope wall,
relația cu roa2web, stare WIP.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-13 11:45:39 +00:00

93 lines
4.8 KiB
Markdown

# 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`.