/** * Antwort-Generator: erzeugt einen formellen deutschen Antwort-Entwurf * passend zum Brieftyp und zur gewählten Vorlage. Der Nutzer kann den * Entwurf danach frei bearbeiten und als PDF exportieren. */ import { AntwortTyp, ANTWORT_TYP_LABEL, BriefAnalyse } from '../types'; import { claudeJsonAufruf, MODELL_EINFACH } from './claudeClient'; const ANTWORT_SCHEMA = { type: 'object', additionalProperties: false, required: ['betreff', 'text'], properties: { betreff: { type: 'string', description: 'Betreffzeile des Antwortbriefs.' }, text: { type: 'string', description: 'Vollständiger Brieftext inkl. Anrede und Grußformel. Platzhalter in eckigen Klammern für persönliche Daten, z. B. [Ihr Name], [Ihre Adresse], [Kundennummer].', }, }, } as const; export interface AntwortEntwurf { betreff: string; text: string; } /** * @param analyse - Analyse des Original-Briefs (liefert Kontext) * @param typ - gewählte Antwort-Vorlage * @param hinweise - optionale Angaben des Nutzers (z. B. Wunschtermin, Grund) */ export async function generiereAntwort( analyse: BriefAnalyse, typ: AntwortTyp, hinweise: string ): Promise { return claudeJsonAufruf({ modell: MODELL_EINFACH, maxTokens: 4000, system: `Du schreibst formelle, höfliche Antwortbriefe an deutsche Behörden im Namen von Privatpersonen. Regeln: - Korrektes, formelles Deutsch (der Empfänger ist eine Behörde — hier KEINE einfache Sprache). - Kurz und präzise, keine Floskeln über das Nötige hinaus. - Persönliche Daten, die du nicht kennst, als Platzhalter in eckigen Klammern: [Ihr Name], [Ihre Adresse], [Aktenzeichen] usw. - Aktenzeichen/Kundennummer aus dem Original-Brief referenzieren, falls bekannt. - Bei Widersprüchen: sachlich, Frist wahren, Begründung ankündigen falls der Nutzer keine angegeben hat. Weise am Ende des Textes in einer Zeile "[Hinweis: ...]" darauf hin, dass bei rechtlichen Fragen eine Beratungsstelle oder ein Anwalt helfen kann — die App ersetzt keine Rechtsberatung.`, schema: ANTWORT_SCHEMA, messages: [ { role: 'user', content: `Schreibe eine Antwort auf diesen Behördenbrief. Art der Antwort: ${ANTWORT_TYP_LABEL[typ]} Analyse des Original-Briefs: ${JSON.stringify( { brieftyp: analyse.brieftyp, absender: analyse.absender, kernaussage: analyse.kernaussage, frist: analyse.frist, termin: analyse.termin, }, null, 2 )} Zusätzliche Angaben des Nutzers: ${hinweise.trim() || 'keine'}`, }, ], }); }