Mac-Worker: - profiles/meeting.yaml — extrahiert die bisherigen Prompts + DOCX-Layout - core/profiles.py — YAML-Loader mit Cache und Fallback - ollama_client.summarize/make_protocol nehmen profile_name - docx_export: generischer Renderer aus profile.docx (meta + sections mit Typ text/list/tasks/transcript) - /api/profiles listet verfügbare Profile - pyyaml als Dependency LXC: - Job.profile + User.default_profile (Migration: ALTER TABLE) - /api/profiles proxy mit 60s-Cache und Fallback - Upload-Form akzeptiert profile (Server-Default: user.default_profile) - Pipeline gibt Profile bei summarize/protocol/docx an Mac weiter - PATCH /api/auth/me — User kann Standard-Profil ändern Frontend: - Profile-Dropdown im Upload (nur sichtbar wenn ≥2 Profile) - Settings-Karte "Mein Standard-Profil" (nur wenn ≥2 Profile) - Job-Zeile zeigt grünes Profile-Tag (nur wenn relevant) Neue Profile = neue YAML-Datei in mac-worker/profiles/ — kein Code-Deploy nötig, der Mac-Worker liest sie beim Start ein.
64 lines
2.2 KiB
YAML
64 lines
2.2 KiB
YAML
name: meeting
|
|
display_name: Sitzungsprotokoll
|
|
language: de
|
|
|
|
summary_prompt: |
|
|
Du bist ein präziser Protokollassistent für deutsche Geschäftssitzungen.
|
|
Analysiere das folgende Sitzungstranskript und liefere ein JSON-Objekt mit:
|
|
|
|
- "topic": Hauptthema der Sitzung (kurz)
|
|
- "summary": Zusammenfassung in 3-6 Sätzen
|
|
- "decisions": Liste der Beschlüsse (jeweils ein Satz)
|
|
- "tasks": Liste der Aufgaben, jede mit "owner" (Name oder "n/a") und "task"
|
|
- "participants": Liste der erkennbaren Teilnehmer (Namen oder "Sprecher 1/2/...")
|
|
- "open_questions": Liste offener Fragen (kann leer sein)
|
|
|
|
Antworte AUSSCHLIESSLICH mit gültigem JSON, keine Erläuterungen, kein Markdown-Codeblock.
|
|
|
|
Sitzungstitel: {title}
|
|
|
|
Transkript:
|
|
"""
|
|
{transcript}
|
|
"""
|
|
|
|
protocol_prompt: |
|
|
Erstelle aus den folgenden Daten ein formelles deutsches Sitzungsprotokoll
|
|
als JSON-Objekt mit folgenden Feldern:
|
|
|
|
- "title": Protokoll-Titel
|
|
- "date": Datum (YYYY-MM-DD, falls aus Transkript ableitbar, sonst leer)
|
|
- "topic": Thema
|
|
- "participants": Liste der Teilnehmer
|
|
- "summary": Zusammenfassung
|
|
- "decisions": Liste der Beschlüsse
|
|
- "tasks": Liste der Aufgaben (jeweils mit "owner" und "task")
|
|
- "open_questions": Liste offener Fragen
|
|
- "next_meeting": Wenn erwähnt, sonst leer
|
|
- "transcript_excerpt": Liste von Objekten mit "time", "speaker", "text" (max. 20 Einträge, zeitlich verteilt aus dem Transkript ziehen)
|
|
|
|
Antworte AUSSCHLIESSLICH mit JSON, kein Markdown.
|
|
|
|
Titel: {title}
|
|
Bestehende Zusammenfassung: {summary_json}
|
|
|
|
Transkript:
|
|
"""
|
|
{transcript}
|
|
"""
|
|
|
|
docx:
|
|
title_field: title
|
|
default_title: Sitzungsprotokoll
|
|
meta:
|
|
- { key: date, label: "Datum" }
|
|
- { key: topic, label: "Thema" }
|
|
sections:
|
|
- { key: participants, label: "Teilnehmer", type: list }
|
|
- { key: summary, label: "Zusammenfassung", type: text }
|
|
- { key: decisions, label: "Beschlüsse", type: list }
|
|
- { key: tasks, label: "Aufgaben", type: tasks }
|
|
- { key: open_questions, label: "Offene Fragen", type: list }
|
|
- { key: next_meeting, label: "Nächster Termin", type: text }
|
|
- { key: transcript_excerpt, label: "Transkript-Auszug", type: transcript }
|