feat: Add A-Z filter for clients/suppliers in Telegram bot
- Add A-Z alphabetical filter keyboard for clients and suppliers lists (same pattern as company selection, without emoji) - Increase clients/suppliers list pagination from 10 to 20 items per page - Remove emoji from company A-Z filter button for consistency - Add 6 new callback handlers: clients_alpha_menu, clients_alpha:LETTER, clients_alpha_page:PAGE:LETTER, and supplier equivalents - Dashboard service and models updates - Telegram bot: email handlers, auth, DB operations, internal API improvements - Frontend: dashboard cards updates (CashFlow, Clienti, Furnizori, Treasury) - Frontend: SolduriCompactCard and CollapsibleCard improvements - DashboardView enhancements - start.sh and run-with-restart.sh script updates - IIS web.config and service worker updates Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -1,69 +0,0 @@
|
||||
# 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
|
||||
Reference in New Issue
Block a user