Aufgabenübersicht als Kern-Block (Seite + Unterseiten) #154

Closed
opened 2026-07-20 00:15:49 +02:00 by fable-5 · 1 comment
Collaborator

Ziel

Ein Block sammelt alle Aufgabenlisten-Zeilen der aktuellen Seite und aller untergeordneten Seiten und zeigt sie als Tabelle: Aufgabentext, erwähnte Nutzer, Start-/Zieldatum, Quellseite. Abhaken in der Übersicht synchronisiert den Zustand auf die Quellseite.

Architektur-Entscheidung: Kern-Feature (Block-Node analog Transklusion), NICHT Plugin — die Plugin-Sandbox hat bewusst keinen Fremdseiten-Write und kein parentId; der Rückschreibpfad läuft ohnehin über den Collab-Server. Die neuen Endpoints können später bei Bedarf als Plugin-Capability exponiert werden.

Abhängigkeiten: setzt #150 (@-Mentions, Spalte Erwähnte), #152 (Datums-Marker, Spalten Start/Ziel) und #153 (Stabile Task-IDs + Toggle-Rückschreibpfad) voraus.

Umsetzungsskizze

  • Block-Atom task_overview (Blaupause transclusion, schema.ts:265-291) + Markdown-/HTML-Serialisierung; Einfüge-UI analog Transklusion.
  • Derived Tabelle page_tasks (page_id, task_id, text, checked, position, mentioned_user_ids, start_date, due_date) (DB-Migration), geschrieben beim Persistieren in apps/collab/src/persistence.ts (Muster page_links) und apps/api/src/pages/yjs-content.ts.
  • Endpoint GET /read/:pond/:slug/tasks?subtree=1 (neben read-content.controller.ts): Unterbaum per rekursiver CTE über Page.parentId; je Quellseite canAccessPage-Filter (unlesbare Seiten fallen komplett raus — Muster Transklusions-Expansion).
  • NodeView apps/web/src/editor/nodes/task-overview.tsx: Tabelle mit den vier Spalten, Quellseite verlinkt; Checkbox → Toggle-Endpoint (optimistisch + Refetch); ID-lose Altzeilen read-only mit Hinweis („Seite einmal im Editor öffnen").
  • Export/Public: statisches Rendering der Tabelle über den HTML-Pfad.

Akzeptanzkriterien

  • Block zeigt alle Aufgaben von Seite + Unterbaum mit Text/Erwähnten/Daten/Quellseite.
  • Abhaken in der Übersicht ändert die Quellseite (live sichtbar in deren offenem Editor).
  • Aufgaben auf für den Betrachter unlesbaren Unterseiten erscheinen nicht.
  • Übersicht aktualisiert sich nach Quellseiten-Save (Refetch bei Fokus/Intervall reicht); HTML/PDF-Export rendert statisch.

Bewusst nicht enthalten

Plugin-Capabilities, Filter/Sortierung/Gruppierung, teichübergreifende Aggregation, Live-Push in die Übersicht.

## Ziel Ein Block sammelt alle Aufgabenlisten-Zeilen der aktuellen Seite und aller untergeordneten Seiten und zeigt sie als Tabelle: Aufgabentext, erwähnte Nutzer, Start-/Zieldatum, Quellseite. Abhaken in der Übersicht synchronisiert den Zustand auf die Quellseite. **Architektur-Entscheidung:** Kern-Feature (Block-Node analog Transklusion), NICHT Plugin — die Plugin-Sandbox hat bewusst keinen Fremdseiten-Write und kein parentId; der Rückschreibpfad läuft ohnehin über den Collab-Server. Die neuen Endpoints können später bei Bedarf als Plugin-Capability exponiert werden. **Abhängigkeiten:** setzt #150 (@-Mentions, Spalte Erwähnte), #152 (Datums-Marker, Spalten Start/Ziel) und #153 (Stabile Task-IDs + Toggle-Rückschreibpfad) voraus. ## Umsetzungsskizze - Block-Atom `task_overview` (Blaupause `transclusion`, `schema.ts:265-291`) + Markdown-/HTML-Serialisierung; Einfüge-UI analog Transklusion. - Derived Tabelle `page_tasks (page_id, task_id, text, checked, position, mentioned_user_ids, start_date, due_date)` (**DB-Migration**), geschrieben beim Persistieren in `apps/collab/src/persistence.ts` (Muster `page_links`) und `apps/api/src/pages/yjs-content.ts`. - Endpoint `GET /read/:pond/:slug/tasks?subtree=1` (neben `read-content.controller.ts`): Unterbaum per rekursiver CTE über `Page.parentId`; je Quellseite `canAccessPage`-Filter (unlesbare Seiten fallen komplett raus — Muster Transklusions-Expansion). - NodeView `apps/web/src/editor/nodes/task-overview.tsx`: Tabelle mit den vier Spalten, Quellseite verlinkt; Checkbox → Toggle-Endpoint (optimistisch + Refetch); ID-lose Altzeilen read-only mit Hinweis („Seite einmal im Editor öffnen"). - Export/Public: statisches Rendering der Tabelle über den HTML-Pfad. ## Akzeptanzkriterien - Block zeigt alle Aufgaben von Seite + Unterbaum mit Text/Erwähnten/Daten/Quellseite. - Abhaken in der Übersicht ändert die Quellseite (live sichtbar in deren offenem Editor). - Aufgaben auf für den Betrachter unlesbaren Unterseiten erscheinen nicht. - Übersicht aktualisiert sich nach Quellseiten-Save (Refetch bei Fokus/Intervall reicht); HTML/PDF-Export rendert statisch. ## Bewusst nicht enthalten Plugin-Capabilities, Filter/Sortierung/Gruppierung, teichübergreifende Aggregation, Live-Push in die Übersicht.
fable-5 added this to the M22 — Aufgaben milestone 2026-07-20 00:15:49 +02:00
Author
Collaborator

Umgesetzt in PR #158 (e164370): Block-Atom task_overview (Fence dorfteich-tasks). ABWEICHUNG zur Skizze: KEINE abgeleitete page_tasks-Tabelle — die Sammlung wird zur Lesezeit aus Basis-State + page_updates-Log extrahiert (Teilbaeume sind klein, kein Drift-Risiko zwischen zwei Schreibpfaden); dabei wichtig: der persistierte Basis-State allein laeuft dem Live-Dokument hinterher. Endpoint GET /read/:pond/:slug/tasks (Subtree via collectSubtreeIds, canAccessPage je Quellseite); die Public-Ansicht expandiert den Placeholder serverseitig zur statischen Tabelle (Instanzsprache). NodeView mit Rueckschreib-Checkboxen (optimistisch, Override bis der debounced Persist nachzieht), Einfuegen ueber die Block-Auswahl. Neuer CI-Pack tasks.spec beweist den vollen Loop inkl. Rueckschreiben. BEWUSST NICHT drin: Filter/Sortierung, teichuebergreifend, Live-Push.

Umgesetzt in PR #158 (e164370): Block-Atom task_overview (Fence dorfteich-tasks). ABWEICHUNG zur Skizze: KEINE abgeleitete page_tasks-Tabelle — die Sammlung wird zur Lesezeit aus Basis-State + page_updates-Log extrahiert (Teilbaeume sind klein, kein Drift-Risiko zwischen zwei Schreibpfaden); dabei wichtig: der persistierte Basis-State allein laeuft dem Live-Dokument hinterher. Endpoint GET /read/:pond/:slug/tasks (Subtree via collectSubtreeIds, canAccessPage je Quellseite); die Public-Ansicht expandiert den Placeholder serverseitig zur statischen Tabelle (Instanzsprache). NodeView mit Rueckschreib-Checkboxen (optimistisch, Override bis der debounced Persist nachzieht), Einfuegen ueber die Block-Auswahl. Neuer CI-Pack tasks.spec beweist den vollen Loop inkl. Rueckschreiben. BEWUSST NICHT drin: Filter/Sortierung, teichuebergreifend, Live-Push.
Sign in to join this conversation.
No Milestone
No project
No Assignees
1 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: stwaidele/dorfteich#154
No description provided.