Files
roa2web-service-auto/docs/data-entry/REQUIREMENTS.md
Marius Mutu 9008876b16 chore: Remove obsolete microservices directories and update all references
- 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>
2025-12-30 12:08:20 +02:00

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