- Delete data-entry-app/ (1.6GB), reports-app/ (447MB), .auto-build-data/
- Saved ~1.4GB disk space (64% reduction: 2.2GB → 845MB)
Updated references across 38 files:
- .claude/rules/ paths: backend/modules/, src/modules/
- .claude/commands/validate.md: all validation paths
- docs/ (13 files): data-entry, telegram, README, CLAUDE.md
- scripts/ (3 files): backup-secrets, restore-secrets, test-docker
- security/ (2 files): git_cleanup, SECURITY_PROCEDURES
- deployment/ & shared/: updated all stale comments
All paths now reflect ultrathin monolith architecture:
- Backend: backend/modules/{reports,data_entry,telegram}/
- Frontend: src/modules/{reports,data-entry}/
- Shared: shared/{auth,database,routes}/
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
6.7 KiB
6.7 KiB
Requirements: Data Entry - Bonuri Fiscale (Faza 1)
Obiectiv
Sistem de introducere bonuri fiscale cu:
- OCR automat pentru extragerea datelor din poze bonuri (100% local, fara costuri)
- Upload poze bonuri de la utilizatori
- Generare automata note contabile (staging area)
- Aprobare de contabil inainte de finalizare
- SQLite + ORM (SQLModel) + Migrari (Alembic)
- Pregatit pentru integrare Oracle in Faza 2
Cerinte Functionale
1. Gestiune Bonuri Fiscale
1.1 Creare Bon cu OCR
- Utilizatorul uploadeaza poza bonului fiscal
- OCR extrage automat: suma, data, furnizor, CUI, numar bon
- Utilizatorul verifica si corecteaza datele extrase
- Campuri obligatorii: tip document, directie, data, suma, furnizor, casa/banca
- Campuri optionale: numar bon, serie, descriere
- Tipuri document: Bon Fiscal, Chitanta
- Directii: Cheltuiala (plata), Incasare
1.2 Upload Atasamente
- Suport pentru imagini (JPEG, PNG) si PDF
- Limita dimensiune: 10MB per fisier
- Multiple atasamente per bon
- Previzualizare imagine in UI
1.3 Workflow Aprobare
DRAFT → PENDING_REVIEW → APPROVED/REJECTED → (Faza 2: SYNCED)
- DRAFT: Utilizator completeaza datele
- PENDING_REVIEW: Trimis spre aprobare, sistem genereaza note contabile
- APPROVED: Contabil a aprobat
- REJECTED: Contabil a respins (cu motiv)
- SYNCED: (Faza 2) Sincronizat in Oracle
2. Note Contabile
2.1 Generare Automata
- La trimiterea spre aprobare, sistemul genereaza propuneri note contabile
- Logica bazata pe tip cheltuiala selectat
- Include calcul TVA automat (19%)
2.2 Editare de Contabil
- Contabilul poate modifica conturile propuse
- Poate adauga/sterge linii
- Modificarile sunt logate
2.3 Tipuri Cheltuieli Predefinite
| Tip Cheltuiala | Cont Debit | TVA | Descriere |
|---|---|---|---|
| Combustibil | 6022 | 4426 (19%) | Benzina, motorina |
| Materiale consumabile | 6028 | 4426 (19%) | Diverse materiale |
| Rechizite birou | 6024 | 4426 (19%) | Papetarie, toner |
| Telefonie | 626 | 4426 (19%) | Telefon, internet |
| Parcare | 6022 | 4426 (19%) | Taxe parcare |
| Alimentatie | 6028 | - | Fara TVA deductibila |
| Transport | 624 | 4426 (19%) | Taxi, transport |
| Altele | 628 | 4426 (19%) | Alte cheltuieli |
3. Roluri si Permisiuni
3.1 Utilizator Standard
- Creare bonuri noi (DRAFT)
- Editare bonuri proprii in DRAFT
- Trimitere spre aprobare
- Vizualizare status bonuri proprii
3.2 Contabil (Rol Aprobare)
- Toate permisiunile utilizator
- Vizualizare toate bonurile in asteptare
- Aprobare/Respingere bonuri
- Editare note contabile propuse
- Aprobare in masa
4. Nomenclatoare
Preluate din Oracle (read-only):
- Parteneri: Furnizori si clienti
- Conturi: Plan conturi sintetice
- Case/Banci: Registre casa si conturi bancare
- Firme: Lista firme disponibile
Cerinte Non-Functionale
Performance
- Timp raspuns API < 200ms (fara upload)
- Upload fisiere < 5s pentru 10MB
- Paginare pentru liste > 50 elemente
Securitate
- Autentificare JWT (shared cu Reports module)
- Validare MIME type pentru fisiere
- Sanitizare nume fisiere
- Acces bazat pe rol
Scalabilitate
- Arhitectura pregatita pentru Oracle (Faza 2)
- Separare clara intre storage local si DB
- API design RESTful consistent
API Endpoints
Bonuri
POST /api/receipts/ # Creare bon
GET /api/receipts/ # Lista bonuri
GET /api/receipts/{id} # Detalii bon
PUT /api/receipts/{id} # Modificare bon (DRAFT)
DELETE /api/receipts/{id} # Stergere bon (DRAFT)
Workflow
POST /api/receipts/{id}/submit # DRAFT → PENDING
POST /api/receipts/{id}/approve # PENDING → APPROVED
POST /api/receipts/{id}/reject # PENDING → REJECTED
POST /api/receipts/{id}/resubmit # REJECTED → PENDING
Note Contabile
GET /api/receipts/{id}/entries # Lista note
PUT /api/receipts/{id}/entries # Modificare note
POST /api/receipts/{id}/entries/regenerate # Re-generare
Atasamente
POST /api/receipts/{id}/attachments # Upload
GET /api/receipts/{id}/attachments # Lista
GET /api/attachments/{id}/download # Download
DELETE /api/attachments/{id} # Stergere
Nomenclatoare
GET /api/receipts/partners # Furnizori/Clienti
GET /api/receipts/accounts # Conturi
GET /api/receipts/cash-registers # Case/Banci
GET /api/receipts/expense-types # Tipuri cheltuieli
OCR
GET /api/ocr/status # Verifica disponibilitate OCR
POST /api/ocr/extract # Extrage date din imagine uploadata
POST /api/ocr/extract-attachment/{id} # Re-proceseaza atasament existent
OCR - Specificatii Tehnice
Cerinte OCR
- 100% local - fara costuri externe, fara API-uri cloud
- Full-auto - completeaza formularul automat
- Input: doar imagini (JPG/PNG/PDF)
- On-premise - datele sensibile raman locale
Campuri Extrase Automat
| Camp | Tip | Acuratete Estimata |
|---|---|---|
| Suma (TOTAL) | Decimal | 90-95% |
| Data bon | Date | 85-90% |
| Numar bon | String | 80-85% |
| Furnizor | String | 70-80% |
| CUI | String | 85-90% |
| Tip document | Enum | 95%+ |
Stack Tehnic OCR
| Component | Solutie | Justificare |
|---|---|---|
| OCR Engine | PaddleOCR (primar) | 85-92% acuratete, pip install, CPU-friendly |
| Fallback OCR | Tesseract + ron | Suport excelent diacritice romanesti |
| Extractie | Regex/rules-based | Zero dependente extra, rapid (<100ms) |
| Preprocessing | OpenCV | Deskew, binarizare, denoise |
| PDF → Image | pdf2image + Poppler | Standard, fiabil |
Dependente Sistem (Linux)
apt-get install -y \
tesseract-ocr tesseract-ocr-ron tesseract-ocr-eng \
poppler-utils libgl1-mesa-glx libglib2.0-0
User Flow OCR
1. User deschide "Bon Fiscal Nou"
2. User trage/selecteaza poza bonului
3. Click "Proceseaza cu OCR"
4. [Spinner 2-3 sec] "Se proceseaza imaginea..."
5. Apare preview cu date extrase + indicatori incredere
6. User click "Aplica datele" sau corecteaza manual
7. Formularul se completeaza automat
8. User selecteaza tip cheltuiala, casa de marcat
9. User salveaza draft sau trimite pentru aprobare
Criterii de Succes (Faza 1)
- Utilizator poate uploada poza bon + date de baza
- OCR extrage automat date din poza bonului
- Indicatori de incredere pentru date extrase
- Sistem genereaza automat note contabile
- Contabil poate vedea, edita si aproba note
- Bonurile aprobate sunt vizibile in lista
- Migrarile Alembic functioneaza corect
- Poze bonuri se salveaza si se afiseaza corect