Forráskód Böngészése

TASKS.md: favorietenagenda-view is een wees, titelspaties naar livegang

- view flutterfavorietenagenda heeft 0 aanroepers; Favorieten tab 1
  gebruikt de custom resource favorieten_agenda.json via drupalRequest.
  Die is gemeten en werkt (toekomstfilter + datum_raw).
- P1-47 verbreed: 100+ nodes met spatie vooraan in node.title, gemeten
  op devbob. Bob's besluit: doorlopen bij livegang, impact nu te groot.
  De drie losse titels zijn op productie al gefixt en geverifieerd.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
bob 3 napja
szülő
commit
8748b3cc08
1 módosított fájl, 20 hozzáadás és 2 törlés
  1. 20 2
      TASKS.md

+ 20 - 2
TASKS.md

@@ -222,6 +222,22 @@ Gradle-moderniseringssyntaxis, geen beslissing nodig.
   op `SelectStateDropDownComponent`: **"Gemeente volgen"** (`nosgkxy0`) en de
   uitlegzin **"Bij favoriete gemeenten krijg je een agenda per mail met daarin
   alle evenementen uit die favoriete gemeenten."** (`24bdnkhi`).
+- **Titels met spaties vooraan/achteraan opschonen (was P1-47, verbreed
+  2026-09-11).** Bob mat op devbob **100+** `horecagelegenheid`-nodes met een
+  gewone ASCII-spatie vóór de titel (`LIMIT 100` liep vol, dus het werkelijke
+  aantal is hoger); ook tabs (nid 49539) en spaties áchteraan (49512) komen
+  voor. MySQL sorteert op de rauwe `node.title`, dus elke zo'n node valt
+  buiten de alfabetische volgorde — terwijl de JSON schoon oogt, want
+  `_custom_clean_html` poetst ná de query. **Bob's besluit 2026-09-11: de
+  impact is nu te groot, we lopen de namen door bij de livegang.** Te
+  verifiëren op productie met de telquery hieronder; de drie losse titels uit
+  taak 16 zijn daar al gefixt, de rest vermoedelijk niet.
+  ```
+  drush @prod sqlq "SELECT type, COUNT(*) FROM node WHERE title <> TRIM(BOTH ' ' FROM TRIM(BOTH CHAR(9) FROM TRIM(BOTH CHAR(10) FROM TRIM(BOTH CHAR(13) FROM TRIM(BOTH ' ' FROM title))))) GROUP BY type;"
+  ```
+  De fix is een `UPDATE` met diezelfde genestelde `TRIM` op **`node` én
+  `node_revision`**, idempotent, met vooraf een `sql-dump` van die twee
+  tabellen. URL-aliassen blijven ongemoeid.
 - **P1-30 · Cloudflare rate limiting** aanzetten, en dan óók de twee
   rate-limiting-vinkjes weghalen uit de custom rule `flutterflow`.
 - **Max items + tab 6** (P2-24 A en C) — geparkeerd, zie daar. Melden bij
@@ -257,8 +273,9 @@ dit is de plek om te kijken vóór je een Drupal-sessie begint.
 | `flutterflowmobiel1` services_6 | Films-tab | ✅ 2026-09-09 | idem. Levert nu 0 items op |
 | `flutterflowmobiel1` services_7 | Jeugd-tab | ✅ 2026-09-09 | idem. Levert nu 0 items op |
 | `flutterflowmobiel_establishment_events` | agenda op een horecapagina | ✅ 2026-09-11 | **Hermeten 2026-09-11: filtert al op toekomst én sorteert al oplopend** — van 136 zaken mét events geven alleen de 2 met toekomstige agenda iets terug (`70144` 3x, `75500` 1x). Zie taak 19. Restpunt: de 10-limiet van de Services-resource; de app stuurt geen `limit` mee. Parameter heet `horecanid` |
-| `flutterflowmobiel_establishments` | horeca-overzicht | ✅ 2026-09-09 | sorteert nu alfabetisch op titel. Twee nodes vallen buiten de volgorde door een onzichtbaar teken in de opgeslagen titel, zie P1-47 |
-| `flutterfavorietenagenda` services_1 | Favorieten, tab 1 | **ongemeten** | vraagt een sessiecookie, dus niet anoniem te meten. Sortering nog vast te stellen |
+| `flutterflowmobiel_establishments` | horeca-overzicht | ✅ 2026-09-11 | sorteert alfabetisch op titel. De drie losse titels uit P1-47 zijn op **productie** gefixt (taak 16, 2026-09-10) en geverifieerd: `51094 Café Arnhem` staat nu tussen `Brownies&downieS` en `DE STEENEN TAFEL`. Het bredere probleem staat nog open, zie de livegang-regel over de titelspaties |
+| `flutterfavorietenagenda` services_1 | **niets — wees** | ⚠️ wees, vastgesteld 2026-09-11 | De app roept deze view **nergens** aan. `FavorietenAgendaCall` staat wel in `api_calls.dart` maar heeft 0 aanroepers; Favorieten tab 1 haalt zijn data via `drupalRequest` uit de custom resource `favorieten_agenda.json`. Niet sorteren/filteren; besluiten of view + API Call weg kunnen |
+| `favorieten_agenda.json` (custom resource) | Favorieten, tab 1 | ✅ gemeten 2026-09-11 | Werkt. Met een sessiecookie van `bobcity`: 1 item, `datum_raw` in de toekomst, velden compleet (`node_type, nid, titel, datum, datum_raw, plaats, categorie, logo, adres, postcode, woonplaats, horecagelegenheid, horecagelegenheidNid, matched_via`). Filtert op toekomst en levert `datum_raw` mee, dus sorteren is app-zijdig mogelijk. Zonder cookie: `["Toegang geweigerd voor gebruiker anonymous"]` |
 | `flutterflowmobiel_establishment_info` services_1 | horeca-detailpagina | ok | geeft precies 1 item terug (de zaak zelf); sortering niet van toepassing. Gemeten 2026-09-08 |
 | `flutterflow_events` services_1 | evenement-detail (op nid) | ok | **Hermeten 2026-09-11: 1025 events over 136 zaken, waarvan er maar 4 in de toekomst liggen** — de rest is verlopen. Niet 150 zoals eerder genoteerd. 20 items hebben `categorie: null`; de app vangt dat af met `?.toList() ?? []` |
 | `plaatsen`, `gemeenten`, `provincies`, `categorieen`, `entreeopties`, `mijn_*` | referentielijsten | ok | geen datum/sortering |
@@ -318,6 +335,7 @@ eerstvolgende export gewoon terug.
 
 | wat | waarom wees |
 |---|---|
+| `FavorietenAgendaCall` | Declared API Call naar de view `flutterfavorietenagenda`, **0 aanroepers** (gecheckt 2026-09-11). Favorieten tab 1 gebruikt `drupalRequest` op `favorieten_agenda.json`. Zowel deze call als de view zelf zijn kandidaat om weg te gaan |
 | `FavorietenAgendaTESTKANWEGCall` | Testrestant. Verwijderen via het API Calls-paneel lukte niet (kwam na een reload terug, 2026-08-14) — zie P2-7 |
 
 **Twijfelgevallen, niet weggooien zonder besluit**