Darstellung
Feature: Folge-Mails bestehenden Vorgängen zuordnen
Verwandte Spec
Erweitert spec-phase-3-ai-triage-implementierung (Thread-Notiz) um kontakt-/referenzbasierte Zuordnung ohne neuen Entwurf.
Summary
- Eingehende Folge- oder Änderungs-Mails werden einer bestehenden Anfrage zugeordnet, statt einen zweiten Entwurf anzulegen.
- Anfrage bleibt Root-Vorgang; Angebots-/Rechnungsnummern dienen nur als Erkennungshinweis.
- Eindeutige Treffer: automatisch. Mehrdeutige Treffer: Vorschlag im Posteingang, kein neuer Entwurf.
Problem / Motivation
- Aktuell erzeugt die KI bei gleicher Absender-Mail ohne gemeinsame
conversation_idoft einen neuen Entwurf (ANF-…-0003/0004). - Telefon-/manuell angelegte Anfragen haben keinen Mail-Thread; Ergänzungen kommen später als neue Conversation.
- Gewünscht: Zuordnung zur bereits qualifizierten Anfrage inkl. Timeline-Dokumentation.
Ziele und Nicht-Ziele
- Ziele:
- Deterministische Zuordnung über Thread,
In-Reply-To, Referenznummern, eindeutigen Kontakt. - Semantische KI-Entscheidung nur über serverseitig geladene Kandidaten.
- Dokumentation in
anfrage_activity_events(nicht nur Freitext-Notiz).
- Deterministische Zuordnung über Thread,
- Nicht-Ziele:
- Direkte Mail-FKs an Angebot/Rechnung.
- Automatisches Löschen/Mergen bestehender Dubletten-Entwürfe.
- Confidence-gesteuerte Auto-Verwerfung.
Anforderungen
FR-1: Thread- oderIn-Reply-To-Treffer → Auto-Link, kein neuer Entwurf.FR-2: EindeutigeANF-*-/Angebots-/Rechnungsnummer mit passender Absender-/Kontaktbeziehung → Auto-Link zur Anfrage.FR-3: Genau eine aktive Anfrage zum Absender/Kontakt → Auto-Link; mehrere → Vorschlag.FR-4: KI darf nur aus übergebenen Kandidaten wählen; fremde IDs werden verworfen.FR-5: Bei Auto-Link/Vorschlag keincreateAnfrageDraft.FR-6: Verknüpfung setztinbox_messages.anfrage_id,mail_threads.anfrage_idund idempotentesmail_received-Event mit Match-Quelle.FR-7: Posteingang zeigt Auto-Link bzw. Kandidaten mit „Zuordnen“ / „Trotzdem neue Anfrage“.NFR-1: Alle Queries sindcompany_id-scoped; keine Cross-Tenant-Treffer.
Nutzer- und Systemszenarien
S-1: Ergänzung ohne gemeinsamen Thread
- Gegeben: Qualifizierte Anfrage mit
contact_email=kunde@firma.at, keine zweite aktive Anfrage. - Wenn: Neue Mail vom gleichen Absender mit Änderungswunsch.
- Dann: Auto-Link zur Anfrage, Timeline-Eintrag, kein neuer Entwurf.
S-2: Mehrere offene Anfragen
- Gegeben: Zwei aktive Anfragen desselben Absenders.
- Wenn: Folge-Mail ohne Referenznummer.
- Dann: Vorschlag beider Kandidaten, kein Entwurf.
S-3: Referenz auf Angebot
- Gegeben: Mail erwähnt Angebotsnummer, Angebot ist mit Anfrage verknüpft, Absender passt.
- Wenn: Triage läuft.
- Dann: Auto-Link zur Anfrage (nicht zum Angebot selbst).
Akzeptanzkriterien
- [x]
AC-1ZuFR-1/ Thread: Antwort im selben Thread erzeugt keinen zweiten Entwurf 📅 2026-07-20 - [x]
AC-2ZuFR-2/S-3: Angebots-/Rechnungsnummer führt zur Anfrage 📅 2026-07-20 - [x]
AC-3ZuFR-3/S-1/S-2: Eindeutig = Auto-Link, mehrdeutig = Suggest 📅 2026-07-20 - [x]
AC-4ZuFR-4: KI-Kandidaten-ID außerhalb der Liste wird ignoriert 📅 2026-07-20 - [x]
AC-5ZuFR-6: Retry erzeugt kein doppeltesmail_received-Event 📅 2026-07-20 - [x]
AC-6Bestehende neue Anfragen ohne Treffer bleiben unverändert 📅 2026-07-20
Entscheidungen
D-1Root-Objekt ist immer die Anfrage; Angebot/Rechnung nur Match-Hint.D-2Safe-Auto: nur eindeutige Treffer automatisch; sonst Vorschlag ohne Entwurf.
Links
- Prozess-1 Phase 3: spec-phase-3-ai-triage-implementierung
- Prozess-1 Plan: plan-prozess-1-kundenanfrage-posteingang