# Handover: Curățare Cod ROA2WEB ## Context Am analizat arhitectura ROA2WEB cu 3 agenți de explorare și am identificat 4 acțiuni de curățare cu randament mare și risc minim. **Plan detaliat**: `/home/claude/.claude/plans/immutable-chasing-flute.md` ## Prompt pentru /ralph:prd ``` Implementează curățarea codului ROA2WEB conform planului din /home/claude/.claude/plans/immutable-chasing-flute.md Obiective: 1. Elimină store duplication - șterge src/modules/reports/stores/sharedStores.js și src/modules/data-entry/stores/sharedStores.js, mută instantierea în App.vue 2. Creează factory pentru API services - src/shared/services/createApiService.js și simplifică api.js din module 3. Fă dependențele OCR opționale - adaugă variabile în .env (OCR_ENABLE_PADDLEOCR, OCR_ENABLE_TESSERACT), implementează lazy loading în OCR service, mută deps în requirements opțional 4. Consolidează CSS design tokens - unifică variables.css, tokens.css, md3-tokens.css într-un singur design-tokens.css Constrângeri: - NU schimba arhitectura (layered architecture rămâne) - NU modifica auth middleware, cache decorator, oracle pool - Testează după fiecare modificare: app pornește, login funcționează, dark mode arată corect Ordinea execuției: 1. [15 min] Store duplication 2. [30 min] API factory 3. [30 min] OCR dependencies opționale (lazy loading via .env) 4. [1 oră] CSS tokens Impact așteptat: -150 linii cod duplicat, OCR deps opționale via .env, -2 fișiere CSS, startup mai rapid ``` ## Fișiere Cheie de Referință ### De Șters - `src/modules/reports/stores/sharedStores.js` - `src/modules/data-entry/stores/sharedStores.js` ### De Creat - `src/shared/services/createApiService.js` - `src/assets/css/core/design-tokens.css` (consolidat) ### De Modificat - `src/App.vue` - adaugă instantiere stores - `src/modules/reports/services/api.js` - simplifică cu factory - `src/modules/data-entry/services/api.js` - simplifică cu factory - `backend/requirements.txt` - mută paddleocr/tesseract în secțiune opțională (comentate) - `backend/.env` - adaugă `OCR_ENABLE_PADDLEOCR=false` și `OCR_ENABLE_TESSERACT=false` - `backend/modules/data_entry/services/ocr_service.py` - implementează lazy loading pentru OCR engines - `src/assets/css/main.css` - actualizează importuri CSS ## Verificare Finală După implementare, verifică: - [ ] `./start.sh prod` pornește fără erori - [ ] Login funcționează - [ ] Un raport se încarcă corect - [ ] O chitanță se poate crea - [ ] Dark mode arată corect pe toate paginile - [ ] `pip install -r backend/requirements.txt` reușește - [ ] Cu `OCR_ENABLE_PADDLEOCR=false` - app pornește fără PaddleOCR instalat - [ ] Cu `OCR_ENABLE_PADDLEOCR=true` - OCR fallback funcționează (dacă e instalat) ## Note - Arhitectura actuală (Layered) este potrivită pentru echipa de 1-2 developeri - Nu este nevoie de Vertical Slice sau Feature-Sliced Design - Acțiunile opționale (split receiptStore, simplificare cache) pot fi făcute ulterior