# PRD: Mobile Navigation & Dashboard Split Improvements ## 1. Introducere Acest PRD extinde implementarea Material Design mobilă anterioară (`ralph/unified-mobile-md`) cu îmbunătățiri ale navigării și restructurarea Dashboard-ului. Scopul este o experiență de navigare mai intuitivă pe mobil, cu pagini dedicate pentru secțiunile complexe ale Dashboard-ului și un sistem de meniuri consistent. **Branch de lucru:** `ralph/unified-mobile-md` (continuare) ## 2. Obiective ### Obiectiv Principal - **Navigare intuitivă**: Footer nav activ pe toate paginile, hamburger menu Material Design, acces facil la setări ### Obiective Secundare - Dashboard split în 3 pagini pentru performanță și claritate - Butoane context-aware pentru editare/vizualizare bonuri - Pagină hub pentru setări - Profil utilizator în hamburger menu ### Metrici de Succes - 100% pagini cu MobileBottomNav activ - Navigare către orice pagină în max 2 tap-uri - Dashboard load time redus cu 30% (doar KPIs pe pagina principală) ## 3. User Stories --- ### US-201: MobileBottomNav activ pe Dashboard **Ca** utilizator mobil **Vreau** să văd footer navigation și pe Dashboard **Pentru că** acum Dashboard-ul nu are MobileBottomNav și nu pot naviga ușor **Acceptance Criteria:** - [ ] DashboardView.vue include MobileBottomNav component - [ ] Link-ul "Rapoarte" din nav este activ/highlighted pe Dashboard - [ ] MobileTopBar adăugat cu title "Dashboard" - [ ] Verify in browser: navigarea funcționează din Dashboard - [ ] npm run build passes --- ### US-202: Hamburger Menu Material Design cu Profil **Ca** utilizator mobil **Vreau** meniul hamburger să aibă design Material cu secțiune profil **Pentru că** actualul meniu (Sidebar) nu se integrează vizual cu restul interfeței **Acceptance Criteria:** - [ ] Componentă `MobileDrawerMenu.vue` creată în src/shared/components/mobile/ - [ ] Secțiuni: Header cu logo, Navigare principală, Profil utilizator (nume + logout) - [ ] Link-uri navigare: Dashboard, Bonuri, Facturi, Balanță, Trezorerie, Setări - [ ] Active state pe link-ul curent (bazat pe route) - [ ] Animație slide-in de la stânga - [ ] Close pe tap outside sau pe link click - [ ] Dark mode support - [ ] npm run build passes --- ### US-203: Dashboard KPIs Only View **Ca** utilizator mobil **Vreau** Dashboard-ul principal să arate doar KPI cards **Pentru că** încărcarea completă e lentă și vreau acces rapid la overview **Acceptance Criteria:** - [ ] DashboardView.vue pe mobil afișează DOAR: SwipeableCards cu KPIs - [ ] Adăugare 2 carduri quick-link: "Analiză Scadențe →" și "Facturi Detaliate →" - [ ] Click pe quick-link navighează la pagina dedicată - [ ] Desktop rămâne neschimbat (toate secțiunile) - [ ] npm run build passes --- ### US-204: Creare Pagină Analiză Scadențe **Ca** utilizator **Vreau** o pagină dedicată pentru analiza scadențelor clienți/furnizori **Pentru că** e o secțiune complexă care merită pagină separată **Acceptance Criteria:** - [ ] View nou: `src/modules/reports/views/MaturityAnalysisView.vue` - [ ] Route: `/reports/maturity-analysis` - [ ] Conține componenta MaturityAndDetailsCard (partea de analiză) - [ ] MobileTopBar cu title "Analiză Scadențe" și buton ← Înapoi la Dashboard - [ ] MobileBottomNav activ - [ ] npm run build passes --- ### US-205: Creare Pagină Facturi Detaliate **Ca** utilizator **Vreau** o pagină dedicată pentru tabelul facturilor detaliate **Pentru că** tabelul detaliat e complex și merită pagină separată **Acceptance Criteria:** - [ ] View nou: `src/modules/reports/views/DetailedInvoicesView.vue` - [ ] Route: `/reports/detailed-invoices` - [ ] Conține componenta/partea de tabel detaliat din MaturityAndDetailsCard - [ ] MobileTopBar cu title "Facturi Detaliate" și buton ← Înapoi - [ ] MobileBottomNav activ - [ ] Filtre în BottomSheet pe mobil - [ ] npm run build passes --- ### US-206: Creare Pagină Hub Setări **Ca** utilizator **Vreau** o pagină centrală cu toate opțiunile de setări **Pentru că** butonul Setări din footer trebuie să ducă undeva util **Acceptance Criteria:** - [ ] View nou: `src/modules/reports/views/SettingsHubView.vue` - [ ] Route: `/settings` - [ ] Carduri pentru: OCR Setări, Cache Stats, Loguri Server, Telegram (dacă admin) - [ ] MobileTopBar cu title "Setări" - [ ] MobileBottomNav cu Setări activ - [ ] Click pe card navighează la pagina respectivă - [ ] Design responsive (grid 2x2 pe mobil, 4 columns pe desktop) - [ ] npm run build passes --- ### US-207: Actualizare MobileBottomNav cu link Setări **Ca** utilizator **Vreau** butonul Setări din footer să ducă la Hub Setări **Pentru că** acum duce direct la OCR Metrics **Acceptance Criteria:** - [ ] MobileBottomNav: link Setări → `/settings` (nu `/data-entry/ocr-metrics`) - [ ] Icon: pi-cog - [ ] Active state când pe `/settings` sau `/settings/*` sau pagini admin - [ ] Actualizare în toate paginile care folosesc MobileBottomNav - [ ] npm run build passes --- ### US-208: Actualizare Router cu noile rute **Ca** developer **Vreau** router-ul configurat pentru noile pagini **Pentru că** navigarea trebuie să funcționeze **Acceptance Criteria:** - [ ] Rută `/reports/maturity-analysis` → MaturityAnalysisView - [ ] Rută `/reports/detailed-invoices` → DetailedInvoicesView - [ ] Rută `/settings` → SettingsHubView - [ ] Lazy loading pentru toate view-urile noi - [ ] Redirect `/data-entry/ocr-metrics` accesibil din Settings Hub - [ ] npm run build passes --- ### US-209: Butoane Context-Aware în Editare Bon **Ca** utilizator **Vreau** butoanele din editare bon să se schimbe în funcție de starea bonului **Pentru că** acțiunile disponibile diferă pentru draft/pending/approved **Acceptance Criteria:** - [ ] ReceiptCreateUnifiedView detectează starea bonului (draft/pending/approved/rejected) - [ ] **Draft**: Salvează | Submit pentru Aprobare | Șterge - [ ] **Pending**: Salvează | Aprobă | Respinge (dacă are permisiuni) - [ ] **Approved**: doar vizualizare (butoane disabled sau ascunse) - [ ] **Rejected**: Salvează (re-edit) | Re-submit - [ ] Butoane în MobileActionBar fix jos pe mobil - [ ] npm run build passes --- ### US-210: Creare MobileActionBar Component **Ca** developer **Vreau** componentă reutilizabilă pentru butoane de acțiune pe mobil **Pentru că** avem nevoie de bar fix jos cu butoane în mai multe pagini **Acceptance Criteria:** - [ ] Componentă `MobileActionBar.vue` în src/shared/components/mobile/ - [ ] Props: actions (array of {label, icon, severity, handler, disabled}) - [ ] Layout: butoane full-width sau side-by-side (2 butoane) - [ ] Position: fixed bottom, above MobileBottomNav - [ ] Animație: slide-up la mount - [ ] npm run build passes --- ### US-211: Integrare MobileActionBar în ReceiptCreateUnifiedView **Ca** utilizator **Vreau** butoanele de acțiune pentru bon să fie în action bar pe mobil **Pentru că** butoanele actuale sunt în form și nu sunt ușor accesibile **Acceptance Criteria:** - [ ] ReceiptCreateUnifiedView folosește MobileActionBar pe mobil - [ ] Desktop păstrează butoanele în form - [ ] Buton Înapoi în MobileTopBar (deja există din US-105) - [ ] Action bar dispare când se deschide BottomSheet sau alte overlay-uri - [ ] npm run build passes --- ### US-212: Quick Links în Dashboard Mobile **Ca** utilizator **Vreau** carduri clickabile în Dashboard pentru a ajunge la Scadențe și Facturi **Pentru că** trebuie să știu unde găsesc datele detaliate **Acceptance Criteria:** - [ ] După SwipeableCards, 2 carduri: "Analiză Scadențe" și "Facturi Detaliate" - [ ] Design: icon + titlu + săgeată dreaptă (→) - [ ] Click navighează la pagina respectivă - [ ] Doar pe mobil (desktop are totul în aceeași pagină) - [ ] npm run build passes --- ### US-213: Actualizare Hamburger Menu în toate paginile **Ca** utilizator **Vreau** hamburger menu-ul să funcționeze uniform în toată aplicația **Pentru că** acum unele pagini au Sidebar, altele nu au **Acceptance Criteria:** - [ ] Toate paginile cu MobileTopBar: click pe ☰ deschide MobileDrawerMenu - [ ] MobileDrawerMenu înlocuiește vechiul Sidebar pe mobil - [ ] Desktop păstrează navigarea existentă - [ ] npm run build passes --- ### US-214: Actualizare Documentație MOBILE_PATTERNS.md **Ca** developer viitor **Vreau** documentația actualizată cu noile componente și pattern-uri **Pentru că** altfel nu voi ști cum să le folosesc **Acceptance Criteria:** - [ ] Secțiune nouă: MobileDrawerMenu (usage, props) - [ ] Secțiune nouă: MobileActionBar (usage, props) - [ ] Secțiune actualizată: Navigation patterns (footer → settings hub) - [ ] Diagrame ASCII actualizate cu noile rute - [ ] npm run build passes (doar pentru validare că nu s-a stricat nimic) --- ## 4. Cerințe Funcționale 1. [REQ-001] Toate paginile mobile TREBUIE să aibă MobileBottomNav vizibil 2. [REQ-002] Hamburger menu TREBUIE să fie MobileDrawerMenu pe mobil 3. [REQ-003] Dashboard mobil afișează DOAR KPIs + quick links 4. [REQ-004] Setări din footer navighează la Settings Hub 5. [REQ-005] Editare bon are butoane context-aware bazate pe status 6. [REQ-006] Noile pagini (Scadențe, Facturi, Settings) au MobileTopBar + MobileBottomNav 7. [REQ-007] Navigare către orice pagină în max 2 tap-uri ## 5. Non-Goals (Ce NU facem) - ❌ Nu schimbăm layout-ul desktop (doar mobile) - ❌ Nu adăugăm funcționalități noi în backend - ❌ Nu modificăm logica de business pentru bonuri - ❌ Nu schimbăm stilul cardurilor KPI (sunt deja bune) - ❌ Nu implementăm gesture navigation (swipe back) - ❌ Nu adăugăm notificări push ## 6. Considerații Tehnice ### Stack/Tehnologii - Vue 3 Composition API - Vue Router pentru navigare - Componente existente: MobileTopBar, MobileBottomNav, BottomSheet - PrimeVue pentru UI elements ### Patterns de Urmat - Pattern din ReceiptsListView pentru MobileTopBar + MobileBottomNav - BottomSheet pentru filtre pe mobil - isMobile composable pentru condiționare ### Dependențe - US-201, US-202 trebuie făcute înaintea celorlalte (componente de bază) - US-208 (router) trebuie făcut înainte de US-204, US-205, US-206 - US-210 trebuie făcut înainte de US-211 ### Riscuri Tehnice - **Risc mediu**: MaturityAndDetailsCard e complex, split-ul poate fi dificil - Mitigare: Extrage logica în composable reutilizabil - **Risc scăzut**: Schimbarea navigării poate afecta deep links - Mitigare: Păstrăm rutele vechi funcționale (redirect) ## 7. Considerații UI/UX ### Structură Navigare Nouă ``` ┌─────────────────────────────────────────────┐ │ HAMBURGER MENU (MobileDrawerMenu) │ ├─────────────────────────────────────────────┤ │ [Logo ROA2WEB] │ │─────────────────────────────────────────────│ │ 📊 Dashboard │ │ 🧾 Bonuri │ │ 📄 Facturi │ │ 📈 Balanță │ │ 💰 Trezorerie │ │ ⚙️ Setări │ │─────────────────────────────────────────────│ │ 👤 Marius M. │ │ [Logout] │ └─────────────────────────────────────────────┘ ┌─────────────────────────────────────────────┐ │ SETTINGS HUB │ ├─────────────────────────────────────────────┤ │ ┌──────────┐ ┌──────────┐ │ │ │ 🔍 OCR │ │ 📊 Cache │ │ │ │ Setări │ │ Stats │ │ │ └──────────┘ └──────────┘ │ │ ┌──────────┐ ┌──────────┐ │ │ │ 📋 Loguri│ │ 📱Telegram│ │ │ │ Server │ │ Bot │ │ │ └──────────┘ └──────────┘ │ └─────────────────────────────────────────────┘ ┌─────────────────────────────────────────────┐ │ MOBILE ACTION BAR (Editare Bon) │ ├─────────────────────────────────────────────┤ │ Status: DRAFT │ │ ┌─────────────────────────────────────────┐ │ │ │ [Salvează] [Submit Aprobare] │ │ │ └─────────────────────────────────────────┘ │ │ │ │ Status: PENDING │ │ ┌─────────────────────────────────────────┐ │ │ │ [Aprobă] [Respinge] │ │ │ └─────────────────────────────────────────┘ │ └─────────────────────────────────────────────┘ ``` ### Flow Navigare Dashboard ``` Dashboard (KPIs) │ ├── Tap "Analiză Scadențe →" │ └── /reports/maturity-analysis │ └── Tap "Facturi Detaliate →" └── /reports/detailed-invoices ``` ## 8. Success Metrics - **Navigare**: 100% pagini cu footer nav activ - **Performance**: Dashboard load time < 1.5s pe 3G - **UX**: Max 2 tap-uri pentru orice destinație - **Consistency**: 0 pagini fără MobileTopBar pe mobil ## 9. Open Questions - [ ] Settings Hub ar trebui să arate și versiunea aplicației? - [ ] Quick links în Dashboard să aibă și preview cu numere (ex: "5 scadențe azi")? - [ ] MobileDrawerMenu să aibă și opțiune de schimbare temă? --- ## Implementare Sugerată (Ordinea User Stories) ### Faza 1: Componente de Bază 1. US-202: MobileDrawerMenu 2. US-210: MobileActionBar ### Faza 2: Router & Pagini Noi 3. US-208: Router updates 4. US-206: Settings Hub 5. US-204: Maturity Analysis View 6. US-205: Detailed Invoices View ### Faza 3: Dashboard & Navigare 7. US-201: Dashboard cu MobileBottomNav 8. US-203: Dashboard KPIs Only 9. US-212: Quick Links 10. US-207: Update MobileBottomNav link Setări ### Faza 4: Hamburger Menu Integration 11. US-213: Hamburger menu în toate paginile ### Faza 5: Editare Bon 12. US-209: Butoane context-aware 13. US-211: MobileActionBar în ReceiptCreateUnifiedView ### Faza 6: Documentație 14. US-214: Update MOBILE_PATTERNS.md