Jelajahi Sumber

Amsterdam als vaste testplaats; take(25) is een echte blocker

Op productie in Amsterdam (townid 28695) heeft de tab Eetgelegenheden 245
items, waarvan take(25) er 25 toont. Het zoekfilter werkt op de al
afgekapte lijst, dus zoekresultaten zijn stilletjes onvolledig. Een
eerdere inschatting dat dit cosmetisch was, kwam van Arnhem (max 20 items
per tab) en was daarmee fout.

CLAUDE.md: Amsterdam (28695) vervangt Arnhem als testplaats, met de
tid-keten erbij en een waarschuwing dat de view per 100 pagineert bij het
tellen van aantallen.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
bob 6 hari lalu
induk
melakukan
f83005117d
2 mengubah file dengan 43 tambahan dan 12 penghapusan
  1. 19 4
      CLAUDE.md
  2. 24 8
      TASKS.md

+ 19 - 4
CLAUDE.md

@@ -1187,9 +1187,15 @@ de builder met een profile-build + `--route`.** Recept dat 2026-09-05 in één
 keer werkte voor `HorecagelegenhedenOverzichtCopy3`:
 ```
 cd /tmp/ff-checkN && fvm flutter run --profile -d <device> \
-  --route "/horecagelegenhedenOverzichtCopy3?plaats=25434"
+  --route "/horecagelegenhedenOverzichtCopy3?plaats=28695"
 ```
-(25434 = Arnhem, een plaats met content in vrijwel elke categorie.) Vergeet
+(**28695 = Amsterdam — de vaste testplaats, Bob 2026-09-09.** Gebruik deze
+en niet Arnhem: Arnhem heeft zó weinig content dat je limieten en
+overflow-problemen er niet mee vindt. Amsterdam op productie:
+Eetgelegenheden 245 items, Uitgaan 75, Activiteiten 42, Overnachten 42,
+Verhuur/catering 24, Cultuur 14 — tegen 20 als grootste tab in Arnhem.
+Gemeente-tid is `28694`, wat toevallig ook de default van
+`gemeenteSelectId` in `app_state.dart` is.) Vergeet
 niet eerst `.fvmrc`, `.fvm/` en `pubspec.lock` naar de exportmap te kopiëren —
 zonder die drie bouwt hij niet, zie de notitie daarover elders. **Deze route
 is browserloos en dus juist geschikt wanneer Bob niet achter zijn scherm zit.**
@@ -1908,10 +1914,19 @@ curl -s -u bob:serhii "https://uitgaanskrant.com/nl/flutterdrup/views/flutterflo
 Een geldige `townid` haal je op via
 `plaatsen.json` (provincies) → `plaatsen.json?limit_levels=2&provincieid=<pid>`
 (gemeenten) → `plaatsen_bij_gemeente.json?gemeenteid=<gid>` (plaatsen).
-Arnhem (`25434`) is een handige testplaats met content in vrijwel elke
-categorie. Vergelijk het aantal resultaten én de `categorie`-labels
+**Amsterdam (`townid=28695`) is de vaste testplaats** (Bob, 2026-09-09) —
+groot genoeg om limieten en layoutproblemen zichtbaar te maken. De keten
+ernaartoe: provincie Noord-Holland `28666` → gemeente Amsterdam `28694` →
+plaats Amsterdam `28695`. Arnhem (`25434`) is ook een plaats met content in
+vrijwel elke
+categorie, maar met maximaal 20 items per tab te klein om iets
+over limieten te kunnen zeggen — daar is 2026-09-09 een verkeerde conclusie
+op gebaseerd. Vergelijk het aantal resultaten én de `categorie`-labels
 tussen kandidaat-id's; dat maakt in één keer hard welk id de bedoelde
 inhoud levert.
+**Let op bij het meten van aantallen:** de view pagineert met 100 per
+pagina, dus tel door over `page=0,1,2,…` tot een pagina minder dan 100
+teruggeeft — anders meet je 100 waar er 245 zijn.
 
 **Een nieuwe rij toevoegen aan een lijst met bestaande, vergelijkbare
 rijen (bv. nog een `ListTile` in een menu): dupliceer een bestaande rij

+ 24 - 8
TASKS.md

@@ -3317,17 +3317,33 @@ die nooit matchen. Aantallen in Arnhem: Activiteiten 2 items / 2 categorieën,
 Eetgelegenheden 20 / 19, Uitgaan 4 / 4.
 
 **C. `Max Items` staat per tab op 25 — Bob's besluit 2026-09-09: weghalen.
-⛔ Geblokkeerd, zie het kader hierboven.** Onderbouwing van het besluit, voor
-als de blokkade ooit opgelost is: er is al een harde begrenzing elders
+⛔ Geblokkeerd, zie het kader hierboven. Dit is een ECHTE blocker, geen
+cosmetiek.** Gemeten op **productie** in Amsterdam (`townid=28695`):
+
+| tab | items | zichtbaar met `take(25)` |
+|---|---|---|
+| Eetgelegenheden | **245** | 25 |
+| Uitgaan | 75 | 25 |
+| Activiteiten | 42 | 25 |
+| Overnachten | 42 | 25 |
+| Verhuur, catering | 24 | 24 |
+| Cultuur | 14 | 14 |
+
+Er verdwijnen in Amsterdam dus **220 eetgelegenheden**, en omdat het filter
+op de al afgekapte lijst werkt, doorzoekt het zoekveld alleen die 25 — de
+gebruiker krijgt stilletjes onvolledige resultaten zonder enige aanwijzing.
+*(Een eerdere inschatting "je merkt er weinig van" was gebaseerd op Arnhem,
+grootste tab 20 items. Te klein om iets over limieten te zeggen; gebruik
+voortaan Amsterdam.)*
+
+**Weghalen is veilig zodra het kan:** er is al een harde begrenzing elders
 (`fetchAlleHorecagelegenheden` loopt door API-pagina's van 100 met
 `maxPaginas = 10`, dus **max 1000 per tab**), en alle zes de grids zijn
-`MasonryGridView.builder` — lazy, dus alleen zichtbare kaarten worden gebouwd.
-Er is **geen paginering/infinite scroll meer** op deze pagina (0
+`MasonryGridView.builder` — lazy, dus alleen zichtbare kaarten worden
+gebouwd. Er is **geen paginering/infinite scroll meer** op deze pagina (0
 `PagingController`s); dat is bewust, want client-side filteren kan alleen met
-de volledige dataset. In de praktijk is de grootste tab in Arnhem 20 items,
-dus `take(25)` kapt daar niets af — het risico is een plaats mét meer dan 25
-zaken, waar zoekresultaten dan stilletjes incompleet zijn. Wil je ooit
-strakker begrenzen, doe dat in `maxPaginas`, niet in de weergavelimiet.
+de volledige dataset. Wil je ooit strakker begrenzen, doe dat in
+`maxPaginas`, niet in de weergavelimiet.
 
 **D. Route omzetten (was P2-6 stap 7) — bewust uitgesteld tot A en B klaar
 zijn.** Twee `Navigate To`-wijzigingen naar `HorecagelegenhedenOverzichtCopy3`: