feat(tickets): Rückfragen-Dialog, Verlinkungen, Entwurfssicherung + PWA-Vorbereitung

- Feedback: fixNote (Changelog), agentContext (intern), thread (Q&A-Verlauf);
  3 gefilterte Ansichten (Rückfragen/Offen/Geschlossen)
- Tickets-Text: klickbare Tier-Links (ID→Name), Ticket→Ticket-Links (?focus=),
  Markdown-Links; Antwort-Entwurf pro Ticket in localStorage
- "Fehler melden": Entwurf übersteht App-Wechsel/Schließen (ein gemeinsamer Entwurf)
- entityName als Hyperlink zum referenzierten Datensatz

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-06-22 22:38:23 +02:00
parent b9021fe577
commit dcf0e40f9b
18 changed files with 2592 additions and 154 deletions

View File

@@ -38,6 +38,27 @@ test('Tierakte: "Fehler melden"-Button öffnet den Dialog, Senden zeigt Erfolg',
expect(typeof report!.clientTimestamp).toBe('string')
})
test('Entwurf bleibt nach Schließen + Navigation + Wiederöffnen erhalten', async ({ page }) => {
skipUnlessMock()
// Auf einer Tier-Seite anfangen zu schreiben …
await page.goto('/rennmaeuse/kruemel')
await page.getByRole('button', { name: f.button }).click()
const dialog = page.getByRole('dialog', { name: f.dialogTitle })
await dialog.getByLabel(f.label).fill('Halb fertiger Text, will kurz was nachschauen …')
// … Fenster (versehentlich) schließen …
await dialog.getByRole('button', { name: f.close }).click()
await expect(dialog).not.toBeVisible()
// … in der App woanders hin navigieren (anderer Kontext) …
await page.goto('/wuerfe/w-kruemel')
// … „Fehler melden" erneut öffnen: der Text ist noch da.
await page.getByRole('button', { name: f.button }).click()
const dialog2 = page.getByRole('dialog', { name: f.dialogTitle })
await expect(dialog2.getByLabel(f.label)).toHaveValue('Halb fertiger Text, will kurz was nachschauen …')
})
test('Wurf-Ansicht: "Fehler melden"-Button öffnet den Dialog und sendet mit Wurf-Kontext', async ({ page, mockDb }) => {
skipUnlessMock()
await page.goto('/wuerfe/w-kruemel')