Skip to content

Plan Dokumente

MadGapun edited this page Jun 2, 2026 · 10 revisions

Plan E — Dokumenten-Pipeline

Issue-Level-Detail zu Cluster E aus dem Master-Plan. Stand: 2026-06-02 (beta.79 in Arbeit).

Status-Zusammenfassung

12 von 13 Positionen ✅. Offen:

  • E11 — alle bewerbungsrelevanten Dokumenttypen abdecken (#643) ⬜ (Phase 3)

Phase 2 abgeschlossen (beta.79, E16, #657)

documents bekommt die orthogonale Spalte lifecycle mit drei Werten: aktiv (Default) / archiviert (manuell ausgeblendet) / veraltet (auto beim Bewerbungs-Statuswechsel auf abgelehnt/abgelaufen/zurueckgezogen). Schema v43 → v44, additiv, idempotent, mit automatischem Backup vor Migration.

Default-Filter lifecycle='aktiv' in den drei Read-Tools (analyse_plan_erstellen, dokumente_batch_analysieren, dokumente_zur_analyse). Mit archiv=True werden archivierte/veraltete Docs wieder einbezogen — analog zu bewerbungen_anzeigen(archiv=True).

Drei neue MCP-Tools: dokument_archivieren(grund=''), dokument_reaktivieren, dokumente_bulk_archivieren(filter_doc_type, filter_extraction_status, dry_run=True, max_treffer=200). Alle drei sind DB-only — physische Dateien werden NIE angefasst. Reversibel.

Auto-Veralten-Hook in bewerbung_status_aendern: bei End-Stati werden die mit der Bewerbung verknuepften Docs auf lifecycle=veraltet gesetzt. Schema- Hinweis: documents.linked_application_id ist 1:1, "exklusiv" ist damit schemamaessig garantiert.

MCP-Tool-Count: 156 → 159. Tests: +18 in tests/test_v17_lifecycle_657.py.

Phase 1 abgeschlossen (beta.78, E15, #658)

basis_analysiert/analysiert-Korrespondenz lief in einen Halbschritt-Stuck: extraktion_anwenden() wurde nur für Profildaten getriggert, Mails ohne Profilbezug (Absagen, Einladungen, Recruiter-Anfragen, Benachrichtigungen) blieben dauerhaft im Analyse-Plan. beta.78 löst das in drei kleinen Schritten:

  1. _run_auto_deep_analysis setzt jetzt angewendet statt analysiert. Der Halbschritt analysiert war redundant — wenn das LLM ein Doku gesehen hat, ist der Auto-Pfad für Korrespondenz fertig. (dashboard.py:7836,7844)
  2. Neues MCP-Tool dokumente_korrespondenz_abschliessen(dry_run=True). Räumt Altlasten ab: findet alle sonstiges/recruiter_anfrage/absage/... im basis_analysiert/analysiert-Bucket und hebt sie auf angewendet. DB-only, physische Dateien bleiben unberührt. (tools/dokumente.py)
  3. Whitelist _DOC_STATUS_VALUES erweitert. dokument_status_setzen() akzeptiert jetzt auch basis_analysiert, analysiert, analysiert_leer, duplikat, verworfen — vorher waren nur 4 Werte erlaubt, obwohl der Auto-Pfad mehr vergibt.

Phase 2 (E16, #657) baut darauf auf: orthogonale lifecycle-Spalte (aktiv/archiviert/veraltet), dokument_archivieren/reaktivieren, Auto-Veralten beim Bewerbungs-Statuswechsel. Phase 3 (#643) routet nach doc_type und triggert typspezifische Aktionen.

Schluessel-Module

Modul Pfad Verantwortung
Dokumenten-Tools tools/dokumente.py Upload + Klassifikation + Verknuepfung
Profil-Extraktion tools/profil.py + services/llm_service.py Skills/Stationen aus CV via Ollama
Mail-Service services/email_service.py .msg/.eml-Parser, IMAP-Polling
Auto-Klassifikation dashboard.py:_run_auto_classify_emails + _run_auto_classify_documents Hintergrund-Step

Schluessel-Issues

Issue Thema Status
#441 Doku-Integrity-Check mit Auto-Fix
#606 Auto-Extract Kontakte
#634 /dokumente_verarbeiten Routing-Prompt
#640 Tiefenanalyse nach Basis-Extraktion
#642 Phantom-Bewerbungen aus CV-Dateinamen verhindert
#644 email_verknuepfen mit getrennten ID-Raeumen
#643 Doku-Routing: alle bewerbungsrelevanten Typen (Einladungen/Absagen/Termine)
#649 Few-Shot fuer Recruiter-Anfrage-Klassifikator (E13)
#651 Auto-Tiefenanalyse-Step (E12)
#655 Doku-Typen erweitern + Per-Typ-Handler-System (E14)
#658 Korrespondenz-Docs bleiben auf basis_analysiert haengen (E15)
#657 Lifecycle-Spalte aktiv/archiviert/veraltet (E16)

Tests

  • tests/test_v17_phantom_applications_642.py
  • tests/test_v17_email_verknuepfen_644.py
  • tests/test_v170_beta22_*.py
  • tests/test_v17_doc_lifecycle_658.py (E15, beta.78)
  • tests/test_v17_optimierungen_beta76.py (E12 + #658-Adaption)
  • tests/test_v17_lifecycle_657.py (E16, beta.79)

Naechste Iteration

E11 (#643, Phase 3): /dokumente_verarbeiten routet nach doc_type und triggert typspezifische Aktionen (Einladung → meeting_hinzufuegen, Absage → Status, Recruiter-Anfrage → erfassen + Antwort-Entwurf, Eingangsbestaetigung → Status). Aufbauend auf services/document_handlers.py (E14, beta.77) und der Lifecycle-Struktur (E16, beta.79).

Optional in derselben Phase: Rauschen-Heuristik beim Import (LinkedIn-/XING-Digest-Mails direkt lifecycle=archiviert setzen, sodass sie gar nicht erst im Analyse-Plan landen).


Wiki-Anchor: Tab-Dokumente, Profil-aus-Dokumenten.

Clone this wiki locally