feat(07): add CSV format help text and Exchange 401 diagnostic hints
Tessera CI/CD / Lint & Type Check (push) Waiting to run
Tessera CI/CD / Tests (push) Blocked by required conditions
Tessera CI/CD / Build & Deploy (push) Blocked by required conditions

- CSV import dialog shows format line + example before mode selection
- Exchange connection test: on 401, inline hint lists common causes
  (wrong credentials, domain format, username prefix, O365 not supported)
- Both de/en translations updated

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-06-29 09:42:08 +02:00
parent 9b453e3ed3
commit 3b2a36cd61
4 changed files with 51 additions and 16 deletions
@@ -111,6 +111,11 @@ export function CsvImportButton({ onImported }: CsvImportButtonProps) {
{/* Import mode inline dialog (below button, per UI-SPEC) */}
{showDialog && selectedFile && (
<div className="absolute right-0 top-10 z-30 w-80 rounded border border-border bg-card p-4 shadow-md">
<div className="mb-3 rounded bg-muted/50 px-3 py-2 text-xs text-muted-foreground space-y-0.5">
<p>{t('csvFormatHelp')}</p>
<p className="font-mono">{t('csvFormatExample')}</p>
</div>
<p className="text-sm font-medium text-foreground mb-3">
{t('importMode')}
</p>
@@ -507,6 +507,7 @@ export function InboxConfigForm() {
{/* Inline test feedback */}
{testResult !== null && (
<div className="space-y-1">
<p
className="text-sm"
style={{
@@ -521,6 +522,21 @@ export function InboxConfigForm() {
error: testResult.message ?? 'Unbekannter Fehler',
})}
</p>
{/* 401 hint for Exchange */}
{!testResult.success &&
form.protocol === 'exchange' &&
testResult.message?.includes('401') && (
<div className="rounded bg-muted/50 px-3 py-2 text-xs text-muted-foreground space-y-1">
<p className="font-medium">{t('form.exchangeAuthHint')}</p>
<ul className="list-disc list-inside space-y-0.5">
<li>{t('form.exchangeAuthHint1')}</li>
<li>{t('form.exchangeAuthHint2')}</li>
<li>{t('form.exchangeAuthHint3')}</li>
<li>{t('form.exchangeAuthHint4')}</li>
</ul>
</div>
)}
</div>
)}
{/* Inline save feedback */}
+8 -1
View File
@@ -296,6 +296,8 @@
"deleteVehicle": "Fahrzeug loeschen",
"deleteVehicleBody": "Das Fahrzeug {plate} wird dauerhaft aus der Stammdatenliste entfernt. Diese Aktion kann nicht rueckgaengig gemacht werden.",
"importCsv": "CSV importieren",
"csvFormatHelp": "CSV-Format (Semikolon): Kennzeichen;Marke;Modell;Fahrer",
"csvFormatExample": "Beispiel: GP-JL 728E;Mercedes;GLC 300;Max Mustermann",
"importMode": "Importmodus",
"importMerge": "Zusammenfuehren — neue Fahrzeuge hinzufuegen, vorhandene behalten",
"importReplace": "Ersetzen — alle vorhandenen Fahrzeuge loeschen und neu importieren",
@@ -337,7 +339,12 @@
"cancel": "Bearbeitung abbrechen",
"cancelDialog": "Abbrechen",
"showPassword": "Passwort anzeigen",
"hidePassword": "Passwort verbergen"
"hidePassword": "Passwort verbergen",
"exchangeAuthHint": "401 — moegliche Ursachen:",
"exchangeAuthHint1": "Falsches Passwort oder Benutzername",
"exchangeAuthHint2": "Domain: Windows-Kurzname (z.B. FIRMA, nicht firma.de)",
"exchangeAuthHint3": "Benutzername ohne Domain-Praefix (z.B. 'max.muster', nicht 'FIRMA\\max.muster')",
"exchangeAuthHint4": "Office 365 / Exchange Online: EWS-Basisauthentifizierung seit Okt. 2022 deaktiviert — nicht unterstuetzt"
},
"errors": {
"pollFailed": "Posteingang konnte nicht geprueft werden. Ueberpruefe die Konfiguration unter 'Moduleinstellungen > Posteingang'.",
+8 -1
View File
@@ -296,6 +296,8 @@
"deleteVehicle": "Delete Vehicle",
"deleteVehicleBody": "Vehicle {plate} will be permanently removed from the master list. This action cannot be undone.",
"importCsv": "Import CSV",
"csvFormatHelp": "CSV format (semicolon): Kennzeichen;Marke;Modell;Fahrer",
"csvFormatExample": "Example: GP-JL 728E;Mercedes;GLC 300;Max Mustermann",
"importMode": "Import Mode",
"importMerge": "Merge — add new vehicles, keep existing",
"importReplace": "Replace — delete all existing vehicles and re-import",
@@ -337,7 +339,12 @@
"cancel": "Cancel Editing",
"cancelDialog": "Cancel",
"showPassword": "Show password",
"hidePassword": "Hide password"
"hidePassword": "Hide password",
"exchangeAuthHint": "401 — possible causes:",
"exchangeAuthHint1": "Wrong password or username",
"exchangeAuthHint2": "Domain: Windows short name (e.g. COMPANY, not company.com)",
"exchangeAuthHint3": "Username without domain prefix (e.g. 'max.muster', not 'COMPANY\\max.muster')",
"exchangeAuthHint4": "Office 365 / Exchange Online: EWS basic auth disabled since Oct 2022 — not supported"
},
"errors": {
"pollFailed": "Could not check inbox. Review the configuration under 'Module Settings > Inbox'.",