feat(tickets): Foto-/Datei-Anhänge an Tickets
- Anhänge im Melde-Fenster (beim Erstellen) und direkt an bestehenden Tickets:
Vorschaubilder, Öffnen im neuen Tab, Entfernen.
- Bytes liegen in eigener Tabelle (FeedbackAttachment, lose FeedbackId ohne FK →
übersteht den Ingest-Wipe); GET /feedback liefert nur Metadaten (id/Name/Typ/Größe),
die Bytes über /feedback/attachments/{id}. Größenlimit 10 MB.
- Endpoints: POST /feedback/{id}/attachments (base64), GET /feedback/attachments/{id}
(Bytes), DELETE /feedback/attachments/{id}.
Migration FeedbackAttachments. Tests: 262 Backend grün (+Upload/Serve/Delete +Validierung),
e2e Tickets Desktop+Phone grün (+Foto-Upload), vitest 149.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -1204,6 +1204,9 @@ export const de = {
|
||||
/** „Ähnliche bereits gelöste Tickets" im Melde-Fenster. */
|
||||
similarTitle: 'Schon mal gelöst? Vielleicht hilft eines davon:',
|
||||
similarOpen: 'ansehen',
|
||||
/** Datei-Anhänge. */
|
||||
attachLabel: 'Fotos anhängen (optional)',
|
||||
attachmentError: 'Ein Anhang konnte nicht hochgeladen werden.',
|
||||
/** Toast nach erfolgreichem "ID kopieren". */
|
||||
idCopied: 'ID kopiert',
|
||||
idCopyFailed: 'ID konnte nicht kopiert werden.',
|
||||
@@ -1290,6 +1293,13 @@ export const de = {
|
||||
helpfulNo: '👎 Nein',
|
||||
helpfulThanks: 'Danke für die Rückmeldung!',
|
||||
helpfulReopenNote: 'Schade — ich öffne das Ticket wieder. Bitte schreib kurz, was noch fehlt.',
|
||||
/** Anhänge auf einem Ticket. */
|
||||
attachmentsLabel: 'Anhänge',
|
||||
addAttachment: 'Foto anhängen',
|
||||
removeAttachment: 'Anhang entfernen',
|
||||
attachmentAdded: 'Anhang hinzugefügt.',
|
||||
attachmentRemoved: 'Anhang entfernt.',
|
||||
attachmentError: 'Anhang konnte nicht verarbeitet werden.',
|
||||
/** Changelog (fixNote) auf geschlossenen Tickets. */
|
||||
changelogLabel: 'Was wurde geändert',
|
||||
/** Überschrift des Frage/Antwort-Verlaufs (frühere Runden). */
|
||||
|
||||
Reference in New Issue
Block a user