{ "projectName": "mobile-navigation-improvements", "branchName": "ralph/unified-mobile-md", "description": "Extinderea navigării mobile cu Dashboard split, Settings Hub, MobileDrawerMenu și butoane context-aware", "cssRules": { "documentation": [ "docs/ONBOARDING_CSS.md", "docs/DESIGN_TOKENS.md", "docs/CSS_PATTERNS.md", "docs/MOBILE_PATTERNS.md" ], "goldenRules": [ "Folosește DOAR design tokens - NICIODATĂ valori hardcodate", "Verifică CSS_PATTERNS.md înainte de a scrie CSS nou", "Testează în AMBELE teme (light + dark mode)", "NICIODATĂ :deep() în componente (PrimeVue → vendor/)", "NICIODATĂ duplicate CSS (write once, use everywhere)", "Mobile: toate paginile folosesc MobileTopBar + MobileBottomNav", "Mobile: filtrele se pun în BottomSheet, NU inline", "Mobile: selecția afișează acțiuni în footer, NU în header" ], "mobileLayoutTokens": { "topBarHeight": "56px", "bottomNavHeight": "56px", "fabSize": "56px", "fabBottomOffset": "72px", "touchTargetMin": "48px" } }, "userStories": [ { "id": "US-201", "title": "MobileBottomNav activ pe Dashboard", "description": "Ca utilizator mobil vreau să văd footer navigation și pe Dashboard pentru navigare ușoară", "priority": 1, "acceptanceCriteria": [ "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" ], "passes": true, "notes": "Completed in iteration 1" }, { "id": "US-202", "title": "MobileDrawerMenu Material Design cu Profil", "description": "Ca utilizator mobil vreau meniul hamburger să aibă design Material cu secțiune profil", "priority": 2, "acceptanceCriteria": [ "Componentă src/shared/components/mobile/MobileDrawerMenu.vue creată", "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" ], "passes": true, "notes": "Completed in iteration 2" }, { "id": "US-208", "title": "Actualizare Router cu noile rute", "description": "Ca developer vreau router-ul configurat pentru noile pagini", "priority": 3, "acceptanceCriteria": [ "Rută /reports/maturity-analysis → MaturityAnalysisView (lazy loaded)", "Rută /reports/detailed-invoices → DetailedInvoicesView (lazy loaded)", "Rută /settings → SettingsHubView (lazy loaded)", "Redirect /data-entry/ocr-metrics accesibil din Settings Hub", "npm run build passes" ], "passes": true, "notes": "Completed in iteration 3" }, { "id": "US-206", "title": "Creare Pagină Hub Setări", "description": "Ca utilizator vreau o pagină centrală cu toate opțiunile de setări", "priority": 4, "acceptanceCriteria": [ "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" ], "passes": true, "notes": "Completed in iteration 4" }, { "id": "US-204", "title": "Creare Pagină Analiză Scadențe", "description": "Ca utilizator vreau o pagină dedicată pentru analiza scadențelor clienți/furnizori", "priority": 5, "acceptanceCriteria": [ "View nou: src/modules/reports/views/MaturityAnalysisView.vue", "Route: /reports/maturity-analysis", "Conține componenta MaturityAndDetailsCard (partea de analiză scadențe)", "MobileTopBar cu title 'Analiză Scadențe' și buton ← Înapoi la Dashboard", "MobileBottomNav activ", "npm run build passes" ], "passes": true, "notes": "Completed in iteration 5" }, { "id": "US-205", "title": "Creare Pagină Facturi Detaliate", "description": "Ca utilizator vreau o pagină dedicată pentru tabelul facturilor detaliate", "priority": 6, "acceptanceCriteria": [ "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" ], "passes": true, "notes": "Completed in iteration 6" }, { "id": "US-203", "title": "Dashboard KPIs Only View", "description": "Ca utilizator mobil vreau Dashboard-ul principal să arate doar KPI cards pentru acces rapid", "priority": 7, "acceptanceCriteria": [ "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" ], "passes": true, "notes": "Completed in iteration 7" }, { "id": "US-212", "title": "Quick Links în Dashboard Mobile", "description": "Ca utilizator vreau carduri clickabile în Dashboard pentru a ajunge la Scadențe și Facturi", "priority": 8, "acceptanceCriteria": [ "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" ], "passes": true, "notes": "Completed in iteration 8" }, { "id": "US-207", "title": "Actualizare MobileBottomNav cu link Setări", "description": "Ca utilizator vreau butonul Setări din footer să ducă la Hub Setări", "priority": 9, "acceptanceCriteria": [ "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" ], "passes": false, "notes": "" }, { "id": "US-213", "title": "Actualizare Hamburger Menu în toate paginile", "description": "Ca utilizator vreau hamburger menu-ul să funcționeze uniform în toată aplicația", "priority": 10, "acceptanceCriteria": [ "Toate paginile cu MobileTopBar: click pe ☰ deschide MobileDrawerMenu", "MobileDrawerMenu înlocuiește vechiul Sidebar pe mobil", "Desktop păstrează navigarea existentă", "npm run build passes" ], "passes": false, "notes": "" }, { "id": "US-210", "title": "Creare MobileActionBar Component", "description": "Ca developer vreau componentă reutilizabilă pentru butoane de acțiune pe mobil", "priority": 11, "acceptanceCriteria": [ "Componentă src/shared/components/mobile/MobileActionBar.vue creată", "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" ], "passes": false, "notes": "" }, { "id": "US-209", "title": "Butoane Context-Aware în Editare Bon", "description": "Ca utilizator vreau butoanele din editare bon să se schimbe în funcție de starea bonului", "priority": 12, "acceptanceCriteria": [ "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" ], "passes": false, "notes": "" }, { "id": "US-211", "title": "Integrare MobileActionBar în ReceiptCreateUnifiedView", "description": "Ca utilizator vreau butoanele de acțiune pentru bon să fie în action bar pe mobil", "priority": 13, "acceptanceCriteria": [ "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" ], "passes": false, "notes": "" }, { "id": "US-214", "title": "Actualizare Documentație MOBILE_PATTERNS.md", "description": "Ca developer viitor vreau documentația actualizată cu noile componente și pattern-uri", "priority": 14, "acceptanceCriteria": [ "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)" ], "passes": false, "notes": "" } ] }