feat: Umstellung auf Anthropic Claude SDK, Rechnungsgenerator-Systemtemplate und Task-Status-Sync

- LLM-Integration von LM Studio (Spring AI OpenAI) auf Anthropic Java SDK umgestellt
- Rechnungsgenerator: System-Template für Rechnungen an Nutzer, Canvas leeren, PDF-Vorschau
- Job manuell beenden sendet job_deleted an verbundene App-Clients
- MessageController: nur offene Jobs ausliefern, station_completed per jobId auflösen
- App: Task-Erledigungsstatus aus Server-Tasks auf Stations-Snapshots übernehmen, lokale Task-Status bei Offline-Pufferung erhalten
- Adressbuch-Wording in allen Sprachdateien, Version 0.9.18

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
2026-07-06 11:16:34 +02:00
parent 31b18e1f52
commit 09db861064
21 changed files with 1087 additions and 652 deletions

View File

@@ -240,7 +240,7 @@ page.title.dashboard=VotianLT - Tableau de bord
page.title.appuser.create=Cr\u00e9er un nouvel utilisateur d'app
page.title.messages=Messages
page.title.register=S'inscrire sur VotianLT
page.title.customers=Clients
page.title.customers=Carnet d'adresses
page.title.customer.edit=Modifier le client
page.title.verwaltung=Administration
page.title.company.create=Cr\u00e9er une nouvelle entreprise
@@ -248,7 +248,7 @@ page.title.imprint=Mentions l\u00e9gales
page.title.profile.edit=Modifier le profil
page.title.admin.dashboard=Tableau de bord administrateur
page.title.invoice.create=Cr\u00e9er une facture
page.title.customer.create=Cr\u00e9er un nouveau client
page.title.customer.create=Cr\u00e9er une nouvelle adresse
page.title.login=Se connecter \u00e0 VotianLT
page.title.jobs=Missions
page.title.appuser.edit=Modifier l'utilisateur d'app
@@ -327,9 +327,9 @@ editappuser.dialog.delete.text=Voulez-vous vraiment supprimer cet utilisateur d'
editappuser.dialog.delete.confirm=Supprimer
# Customers
customers.title=Clients
customers.button.add=Ajouter un nouveau client
customers.hint.click=Cliquez sur un client pour voir les d\u00e9tails
customers.title=Carnet d'adresses
customers.button.add=Ajouter une nouvelle adresse
customers.hint.click=Cliquez sur une entr\u00e9e d'adresse pour voir les d\u00e9tails
customers.column.company=Entreprise
customers.column.name=Nom
customers.column.email=E-mail
@@ -348,8 +348,8 @@ editcustomer.dialog.delete.text=Voulez-vous vraiment supprimer ce client ?
editcustomer.dialog.delete.confirm=Supprimer
# Add Customer
addcustomer.title=Cr\u00e9er un nouveau client
addcustomer.button.submit=Cr\u00e9er le client
addcustomer.title=Cr\u00e9er une nouvelle adresse
addcustomer.button.submit=Cr\u00e9er l'adresse
addcustomer.notification.validation=Veuillez remplir tous les champs obligatoires
addcustomer.notification.success=Client cr\u00e9\u00e9 avec succ\u00e8s
addcustomer.notification.check=Veuillez v\u00e9rifier vos saisies
@@ -987,3 +987,24 @@ adminpricetable.field.revenue=Participation au chiffre d'affaires
adminpricetable.notification.saved=Le tableau des prix a \u00e9t\u00e9 enregistr\u00e9
adminpricetable.notification.save.error=Erreur lors de l'enregistrement : {0}
adminpricetable.notification.load.error=Erreur lors du chargement : {0}
# Générateur de factures - modèle système (factures aux utilisateurs)
invoicegenerator.issuer.header=Émetteur de la facture
invoicegenerator.issuer.website=Site web
invoicegenerator.issuer.senderline=Ligne d'expéditeur
invoicegenerator.issuer.paymentterms=Conditions de paiement
invoicegenerator.issuer.footer=Pied de page
invoicegenerator.issuer.invoicedate=Date de la facture
invoicegenerator.recipient.header=Destinataire (utilisateur)
invoicegenerator.recipient.company=Société de l'utilisateur
invoicegenerator.recipient.name=Nom de l'utilisateur
invoicegenerator.recipient.street=Rue de l'utilisateur
invoicegenerator.recipient.city=Ville de l'utilisateur
invoicegenerator.recipient.email=E-mail de l'utilisateur
invoicegenerator.template.saved=Modèle enregistré
invoicegenerator.template.save.error=Erreur lors de l''enregistrement du modèle : {0}
invoicegenerator.button.clear=Vider
invoicegenerator.notification.cleared=Canevas vidé
invoicegenerator.notification.canvas.error=Impossible de lire les données du canevas
invoicegenerator.notification.preview.error=Erreur d''aperçu : {0}
invoicegenerator.pdf.preview.title=Aperçu PDF