Implemented by Ralph autonomous loop. Iteration: 13 Co-Authored-By: Claude <noreply@anthropic.com>
254 lines
10 KiB
JSON
254 lines
10 KiB
JSON
{
|
|
"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": true,
|
|
"notes": "Completed in iteration 9"
|
|
},
|
|
{
|
|
"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": true,
|
|
"notes": "Completed in iteration 10"
|
|
},
|
|
{
|
|
"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": true,
|
|
"notes": "Completed in iteration 11"
|
|
},
|
|
{
|
|
"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": true,
|
|
"notes": "Completed in iteration 12"
|
|
},
|
|
{
|
|
"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": true,
|
|
"notes": "Completed in iteration 13"
|
|
},
|
|
{
|
|
"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": ""
|
|
}
|
|
]
|
|
}
|