feat(meetings): rewrite /meeting-end with graph auto-import
This commit is contained in:
parent
b91267d537
commit
e0a330520a
|
|
@ -1,13 +1,104 @@
|
|||
Schließe ein Jour-Fixe-Meeting ab und führe die Ergebnisse zurück.
|
||||
Schließe ein Jour-Fixe-Meeting ab, ziehe automatisch Recap+Transkript aus Teams und führe die Ergebnisse zurück.
|
||||
|
||||
1. Identifiziere das aktuelle Meeting aus dem Kontext oder den Parametern: $ARGUMENTS
|
||||
- Prüfe ob eine Meeting-Notiz gerade geöffnet ist (current_note)
|
||||
- Oder nimm Serie + Datum aus Parametern
|
||||
2. Lies die Meeting-Notiz und die zugehörige Agenda.md
|
||||
3. Frage für jedes besprochene Topic: erledigt, offen (weiter), postponed, oder übersprungen?
|
||||
4. Führe die Ergebnisse nach dem Jour-Fixe-Skill (jour-fixe.md) zurück:
|
||||
- Historie in Agenda.md fortschreiben (Bold-Datum mit Kurzfassung)
|
||||
- Erledigte Topics mit Historie ins Archiv verschieben
|
||||
- Postponed Topics in ⏳ Sektion verschieben
|
||||
5. Setze den Meeting-Status auf abgeschlossen
|
||||
6. Bestätige mit Zusammenfassung: wie viele Topics aktualisiert, archiviert, verschoben
|
||||
## Schritt 1 — Meeting-Notiz identifizieren
|
||||
|
||||
- Wenn `current_note` eine Datei unter `03 Bereiche/Meetings/` ist → diese verwenden.
|
||||
- Sonst: Serie und Datum aus `$ARGUMENTS` ermitteln. Pfad: `03 Bereiche/Meetings/YYYY-MM-DD <Titel>.md`.
|
||||
- Lies das Frontmatter: `o365_id`, `serie`, `date`.
|
||||
- Wenn `o365_id` leer ist: User fragen, ob Auto-Import übersprungen werden soll (dann weiter bei Schritt 4 ohne Recap/Transkript).
|
||||
|
||||
## Schritt 2 — Artifacts holen
|
||||
|
||||
Führe aus:
|
||||
```
|
||||
cd scripts
|
||||
node fetch-meeting-artifacts.js --o365-id <o365_id> --out /tmp/artifacts.json
|
||||
```
|
||||
|
||||
Lies das JSON. Erwartete Felder:
|
||||
- `meeting.seriesMasterId`
|
||||
- `transcript` (string oder null)
|
||||
- `recap` (object mit `meetingNotes`, `actionItems`, `mentions` — oder null)
|
||||
- `recordingUrl` (string oder null)
|
||||
- `warnings` (Liste)
|
||||
|
||||
Wenn `transcript === null` und `recap === null`: User fragen, ob er den Recap aus Teams einfügen will, oder ob das Meeting ohne Auto-Import abgeschlossen werden soll.
|
||||
|
||||
## Schritt 3 — Sprecher-Mapping
|
||||
|
||||
Sammle alle Sprecher-Namen aus `transcript` (Zeilenanfang vor `:`).
|
||||
Pro Name → Wikilink über Personenmatching (siehe `00 Kontext/Personen/`) oder null.
|
||||
Notiere ungematchte Sprecher als offene Punkte am Ende des Berichts.
|
||||
|
||||
## Schritt 4 — Doppel-Pass-Synthese
|
||||
|
||||
Lies die existierende Meeting-Notiz vollständig (Live-Notizen!).
|
||||
|
||||
Doppel-Pass:
|
||||
- **Aus Recap** (sofern vorhanden): Topics, Entscheidungen, offene Fragen, Tasks extrahieren.
|
||||
- **Aus Transkript**: pro Recap-Aussage validieren; ergänze Details, die mehrfach im Transkript bestätigt sind aber im Recap fehlen. Sprecher als Wikilinks ersetzen.
|
||||
|
||||
Schreibe Ergebnis in die Meeting-Notiz:
|
||||
- `## Notizen` (gegliedert nach Topics, mit Wikilinks zu Sprechern)
|
||||
- `## Entscheidungen`
|
||||
- `## Offene Fragen`
|
||||
- `## Aufgaben` (Owner als Wikilinks)
|
||||
|
||||
**Merge-Regel mit Live-Notizen:**
|
||||
- Live-Eintrag mit gleichem Aktor + gleicher Kernaussage → Recap-Eintrag SKIP.
|
||||
- Live-Eintrag stub (nur Stichwort) → durch Recap-Detail ergänzen.
|
||||
- Recap-Eintrag neu → unten anhängen.
|
||||
- Reihenfolge: Live-Order bleibt, neue Items hinten.
|
||||
|
||||
Wenn `recordingUrl` vorhanden: füge ins Frontmatter `recording_url: <url>` ein (oder ersetze existierenden Wert).
|
||||
|
||||
## Schritt 5 — Agenda-Rückführung mit Konfidenz
|
||||
|
||||
Bestimme die zugehörige Agenda:
|
||||
- Aus Frontmatter `serie:` der Meeting-Notiz.
|
||||
- Pfad: `03 Bereiche/Jour Fixe/<Serie>/Agenda*.md`.
|
||||
- Verifiziere: `o365_series_id` der Agenda matched `meeting.seriesMasterId`. Mismatch → User warnen.
|
||||
- Falls die Agenda kein `o365_series_id` hat und `meeting.seriesMasterId` vorhanden ist: lazy-backfill (siehe `/meeting`).
|
||||
|
||||
Pro Topic der Meeting-Notiz (H3-Überschriften unter `## 📌 Dauerläufer`, `## 🆕 Neu`, `## ⏸️ Postponed`):
|
||||
|
||||
| Signal in Notiz/Recap/Transkript | Konfidenz | Aktion |
|
||||
|---|---|---|
|
||||
| `## ⏸️ Postponed` enthält dieses Topic | HOCH | postpone → in Agenda `## ⏸️ Postponed` verschieben |
|
||||
| Topic-Status aus Notiz oder Recap: "erledigt"/"abgeschlossen"/"✅" + alle Tasks done | HOCH | archivieren (mit ganzer Historie) |
|
||||
| Topic erwähnt, kein Abschluss-Marker | HOCH | Historie-Eintrag in Agenda: `**YYYY-MM-DD:** Kurzfassung → [[Meeting-Notiz]]` |
|
||||
| Topic in Agenda, aber nicht im Notiz-Block | HOCH | unverändert |
|
||||
| Mehrdeutig | NIEDRIG | zur Bestätigung listen |
|
||||
|
||||
Sammel-Bericht VOR Schreiben:
|
||||
```
|
||||
Vorgesehene Aktionen:
|
||||
- 5 Topics: Historie-Eintrag (auto)
|
||||
- 2 Topics: archivieren (auto): X, Y
|
||||
- 1 Topic: postponed (auto): Z
|
||||
|
||||
Bestätigung nötig:
|
||||
- "NAC-Projekt": Recap mehrdeutig — erledigt oder offen?
|
||||
|
||||
Ungematchte Sprecher (Personen-Notiz fehlt): Maria Schmidt
|
||||
```
|
||||
|
||||
User bestätigt einmal für HOCH-Aktionen, entscheidet pro NIEDRIG-Topic. Dann ausführen.
|
||||
|
||||
## Schritt 6 — Neue Topics nach Dauerläufer
|
||||
|
||||
Topics, die in `## 🆕 Neu` der Meeting-Notiz standen und nicht archiviert oder postponed wurden, in der Agenda nach `## 📌 Dauerläufer` verschieben (🆕-Emoji aus Titel entfernen).
|
||||
|
||||
## Schritt 7 — Status
|
||||
|
||||
In der Meeting-Notiz: `status: abgeschlossen` setzen.
|
||||
|
||||
## Schritt 8 — Bericht
|
||||
|
||||
Gib eine Zusammenfassung aus:
|
||||
- Recap aus Graph: ja/nein
|
||||
- Transkript: ja/nein
|
||||
- Recording-Link: ja/nein
|
||||
- X Topics aktualisiert, Y archiviert, Z postponed, W neu nach Dauerläufer
|
||||
- Ungematchte Sprecher (falls vorhanden): Hinweis auf fehlende Personen-Notizen
|
||||
- Warnings aus dem Fetch-Script (falls vorhanden)
|
||||
|
|
|
|||
Loading…
Reference in New Issue