Aufräumpunkt k (Spec §31): - Aufbewahrung: services/lotse/retention.ts leert input/output und createdById von AiGeneration-Einträgen älter als AI_GENERATION_RETENTION_DAYS (Default 180), Metadaten bleiben, Audit je Mandant. Queue/Processor ai-retention, täglicher BullMQ-Job-Scheduler beim Start des craftvia-worker. - Kontingent: services/lotse/budget.ts (Tokens ein+aus je Kalendermonat, TenantSettings-Wert vor Env AI_MONTHLY_TOKEN_LIMIT, 0 = unbegrenzt). Lotse-Entwurf und Sprachnotiz-Zusammenfassung → blocked budget_exceeded mit Klartext; Import-Extraktion fällt auf manuelle Erfassung zurück (Hinweis ai_budget_exceeded). /settings/lotse: Kontingent setzen, Verbrauch anzeigen. - scripts/test-betrieb-audit.ts: Audit nach Commit/Rollback/verschachtelt, Merge atomar und in äußerer Transaktion, Audit „read", Aufbewahrung (Frist, Metadaten, Idempotenz, Mandant B), Kontingent (Mandant/Env/Vormonat/unbegrenzt, Rollen, Audit). Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
159 lines
6.9 KiB
JSON
159 lines
6.9 KiB
JSON
{
|
||
"name": "Lotse",
|
||
"suggestionBadge": "Vorschlag vom Lotsen – bitte prüfen",
|
||
"draft": {
|
||
"button": "Bericht mit Lotse vorbereiten",
|
||
"again": "Neu vorbereiten",
|
||
"running": "Lotse bereitet den Bericht vor …",
|
||
"hint": "Der Lotse formuliert aus Notizen, Sprachnotizen, Zeiten, Material, Fotos und Checkliste einen Vorschlag. In den Bericht kommt nur, was bestätigt wird.",
|
||
"notConfigured": "Lotse ist nicht eingerichtet. Das Büro kann den KI-Anbieter hinterlegen.",
|
||
"done": "{count, plural, =0 {Keine Vorschläge – dafür fehlen noch Daten.} one {# Vorschlag bereit.} other {# Vorschläge bereit.}}",
|
||
"draftedAt": "Vorbereitet am {date}",
|
||
"missingTitle": "Das fehlt dem Lotsen noch",
|
||
"unsavedHint": "Ungespeicherte Änderungen im Bericht vorher speichern.",
|
||
"allDecided": "Alle Vorschläge sind bearbeitet.",
|
||
"reviewedAt": "Vorschlag geprüft und bestätigt am {date}"
|
||
},
|
||
"suggestion": {
|
||
"current": "Bisheriger Text",
|
||
"empty": "(leer)",
|
||
"text": "Vorschlag",
|
||
"accept": "Übernehmen",
|
||
"discard": "Verwerfen",
|
||
"accepted": "Übernommen",
|
||
"discarded": "Verworfen"
|
||
},
|
||
"review": {
|
||
"label": "Ich habe den Vorschlag vom Lotsen geprüft.",
|
||
"hint": "Pflicht vor dem Absenden: Dieser Bericht wurde mit dem Lotsen vorbereitet."
|
||
},
|
||
"completeness": {
|
||
"title": "{count, plural, one {# Angabe fehlt} other {# Angaben fehlen}}",
|
||
"check": "Lotse prüfen lassen",
|
||
"fix": "Ergänzen",
|
||
"fromLotse": "Hinweis vom Lotsen",
|
||
"item": {
|
||
"photo_requirement": "Pflichtfoto fehlt: {label}",
|
||
"checklist_item": "Pflichtpunkt der Checkliste offen: {label}",
|
||
"material_reason": "Materialabweichung ohne Grund: {label}",
|
||
"material_unconfirmed": "Geplantes Material nicht bestätigt: {label}",
|
||
"no_work_time": "Keine Arbeitszeit erfasst",
|
||
"no_description": "Keine Tätigkeitsbeschreibung",
|
||
"signature_missing": "Unterschrift fehlt",
|
||
"lotse_hint": "{text}"
|
||
}
|
||
},
|
||
"voice": {
|
||
"status": {
|
||
"pending": "Transkription läuft",
|
||
"done": "Transkribiert",
|
||
"failed": "Transkription fehlgeschlagen",
|
||
"disabled": "Ohne Transkription"
|
||
},
|
||
"transcript": "Transkript",
|
||
"noTranscript": "Noch kein Text. Text kann von Hand eingetragen werden.",
|
||
"edit": "Transkript bearbeiten",
|
||
"cancel": "Abbrechen",
|
||
"save": "Transkript speichern",
|
||
"saved": "Transkript gespeichert.",
|
||
"summarize": "Sprachnotiz zusammenfassen",
|
||
"summarizing": "Lotse fasst zusammen …",
|
||
"summaryTitle": "Zusammenfassung",
|
||
"adopt": "Als Notiz übernehmen",
|
||
"adopted": "Als Notiz gespeichert.",
|
||
"dismiss": "Ausblenden",
|
||
"fromVoice": "aus Sprachnotiz"
|
||
},
|
||
"errors": {
|
||
"generic": "Das hat nicht geklappt. Bitte erneut versuchen.",
|
||
"not_found": "Nicht gefunden.",
|
||
"forbidden": "Dafür fehlt die Berechtigung.",
|
||
"disabled": "Lotse ist für diesen Betrieb ausgeschaltet.",
|
||
"not_configured": "Lotse ist nicht eingerichtet.",
|
||
"provider_failed": "Lotse ist gerade nicht erreichbar. Bitte später erneut versuchen.",
|
||
"not_editable": "Der Bericht ist eingereicht und kann nicht mehr geändert werden.",
|
||
"no_suggestion": "Dieser Vorschlag ist schon bearbeitet. Bitte Seite neu laden.",
|
||
"no_transcript": "Die Sprachnotiz hat noch keinen Text.",
|
||
"pending": "Die Transkription läuft noch.",
|
||
"conflict": "Inzwischen geändert. Bitte Seite neu laden.",
|
||
"invalid": "Bitte Eingaben prüfen.",
|
||
"budget_exceeded": "Das monatliche KI-Kontingent des Betriebs ist aufgebraucht. Bitte den Bericht selbst schreiben oder das Büro fragen."
|
||
},
|
||
"settings": {
|
||
"back": "Einstellungen",
|
||
"crumb": "Organisation",
|
||
"title": "Lotse (KI-Assistent)",
|
||
"sub": "Einschalten, Anrede und Transparenz",
|
||
"saved": "Einstellungen gespeichert.",
|
||
"error": "Speichern nicht möglich.",
|
||
"use": "Verwendung",
|
||
"enabled": "Lotse für diesen Betrieb verwenden",
|
||
"enabledHint": "Ausgeschaltet: keine Berichtsentwürfe, keine Zusammenfassungen, Sprachnotizen ohne Transkription.",
|
||
"addressForm": "Anrede des Lotsen",
|
||
"addressFormHint": "Gilt einheitlich für alle Texte des Lotsen in diesem Betrieb.",
|
||
"address": {
|
||
"neutral": "Neutral, ohne Anrede",
|
||
"sie": "Sie",
|
||
"du": "du"
|
||
},
|
||
"save": "Speichern",
|
||
"budget": "Monatliches KI-Kontingent (Tokens)",
|
||
"budgetHint": "Leer = Vorgabe der Plattform ({platform}). 0 = unbegrenzt. Ist das Kontingent aufgebraucht, bereitet der Lotse bis Monatsende nichts mehr vor.",
|
||
"budgetUnlimited": "unbegrenzt",
|
||
"budgetUsage": "Verbraucht seit {since}: {used} von {limit}",
|
||
"budgetExceeded": "Kontingent aufgebraucht",
|
||
"dataTitle": "Welche Daten an wen gehen",
|
||
"draftProvider": "Berichtsentwurf und Zusammenfassung",
|
||
"transcriptionProvider": "Transkription von Sprachnotizen",
|
||
"providerLine": "{provider} · Modell {model}",
|
||
"transcriptionLine": "Server {host} · Modell {model}",
|
||
"configured": "eingerichtet",
|
||
"notConfigured": "nicht eingerichtet",
|
||
"sentTitle": "Gesendet wird",
|
||
"sent": {
|
||
"order": "Auftragstitel, Beschreibung und Leistungsumfang",
|
||
"notes": "Tätigkeitsnotizen und Texte aus Sprachnotizen",
|
||
"work": "Checkliste, Material mit Abweichungsgründen, Fotokommentare, Arbeitszeiten",
|
||
"audio": "Für die Transkription: die Audiodatei der Sprachnotiz"
|
||
},
|
||
"notSentTitle": "Nicht gesendet wird",
|
||
"notSent": {
|
||
"contact": "Telefonnummern, E-Mail-Adressen und Anschriften (werden durch Platzhalter ersetzt)",
|
||
"names": "Namen: Mitarbeitende nur als Initialen, Ansprechpartner und Privatkunden als Rolle",
|
||
"customer": "Kundenname, Kundennummer, Fotos und Unterschriften"
|
||
},
|
||
"principle": "Vorschläge des Lotsen werden gekennzeichnet und erst nach Bestätigung übernommen. Ein vorbereiteter Bericht kann nur mit der Bestätigung „Ich habe den Vorschlag geprüft“ abgesendet werden. Die ursprünglichen Notizen bleiben unverändert.",
|
||
"protocolLink": "KI-Protokoll ansehen"
|
||
},
|
||
"protocol": {
|
||
"back": "Lotse-Einstellungen",
|
||
"crumb": "Organisation · Lotse",
|
||
"title": "KI-Protokoll",
|
||
"sub": "Jede Nutzung des Lotsen: Zeitpunkt, Art, Modell, Tokens, Nutzer",
|
||
"empty": "Noch keine KI-Nutzung.",
|
||
"time": "Zeitpunkt",
|
||
"kind": "Art",
|
||
"model": "Modell",
|
||
"tokens": "Tokens (ein/aus)",
|
||
"user": "Nutzer",
|
||
"system": "System",
|
||
"content": "Inhalt",
|
||
"show": "Anzeigen",
|
||
"contentTitle": "Gesendete Daten und Antwort",
|
||
"input": "An den Anbieter gesendet",
|
||
"output": "Antwort",
|
||
"close": "Schließen",
|
||
"contentHint": "Inhalte sehen nur Mandantenadministratoren.",
|
||
"prev": "Zurück",
|
||
"next": "Weiter",
|
||
"pageOf": "Seite {page} von {pages}",
|
||
"kinds": {
|
||
"report_draft": "Berichtsentwurf",
|
||
"voice_summary": "Zusammenfassung Sprachnotiz",
|
||
"transcription": "Transkription",
|
||
"import_extraction": "Auftragsimport",
|
||
"completeness_check": "Vollständigkeitsprüfung"
|
||
}
|
||
}
|
||
}
|