feat(mobile-fixes-phase3): Complete US-307 - Restructurare Footer Nav (4 butoane noi)
Implemented by Ralph autonomous loop. Iteration: 1 Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
253
scripts/ralph/archive/prd-phase2-20260112-133438.json
Normal file
253
scripts/ralph/archive/prd-phase2-20260112-133438.json
Normal file
@@ -0,0 +1,253 @@
|
||||
{
|
||||
"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": true,
|
||||
"notes": "Completed in iteration 14"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"projectName": "mobile-navigation-improvements",
|
||||
"projectName": "mobile-fixes-phase3",
|
||||
"branchName": "ralph/unified-mobile-md",
|
||||
"description": "Extinderea navigării mobile cu Dashboard split, Settings Hub, MobileDrawerMenu și butoane context-aware",
|
||||
"description": "Corectări navigare mobilă: footer restructurat, tab-uri Clienți/Furnizori, FAB pe Bonuri, hamburger grupat",
|
||||
"cssRules": {
|
||||
"documentation": [
|
||||
"docs/ONBOARDING_CSS.md",
|
||||
@@ -14,10 +14,9 @@
|
||||
"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"
|
||||
"Mobile: tab-uri pentru switch Clienți/Furnizori"
|
||||
],
|
||||
"mobileLayoutTokens": {
|
||||
"topBarHeight": "56px",
|
||||
@@ -29,225 +28,189 @@
|
||||
},
|
||||
"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ă",
|
||||
"id": "US-307",
|
||||
"title": "Restructurare Footer Nav (4 butoane noi)",
|
||||
"description": "Ca utilizator mobil vreau footer navigation cu: Dashboard | Bonuri | Facturi | Setări",
|
||||
"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",
|
||||
"MobileBottomNav cu 4 butoane: Dashboard, Bonuri, Facturi, Setări",
|
||||
"Dashboard: icon pi-home, 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"
|
||||
],
|
||||
"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",
|
||||
"id": "US-308",
|
||||
"title": "Actualizare Hamburger Menu - Grupat pe Categorii",
|
||||
"description": "Ca utilizator mobil vreau meniul hamburger organizat pe categorii clare",
|
||||
"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",
|
||||
"MobileDrawerMenu.vue restructurat cu secțiuni vizuale",
|
||||
"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 ADMINISTRARE: Setări → /settings",
|
||||
"Separatori vizuali între secțiuni",
|
||||
"Header cu logo, Footer cu profil utilizator și logout",
|
||||
"npm run build passes"
|
||||
],
|
||||
"passes": true,
|
||||
"notes": "Completed in iteration 2"
|
||||
"passes": false,
|
||||
"notes": ""
|
||||
},
|
||||
{
|
||||
"id": "US-208",
|
||||
"title": "Actualizare Router cu noile rute",
|
||||
"description": "Ca developer vreau router-ul configurat pentru noile pagini",
|
||||
"id": "US-304",
|
||||
"title": "Tab-uri Clienți/Furnizori în Facturi",
|
||||
"description": "Ca utilizator vreau pagina Facturi să aibă tab-uri pentru Clienți și Furnizori",
|
||||
"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",
|
||||
"InvoicesView.vue modificat cu tab-uri: Clienți | Furnizori",
|
||||
"Tab-uri sub MobileTopBar (design Material, full-width)",
|
||||
"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"
|
||||
],
|
||||
"passes": true,
|
||||
"notes": "Completed in iteration 3"
|
||||
"passes": false,
|
||||
"notes": ""
|
||||
},
|
||||
{
|
||||
"id": "US-206",
|
||||
"title": "Creare Pagină Hub Setări",
|
||||
"description": "Ca utilizator vreau o pagină centrală cu toate opțiunile de setări",
|
||||
"id": "US-305",
|
||||
"title": "Tab-uri Clienți/Furnizori în Scadențe",
|
||||
"description": "Ca utilizator vreau pagina Scadențe să aibă tab-uri pentru Clienți și Furnizori",
|
||||
"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)",
|
||||
"MaturityAnalysisView.vue modificat cu tab-uri: Clienți | Furnizori",
|
||||
"Tab-uri sub MobileTopBar (design Material, full-width)",
|
||||
"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 și buton ← Înapoi",
|
||||
"MobileBottomNav activ",
|
||||
"npm run build passes"
|
||||
],
|
||||
"passes": true,
|
||||
"notes": "Completed in iteration 4"
|
||||
"passes": false,
|
||||
"notes": ""
|
||||
},
|
||||
{
|
||||
"id": "US-204",
|
||||
"title": "Creare Pagină Analiză Scadențe",
|
||||
"description": "Ca utilizator vreau o pagină dedicată pentru analiza scadențelor clienți/furnizori",
|
||||
"id": "US-301",
|
||||
"title": "Buton Înapoi în Creare/Editare/Vizualizare Bon",
|
||||
"description": "Ca utilizator mobil vreau buton ← Înapoi în MobileTopBar pe pagina de bon",
|
||||
"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",
|
||||
"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"
|
||||
],
|
||||
"passes": true,
|
||||
"notes": "Completed in iteration 5"
|
||||
"passes": false,
|
||||
"notes": ""
|
||||
},
|
||||
{
|
||||
"id": "US-205",
|
||||
"title": "Creare Pagină Facturi Detaliate",
|
||||
"description": "Ca utilizator vreau o pagină dedicată pentru tabelul facturilor detaliate",
|
||||
"id": "US-302",
|
||||
"title": "Footer Nav pe toate Paginile de Setări",
|
||||
"description": "Ca utilizator mobil vreau MobileBottomNav pe toate paginile din secțiunea Setări",
|
||||
"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",
|
||||
"OCRMetricsView.vue include MobileBottomNav cu Setări activ",
|
||||
"CacheStatsView.vue include MobileBottomNav cu Setări activ",
|
||||
"ServerLogsView.vue include MobileBottomNav cu Setări activ",
|
||||
"TelegramAdminView.vue include MobileBottomNav cu Setări activ (dacă există)",
|
||||
"SettingsHubView.vue include MobileBottomNav cu Setări activ",
|
||||
"npm run build passes"
|
||||
],
|
||||
"passes": true,
|
||||
"notes": "Completed in iteration 6"
|
||||
"passes": false,
|
||||
"notes": ""
|
||||
},
|
||||
{
|
||||
"id": "US-203",
|
||||
"title": "Dashboard KPIs Only View",
|
||||
"description": "Ca utilizator mobil vreau Dashboard-ul principal să arate doar KPI cards pentru acces rapid",
|
||||
"id": "US-303",
|
||||
"title": "FAB pe Pagina Bonuri (Mutare Upload)",
|
||||
"description": "Ca utilizator mobil vreau funcția Upload să fie în butonul FAB (+) pe pagina Bonuri",
|
||||
"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)",
|
||||
"ReceiptsListView.vue are buton FAB (+) în colțul dreapta-jos",
|
||||
"Click pe FAB deschide meniu popup: Bon Nou | Upload Bulk",
|
||||
"FAB poziționat deasupra MobileBottomNav (bottom: 72px)",
|
||||
"Bon Nou navighează la /data-entry/receipts/new",
|
||||
"Upload Bulk navighează la /data-entry/bulk-upload",
|
||||
"FAB vizibil doar pe mobil (isMobile)",
|
||||
"npm run build passes"
|
||||
],
|
||||
"passes": true,
|
||||
"notes": "Completed in iteration 7"
|
||||
"passes": false,
|
||||
"notes": ""
|
||||
},
|
||||
{
|
||||
"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",
|
||||
"id": "US-306",
|
||||
"title": "Restaurare Butoane Export și Filtrare pe Rapoarte",
|
||||
"description": "Ca utilizator mobil vreau butoane de export și filtrare pe toate rapoartele",
|
||||
"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ă)",
|
||||
"InvoicesView.vue: buton Export (pi-download) și Filtrare (pi-filter) în MobileTopBar actions",
|
||||
"TrialBalanceView.vue: buton Export și Filtrare în MobileTopBar actions",
|
||||
"BankCashRegisterView.vue: buton Export și Filtrare în MobileTopBar actions",
|
||||
"ReceiptsListView.vue: buton Export și Filtrare în MobileTopBar actions",
|
||||
"MaturityAnalysisView.vue: buton Export și Filtrare în MobileTopBar actions",
|
||||
"Click pe Filtrare deschide BottomSheet cu filtrele paginii",
|
||||
"npm run build passes"
|
||||
],
|
||||
"passes": true,
|
||||
"notes": "Completed in iteration 8"
|
||||
"passes": false,
|
||||
"notes": ""
|
||||
},
|
||||
{
|
||||
"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",
|
||||
"id": "US-309",
|
||||
"title": "Cleanup Dashboard Mobile",
|
||||
"description": "Ca utilizator mobil vreau Dashboard-ul să afișeze doar KPIs fără quick-links",
|
||||
"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",
|
||||
"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"
|
||||
],
|
||||
"passes": true,
|
||||
"notes": "Completed in iteration 9"
|
||||
"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",
|
||||
"id": "US-310",
|
||||
"title": "Actualizare Router cu Modificările",
|
||||
"description": "Ca developer vreau router-ul actualizat pentru a funcționa cu noile pagini",
|
||||
"priority": 10,
|
||||
"acceptanceCriteria": [
|
||||
"Toate paginile cu MobileTopBar: click pe ☰ deschide MobileDrawerMenu",
|
||||
"MobileDrawerMenu înlocuiește vechiul Sidebar pe mobil",
|
||||
"Desktop păstrează navigarea existentă",
|
||||
"Rută /reports/invoices → InvoicesView funcțională",
|
||||
"Rută /reports/maturity-analysis → MaturityAnalysisView funcțională",
|
||||
"Rutele existente păstrate: /reports/trial-balance, /reports/bank-cash, /reports/detailed-invoices",
|
||||
"Cleanup rute nefolosite dacă există",
|
||||
"Toate rutele lazy loaded",
|
||||
"npm run build passes"
|
||||
],
|
||||
"passes": true,
|
||||
"notes": "Completed in iteration 10"
|
||||
"passes": false,
|
||||
"notes": ""
|
||||
},
|
||||
{
|
||||
"id": "US-210",
|
||||
"title": "Creare MobileActionBar Component",
|
||||
"description": "Ca developer vreau componentă reutilizabilă pentru butoane de acțiune pe mobil",
|
||||
"id": "US-311",
|
||||
"title": "Actualizare Documentație MOBILE_PATTERNS.md",
|
||||
"description": "Ca developer viitor vreau documentația actualizată cu modificările din Phase 3",
|
||||
"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",
|
||||
"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"
|
||||
],
|
||||
"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": true,
|
||||
"notes": "Completed in iteration 14"
|
||||
"passes": false,
|
||||
"notes": ""
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -1,90 +1,17 @@
|
||||
# Ralph Progress Log - Phase 2
|
||||
Started: Mon Jan 12 12:03:01 PM UTC 2026
|
||||
Project: mobile-navigation-improvements
|
||||
# Ralph Progress Log - Phase 3
|
||||
Started: Mon Jan 12 01:35:36 PM UTC 2026
|
||||
Project: mobile-fixes-phase3
|
||||
Branch: ralph/unified-mobile-md (continuing)
|
||||
User Stories: 14 (US-201 to US-214)
|
||||
User Stories: 11 (US-301 to US-311)
|
||||
---
|
||||
[2026-01-12 12:03:07] Starting Ralph for project: mobile-navigation-improvements
|
||||
[2026-01-12 12:03:07] Max iterations: 100
|
||||
[2026-01-12 12:03:07] === Iteration 1/100 ===
|
||||
[2026-01-12 12:03:07] Working on story: US-201
|
||||
[2026-01-12 12:03:07] Running Claude... (log: /workspace/roa2web/scripts/ralph/logs/iteration_1_US-201.log)
|
||||
[2026-01-12 12:05:02] SUCCESS: Story US-201 passed!
|
||||
[2026-01-12 12:05:02] Changes committed
|
||||
[2026-01-12 12:05:02] Progress: 1/14 stories completed
|
||||
[2026-01-12 12:05:04] === Iteration 2/100 ===
|
||||
[2026-01-12 12:05:04] Working on story: US-202
|
||||
[2026-01-12 12:05:04] Running Claude... (log: /workspace/roa2web/scripts/ralph/logs/iteration_2_US-202.log)
|
||||
[2026-01-12 12:07:29] SUCCESS: Story US-202 passed!
|
||||
[2026-01-12 12:07:29] Changes committed
|
||||
[2026-01-12 12:07:29] Progress: 2/14 stories completed
|
||||
[2026-01-12 12:07:31] === Iteration 3/100 ===
|
||||
[2026-01-12 12:07:31] Working on story: US-208
|
||||
[2026-01-12 12:07:31] Running Claude... (log: /workspace/roa2web/scripts/ralph/logs/iteration_3_US-208.log)
|
||||
[2026-01-12 12:09:57] SUCCESS: Story US-208 passed!
|
||||
[2026-01-12 12:09:57] Changes committed
|
||||
[2026-01-12 12:09:57] Progress: 3/14 stories completed
|
||||
[2026-01-12 12:09:59] === Iteration 4/100 ===
|
||||
[2026-01-12 12:09:59] Working on story: US-206
|
||||
[2026-01-12 12:09:59] Running Claude... (log: /workspace/roa2web/scripts/ralph/logs/iteration_4_US-206.log)
|
||||
[2026-01-12 12:12:24] SUCCESS: Story US-206 passed!
|
||||
[2026-01-12 12:12:24] Changes committed
|
||||
[2026-01-12 12:12:24] Progress: 4/14 stories completed
|
||||
[2026-01-12 12:12:26] === Iteration 5/100 ===
|
||||
[2026-01-12 12:12:26] Working on story: US-204
|
||||
[2026-01-12 12:12:26] Running Claude... (log: /workspace/roa2web/scripts/ralph/logs/iteration_5_US-204.log)
|
||||
[2026-01-12 12:14:24] SUCCESS: Story US-204 passed!
|
||||
[2026-01-12 12:14:24] Changes committed
|
||||
[2026-01-12 12:14:24] Progress: 5/14 stories completed
|
||||
[2026-01-12 12:14:26] === Iteration 6/100 ===
|
||||
[2026-01-12 12:14:26] Working on story: US-205
|
||||
[2026-01-12 12:14:26] Running Claude... (log: /workspace/roa2web/scripts/ralph/logs/iteration_6_US-205.log)
|
||||
[2026-01-12 12:21:23] SUCCESS: Story US-205 passed!
|
||||
[2026-01-12 12:21:24] Changes committed
|
||||
[2026-01-12 12:21:24] Progress: 6/14 stories completed
|
||||
[2026-01-12 12:21:26] === Iteration 7/100 ===
|
||||
[2026-01-12 12:21:26] Working on story: US-203
|
||||
[2026-01-12 12:21:26] Running Claude... (log: /workspace/roa2web/scripts/ralph/logs/iteration_7_US-203.log)
|
||||
[2026-01-12 12:23:00] SUCCESS: Story US-203 passed!
|
||||
[2026-01-12 12:23:00] Changes committed
|
||||
[2026-01-12 12:23:00] Progress: 7/14 stories completed
|
||||
[2026-01-12 12:23:02] === Iteration 8/100 ===
|
||||
[2026-01-12 12:23:02] Working on story: US-212
|
||||
[2026-01-12 12:23:02] Running Claude... (log: /workspace/roa2web/scripts/ralph/logs/iteration_8_US-212.log)
|
||||
[2026-01-12 12:23:50] SUCCESS: Story US-212 passed!
|
||||
[2026-01-12 12:23:50] Changes committed
|
||||
[2026-01-12 12:23:50] Progress: 8/14 stories completed
|
||||
[2026-01-12 12:23:52] === Iteration 9/100 ===
|
||||
[2026-01-12 12:23:52] Working on story: US-207
|
||||
[2026-01-12 12:23:52] Running Claude... (log: /workspace/roa2web/scripts/ralph/logs/iteration_9_US-207.log)
|
||||
[2026-01-12 12:28:03] SUCCESS: Story US-207 passed!
|
||||
[2026-01-12 12:28:03] Changes committed
|
||||
[2026-01-12 12:28:03] Progress: 9/14 stories completed
|
||||
[2026-01-12 12:28:05] === Iteration 10/100 ===
|
||||
[2026-01-12 12:28:05] Working on story: US-213
|
||||
[2026-01-12 12:28:05] Running Claude... (log: /workspace/roa2web/scripts/ralph/logs/iteration_10_US-213.log)
|
||||
[2026-01-12 12:36:45] SUCCESS: Story US-213 passed!
|
||||
[2026-01-12 12:36:45] Changes committed
|
||||
[2026-01-12 12:36:45] Progress: 10/14 stories completed
|
||||
[2026-01-12 12:36:47] === Iteration 11/100 ===
|
||||
[2026-01-12 12:36:47] Working on story: US-210
|
||||
[2026-01-12 12:36:47] Running Claude... (log: /workspace/roa2web/scripts/ralph/logs/iteration_11_US-210.log)
|
||||
[2026-01-12 12:38:10] SUCCESS: Story US-210 passed!
|
||||
[2026-01-12 12:38:10] Changes committed
|
||||
[2026-01-12 12:38:10] Progress: 11/14 stories completed
|
||||
[2026-01-12 12:38:12] === Iteration 12/100 ===
|
||||
[2026-01-12 12:38:12] Working on story: US-209
|
||||
[2026-01-12 12:38:12] Running Claude... (log: /workspace/roa2web/scripts/ralph/logs/iteration_12_US-209.log)
|
||||
[2026-01-12 12:40:29] SUCCESS: Story US-209 passed!
|
||||
[2026-01-12 12:40:29] Changes committed
|
||||
[2026-01-12 12:40:29] Progress: 12/14 stories completed
|
||||
[2026-01-12 12:40:31] === Iteration 13/100 ===
|
||||
[2026-01-12 12:40:31] Working on story: US-211
|
||||
[2026-01-12 12:40:31] Running Claude... (log: /workspace/roa2web/scripts/ralph/logs/iteration_13_US-211.log)
|
||||
[2026-01-12 12:42:01] SUCCESS: Story US-211 passed!
|
||||
[2026-01-12 12:42:01] Changes committed
|
||||
[2026-01-12 12:42:01] Progress: 13/14 stories completed
|
||||
[2026-01-12 12:42:03] === Iteration 14/100 ===
|
||||
[2026-01-12 12:42:03] Working on story: US-214
|
||||
[2026-01-12 12:42:03] Running Claude... (log: /workspace/roa2web/scripts/ralph/logs/iteration_14_US-214.log)
|
||||
[2026-01-12 12:45:42] SUCCESS: Story US-214 passed!
|
||||
[2026-01-12 13:35:41] Starting Ralph for project: mobile-fixes-phase3
|
||||
[2026-01-12 13:35:41] Max iterations: 100
|
||||
[2026-01-12 13:35:41] === Iteration 1/100 ===
|
||||
[2026-01-12 13:35:41] Working on story: US-307
|
||||
[2026-01-12 13:35:41] Running Claude... (log: /workspace/roa2web/scripts/ralph/logs/iteration_1_US-307.log)
|
||||
[2026-01-12 13:35:46] Starting Ralph for project: mobile-fixes-phase3
|
||||
[2026-01-12 13:35:46] Max iterations: 100
|
||||
[2026-01-12 13:35:46] === Iteration 1/100 ===
|
||||
[2026-01-12 13:35:46] Working on story: US-307
|
||||
[2026-01-12 13:35:46] Running Claude... (log: /workspace/roa2web/scripts/ralph/logs/iteration_1_US-307.log)
|
||||
[2026-01-12 13:38:58] SUCCESS: Story US-307 passed!
|
||||
|
||||
Reference in New Issue
Block a user