Isolate InfoPanel templates, document DataItem contract

- Added MGGRID_TODO.md entry (ACBLAZOR-GRID-T-E3B6) for ErrorBoundary isolation of consumer templates and DataItem contract documentation.
- Updated GridShippingDocumentInfoPanel.razor to guard against null ShippingItems after add/save, preventing unhandled exceptions.
- Added PowerShell command in settings.local.json to count MGGRID_TODO.md lines for monitoring.
This commit is contained in:
Loretta 2026-07-13 08:57:06 +02:00
parent 9a0c077f2a
commit 60a5599214
1 changed files with 15 additions and 0 deletions

View File

@ -69,6 +69,21 @@ Not urgent — only light grouping usage so far; the base path works. Promote to
- Unit / integration test with a grouped column. - Unit / integration test with a grouped column.
- Remove the `// TODO: Implement local grouping when needed` comment. - Remove the `// TODO: Implement local grouping when needed` comment.
## ACBLAZOR-GRID-T-E3B6: Fogyasztói template-ek izolálása (ErrorBoundary) + DataItem-kontraktus dokumentálása
**Priority:** P2 · **Type:** Resilience + Docs · **Origin:** 2026-07-13 runtime incidens (fogyasztói InfoPanel-template NRE → WASM renderer crit)
A template-hosztok (`MgGridInfoPanel` Header/BeforeColumns/Columns/AfterColumns/Footer template-hívásai — pl. `MgGridInfoPanel.razor:44` —, és általában a fogyasztói `RenderFragment`-hívások) **védtelenül** futnak: egy fogyasztói template-ben dobott kivétel unhandled render exceptionként a WASM renderert üti meg (`crit: …WebAssemblyRenderer`), rosszabb esetben az egész app-ot viszi — nem csak az érintett panelt.
**Trigger-incidens:** add/save után a kijelölt sor a szerver-válasz nyers (reláció nélkül betöltött) entitása a grid-reloadig; a fogyasztói template null navigációt dereferált → NRE a renderben. A fogyasztói fix (null-guard a template-ben) megvan, de a keret két hiányossága marad:
1. **ErrorBoundary a template-hívások köré** — a hibás template a panelen belül hibablokká szelídüljön (+ logolás), a grid/app maradjon életben. Figyelem: az `ErrorBoundary` az eseménykezelő-kivételeket is elkapja; recovery-stratégia kell (pl. `Recover()` a következő DataItem-váltásnál).
2. **DataItem-kontraktus kimondása a doksiban** (`MGGRID_INFOPANEL` / README): a template-nek részlegesen töltött DataItem-mel KELL számolnia (null navigációs property-k) — add/save után a DataItem a szerver-válasz nyers entitása lehet, amíg a reload le nem cseréli.
### Acceptance criteria
- Fogyasztói template-kivétel nem eszkalálódik unhandled render exceptionné; a panel hibablokkot mutat és logol.
- A következő sikeres render (pl. DataItem-váltás) után a panel magától helyreáll.
- A DataItem-kontraktus dokumentálva.
## TODO entry template ## TODO entry template
``` ```