Explorar o código

TASKS.md: P2-15 bouwstap 4 voortgang (mijnProfiel pagina, sectie 1+2 af en geverifieerd), nieuw builder-bugpatroon vastgelegd (Replace Dynamic Child kan oude Backend Query/Generate-Children laten hangen)

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
bob hai 2 semanas
pai
achega
6c026eee02
Modificáronse 1 ficheiros con 85 adicións e 9 borrados
  1. 85 9
      TASKS.md

+ 85 - 9
TASKS.md

@@ -2534,15 +2534,21 @@ overwegen bij een volgende theme-update:
 
 ---
 
-**P2-15 · Eigenaar: Bob (builder), Claude regisseert/verifieert — bezig
-in TWEE sessies tegelijk (2026-08-27, nog niet door Bob gescheidsrecht):
-déze sessie deed bouwstap 1 (custom action `bestandUpload` + los
-testpagina `kanwegTestUpload`, incl. een tijdelijke "Test Upload
-(tijdelijk)"-navigatieknop op Favorieten' Gebruiker-tab) en wacht op
-Bob's live test met een echte foto; een ANDERE sessie bouwt tegelijk al
-bouwstap 2 (pagina "Stadsactiviteit aanmaken").** Bob: even bevestigen
-welke sessie samenhangend doorgaat, en de tijdelijke testknop/-pagina
-weer opruimen zodra stap 1 bevestigd werkt. Evenementen/stadsactiviteiten
+**P2-15 · Eigenaar: Bob (builder), Claude regisseert/verifieert.
+Bouwstap 1 afgerond en bevestigd (2026-08-27): custom action
+`bestandUpload` (`lib/custom_code/actions/bestand_upload.dart`) upload
+foto → fid, live getest tegen productie
+(`https://uitgaanskrant.com/en/flutterdrup/bestand_upload/upload.json`)
+via een tijdelijke testflow (`{success: true, fid: 5495517, url: ...}`)
+— de tijdelijke "Test Upload (tijdelijk)"-navigatieknop op Favorieten'
+Gebruiker-tab is weer verwijderd en bevestigd via verse export; het
+losse testpagina `kanwegTestUpload` (Pick Media → `bestandUpload` →
+snackbar met resultaat) blijft staan als herbruikbare kanweg-testtool,
+nergens meer aan gelinkt.
+⚠️ **Een ANDERE sessie bouwt tegelijk al bouwstap 2** (pagina
+"Stadsactiviteit aanmaken") — nog niet door Bob gescheidsrecht welke
+sessie samenhangend doorgaat op stap 2/3/4 hieronder.**
+Evenementen/stadsactiviteiten
 aanmaken vanuit de app (horeca-eigenaren + elke gebruiker). **Drupal-kant
 volledig klaar en curl-getest op devbob (2026-08-26)** — dit is nu
 zuiver FlutterFlow-bouwwerk. Volledige achtergrond/velden/beslissingen
@@ -2664,3 +2670,73 @@ de échte Drupal-foutmelding terug om aan de gebruiker te tonen.
 canonieke actie.** Let op: `bestandUpload` wil de **volledige URL**
 (`uploadUrl`, dus incl. `/bestand_upload/upload.json`), niet alleen een
 base-URL.
+
+**Bouwstap 4 (nieuwe pagina `mijnProfiel`) — grotendeels af, 2026-08-27
+(Bob sliep, Claude bouwde door).** 4 nieuwe API Calls toegevoegd
+(`MijnHorecagelegenheden`, `MijnStadsrechten`, `Categorieen`,
+`Entreeopties`) — allemaal geverifieerd correct via export. Nieuwe
+pagina `mijnProfiel`
+(`https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=mijnProfiel`,
+`lib/mijn_profiel/`), Scaffold met kale AppBar (Show Default Button,
+geen titel — drag-and-drop van een titel-widget faalde herhaaldelijk,
+zie de bekende AppBar-Row-insert-onbetrouwbaarheid elders in dit
+bestand):
+- **Sectie "Mijn horecagelegenheden"**: Row (titel + "+ Voeg toe"
+  Button, nu nog een placeholder Show-Snack-Bar) + ListView met
+  Backend Query = `MijnHorecagelegenheden` (variabelen `session_name`/
+  `sessid` → App State `userSessionname`/`userSessionid`) + Generate
+  Dynamic Children (var `horecaItem`, JSON Body, No Further Changes) +
+  item-template = hergebruikte `HorecagelegenheidoverzichtKaart`
+  (params `titel`/`logo`/`nid`/`adres`/`plaats`/`categorie`, elk via
+  JSON Path `$.<veld>` op `horecaItem`). **Volledig af en
+  exportgeverifieerd.**
+- **Sectie "Mijn redactierechten"**: zelfde patroon, Backend Query =
+  `MijnStadsrechten`, Generate Dynamic Children var `rechtItem`,
+  item-template = kale `Column` → `Text` met een **Combine Text**-
+  binding (`$.titel` + literal " — " + `$.parent_titel`) — geen losse
+  tweede Text-widget nodig/haalbaar, zie bugnotitie hieronder.
+  "+ Voeg toe"-knop ook nog placeholder. **Af en
+  exportgeverifieerd**, behalve de leeg-verbergen-eis (zie hieronder).
+- **⚠️ Nieuw bevestigd builder-bugpatroon (2026-08-27):** een
+  ListView's **item-template vervangen** via rechtsklik → "Insert
+  After"/"Duplicate" op de bestaande template-widget triggert een
+  **"Replace Dynamic Child"**-bevestigingsdialoog — en de nieuwe
+  widget die daaruit voortkomt **kan een Backend Query +
+  Generate-Dynamic-Children-configuratie van een eerder gedupliceerde
+  ListView blijven meedragen**, zelfs nadat je 'm via "Replace Widget"
+  omzet naar een ander widget-type (bv. Column). Dit bleef **onzichtbaar
+  in de builder-UI** (Column's rechterpaneel toont geen aparte
+  Backend-Query-sectie) maar leverde in de export een dubbel-geneste
+  `FutureBuilder`/`List.generate` op — functioneel een N×M-bug (elke
+  stadsrecht-rij herhaalde zich M keer, M = aantal horecagelegenheden
+  van de gebruiker) én een overbodige extra API-call per rij. **Fix:**
+  selecteer de widget, check zelf de 3e/4e icoontjes (Backend Query /
+  Generate Dynamic Children) in de rechterpaneel-iconenrij — ook als
+  er geen widget-type meer op wijst — en klik **Remove** op beide als
+  ze een oude configuratie tonen. **Vuistregel: na elke
+  "Replace Dynamic Child"-actie altijd verifiëren via een verse export
+  + `grep` op de betrokken Call-klassen**, niet aannemen dat
+  "Replace Widget" alle oude state meeneemt.
+- **Nog open (kleinere restpunten, geen van alle blokkerend):**
+  1. Beide "+ Voeg toe"-knoppen omzetten van placeholder-snackbar naar
+     echte Navigate-To zodra de create-pagina's bestaan (zie
+     bouwstap 2/3), met `horecagelegenheid_nid` resp. `plaats_tid` als
+     page-parameter.
+  2. Sectie "Mijn redactierechten" helemaal verbergen als de lijst leeg
+     is (de meeste gebruikers hebben geen `field_town_access`) — nog
+     niet gebouwd, waarschijnlijk een ConditionalBuilder op de hele
+     sectie met een "Number of Items > 0"-achtige JSON-Path-transform;
+     kost een eigen sessie/poging gezien de bekende
+     ConditionalBuilder-freeze-risico's elders in dit bestand.
+  3. Entry-point naar `mijnProfiel` vanuit de rest van de app (bv.
+     Favorieten' "Gebruiker"-tab) — nog niet toegevoegd, pagina is nu
+     alleen bereikbaar via directe URL/route.
+  4. `EntreeoptiesCall`'s header niet los geverifieerd op dezelfde
+     dubbele-substitutie-bug als `CategorieenCall` had (die is al
+     gefixt) — waarschijnlijk oké, niet met zekerheid gecheckt.
+
+**Nog te bouwen (bouwstap 2/3, ongewijzigd):** de pagina's "Evenement
+aanmaken" en "Stadsactiviteit aanmaken" zelf, zie de bouwvolgorde
+hierboven. **Check bij het oppakken eerst of de andere, parallelle
+sessie (zie waarschuwing bovenaan deze taak) hier intussen al iets aan
+gebouwd heeft** — nog niet herverifieerd sinds de eerdere check.