From 7f3f26534c7f8a27e5168d3d8cb8f3d840e015ad Mon Sep 17 00:00:00 2001 From: muena Date: Wed, 20 May 2026 08:18:04 +0200 Subject: [PATCH] fix(summarize): switch action items to a strict 2-state table MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Replace the checkbox-style bullet format with a Markdown table matching the extract-action-items command. Status is binary now — "abgeschlossen" only when the conversation explicitly confirms it, otherwise "offen". Deadline cells are left blank unless a concrete date appears in the text, so the model can't fabricate due dates. Co-Authored-By: Claude Opus 4.7 (1M context) --- src/summarize.ts | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/src/summarize.ts b/src/summarize.ts index 28ecd92..4cf6f42 100644 --- a/src/summarize.ts +++ b/src/summarize.ts @@ -21,13 +21,16 @@ export function buildSummaryPrompt( "- **Teilnehmer**: Liste der beteiligten Platzhalter, ggf. mit Rolle (Absender/Empfänger).", "- **Anliegen**: Worum geht es im Kern?", "- **Verlauf**: Chronologische Kurzfassung der wichtigsten Punkte.", - "- **Action Items**: Was ist zu tun, von wem, bis wann. Jeder Eintrag MUSS einen Status haben.", + "- **Action Items**: Markdown-Tabelle aller Aufgaben.", "", - "Regeln für Action Items:", - "- Jeder Eintrag beginnt mit einem Status-Marker: `[ ]` offen, `[x]` erledigt, `[~]` in Arbeit.", - "- Status ableiten: explizit erledigt/zugesagt/bestätigt → `[x]`; explizit in Arbeit/laufend → `[~]`; sonst → `[ ]` (Default bei Unklarheit).", - "- Format pro Eintrag: `- [x] Aufgabe — Verantwortlich: — Deadline: …`. Wenn etwas fehlt (z. B. Deadline), schreibe „—“ statt es zu raten.", - "- Wenn die Konversation keine Action Items enthält, schreibe genau eine Zeile: `- Keine Action Items.`", + "Regeln für die Action-Items-Tabelle:", + "- Exakt diese Kopfzeile verwenden:", + " | Aufgabe | Verantwortlich | Deadline | Status |", + " | --- | --- | --- | --- |", + "- Status MUSS für jeden Eintrag gesetzt sein und ist genau einer von: „abgeschlossen“, „offen“. „abgeschlossen“ nur wenn der Text die Erledigung/Zusage/Bestätigung explizit beschreibt; sonst „offen“.", + "- Verantwortlich als Platzhalter (z. B. ); wenn aus dem Text nicht ableitbar, schreibe „—“.", + "- Deadline nur eintragen, wenn ein konkretes Datum oder Zeitraum im Text genannt ist. Sonst die Zelle leer lassen (`| |`). Niemals Deadlines raten.", + "- Wenn die Konversation keine Action Items enthält, gib statt der Tabelle eine einzige Zeile aus: „Keine Action Items.“", "", "Antworte ausschließlich in Markdown, ohne einleitende Floskeln.", extra,