Doku: portalBadgeColor()-Klaerung im Plan vermerkt (toter Code entfernt)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
be1284dbc4
commit
1a30b13187
1 changed files with 2 additions and 2 deletions
|
|
@ -13,7 +13,7 @@ Gesamttest-Suite zuletzt grün (**818 passed, 1 skipped**), Pint sauber. Jeder S
|
|||
**Hier geht es weiter** — der gesamte Rest ist **Blade-Component-Extraktion** und braucht **visuelle Kontrolle im Browser** (die automatischen Tests prüfen nur Text-Präsenz, keine Optik). Empfehlung: **eine Component pro Commit**, danach im Browser gegenchecken (`vendor/bin/sail npm run dev`). Reihenfolge des Wiedereinstiegs:
|
||||
|
||||
1. **5.4 Seiten-Struktur-Components** (risikoärmster UI-Einstieg, rein additiv): `<x-portal.page-header>`, `<x-portal.table-panel>`, `<x-portal.empty-state>` usw. — je Component erst die Komponente bauen (Muster: bestehende `<x-portal.stat-card>`), dann eine Admin-Seite umstellen und visuell prüfen, dann die übrigen.
|
||||
2. **5.3 Rest** (Badges/Formatierung): zuerst die Call-Sites von `portalBadgeColor()` klären (in `companies/index`, `companies/show`, `contacts/index` definiert — Aufruf-Stellen wirken teils tot, vor `Portal::badgeColor()` prüfen, ob die Methoden überhaupt noch gerendert werden); dann `PressReleaseStatus`-Badge-Methode + `<x-portal.portal-badge>`/`<x-portal.status-badge>`/`<x-portal.money>`/`<x-portal.datetime>`.
|
||||
2. **5.3 Rest** (Badges/Formatierung): `portalBadgeColor()` ist **erledigt** — die Helfer waren tot (kein Call-Site) und wurden entfernt, eine `Portal::badgeColor()`-Zentralisierung entfällt. Offen bleibt nur die UI-Extraktion: `PressReleaseStatus`-Badge-Methode + `<x-portal.portal-badge>`/`<x-portal.status-badge>`/`<x-portal.money>`/`<x-portal.datetime>`.
|
||||
3. **5.2 Rest**: gemeinsamer `UserUpsertService`/`SaveUserAction` (Achtung: Anlegen vs. Bearbeiten divergieren stark — Bearbeiten trägt zusätzlich Profil/Kontakte/Passwort/2FA; nur den wirklich gemeinsamen Persistenz-Kern ziehen) + Blade-Feld-Components (`billing-fields`, `company-link-picker`, `role-checkboxes`, `contact-fields`).
|
||||
4. **5.5 Flash/Auth-Components**.
|
||||
5. **Phase 6** (Web-Frontend) — separat, dem User gehörend, vor jedem Löschen bestätigen lassen.
|
||||
|
|
@ -102,7 +102,7 @@ Keine Fachlogik-Änderung. Reduziert erreichbare Demo-Komponenten und Altlasten.
|
|||
|
||||
- [x] **5.1 Tabellen-Concerns** — `HasSortableTable::sort()` (5 byte-identische Kopien zentralisiert; `$sortBy`/`$sortDir`-Defaults bleiben in der Komponente, da sie divergieren) und `HasFullTextSearch::supportsFullTextSearch()` (9 byte-identische Kopien — 4 Index-Listen + 5 Firmen-Comboboxen; nicht mehr genutzte `DB`-Imports entfernt). `AdminPerformanceCache::activeInactiveStats(Builder)` bündelt den identischen `SUM(CASE WHEN is_active)`-Block der Benutzer- und Firmenliste. Tests: erweiterte `AdminPerformanceCacheTest`; abgesichert durch 99 `Admin/`-Tests. **Bewusst zurückgestellt:** `HasResettableFilters` (die `updatedXxxFilter()` divergieren — manche normalisieren zusätzlich Werte; ein generischer `updated()`-Hook wäre eine Verhaltensänderung) und eine gemeinsame `hydrateRelationCounts()` (Count-Hydration unterscheidet sich je Tabelle real).
|
||||
- [~] **5.2 User create/edit entdoppeln** — **Teil 1 erledigt:** `ProvidesUserFormRules`-Concern bündelt die zwischen Anlegen/Bearbeiten identischen Validierungsblöcke (`userIdentityRules(?int $ignore)`, `userRolesAndCompaniesRules()`, `userBillingRules()`); die nur im Bearbeiten genutzten Profil-/Kontakt-Regeln bleiben dort inline. Beide Formulare nutzen die Spreads, 31 User-Tests grün. **Offen (bewusst, mit User abzustimmen):** gemeinsamer `UserUpsertService`/`SaveUserAction` für die ~175-Zeilen-`save()` (Anlegen/Bearbeiten divergieren stark — Bearbeiten trägt zusätzlich Profil, Kontakte, Passwort, 2FA), sowie die Blade-Feld-Components (`billing-fields`, `company-link-picker`, `role-checkboxes`, `contact-fields`) — Markup-Extraktion braucht visuelle QA (analog zur zurückgestellten 2.8).
|
||||
- [~] **5.3 Formatierungs-Components/Enum** — **Erledigt (Model-Methoden, getestet):** `Contact::displayName()` (6 Relation-Stellen ersetzt; `ContactDisplayNameTest`) und `Category::localizedName()` (4 Stellen; `CategoryLocalizedNameTest`). **Offen (UI-/Blade-lastig, mit User abzustimmen):** `Portal::badgeColor()` (die `portalBadgeColor()`-Helfer haben uneinheitliche/teils tote Call-Sites — vor Zentralisierung klären), `PressReleaseStatus`-Badge-Methode sowie die Blade-Components `<x-portal.portal-badge>`, `<x-portal.status-badge>`, `<x-portal.money>`, `<x-portal.datetime>` (Markup-Extraktion braucht visuelle QA).
|
||||
- [~] **5.3 Formatierungs-Components/Enum** — **Erledigt (Model-Methoden, getestet):** `Contact::displayName()` (6 Relation-Stellen ersetzt; `ContactDisplayNameTest`) und `Category::localizedName()` (4 Stellen; `CategoryLocalizedNameTest`). **Geklärt & erledigt:** Die `portalBadgeColor()`-Helfer in `companies/index`, `companies/show`, `contacts/index` waren toter Code (kein Aufruf) und wurden entfernt — eine `Portal::badgeColor()`-Zentralisierung ist damit gegenstandslos. **Offen (UI-/Blade-lastig, mit User abzustimmen):** `PressReleaseStatus`-Badge-Methode sowie die Blade-Components `<x-portal.portal-badge>`, `<x-portal.status-badge>`, `<x-portal.money>`, `<x-portal.datetime>` (Markup-Extraktion braucht visuelle QA).
|
||||
- [ ] **5.4 Seiten-Struktur-Components** — `<x-portal.page-header>`, `<x-portal.stat-cards>`, `<x-portal.table-panel>`, `<x-portal.table-pagination>`, `<x-portal.empty-state>`, `<x-portal.searchable-select>`. (Muster: bestehende `<x-portal.stat-card>`/`components.portal.pagination`.)
|
||||
- [ ] **5.5 Flash/Auth-Components** — `<x-portal.alert :dismissible>` + `<x-session-status>` app-weit; `<x-password-input>`, `<x-form-field>`/`<x-email-input>`; `ensureNotRateLimited()/throttleKey()`-Trait (login/magic-link divergieren); `<x-auth.divider-actions>`.
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue