Implemented by Ralph autonomous loop. Iteration: 1 Co-Authored-By: Claude <noreply@anthropic.com>
15 KiB
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.vuecreată î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
/settingssau/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-metricsaccesibil 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
- [REQ-001] Toate paginile mobile TREBUIE să aibă MobileBottomNav vizibil
- [REQ-002] Hamburger menu TREBUIE să fie MobileDrawerMenu pe mobil
- [REQ-003] Dashboard mobil afișează DOAR KPIs + quick links
- [REQ-004] Setări din footer navighează la Settings Hub
- [REQ-005] Editare bon are butoane context-aware bazate pe status
- [REQ-006] Noile pagini (Scadențe, Facturi, Settings) au MobileTopBar + MobileBottomNav
- [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ă
- US-202: MobileDrawerMenu
- US-210: MobileActionBar
Faza 2: Router & Pagini Noi
- US-208: Router updates
- US-206: Settings Hub
- US-204: Maturity Analysis View
- US-205: Detailed Invoices View
Faza 3: Dashboard & Navigare
- US-201: Dashboard cu MobileBottomNav
- US-203: Dashboard KPIs Only
- US-212: Quick Links
- US-207: Update MobileBottomNav link Setări
Faza 4: Hamburger Menu Integration
- US-213: Hamburger menu în toate paginile
Faza 5: Editare Bon
- US-209: Butoane context-aware
- US-211: MobileActionBar în ReceiptCreateUnifiedView
Faza 6: Documentație
- US-214: Update MOBILE_PATTERNS.md