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:
@@ -27,6 +27,15 @@ export interface FeedbackInput {
|
||||
*/
|
||||
export type FeedbackStatus = 'Open' | 'NeedsInfo' | 'Answered' | 'Resolved'
|
||||
|
||||
/** Eine vergangene Frage/Antwort-Runde im Verlauf (Thread) eines Tickets. */
|
||||
export interface FeedbackThreadEntry {
|
||||
/** „maintainer" = Rückfrage, „breeder" = Antwort der Züchterin. */
|
||||
role: 'maintainer' | 'breeder'
|
||||
text: string
|
||||
/** Zeitpunkt der Runde (ISO-8601) oder null. */
|
||||
at: string | null
|
||||
}
|
||||
|
||||
export interface Feedback {
|
||||
id: string
|
||||
message: string
|
||||
@@ -47,6 +56,15 @@ export interface Feedback {
|
||||
answer: string | null
|
||||
/** Zeitpunkt der Antwort der Züchterin. */
|
||||
answeredAt: string | null
|
||||
/** Laienverständlicher Changelog, der beim Schließen geschrieben wird (sichtbar). */
|
||||
fixNote: string | null
|
||||
/**
|
||||
* INTERN: Arbeitsgedächtnis des Agenten — wird vom Backend geliefert, darf aber
|
||||
* NIEMALS in der Züchterin-UI angezeigt werden.
|
||||
*/
|
||||
agentContext: string | null
|
||||
/** Frühere Frage/Antwort-Runden (älteste zuerst); die aktuelle offene Runde bleibt in question/answer. */
|
||||
thread: FeedbackThreadEntry[]
|
||||
}
|
||||
|
||||
/** Alias used by the "Meine Tickets" area for readability. */
|
||||
@@ -63,6 +81,10 @@ export interface FeedbackUpdate {
|
||||
question?: string
|
||||
/** Antwort der Züchterin (nicht leer ⇒ Status Answered + answeredAt). */
|
||||
answer?: string
|
||||
/** Laienverständlicher Changelog (typisch zusammen mit status: "Resolved" gesetzt). */
|
||||
fixNote?: string
|
||||
/** INTERN: Arbeitsgedächtnis des Agenten (ändert den Status nicht). */
|
||||
agentContext?: string
|
||||
}
|
||||
|
||||
export function submitFeedback(body: FeedbackInput): Promise<Feedback> {
|
||||
|
||||
Reference in New Issue
Block a user