Kaynağa Gözat

Contentstand productie doorgemeten: 1021 van 1025 events zijn verlopen

Browserloze meting tegen productie:
- flutterflow_events bevat 1025 events over 136 zaken; er liggen er 4 in de
  toekomst (3 Valkenburg, 1 Roermond).
- Taak 19 blijkt al gedaan: de agenda-view filtert al op toekomst en sorteert
  al oplopend. Van 136 zaken met events geven alleen de 2 met een toekomstige
  agenda iets terug. Bewijs is statistisch, niet sluitend op een enkele zaak -
  dat staat er eerlijk bij.
- Taak 21 (datumfilter) is met 4 events landelijk niet te testen; advies om te
  wachten op echte vulling staat erbij.
- Amsterdam is onbruikbaar als testplaats voor evenementen (0 op elke display,
  0 agenda-events op 300 zaken). Valkenburg townid=27301 en Roermond 27205 zijn
  de enige plaatsen met content. Vastgelegd in CLAUDE.md.
- townid-filter geverifieerd met een positief/negatief controlepaar.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
bob 4 gün önce
ebeveyn
işleme
390842ade2
2 değiştirilmiş dosya ile 104 ekleme ve 41 silme
  1. 22 0
      CLAUDE.md
  2. 82 41
      TASKS.md

+ 22 - 0
CLAUDE.md

@@ -1986,6 +1986,28 @@ export een `.take(N)` oplevert, volledig los van Drupal. Zie je in de app
 precies N items terwijl de API er meer teruggeeft, kijk dan daar en niet in
 de view.
 
+**⚠️ Amsterdam is de vaste testplaats voor HORECA, maar onbruikbaar voor
+EVENEMENTEN — gebruik daarvoor Valkenburg (`townid=27301`) of Roermond
+(`townid=27205`).** Gemeten 2026-09-11 op productie: van de 1025 events in
+`flutterflow_events` liggen er **4** in de toekomst, en die zitten alleen in
+die twee plaatsen. Amsterdam geeft 0 items op élke `flutterflowmobiel1`-
+display én 0 agenda-events op alle 300 Amsterdamse zaken. Test je een
+datumfilter, een sortering of een lege-staat op Amsterdam, dan meet je dus
+niets — alles is daar leeg, ongeacht of je wijziging werkt. Voor
+horeca/establishments blijft Amsterdam wél de juiste keuze (300+ zaken).
+Het `townid`-filter zelf is betrouwbaar: Valkenburg `27301` geeft 3 items,
+buurplaats Berg `27286` geeft er 0, ongefilterd 4 — een bruikbaar
+positief/negatief controlepaar.
+
+**Twee views die allebei "events" heten doen iets anders — en het verschil
+is precies een datumfilter.** `flutterflow_events` (evenement-detail, param
+`nid`) bevat **alles**, ook verlopen events; `flutterflowmobiel_establishment_events`
+(agenda op een horecapagina, param **`horecanid`**, niet `horecaid`) geeft
+alleen toekomstige terug. Zie je die tweede leeg terwijl de eerste tientallen
+events voor dezelfde zaak toont, dan is dat **geen bug** maar een verlopen
+agenda. Gebruik dat verschil ook andersom: tel per zaak beide views en je
+weet meteen of een "lege" agenda aan de data of aan de view ligt.
+
 **Een taxonomie-/categorie-id verifiëren zonder het te gokken: test het
 endpoint rechtstreeks.** Bevestigd nuttig 2026-09-02 (een `horcat` was
 naar een niet-bestaande categorie gezet; de tab bleef leeg zonder

+ 82 - 41
TASKS.md

@@ -1,45 +1,78 @@
-## ▶ Nu aan de beurt (stand 2026-09-10)
+## ▶ Nu aan de beurt (stand 2026-09-11)
+
+### ⚠️ Contentstand productie, gemeten 2026-09-11 — lees dit vóór de Drupal-taken
+
+Ik heb de hele evenementenvoorraad op productie doorgeteld
+(`flutterflow_events`, 41 pagina's):
+
+| | aantal |
+|---|---|
+| events in de database | **1025** |
+| zaken waar die aan hangen | **136** |
+| events **in de toekomst** | **4** |
+
+Die 4 zitten in 2 plaatsen: **Valkenburg (3)** en **Roermond (1)**. Alle
+andere 1021 zijn verlopen; de nieuwste daarvan is van 6 september.
+
+**Wat dat betekent:**
+- De Home-tabs zijn voor vrijwel heel Nederland leeg. Per display:
+  services_1 = 4, services_2 = 3, services_3 = 1, services_5 = 3,
+  **services_4 (Activiteiten), services_6 (Films) en services_7 (Jeugd) = 0**.
+- **Amsterdam is als testplaats onbruikbaar voor alles wat met evenementen
+  te maken heeft** — 0 items op élke display, en 0 agenda-events op alle
+  300 Amsterdamse zaken. Voor horeca/establishments blijft Amsterdam prima
+  (300+ zaken); voor events moet je **Valkenburg `townid=27301`** of
+  **Roermond `townid=27205`** gebruiken.
+- Het `townid`-filter zelf wérkt aantoonbaar: Valkenburg `27301` geeft 3,
+  buurplaats Berg `27286` geeft 0, ongefilterd geeft 4.
+
+**Dit is geen app-bug en geen viewprobleem** — het is de vulling. Maar het
+raakt wel de planning: taak 21 is er niet op te testen, en bij livegang
+wil je dit niet zo hebben. Jij zei eerder dat de import op productie
+draait maar met lage aantallen; de meting laat zien dat het scherper ligt
+— er is volop data, alleen is die **verlopen**, niet schaars.
 
 ### Voor Bob — drie Drupal-taken, uitgeschreven
 
-**Taak 19 (P1-42b) · view `flutterflowmobiel_establishment_events`, display
-`services_1` — de agenda op een horecapagina.**
-Deze view mist wat `flutterflowmobiel1` wél heeft. Doe precies dezelfde
-ingreep die je bij P1-42 hebt gedaan:
-1. **Sort criteria** → verwijder wat er nu staat → *+ Add* → **Content:
-   Datum - start date (field_date)** → **Ascending** (oplopend).
-2. **Filter criteria** → *+ Add* → **Content: Datum - start date
-   (field_date)** → operator **"Is greater than or equal to"** →
-   *Granularity* **hour** → *Default date* **`-2 hours`**. Exact dezelfde
-   waarden als in de Master van `flutterflowmobiel1`.
-3. **Pager** staat op **10 items** — dat is krap voor een zaak met een
-   volle agenda. Voorstel: 25.
-4. ⚠️ Let bij elke stap op de knop **"For: This services (override)"** vs
-   **"All displays"**. Deze view heeft meerdere displays; kies bewust.
-⚠️ **Controleer eerst of dit nog nodig is — de meting zegt van niet.**
-Claude heeft 2026-09-11 **alle 300 Amsterdamse zaken** (pagina 0 t/m 2 van
-`flutterflowmobiel_establishments`, `townid=28695`) stuk voor stuk langs de
-events-view gehaald:
-```
-curl -u bob:serhii "https://uitgaanskrant.com/en/flutterdrup/views/\
-flutterflowmobiel_establishment_events.json?display_id=services_1&horecanid=<nid>&limit=100"
-```
-**Nul van de 300 geeft ook maar één event terug.** Op de vaste testplaats is
-de agenda-tab dus overal leeg, en een sorteer-/datumfilter is daar niet te
-zien of te testen. De negen losse zaken van 2026-09-10 (Tolhuistuin `75547`,
-Rialto VU `75670`, Supper club `91145`, Brasserie Thialf `50980` e.a.) gaven
-hetzelfde beeld.
-**Eerlijkheidshalve één slag om de arm:** er is géén positieve controle
-gevonden — geen enkele nid gaf events, dus "de view is leeg" en "er klopt
-iets niet aan de koppeling zaak↔event" zijn met deze meting niet uit elkaar
-te houden. De audit van 2026-09-08 vond nog 232 events over 7 zaken, dus die
-koppeling wérkte toen; welke nids dat waren is niet vastgelegd.
-**Wat ik je zou vragen:** noem één zaak waarvan je zeker weet dat er een
-agenda aan hangt, dan meet ik die na. Levert die ook 0 op, dan is er een
-groter probleem dan sortering en is taak 19 het verkeerde begin.
-📌 **Let op de parameternaam:** het filter heet **`horecanid`**, niet
-`horecaid` — met de verkeerde naam krijg je geen JSON maar een HTML-
-foutpagina terug, wat makkelijk voor "leeg" wordt aangezien.
+**Taak 19 (P1-42b) · view `flutterflowmobiel_establishment_events` — de
+agenda op een horecapagina.**
+🔎 **Doe deze taak NIET voordat je dit gelezen hebt — de meting van
+2026-09-11 zegt dat hij al gedaan is.**
+
+Wat ik gemeten heb (browserloos, alles met `curl`):
+- De enige twee zaken in het hele land met een agenda zijn
+  **Openluchttheater Valkenburg (`70144`)** en **Azijn, Roermond
+  (`75500`)**. Die geven respectievelijk 3 en 1 events terug.
+- Die agenda's staan **chronologisch oplopend** (18 → 20 → 25 september) en
+  bevatten **uitsluitend toekomstige** data. Dat is precies wat deze taak
+  wilde bereiken.
+- 134 andere zaken hébben events — tot 29 stuks per zaak — maar de
+  agenda-view geeft er **0** van terug. Hun events liggen allemaal in het
+  verleden (nid `57738` bijvoorbeeld: 29 events, nieuwste 6 september).
+- De correlatie is over alle 136 zaken zonder uitzondering: alleen
+  toekomstige events komen door.
+
+**Conclusie: er zit al een datumfilter op, en de sortering klopt al.**
+Dit spreekt de audit van 2026-09-08 tegen (die vond 232 events over 7
+zaken, grotendeels verleden) — er is dus tussen 09-08 en 09-11 iets
+gewijzigd, vermoedelijk door jou tijdens de P1-42-ronde.
+
+**Wat ik je zou vragen:** kijk in de viewconfig of het datumfilter +
+`ASC`-sortering er inderdaad al staan, in plaats van ze opnieuw toe te
+voegen. Eén slag om de arm: ik heb geen zaak kunnen vinden met **zowel**
+verleden als toekomstige events, dus het sluitende bewijs op één enkele
+zaak ontbreekt — het bewijs is statistisch (136 zaken, geen enkele
+uitzondering).
+
+Eén punt uit de oude taak blijft mogelijk staan: **de pager van 10**.
+Die komt niet uit de view maar uit de Services-resource; `&limit=25` geeft
+gewoon 25 terug (zie `CLAUDE.md`). De app stuurt momenteel geen `limit`
+mee, dus een zaak met meer dan 10 toekomstige events toont er 10. Nu niet
+merkbaar (max 3), maar wel iets voor de livegang.
+
+📌 **Parameternaam: `horecanid`**, niet `horecaid` — met de verkeerde naam
+krijg je een HTML-foutpagina in plaats van JSON, wat makkelijk voor "leeg"
+wordt aangezien.
 
 **Taak 20 (P1-5) · view `flutterflowmobiel_establishments` — "Thuis
 bezorgen".**
@@ -62,6 +95,14 @@ een term **"Bezorgen"**.
    drawer-item eraan (het horeca-overzicht accepteert al een
    `display_id`-parameter).
 
+⚠️ **Lees eerst de meting hieronder — dit filter is nu niet te testen.**
+Op 2026-09-11 staan er in heel Nederland **4 toekomstige evenementen**:
+3 in Valkenburg, 1 in Roermond. Per display: services_1 = 4, services_2 = 3,
+services_3 = 1, services_5 = 3, en services_4/6/7 = **0**. Een filter
+Vandaag / Dit weekend / Deze week valt daar niet op te controleren, en in de
+app zou het vrijwel altijd een lege lijst opleveren. Mijn advies: bouw het
+pas als er echte vulling is, of accepteer dat je het blind oplevert.
+
 **Taak 21 (P2-1) · view `flutterflowmobiel1` — datumfilter Vandaag / Dit
 weekend / Deze week.**
 Er staat nu één datumfilter (`>= -2 hours`) dat **niet exposed** is. Voor
@@ -177,11 +218,11 @@ dit is de plek om te kijken vóór je een Drupal-sessie begint.
 | `flutterflowmobiel1` services_5 | Cultuur & Info-tab | ✅ 2026-09-09 | idem. Levert nu 6 items op |
 | `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 | **open** | geen datumfilter, niet chronologisch. De 10-limiet komt van de **Services-resource**, niet van de view (`&limit=25` geeft 25). **Hermeten 2026-09-09: 1 toekomstig van 232 events over 7 zaken; 6 van de 7 tonen uitsluitend verleden** (P1-42b) |
+| `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_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 | 20 van 150 items hebben `categorie: null`; de app vangt dat veilig af met `?.toList() ?? []` |
+| `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 |
 
 **⚠️ Wat P1-42 blootlegde (2026-09-09, live op productie): er staat