Server switch flow now edits the original message at each step
(progress, error, company list) instead of sending separate messages.
"Server schimbat" notice is folded into the company selection header.
Also adds budget debt breakdown to dashboard formatter.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- 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>
- Remove legacy pool support (DSN, env vars fallback)
- Use first registered server when server_id not specified
- Show server dropdown even with single server in ORACLE_SERVERS
- Email login only available for 2+ servers
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add alembic.ini config for data_entry module
- Add migrations.py helper with:
- run_migrations(): runs pending migrations at startup (returns True/False)
- get_current_revision(): returns current schema version for /health
- Integrate migrations in main.py startup_event() BEFORE init_data_entry_db()
- Add data_entry_schema_version to /health endpoint
If migrations fail, backend continues with WARNING (not crash).
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Add UTF-8 encoding setup at the top of backend/main.py to fix
'charmap' codec encoding errors when logging Romanian diacritics
(ă, î, ș, ț) on Windows console.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
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>
- Delete 9 deprecated/obsolete docs (~6,300 lines removed)
- Move test PDFs to tests/fixtures/ocr-samples/
- Create docs/DEPLOYMENT.md as principal guide
- Create tests/ocr-validation/README.md
- Update all refs for ultrathin monolith architecture
- Update OCR tests to use relative paths
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
User Stories Completed:
- US-001: Eliminare SolduriCompactCard de pe Desktop
- US-002: Eliminare Icoane din Header-ul CollapsibleCard
- US-003: Reorganizare TreasuryDualCard - Text Înainte de Grafice
- US-004: Reorganizare ClientiBalanceCard - Text Înainte de Grafice
- US-005: Reorganizare FurnizoriBalanceCard - Text Înainte de Grafice
- US-006: Grafice Colapsabile în TreasuryDualCard
- US-007: Grafice Colapsabile în ClientiBalanceCard
- US-008: Grafice Colapsabile în FurnizoriBalanceCard
- US-009: Grafice Colapsabile în CashFlowMetricCard
Additional Improvements:
- Add cache metadata display (CacheFooter component) for all dashboard cards
- Add @cached decorators to get_monthly_flows and get_indicators_with_sparklines
- Fix financial indicators calculations and sparkline sync
- Add state reset on company change to prevent stale data
- New shared components: CacheFooter.vue, authRedirect.js
- Enhanced FinancialIndicatorsCard with sparklines and period selection
Squashed from branch: ralph/dashboard-desktop-cleanup (11 commits)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This component was imported in DashboardView.vue but never committed.
CollapsibleCard provides an expandable/collapsible card UI pattern used
for Trezorerie, Cash Flow, Clienți, and Furnizori dashboard cards.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Update all 34 indicator descriptions in the Expanded View (Desktop) section
to match the more descriptive Mobile Bottom Sheet format. Each description
now starts with a natural language explanation followed by the formula and
ideal threshold.
Categories updated: Lichiditate, Eficiență, Risc, Cash Flow, Dinamică,
Profitabilitate, and Altman Z-Score.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Implementare completă a card-ului Indicatori Financiari în Dashboard Solduri:
Backend:
- Model FinancialIndicators cu 22+ indicatori organizați pe categorii
- Service cu calcule din VBAL (Lichiditate, Eficiență, Risc, Cash Flow, Dinamică)
- Altman Z-Score cu toate componentele (X1-X4) și valori absolute
- Profitabilitate cu ROA, ROE, Cifra Afaceri, Cheltuieli separate (operaționale/financiare)
- Caching inteligent pe company_id, luna, an
Frontend:
- FinancialIndicatorsCard.vue cu 4 indicatori principali collapsed
- Expanded view grupat pe categorii (desktop + mobile BottomSheet)
- Subindicatori pentru verificare manuală în balanță
- Traduceri complete în română
- Dark mode support complet
- Sparklines cu tooltips
- Responsive design (desktop grid + mobile carousel)
Documentație:
- PRD complet cu specificații și formule
- Descrieri cu conturi din planul contabil român (OMFP 1802/2014)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- SpeedDial: Redus la 2 opțiuni (Bon Nou + Bulk Upload)
- SpeedDial: Eliminat masca gri (:mask="false")
- Bulk Upload: Acum deschide file picker direct (openBulkFileInput)
- Mobile spacing: Eliminat margin-top excesiv pe .mobile-layout
- MaturityAnalysisCard: Redus padding/margin pe mobil
- MaturityAnalysisView: Redus gap pe mobil
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>