Complete implementation of multi-server Oracle database support: Backend: - Multi-pool Oracle with lazy loading per server - Email-to-server cache for automatic server discovery - JWT tokens include server_id claim - /auth/check-identity and /auth/check-email endpoints - /auth/my-servers endpoint for listing user's accessible servers - Server switch with password re-authentication Frontend: - New ServerSelector component for header dropdown - Multi-step login flow (identity → server → password) - Server switching from header with password modal - Mobile drawer menu with server selection - Dark mode support for all new components - URL bookmark support with ?server= query param Scripts: - Unified start.sh replacing start-prod.sh/start-test.sh - Unified ssh-tunnel.sh with multi-server support - Updated status.sh for new architecture Tests: - E2E tests for multi-server and single-server login flows - Backend unit tests for all new endpoints - Oracle multi-pool integration tests Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
3.0 KiB
3.0 KiB
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.jssrc/modules/data-entry/stores/sharedStores.js
De Creat
src/shared/services/createApiService.jssrc/assets/css/core/design-tokens.css(consolidat)
De Modificat
src/App.vue- adaugă instantiere storessrc/modules/reports/services/api.js- simplifică cu factorysrc/modules/data-entry/services/api.js- simplifică cu factorybackend/requirements.txt- mută paddleocr/tesseract în secțiune opțională (comentate)backend/.env- adaugăOCR_ENABLE_PADDLEOCR=falseșiOCR_ENABLE_TESSERACT=falsebackend/modules/data_entry/services/ocr_service.py- implementează lazy loading pentru OCR enginessrc/assets/css/main.css- actualizează importuri CSS
Verificare Finală
După implementare, verifică:
./start.sh prodporneș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.txtreuș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