Implemented by Ralph autonomous loop. Iteration: 1 Co-Authored-By: Claude <noreply@anthropic.com>
227 lines
9.0 KiB
JSON
227 lines
9.0 KiB
JSON
{
|
|
"projectName": "ui-fixes-phase6",
|
|
"branchName": "ralph/ui-fixes-phase6",
|
|
"description": "UI/UX Fixes Phase 6 - Menu Consistency & Mobile Improvements + Phase 5 Regressions Fix",
|
|
"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/)",
|
|
"Mobile: toate paginile folosesc MobileTopBar + MobileBottomNav",
|
|
"Mobile: filtrele se pun în BottomSheet, NU inline",
|
|
"Mobile: v-if='isMobile' pentru componente mobile-only",
|
|
"Desktop: v-if='!isMobile' pentru componente desktop-only"
|
|
],
|
|
"mobileLayoutTokens": {
|
|
"topBarHeight": "56px",
|
|
"bottomNavHeight": "56px",
|
|
"fabSize": "56px",
|
|
"fabBottomOffset": "72px",
|
|
"touchTargetMin": "48px"
|
|
}
|
|
},
|
|
"referenceFiles": {
|
|
"designReference": "src/modules/reports/views/InvoicesView.vue",
|
|
"mobileComponents": [
|
|
"src/shared/components/mobile/MobileTopBar.vue",
|
|
"src/shared/components/mobile/MobileDrawerMenu.vue",
|
|
"src/shared/components/mobile/MobileBottomNav.vue",
|
|
"src/shared/components/mobile/BottomSheet.vue",
|
|
"src/shared/components/mobile/MobileSelectionFooter.vue"
|
|
]
|
|
},
|
|
"userStories": [
|
|
{
|
|
"id": "US-601",
|
|
"title": "Adăugare Secțiune Analize în Sidebar Desktop",
|
|
"description": "Ca utilizator desktop, vreau să văd secțiunea Analize în sidebar-ul din stânga",
|
|
"priority": 1,
|
|
"acceptanceCriteria": [
|
|
"Completed"
|
|
],
|
|
"passes": true,
|
|
"notes": "Completed in Phase 6"
|
|
},
|
|
{
|
|
"id": "US-602",
|
|
"title": "Tab-uri Clienți/Furnizori în Pagina Scadențe",
|
|
"description": "Ca utilizator, vreau să pot comuta între Clienți și Furnizori folosind tab-uri",
|
|
"priority": 2,
|
|
"acceptanceCriteria": [
|
|
"Completed"
|
|
],
|
|
"passes": true,
|
|
"notes": "Completed in Phase 6"
|
|
},
|
|
{
|
|
"id": "US-603",
|
|
"title": "Implementare Pagină Facturi Detaliate",
|
|
"description": "Ca utilizator, vreau să văd facturi detaliate când accesez Analize > Facturi Detaliate",
|
|
"priority": 3,
|
|
"acceptanceCriteria": [
|
|
"Completed"
|
|
],
|
|
"passes": true,
|
|
"notes": "Completed in Phase 6"
|
|
},
|
|
{
|
|
"id": "US-604",
|
|
"title": "Toggle Temă cu 3 Stări în Meniul Mobil",
|
|
"description": "Ca utilizator mobil, vreau selectorul de temă să fie un singur buton toggle cu 3 stări",
|
|
"priority": 4,
|
|
"acceptanceCriteria": [
|
|
"Completed"
|
|
],
|
|
"passes": true,
|
|
"notes": "Completed in Phase 6"
|
|
},
|
|
{
|
|
"id": "US-605",
|
|
"title": "Companie/Perioadă Colapsabile în Meniul Mobil",
|
|
"description": "Ca utilizator mobil, vreau secțiunile Companie și Perioadă din meniu să fie colapsabile",
|
|
"priority": 5,
|
|
"acceptanceCriteria": [
|
|
"Completed"
|
|
],
|
|
"passes": true,
|
|
"notes": "Completed in Phase 6 - NOTE: Reverted in US-703"
|
|
},
|
|
{
|
|
"id": "US-606",
|
|
"title": "Layout Scrollabil Unificat în Meniul Mobil",
|
|
"description": "Ca utilizator mobil, vreau întregul meniu hamburger să fie într-o singură zonă scrollabilă",
|
|
"priority": 6,
|
|
"acceptanceCriteria": [
|
|
"Completed"
|
|
],
|
|
"passes": true,
|
|
"notes": "Completed in Phase 6"
|
|
},
|
|
{
|
|
"id": "US-607",
|
|
"title": "Secțiune Utilizator Compactă în Meniul Mobil",
|
|
"description": "Ca utilizator mobil, vreau secțiunea de utilizator să fie mai compactă",
|
|
"priority": 7,
|
|
"acceptanceCriteria": [
|
|
"Completed"
|
|
],
|
|
"passes": true,
|
|
"notes": "Completed in Phase 6"
|
|
},
|
|
{
|
|
"id": "US-608",
|
|
"title": "Fix Buton FAB SpeedDial în Lista Bonuri",
|
|
"description": "Ca utilizator mobil, vreau butonul + din lista bonuri să afișeze un meniu SpeedDial",
|
|
"priority": 8,
|
|
"acceptanceCriteria": [
|
|
"Completed"
|
|
],
|
|
"passes": true,
|
|
"notes": "Completed in Phase 6 - BUT REGRESSION: SpeedDial not imported!"
|
|
},
|
|
{
|
|
"id": "US-609",
|
|
"title": "Buton Resetează pe Toate Paginile cu Filtre Mobil",
|
|
"description": "Ca utilizator mobil, vreau butonul Resetează să apară pe toate paginile care au Filtrează",
|
|
"priority": 9,
|
|
"acceptanceCriteria": [
|
|
"Completed"
|
|
],
|
|
"passes": true,
|
|
"notes": "Completed in Phase 6"
|
|
},
|
|
{
|
|
"id": "US-610",
|
|
"title": "Eliminare Spațiu Gol Deasupra Tabelelor",
|
|
"description": "Ca utilizator, vreau să nu existe spațiu gol excesiv între filtre și tabele",
|
|
"priority": 10,
|
|
"acceptanceCriteria": [
|
|
"Completed"
|
|
],
|
|
"passes": true,
|
|
"notes": "Completed in Phase 6"
|
|
},
|
|
{
|
|
"id": "US-701",
|
|
"title": "Reparare SpeedDial FAB pe Lista Bonuri",
|
|
"description": "Ca utilizator pe mobil, vreau să văd butonul + în dreapta jos și să pot crea bonuri noi, pentru că este metoda principală de adăugare bonuri pe mobil",
|
|
"priority": 11,
|
|
"acceptanceCriteria": [
|
|
"SpeedDial este importat corect din 'primevue/speeddial' în ReceiptsListView.vue",
|
|
"Butonul + apare în dreapta jos pe mobil (când nu este în selection mode)",
|
|
"Click pe + deschide opțiunile: Bon Nou Manual, Scanare OCR, Upload în Masă",
|
|
"npm run build passes fără warnings legate de SpeedDial",
|
|
"Verify in browser mobile viewport: FAB vizibil în dreapta jos, click deschide 3 opțiuni"
|
|
],
|
|
"passes": true,
|
|
"notes": "Completed in iteration 1"
|
|
},
|
|
{
|
|
"id": "US-702",
|
|
"title": "Verificare Meniu Acțiuni Per Bon",
|
|
"description": "Ca utilizator, vreau să pot accesa meniul de acțiuni (...) pentru fiecare bon, pentru că trebuie să pot edita, șterge, valida bonurile individual",
|
|
"priority": 12,
|
|
"acceptanceCriteria": [
|
|
"Butonul ... pe fiecare bon deschide meniul popup cu opțiuni",
|
|
"Meniul conține opțiunile corecte în funcție de status (Edit, View, Delete, Approve)",
|
|
"Meniul se poziționează corect pe mobil și desktop (nu iese din viewport)",
|
|
"npm run build passes"
|
|
],
|
|
"passes": false,
|
|
"notes": "Verifică menuItems computed property și toggleMenu funcția (linia 1453)"
|
|
},
|
|
{
|
|
"id": "US-703",
|
|
"title": "Navigare Hamburger pe Paginile Analize",
|
|
"description": "Ca utilizator pe mobil, vreau să văd meniul hamburger pe paginile Analize (nu săgeata înapoi), pentru că trebuie să pot accesa firma, perioada și navigarea din orice pagină",
|
|
"priority": 13,
|
|
"acceptanceCriteria": [
|
|
"MaturityAnalysisView.vue: MobileTopBar folosește :show-menu='true' și @menu-click='showDrawer = true'",
|
|
"DetailedInvoicesView.vue: MobileTopBar folosește :show-menu='true' și @menu-click='showDrawer = true'",
|
|
"Ambele view-uri au MobileDrawerMenu component importat și configurat corect",
|
|
"Click pe hamburger deschide MobileDrawerMenu cu firma, perioada, tema",
|
|
"Pattern identic cu InvoicesView.vue (liniile 4-11, 33-42)",
|
|
"npm run build passes"
|
|
],
|
|
"passes": false,
|
|
"notes": "REVERT NECESAR: S-a schimbat greșit de la show-menu la show-back. Revino la pattern InvoicesView."
|
|
},
|
|
{
|
|
"id": "US-704",
|
|
"title": "Mărire Spațiu Tabel Scadențe",
|
|
"description": "Ca utilizator, vreau să văd mai multe rânduri în tabelul de scadențe fără să scrollez, pentru că acum încap doar 3-4 rânduri",
|
|
"priority": 14,
|
|
"acceptanceCriteria": [
|
|
"În MaturityAnalysisCard.vue: .maturity-list max-height crescut de la 250px la 400px",
|
|
"În MaturityAnalysisCard.vue: @media 768px .maturity-list max-height crescut de la 200px la 350px",
|
|
"min-height pe .tab-content redus pentru a nu forța scroll inutil",
|
|
"Verify in browser desktop: cel puțin 8-10 rânduri vizibile fără scroll intern"
|
|
],
|
|
"passes": false,
|
|
"notes": "CSS current: linia 491 (max-height: 250px), linia 784 (max-height: 200px mobile)"
|
|
},
|
|
{
|
|
"id": "US-705",
|
|
"title": "Reducere Padding și Margin Top Excesiv",
|
|
"description": "Ca utilizator, vreau să văd conținutul imediat fără spațiu gol excesiv în partea de sus, pentru că acum partea de sus are prea mult spațiu nefolosit",
|
|
"priority": 15,
|
|
"acceptanceCriteria": [
|
|
"Reducere margin-bottom pe .page-header în paginile afectate",
|
|
"Verificare și ajustare padding pe .app-container dacă e redundant",
|
|
"Modificările nu afectează negativ layoutul altor pagini",
|
|
"Verificare vizuală în mod desktop și mobil",
|
|
"npm run build passes"
|
|
],
|
|
"passes": false,
|
|
"notes": "Afectează MaturityAnalysisView, DetailedInvoicesView. Folosește design tokens din CSS_PATTERNS.md"
|
|
}
|
|
]
|
|
}
|