104 Commits

Author SHA1 Message Date
Claude Agent
fc74cf4d53 feat(mobile-fixes-phase3): Complete US-306 - Restaurare Butoane Export și Filtrare pe Rapoarte
Implemented by Ralph autonomous loop.
Iteration: 6

Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-12 16:51:00 +00:00
Claude Agent
3afd3cd0ec feat(mobile-fixes-phase3): Complete US-303 - FAB pe Pagina Bonuri (Mutare Upload)
Implemented by Ralph autonomous loop.
Iteration: 5

Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-12 16:46:26 +00:00
Claude Agent
f272d55ba4 feat(mobile-fixes-phase3): Complete US-302 - Footer Nav pe toate Paginile de Setări
Implemented by Ralph autonomous loop.
Iteration: 4

Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-12 16:42:59 +00:00
Claude Agent
216475ee87 feat(mobile-fixes-phase3): Complete US-301 - Buton Înapoi în Creare/Editare/Vizualizare Bon
Implemented by Ralph autonomous loop.
Iteration: 3

Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-12 16:40:01 +00:00
Claude Agent
12e11fa44d feat(mobile-fixes-phase3): Complete US-305 - Tab-uri Clienți/Furnizori în Scadențe
Implemented by Ralph autonomous loop.
Iteration: 2

Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-12 16:39:00 +00:00
Claude Agent
edcdce58e2 feat(mobile-fixes-phase3): Complete US-304 - Tab-uri Clienți/Furnizori în Facturi
Implemented by Ralph autonomous loop.
Iteration: 1

Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-12 16:36:25 +00:00
Claude Agent
944b1c6b9e feat(mobile-fixes-phase3): Complete US-308 - Actualizare Hamburger Menu - Grupat pe Categorii
Implemented by Ralph autonomous loop.
Iteration: 2

Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-12 13:41:17 +00:00
Claude Agent
edccf27db1 feat(mobile-fixes-phase3): Complete US-308 - Actualizare Hamburger Menu - Grupat pe Categorii
Implemented by Ralph autonomous loop.
Iteration: 2

Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-12 13:41:03 +00:00
Claude Agent
8ee3da987e feat(mobile-fixes-phase3): Complete US-307 - Restructurare Footer Nav (4 butoane noi)
Implemented by Ralph autonomous loop.
Iteration: 1

Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-12 13:39:23 +00:00
Claude Agent
a5740eaf78 feat(mobile-fixes-phase3): Complete US-307 - Restructurare Footer Nav (4 butoane noi)
Implemented by Ralph autonomous loop.
Iteration: 1

Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-12 13:38:58 +00:00
Claude Agent
b7f442ed33 feat(mobile-navigation-improvements): Complete US-214 - Actualizare Documentație MOBILE_PATTERNS.md
Implemented by Ralph autonomous loop.
Iteration: 14

Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-12 12:45:42 +00:00
Claude Agent
45439a40f9 feat(mobile-navigation-improvements): Complete US-211 - Integrare MobileActionBar în ReceiptCreateUnifiedView
Implemented by Ralph autonomous loop.
Iteration: 13

Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-12 12:42:01 +00:00
Claude Agent
b9dcd66232 feat(mobile-navigation-improvements): Complete US-209 - Butoane Context-Aware în Editare Bon
Implemented by Ralph autonomous loop.
Iteration: 12

Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-12 12:40:29 +00:00
Claude Agent
8cb806e45f feat(mobile-navigation-improvements): Complete US-210 - Creare MobileActionBar Component
Implemented by Ralph autonomous loop.
Iteration: 11

Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-12 12:38:10 +00:00
Claude Agent
4c5d2956d8 feat(mobile-navigation-improvements): Complete US-213 - Actualizare Hamburger Menu în toate paginile
Implemented by Ralph autonomous loop.
Iteration: 10

Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-12 12:36:45 +00:00
Claude Agent
dc137711ae feat(mobile-navigation-improvements): Complete US-207 - Actualizare MobileBottomNav cu link Setări
Implemented by Ralph autonomous loop.
Iteration: 9

Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-12 12:28:03 +00:00
Claude Agent
a56b000b76 feat(mobile-navigation-improvements): Complete US-212 - Quick Links în Dashboard Mobile
Implemented by Ralph autonomous loop.
Iteration: 8

Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-12 12:23:50 +00:00
Claude Agent
921826fc87 feat(mobile-navigation-improvements): Complete US-203 - Dashboard KPIs Only View
Implemented by Ralph autonomous loop.
Iteration: 7

Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-12 12:23:00 +00:00
Claude Agent
701cabb8a4 feat(mobile-navigation-improvements): Complete US-205 - Creare Pagină Facturi Detaliate
Implemented by Ralph autonomous loop.
Iteration: 6

Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-12 12:21:23 +00:00
Claude Agent
c972e706ab feat(mobile-navigation-improvements): Complete US-204 - Creare Pagină Analiză Scadențe
Implemented by Ralph autonomous loop.
Iteration: 5

Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-12 12:14:24 +00:00
Claude Agent
55b8e9e937 feat(mobile-navigation-improvements): Complete US-206 - Creare Pagină Hub Setări
Implemented by Ralph autonomous loop.
Iteration: 4

Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-12 12:12:24 +00:00
Claude Agent
9d97d72d4d feat(mobile-navigation-improvements): Complete US-208 - Actualizare Router cu noile rute
Implemented by Ralph autonomous loop.
Iteration: 3

Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-12 12:09:57 +00:00
Claude Agent
1e459cc7fe feat(mobile-navigation-improvements): Complete US-202 - MobileDrawerMenu Material Design cu Profil
Implemented by Ralph autonomous loop.
Iteration: 2

Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-12 12:07:29 +00:00
Claude Agent
1084314db9 feat(mobile-navigation-improvements): Complete US-201 - MobileBottomNav activ pe Dashboard
Implemented by Ralph autonomous loop.
Iteration: 1

Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-12 12:05:02 +00:00
Claude Agent
9ea8dd22ac feat(unified-mobile-material-design): Complete US-119 - Actualizare claude-learn-frontend.md cu pattern-uri noi
Implemented by Ralph autonomous loop.
Iteration: 7

Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-12 11:21:35 +00:00
Claude Agent
7b3491b7b6 feat(unified-mobile-material-design): Complete US-117 - Actualizare CLAUDE.md cu reguli Mobile Development
Implemented by Ralph autonomous loop.
Iteration: 6

Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-12 11:20:26 +00:00
Claude Agent
4d656e89af feat(unified-mobile-material-design): Complete US-116 - Actualizare DESIGN_TOKENS.md cu MD3 Tokens
Implemented by Ralph autonomous loop.
Iteration: 5

Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-12 11:19:21 +00:00
Claude Agent
fdec2ae81d feat(unified-mobile-material-design): Complete US-115 - Actualizare CSS_PATTERNS.md cu Mobile Material Design
Implemented by Ralph autonomous loop.
Iteration: 4

Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-12 11:17:28 +00:00
Claude Agent
8d1d1d643d feat(unified-mobile-material-design): Complete US-118 - Creare MOBILE_PATTERNS.md documentație
Implemented by Ralph autonomous loop.
Iteration: 3

Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-12 11:16:15 +00:00
Claude Agent
20c45a1f1e feat(unified-mobile-material-design): Complete US-113 - Batch Actions per Module contextuale
Implemented by Ralph autonomous loop.
Iteration: 2

Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-12 11:12:51 +00:00
Claude Agent
25af73dae2 feat(unified-mobile-material-design): Complete US-111 - CacheStatsView Mobile Material Design
Implemented by Ralph autonomous loop.
Iteration: 1

Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-12 11:10:08 +00:00
Claude Agent
3cb95e1183 feat(unified-mobile-material-design): Complete US-110 - ServerLogsView Mobile Material Design
Implemented by Ralph autonomous loop.
Iteration: 14

Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-12 10:19:03 +00:00
Claude Agent
936e7aa755 feat(unified-mobile-material-design): Complete US-109 - BankCashRegisterView Mobile Material Design
Implemented by Ralph autonomous loop.
Iteration: 13

Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-12 10:16:15 +00:00
Claude Agent
1584d7ae61 feat(unified-mobile-material-design): Complete US-108 - TrialBalanceView Mobile Material Design
Implemented by Ralph autonomous loop.
Iteration: 12

Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-12 10:13:33 +00:00
Claude Agent
fb0334e270 feat(unified-mobile-material-design): Complete US-107 - InvoicesView Mobile Material Design
Implemented by Ralph autonomous loop.
Iteration: 11

Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-12 10:11:07 +00:00
Claude Agent
1e6981d2d2 feat(unified-mobile-material-design): Complete US-106 - Dashboard Mobile cu Swipeable KPI Cards
Implemented by Ralph autonomous loop.
Iteration: 10

Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-12 10:07:38 +00:00
Claude Agent
99ceeeff0a feat(unified-mobile-material-design): Complete US-112 - Creare BottomSheet.vue component pentru filtre
Implemented by Ralph autonomous loop.
Iteration: 9

Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-12 10:04:31 +00:00
Claude Agent
8448f4c37e feat(unified-mobile-material-design): Complete US-105 - Adăugare buton Înapoi în editare bon
Implemented by Ralph autonomous loop.
Iteration: 8

Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-12 10:03:01 +00:00
Claude Agent
45eedde9be feat(unified-mobile-material-design): Complete US-104 - Eliminare buton delete duplicat din header tabel
Implemented by Ralph autonomous loop.
Iteration: 7

Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-12 10:00:18 +00:00
Claude Agent
fb84cbc4f0 feat(unified-mobile-material-design): Complete US-103 - Refactor ReceiptsListView să folosească componente comune
Implemented by Ralph autonomous loop.
Iteration: 5

Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-12 09:55:34 +00:00
Claude Agent
58ff6efebc feat(unified-mobile-material-design): Complete US-102 - Definire MD3 color tokens în CSS
Implemented by Ralph autonomous loop.
Iteration: 4

Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-12 09:50:55 +00:00
Claude Agent
e73fac8e1d feat(unified-mobile-material-design): Complete US-101c - Creare MobileSelectionFooter.vue component
Implemented by Ralph autonomous loop.
Iteration: 3

Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-12 09:49:15 +00:00
Claude Agent
b86aa6c5d2 feat(unified-mobile-material-design): Complete US-101b - Creare MobileBottomNav.vue component
Implemented by Ralph autonomous loop.
Iteration: 2

Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-12 09:47:50 +00:00
Claude Agent
dfbaca2477 feat(unified-mobile-material-design): Complete US-101a - Creare MobileTopBar.vue component
Implemented by Ralph autonomous loop.
Iteration: 1

Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-12 09:46:30 +00:00
Claude Agent
7b3541403f feat(data-entry): Bulk Receipt Upload cu Mobile UX Android Nativ
## Funcționalități Principale

### Bulk Upload & Processing
- Drag & drop pentru upload bonuri multiple oriunde pe pagină
- Batch processing cu job queue și worker pool
- Real-time updates via SSE (Server-Sent Events) cu fallback polling
- Duplicate detection via SHA-256 file hash
- Auto-retry pentru job-uri failed
- Cancel individual jobs sau batch complet

### Mobile UX - Android Native Style
- Top bar fixă cu hamburger, titlu centrat, acțiuni (search/filter)
- Bottom navigation cu 4 tab-uri (Bonuri, Upload, Rapoarte, Setări)
- FAB (Floating Action Button) cu hide/show on scroll
- Filter chips orizontal scrollabile
- Selecție multiplă prin long-press (500ms)
- Select All + Bulk Delete cu confirmare
- Layout Android pentru Create/Edit/View bon (Gmail compose style)

### Bug Fixes
- Refresh individual via SSE în loc de refresh total pagină
- Bonurile cu eroare OCR rămân vizibile pentru editare manuală
- Afișare nume fișier original pentru toate bonurile
- Upload stabil pe mobil (fix race condition File API)
- Păstrare ordine bonuri la refresh (nu se reordonează)

### Backend
- SSE endpoint pentru status updates real-time
- Bulk delete endpoint cu partial success
- Auto-cleanup bonuri failed după 7 zile
- Batch model cu tracking complet

### Testing
- E2E tests cu Playwright
- Unit tests pentru bulk upload, auto-create, cleanup

## Commits Squashed: 43 user stories (US-001 → US-043)
## Branch: ralph/bulk-receipt-upload
## Timp dezvoltare: ~3 zile (Ralph autonomous)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-12 08:33:17 +00:00
Claude Agent
b4a226409c feat(data-entry): Add unified receipt form with OCR confidence tracking
New unified receipt creation system with:
- UnifiedReceiptForm component with inline OCR preview and confidence indicators
- Compact upload zone with drag-drop and camera support
- TVA and Payment fields with dynamic add/remove
- Supplier dual-field with autocomplete and OCR hint
- Receipt form sections with collapsible auxiliary data

Backend OCR improvements:
- Add confidence_tva and confidence_payment to extraction results
- Update TVA extraction to return confidence scores
- Include TVA (15%) and payment (10%) in overall_confidence calculation

Also includes:
- CSS design system rules documentation
- Port check helper function for service scripts
- Expanded design tokens documentation in CLAUDE.md

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-08 21:48:37 +00:00
Claude Agent
28f259cd05 fix(ocr): Fix store profile extraction patterns and module loading
Major fixes to OCR store profiles for Romanian receipt extraction:

- Fix ProfileRegistry module path resolution (was loading 0 profiles)
- Add multiline TVA extraction for Brick, Electrobering, Gama Ink
- Add "CARTE CREDIT" payment detection for OMV/SOCAR gas stations
- Handle OCR artifacts: TVA→TUA, "-"→"4", I→L in CUI markers
- Add client CUI patterns for Brick receipts
- Add profile selection logging to ocr_extractor.py
- Create test script for all 29 PDFs (test_all_profiles.py)

Test results: 13/29 passing (improved from 9/29)
Remaining failures are primarily OCR quality issues.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-07 09:40:58 +00:00
Claude Agent
099556213d feat(ocr): Add modular store profiles with hot-reload support
## Store Profiles System
- Add ProfileRegistry for CUI-based profile lookup
- Add BaseStoreProfile with generic extraction patterns
- Implement hot-reload via POST /api/data-entry/ocr/profiles/reload

## 12 Store Profiles
- LIDL: Multi-rate TVA (A, B, C, D codes)
- OMV, SOCAR: B2B with client CUI, YYYY.MM.DD dates
- BRICK, DEDEMAN: Standard TVA, e-factura support
- KINETERRA, BEST PRINT: Non-VAT payers (returns [])
- STEPOUT MARKET: TVA 5% (books/reduced rate)
- UNLIMITED KEYS: NUMERAR payment detection
- GAMA INK, ELECTROBERING, PICTUS VELUM: Standard TVA

## Flexible TVA Patterns
- All patterns use (\d{1,2})% to accept any rate
- Supports historical (19%, 9%, 5%) and current (21%, 11%)

## Payment Methods Fix
- Fixed base.py to support multiple payments of same type
- Changed deduplication from method-only to (method, amount) tuple
- Returns separate entries for split payments

## Tools
- Add generate_store_profile.py for automatic profile generation
- Analyzes PDFs via OCR API and detects patterns

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-06 23:07:07 +00:00
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
c5e051ad80 feat: Migrate to ultrathin monolith architecture
Consolidate 3 separate applications (reports-app, data-entry-app, telegram-bot) into a unified
architecture with single backend and frontend:

Backend Changes:
- Unified FastAPI backend at backend/ with modular structure
- Modules: reports, data_entry, telegram in backend/modules/
- Centralized config.py and main.py with all routers registered
- Single worker mode (--workers 1) for Telegram bot compatibility
- Shared Oracle connection pool and JWT authentication
- Unified requirements.txt and environment configuration

Frontend Changes:
- Single Vue.js SPA with module-based routing
- Unified frontend at src/ with modules in src/modules/{reports,data-entry}/
- Shared components and stores in src/shared/
- Error boundaries for module isolation
- Dual API proxy in Vite for module communication

Infrastructure:
- New unified startup scripts: start-prod.sh, start-test.sh, start-backend.sh
- Environment templates: .env.dev.example, .env.test.example, .env.prod.example
- Updated deployment scripts for Windows IIS
- Simplified SSH tunnel management

Documentation:
- Comprehensive CLAUDE.md with architecture overview
- Module-specific docs in docs/{data-entry,telegram}/
- Architecture decision records in docs/ARCHITECTURE-DECISIONS.md
- Deployment guides consolidated in deployment/windows/docs/

This migration reduces complexity, improves maintainability, and enables easier
deployment while maintaining all existing functionality.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-29 23:48:14 +02:00