--- phase: 101-aged-orders-row-highlight plan: 01 subsystem: ui tags: [orders-list, scss, php, visual-alert] requires: - phase: 44-inline-status-change provides: table-list component used for /orders/list provides: - Wizualna flaga wiekowa na liscie zamowien (4-7+ dni) - Opcjonalny `_row_class` na wierszach `components/table-list.php` affects: [] tech-stack: added: [] patterns: - "Row-level class propagowana z controllera przez `_row_class` w danych wiersza `table-list`" key-files: created: [] modified: - resources/views/components/table-list.php - src/Modules/Orders/OrdersController.php - resources/scss/app.scss - public/assets/css/app.css key-decisions: - "Wiek liczony z `ordered_at` (to pole uzywa juz sortowanie/kolumna listy)" - "Poziomy ramki 4..7 hardcoded, starsze niz 7 dni = poziom 7 (nie dalsza eskalacja)" - "Ramka realizowana przez border na — kompatybilna z kolorem tla statusu" patterns-established: - "Kontroler listy moze dodac `_row_class` do rekordu w danych `rows` — `table-list.php` honoruje to jako klase " duration: ~10min started: 2026-04-13 completed: 2026-04-13 --- # Phase 101 Plan 01: Aged Orders Row Highlight Summary **Wiersze zamowien na `/orders/list` starszych niz 4 dni dostaja czerwona ramke o rosnacej intensywnosci (4d=jasna → 7+d=bordowa).** ## Acceptance Criteria Results | Criterion | Status | Notes | |---|---|---| | AC-1: <4 dni brak ramki | Pass | `agedRowClass()` zwraca `''` dla `$ageDays < 4` | | AC-2: 4-7 dni rosnaca intensywnosc | Pass | Klasy `order-row-aged-4..7` z 4 odcieniami czerwieni (#f8b4b4 → #991b1b) | | AC-3: >7 dni = poziom 7 | Pass | `$level = $ageDays >= 7 ? 7 : $ageDays` | | AC-4: Wiek liczony z `ordered_at` | Pass | `floor((time() - strtotime($orderedAt)) / 86400)` | ## Accomplishments - Dodano mechanizm row-class w uniwersalnym `components/table-list.php` (opcjonalny, nie lamie innych list) - OrdersController liczy wiek zamowienia i wystawia klase na wierszu - 4 poziomy SCSS + przebudowany `public/assets/css/app.css` ## Files Created/Modified | File | Change | Purpose | |---|---|---| | `resources/views/components/table-list.php` | Modified | `` honoruje `$row['_row_class']` | | `src/Modules/Orders/OrdersController.php` | Modified | `agedRowClass()` + wpiecie w `toTableRow` | | `resources/scss/app.scss` | Modified | Reguly `.order-row-aged-{4..7}` na `` | | `public/assets/css/app.css` | Rebuild | `npm run build:css` | ## Decisions Made | Decision | Rationale | Impact | |---|---|---| | Border na `` zamiast `` | `` nie rysuje borderu spolnie z `border-collapse`; trzeba na komorkach | Wizualnie spojne, kompatybilne z tlem statusow | | Klasy `order-row-aged-N` zamiast inline style | Zgodne z CLAUDE.md (brak styli w widokach) | Styl zyje w SCSS | | Pole `ordered_at` jako data referencyjna | Uzywane juz w kolumnie listy i sortowaniu | Zero dodatkowego I/O | ## Deviations from Plan | Type | Count | Impact | |---|---|---| | Auto-fixed | 0 | - | | Scope additions | 0 | - | | Deferred | 0 | - | Plan wykonany 1:1. ## Issues Encountered None. ## Next Phase Readiness **Ready:** - Lista zamowien z wizualnym sygnalem zalegajacych zamowien - Wzorzec `_row_class` dostepny dla innych list w table-list.php **Concerns:** - Weryfikacja wizualna pozostaje po stronie uzytkownika (manualny test w przegladarce) **Blockers:** None --- *Phase: 101-aged-orders-row-highlight, Plan: 01* *Completed: 2026-04-13*