Files
craftvia/messages/en/lotse.json
T
msolarczekandClaude Opus 5 b0aedb5d23 L10b Betrieb & Aufräumen: Lotse-Betrieb – Aufbewahrung KI-Protokoll und Token-Kontingent
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>
2026-09-14 18:19:19 +02:00

159 lines
6.4 KiB
JSON
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{
"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.",
"budget_exceeded": "This business has used up its monthly AI allowance. Please write the report yourself or ask the office."
},
"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",
"budget": "Monthly AI allowance (tokens)",
"budgetHint": "Empty = platform default ({platform}). 0 = unlimited. Once used up, Lotse prepares nothing until the end of the month.",
"budgetUnlimited": "unlimited",
"budgetUsage": "Used since {since}: {used} of {limit}",
"budgetExceeded": "Allowance used up",
"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"
}
}
}