Implemented by Ralph autonomous loop. Iteration: 1 Co-Authored-By: Claude <noreply@anthropic.com>
18 KiB
PRD: Mobile Navigation Fixes - Phase 3
1. Introducere
Acest PRD continuă îmbunătățirile mobile din fazele anterioare, adresând bugfix-uri și ajustări identificate în testare. Scopul este corectarea navigării, restaurarea funcționalităților lipsă și restructurarea meniului footer pentru o experiență consistentă.
Branch de lucru: ralph/unified-mobile-md (continuare)
2. Obiective
Obiectiv Principal
- Corectare navigare: Buton Înapoi funcțional, footer nav consistent pe toate paginile
Obiective Secundare
- Restaurare butoane export/filtrare pe paginile de rapoarte
- Restructurare footer: Dashboard, Bonuri, Facturi, Setări
- Tab-uri Clienți/Furnizori în Facturi și Scadențe
- Upload doar în butonul + pe pagina Bonuri
Metrici de Succes
- 100% pagini mobile au footer nav funcțional
- Buton Înapoi pe toate paginile de editare/vizualizare
- Export/Filtrare disponibile pe toate rapoartele
3. User Stories
US-301: Buton Înapoi în Creare/Editare/Vizualizare Bon
Ca utilizator mobil Vreau buton ← Înapoi în MobileTopBar pe pagina de bon Pentru că acum nu pot reveni la lista de bonuri fără hamburger menu
Acceptance Criteria:
- ReceiptCreateUnifiedView.vue are MobileTopBar cu showBack=true
- Click pe ← navighează la /data-entry (lista bonuri)
- Funcționează în toate modurile: create, edit, view
- Verify in browser: butonul apare și funcționează
- npm run build passes
US-302: Footer Nav pe toate Paginile de Setări
Ca utilizator mobil Vreau MobileBottomNav pe toate paginile din secțiunea Setări Pentru că unele pagini (OCR Metrics, Cache Stats, Loguri) nu au footer
Acceptance Criteria:
- OCRMetricsView.vue include MobileBottomNav
- CacheStatsView.vue include MobileBottomNav
- ServerLogsView.vue include MobileBottomNav
- TelegramAdminView.vue include MobileBottomNav (dacă există)
- SettingsHubView.vue include MobileBottomNav (verificare)
- Setări activ/highlighted în footer pe aceste pagini
- npm run build passes
US-303: Mutare Upload din Footer în Butonul + pe Bonuri
Ca utilizator mobil Vreau funcția Upload să fie în butonul FAB (+) pe pagina Bonuri Pentru că Upload nu are sens în footer pe alte pagini
Acceptance Criteria:
- MobileBottomNav NU mai are link/buton Upload
- ReceiptsListView.vue are buton FAB (+) în colțul dreapta-jos
- Click pe FAB deschide meniu: "Bon Nou" | "Upload Bulk"
- FAB poziționat deasupra MobileBottomNav (bottom: 72px)
- Verify in browser: FAB apare doar pe pagina Bonuri
- npm run build passes
US-304: Tab-uri Clienți/Furnizori în Facturi
Ca utilizator Vreau pagina Facturi să aibă tab-uri pentru Clienți și Furnizori Pentru că vreau să comut rapid între cele două perspective
Acceptance Criteria:
- InvoicesView.vue modificat cu tab-uri: "Clienți" | "Furnizori"
- Tab-uri în MobileTopBar sau sub el (design Material)
- Switch între tab-uri păstrează filtrele active
- Default: primul tab activ (Clienți)
- URL query param pentru tab activ (?tab=suppliers)
- MobileTopBar cu title "Facturi"
- MobileBottomNav activ (Facturi highlighted)
- npm run build passes
US-305: Tab-uri Clienți/Furnizori în Scadențe
Ca utilizator Vreau pagina Scadențe să aibă tab-uri pentru Clienți și Furnizori Pentru că vreau să comut rapid între cele două perspective
Acceptance Criteria:
- MaturityAnalysisView.vue modificat cu tab-uri: "Clienți" | "Furnizori"
- Tab-uri în MobileTopBar sau sub el (design Material)
- Switch între tab-uri păstrează filtrele active
- Default: primul tab activ (Clienți)
- URL query param pentru tab activ (?tab=suppliers)
- MobileTopBar cu title "Scadențe"
- MobileBottomNav activ (Rapoarte în hamburger menu)
- Buton ← Înapoi în MobileTopBar
- npm run build passes
US-306: Restaurare Butoane Export și Filtrare pe Rapoarte (Mobil)
Ca utilizator mobil Vreau butoane de export și filtrare pe Facturi, Balanță, Casa/Banca, Lista Bonuri Pentru că aceste funcționalități au dispărut în implementarea anterioară
Acceptance Criteria:
- InvoicesView.vue: buton Export în MobileTopBar actions
- InvoicesView.vue: buton Filtrare care deschide BottomSheet
- TrialBalanceView.vue: buton Export în MobileTopBar actions
- TrialBalanceView.vue: buton Filtrare care deschide BottomSheet
- BankCashRegisterView.vue: buton Export în MobileTopBar actions
- BankCashRegisterView.vue: buton Filtrare care deschide BottomSheet
- ReceiptsListView.vue: buton Export în MobileTopBar actions
- ReceiptsListView.vue: buton Filtrare care deschide BottomSheet
- MaturityAnalysisView.vue: buton Export în MobileTopBar actions
- MaturityAnalysisView.vue: buton Filtrare care deschide BottomSheet
- Icons: pi-download (export), pi-filter (filtre)
- npm run build passes
US-307: Restructurare Footer Nav (4 butoane noi)
Ca utilizator mobil Vreau footer navigation cu: Dashboard | Bonuri | Facturi | Setări Pentru că vreau acces rapid la cele mai folosite secțiuni
Acceptance Criteria:
- MobileBottomNav cu 4 butoane: Dashboard, Bonuri, Facturi, Setări
- Dashboard: icon pi-home sau pi-chart-bar, route /dashboard
- Bonuri: icon pi-receipt, route /data-entry
- Facturi: icon pi-file-edit, route /reports/invoices
- Setări: icon pi-cog, route /settings
- Active state corect pe fiecare pagină
- Ștergere link Upload din footer (mutat în FAB)
- npm run build passes
US-308: Actualizare Hamburger Menu - Grupat pe Categorii
Ca utilizator mobil Vreau meniul hamburger organizat pe categorii clare Pentru că vreau să găsesc rapid paginile de care am nevoie
Acceptance Criteria:
- MobileDrawerMenu.vue restructurat cu secțiuni:
- Secțiune "PRINCIPALE":
- Dashboard → /dashboard
- Bonuri → /data-entry
- Secțiune "RAPOARTE":
- Facturi → /reports/invoices
- Balanță → /reports/trial-balance
- Casa și Banca → /reports/bank-cash
- Secțiune "ANALIZE":
- Scadențe → /reports/maturity-analysis
- Facturi Detaliate → /reports/detailed-invoices
- Secțiune "SETĂRI":
- Setări → /settings (hub)
- Separatori vizuali între secțiuni
- Header cu logo
- Footer cu profil utilizator și logout
- npm run build passes
US-309: Cleanup Dashboard Mobile
Ca utilizator mobil Vreau Dashboard-ul să afișeze doar KPIs fără quick-links Pentru că navigarea se face din footer și hamburger menu
Acceptance Criteria:
- DashboardView.vue pe mobil: ștergere quick-link cards (dacă există)
- Doar SwipeableCards cu KPIs pe mobil
- Desktop rămâne neschimbat
- MobileTopBar cu title "Dashboard"
- MobileBottomNav cu Dashboard activ
- npm run build passes
US-310: Actualizare Router cu Modificările
Ca developer Vreau router-ul actualizat pentru noile pagini și modificări Pentru că navigarea trebuie să funcționeze corect
Acceptance Criteria:
- Rută /reports/invoices → InvoicesView (cu tab-uri)
- Rută /reports/maturity-analysis → MaturityAnalysisView (cu tab-uri)
- Rutele existente păstrate: /reports/trial-balance, /reports/bank-cash
- Rutele /reports/detailed-invoices funcționale
- Cleanup rute nefolosite (dacă există)
- Toate rutele lazy loaded
- npm run build passes
US-311: Actualizare Documentație MOBILE_PATTERNS.md
Ca developer viitor Vreau documentația actualizată cu modificările din Phase 3 Pentru că pattern-urile s-au schimbat
Acceptance Criteria:
- Secțiune actualizată: Footer Navigation (Dashboard, Bonuri, Facturi, Setări)
- Secțiune nouă: FAB Pattern pentru acțiuni contextuale
- Secțiune nouă: Tab Pattern pentru switch Clienți/Furnizori
- Secțiune actualizată: Hamburger Menu grupat pe categorii
- Diagrame ASCII actualizate cu noua structură navigare
- npm run build passes
4. Cerințe Funcționale
- [REQ-001] Toate paginile de editare/vizualizare au buton Înapoi în MobileTopBar
- [REQ-002] Footer nav are exact 4 butoane: Dashboard, Bonuri, Facturi, Setări
- [REQ-003] Upload accesibil DOAR din FAB pe pagina Bonuri
- [REQ-004] Facturi cu tab-uri Clienți/Furnizori
- [REQ-005] Scadențe cu tab-uri Clienți/Furnizori
- [REQ-006] Toate rapoartele au butoane Export și Filtrare pe mobil
- [REQ-007] Hamburger menu organizat pe categorii: Principale, Rapoarte, Analize, Setări
- [REQ-008] Dashboard afișează doar KPIs pe mobil
5. Non-Goals (Ce NU facem)
- ❌ Nu modificăm layout-ul desktop
- ❌ Nu adăugăm funcționalități noi în backend
- ❌ Nu schimbăm logica de business
- ❌ Nu modificăm stilurile cardurilor existente
- ❌ Nu implementăm notificări sau animații complexe
- ❌ Nu creăm pagini separate pentru Clienți/Furnizori (folosim tab-uri)
6. Considerații Tehnice
Stack/Tehnologii
- Vue 3 Composition API
- Vue Router pentru navigare
- Componente existente: MobileTopBar, MobileBottomNav, BottomSheet, MobileDrawerMenu
- PrimeVue TabView sau custom tabs pentru Clienți/Furnizori
Patterns de Urmat
- Tab Pattern pentru switch între perspective
- FAB Pattern pentru acțiuni contextuale
- BottomSheet pentru filtre pe mobil
Dependențe
- US-307 trebuie făcut primul (footer restructurare)
- US-304 și US-305 pot fi făcute în paralel (tab-uri)
- US-308 poate fi făcut independent (hamburger menu)
Riscuri Tehnice
- Risc scăzut: Tab-uri în pagini existente pot necesita refactoring
- Mitigare: Folosire PrimeVue TabView sau custom component simplu
7. Considerații UI/UX
Structură Footer Navigation Nouă
┌─────────────────────────────────────────────┐
│ MOBILE BOTTOM NAV (4 butoane) │
├───────────┬───────────┬───────────┬─────────┤
│ Dashboard │ Bonuri │ Facturi │ Setări │
│ 🏠 │ 🧾 │ 📄 │ ⚙️ │
│/dashboard │/data-entry│ /reports/ │/settings│
│ │ │ invoices │ │
└───────────┴───────────┴───────────┴─────────┘
FAB pe Pagina Bonuri
┌─────────────────────────────────────────────┐
│ Lista Bonuri 🔍 📥 ☰ │
├─────────────────────────────────────────────┤
│ │
│ [Bon 1] │
│ [Bon 2] │
│ [Bon 3] │
│ ┌───┐ │
│ │ + │ │ ← FAB
│ └───┘ │
├─────────────────────────────────────────────┤
│ Dashboard │ Bonuri │ Facturi │ Setări │
└─────────────────────────────────────────────┘
Click pe FAB →
┌─────────────────┐
│ 📝 Bon Nou │
│ 📤 Upload Bulk │
└─────────────────┘
Pagina Facturi cu Tab-uri
┌─────────────────────────────────────────────┐
│ Facturi 🔍 📥 ☰ │
├─────────────────────────────────────────────┤
│ ┌─────────────┬─────────────┐ │
│ │ Clienți │ Furnizori │ ← Tab-uri │
│ └─────────────┴─────────────┘ │
├─────────────────────────────────────────────┤
│ │
│ [Factură 1] │
│ [Factură 2] │
│ [Factură 3] │
│ │
├─────────────────────────────────────────────┤
│ Dashboard │ Bonuri │ Facturi │ Setări │
└─────────────────────────────────────────────┘
Pagina Scadențe cu Tab-uri
┌─────────────────────────────────────────────┐
│ ← Scadențe 🔍 📥 ☰ │
├─────────────────────────────────────────────┤
│ ┌─────────────┬─────────────┐ │
│ │ Clienți │ Furnizori │ ← Tab-uri │
│ └─────────────┴─────────────┘ │
├─────────────────────────────────────────────┤
│ │
│ [Scadență 1] │
│ [Scadență 2] │
│ [Scadență 3] │
│ │
├─────────────────────────────────────────────┤
│ Dashboard │ Bonuri │ Facturi │ Setări │
└─────────────────────────────────────────────┘
Hamburger Menu Actualizat (Grupat pe Categorii)
┌─────────────────────────────────────────────┐
│ [Logo ROA2WEB] │
│─────────────────────────────────────────────│
│ PRINCIPALE │
│ 🏠 Dashboard │
│ 🧾 Bonuri │
│─────────────────────────────────────────────│
│ RAPOARTE │
│ 📄 Facturi │
│ 📊 Balanță │
│ 💰 Casa și Banca │
│─────────────────────────────────────────────│
│ ANALIZE │
│ ⏰ Scadențe │
│ 📋 Facturi Detaliate │
│─────────────────────────────────────────────│
│ ADMINISTRARE │
│ ⚙️ Setări │
│─────────────────────────────────────────────│
│ 👤 [Username] │
│ [Logout] │
└─────────────────────────────────────────────┘
8. Success Metrics
- Navigare: 100% pagini cu footer nav funcțional
- Consistență: Tab-uri identice în Facturi și Scadențe
- UX: Max 2 tap-uri pentru orice destinație
- Funcționalitate: Export/Filtre disponibile pe toate rapoartele
9. Open Questions
- Footer: Dashboard, Bonuri, Facturi, Setări - DA
- Hamburger: Grupat pe categorii - DA
- Facturi/Scadențe: Tab-uri Clienți/Furnizori - DA
Implementare Sugerată (Ordinea User Stories)
Faza 1: Infrastructură Navigare
- US-307: Restructurare Footer Nav (4 butoane noi)
- US-308: Actualizare Hamburger Menu - Grupat pe Categorii
Faza 2: Tab-uri Clienți/Furnizori
- US-304: Tab-uri în Facturi
- US-305: Tab-uri în Scadențe
Faza 3: Corectări Navigare
- US-301: Buton Înapoi în editare bon
- US-302: Footer Nav pe paginile de setări
- US-303: FAB pe pagina Bonuri (mutare Upload)
Faza 4: Restaurare Funcționalități
- US-306: Restaurare Export și Filtrare pe rapoarte
Faza 5: Cleanup
- US-309: Cleanup Dashboard Mobile
- US-310: Actualizare Router
Faza 6: Documentație
- US-311: Update MOBILE_PATTERNS.md