L9 Lotse – KI-Assistent: Transkription, Berichtsentwurf, Vollständigkeitsprüfung, Freigabeprinzip (Services)

- OpenAI-kompatible Transkription + Processor transcription (done/failed/disabled, AiGeneration, Notiz aus Sprachnotiz)
- Claude-Lotse (strukturierte Ausgabe, Refusal/Fallback), Datenminimierung, Vorschläge in content.lotse
- Vollständigkeitsprüfung (Regeln + KI-Hinweise mit Deep-Link), Einstellungen, KI-Protokoll
- Freigabeprinzip: Submit eines Lotse-Entwurfs nur mit Prüfbestätigung (serverseitig)
- Migration lotse_address_form (TenantSettings)

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
2026-09-14 17:19:38 +02:00
co-authored by Claude Opus 5
parent d5c1221ab5
commit ff5c57f276
39 changed files with 1815 additions and 7 deletions
+152
View File
@@ -0,0 +1,152 @@
{
"name": "Lotse",
"suggestionBadge": "Suggestion from Lotse – please review",
"draft": {
"button": "Prepare report with Lotse",
"again": "Prepare again",
"running": "Lotse is preparing the report …",
"hint": "Lotse drafts a suggestion from notes, voice notes, times, material, photos and checklist. Only what is confirmed goes into the report.",
"notConfigured": "Lotse is not set up. The office can configure the AI provider.",
"done": "{count, plural, =0 {No suggestions – data is still missing.} one {# suggestion ready.} other {# suggestions ready.}}",
"draftedAt": "Prepared on {date}",
"missingTitle": "Lotse is still missing",
"unsavedHint": "Save unsaved changes in the report first.",
"allDecided": "All suggestions have been handled.",
"reviewedAt": "Suggestion reviewed and confirmed on {date}"
},
"suggestion": {
"current": "Current text",
"empty": "(empty)",
"text": "Suggestion",
"accept": "Accept",
"discard": "Discard",
"accepted": "Accepted",
"discarded": "Discarded"
},
"review": {
"label": "I have reviewed the Lotse suggestion.",
"hint": "Required before submitting: this report was prepared with Lotse."
},
"completeness": {
"title": "{count, plural, one {# item missing} other {# items missing}}",
"check": "Let Lotse check",
"fix": "Complete",
"fromLotse": "Hint from Lotse",
"item": {
"photo_requirement": "Required photo missing: {label}",
"checklist_item": "Required checklist item open: {label}",
"material_reason": "Material deviation without reason: {label}",
"material_unconfirmed": "Planned material not confirmed: {label}",
"no_work_time": "No working time recorded",
"no_description": "No description of the work",
"signature_missing": "Signature missing",
"lotse_hint": "{text}"
}
},
"voice": {
"status": {
"pending": "Transcription running",
"done": "Transcribed",
"failed": "Transcription failed",
"disabled": "No transcription"
},
"transcript": "Transcript",
"noTranscript": "No text yet. Text can be entered manually.",
"edit": "Edit transcript",
"cancel": "Cancel",
"save": "Save transcript",
"saved": "Transcript saved.",
"summarize": "Summarise voice note",
"summarizing": "Lotse is summarising …",
"summaryTitle": "Summary",
"adopt": "Save as note",
"adopted": "Saved as note.",
"dismiss": "Hide",
"fromVoice": "from voice note"
},
"errors": {
"generic": "That did not work. Please try again.",
"not_found": "Not found.",
"forbidden": "You are not allowed to do this.",
"disabled": "Lotse is switched off for this business.",
"not_configured": "Lotse is not set up.",
"provider_failed": "Lotse is currently unavailable. Please try again later.",
"not_editable": "The report has been submitted and can no longer be changed.",
"no_suggestion": "This suggestion has already been handled. Please reload the page.",
"no_transcript": "The voice note has no text yet.",
"pending": "The transcription is still running.",
"conflict": "Changed in the meantime. Please reload the page.",
"invalid": "Please check your input."
},
"settings": {
"back": "Settings",
"crumb": "Organisation",
"title": "Lotse (AI assistant)",
"sub": "Switch on, form of address and transparency",
"saved": "Settings saved.",
"error": "Could not save.",
"use": "Usage",
"enabled": "Use Lotse in this business",
"enabledHint": "Switched off: no report drafts, no summaries, voice notes without transcription.",
"addressForm": "Lotse form of address",
"addressFormHint": "Applies consistently to all Lotse texts in this business.",
"address": {
"neutral": "Neutral, no form of address",
"sie": "Formal (Sie)",
"du": "Informal (du)"
},
"save": "Save",
"dataTitle": "Which data goes where",
"draftProvider": "Report draft and summary",
"transcriptionProvider": "Voice note transcription",
"providerLine": "{provider} · model {model}",
"transcriptionLine": "Server {host} · model {model}",
"configured": "set up",
"notConfigured": "not set up",
"sentTitle": "Sent",
"sent": {
"order": "Work order title, description and scope",
"notes": "Activity notes and voice note texts",
"work": "Checklist, material with deviation reasons, photo comments, working times",
"audio": "For transcription: the audio file of the voice note"
},
"notSentTitle": "Not sent",
"notSent": {
"contact": "Phone numbers, e-mail addresses and postal addresses (replaced by placeholders)",
"names": "Names: employees as initials only, contacts and private customers as roles",
"customer": "Customer name, customer number, photos and signatures"
},
"principle": "Lotse suggestions are marked and only applied after confirmation. A prepared report can only be submitted with the confirmation “I have reviewed the suggestion”. The original notes stay unchanged.",
"protocolLink": "View AI log"
},
"protocol": {
"back": "Lotse settings",
"crumb": "Organisation · Lotse",
"title": "AI log",
"sub": "Every use of Lotse: time, kind, model, tokens, user",
"empty": "No AI usage yet.",
"time": "Time",
"kind": "Kind",
"model": "Model",
"tokens": "Tokens (in/out)",
"user": "User",
"system": "System",
"content": "Content",
"show": "Show",
"contentTitle": "Data sent and response",
"input": "Sent to the provider",
"output": "Response",
"close": "Close",
"contentHint": "Only tenant administrators can see contents.",
"prev": "Previous",
"next": "Next",
"pageOf": "Page {page} of {pages}",
"kinds": {
"report_draft": "Report draft",
"voice_summary": "Voice note summary",
"transcription": "Transcription",
"import_extraction": "Order import",
"completeness_check": "Completeness check"
}
}
}