Skip to content

Master Plan

MadGapun edited this page Jun 18, 2026 · 55 revisions

Master-Plan

Stand: 2026-06-18 — v1.7.0 Stable veroeffentlicht (--latest, promotet aus beta.108) · Lebendiges Dokument · Wird mit jedem Schritt aktualisiert.

Arbeitsprinzip: Master-Plan-First. Neue Ideen werden erst hier eingeordnet (mit Status ⬜ und ggf. Issue), dann nach Plan abgearbeitet — nicht ad-hoc gebaut und spaeter nachgezogen.

Akzeptanzkriterium: Eine Position ist nur ✅ wenn Code im Repo + Tests gruen + Wiki-Eintrag vorhanden — alle drei. Sonst bleibt sie 🟨 oder ⬜.

Hinweis fuer Claude: Wie dieser Plan technisch gepflegt wird (Wiki-Klon, Push, Konflikt-Aufloesung), steht in Wiki-Pflege.

PBP ist seit Ende Februar 2026 in Entwicklung (gut drei Monate, Erstrelease v0.0.x → v1.7.0, seit 2026-06-18 Stable — die hohe Versionsnummer spiegelt das schnelle Iterationstempo, nicht die Kalenderzeit). Dieser Plan dokumentiert was schon da ist (retroaktiv, ✅) und was kommt (⬜). Reihenfolge innerhalb eines Clusters folgt Abhaengigkeit. Reihenfolge zwischen Clustern: A → H → B → C → D → E → F → G → I → J.

Legende Status:

  • ⬜ geplant / Roadmap
  • 🟨 in Arbeit / teilweise umgesetzt
  • ✅ fertig (Code + Tests + Wiki)
  • ⏸ bewusst zurueckgestellt (Begruendung in Master-Plan-Optimierung)
  • ⛔ aus Scope rausgenommen / deprecated

Detail-Plaene pro Cluster (Issue-Level):

Risiken / Trade-offs / Annahmen: Master-Plan-Optimierung.


Beta-Exit-Kriterium (Definition von „Stable")

ERREICHT am 2026-06-18: v1.7.0 wurde als Stable (--latest) veroeffentlicht — promotet aus beta.108 nach mehrtaegigem Realbetrieb und ausdruecklichem User-Wort. Release-Gates A1–A3 (#705/#723/#701, K25–K27) erfuellt, Migrations-Generalprobe verifiziert, volle Suite gruen. v1.6.10 bleibt als aelterer Release verfuegbar. Naechster Zyklus: v1.8 (Cluster J).

Verbindlich seit 2026-06-09 (User-Vorgabe): v1.7.0 verlaesst die Beta erst, wenn das fertige Produkt fuer komplett unerfahrene Anwender fehlerfrei laeuft — Menschen ohne PBP- und ohne KI-Vorwissen. Das ist schaerfer als „Tests gruen": es zielt auf die End-to-End-Erfahrung beim Erstkontakt.

Konkret muss zutreffen:

  1. Lauffaehige, fehlerfreie Suite — die volle pytest-Suite ist mit den vom Installer mitgelieferten Extras ([docs]/[scraper]) gruen, und der CI-Gate (K5) faengt Regressionen automatisch ab.
  2. Kein user-sichtbarer Fehler im Normalpfad — keine White-Screens, keine „Inhalt konnte nicht geladen werden"-Toasts, keine no such table-/Schema- Crashes in Tools, die ein Erstnutzer ueber Claude oder das Dashboard ausloest.
  3. Kern-Workflows ohne Sackgasse — Ersterfassung → Jobsuche → Bewertung → Bewerbung → Dokumente → Nachfass, jeweils ohne Total-Timeout (B21) und mit verstaendlichen Fehlermeldungen statt Tracebacks.
  4. Abgeschlossener User-Test--latest erst nach ausdruecklichem User-Wort (siehe CLAUDE.md).

Offene Beta-Blocker (Stand 2026-06-10, nach beta.101): die ⬜-Positionen in B (B13/B15/B16), F (F6/F15), G (G8/G11) und I (I8/I9) — plus der Abschlusstest des Users (Beta-Exit Punkt 4). Alle bekannten Bugs sind gefixt: #692/#691/#690/#686/#685/#684 (K1-K10), die Neulings-Audit-Befunde #694-#697 (K11-K15) und die User-Test-Funde #699/#700/#701-Teilfix (K16-K18) sind in beta.101 enthalten; #668 ist entschaerft (Live-Verifikation durch den User offen). #687/#688/#689/#698 sind Enhancements (C23/B24/F21/C24) und keine Beta-Blocker; #701-Vollausbau laeuft als A18 (beta.102-Kandidat). Cluster J ist v1.8 und kein Beta-Blocker.

Teil K — Beta-Stabilisierung (Sweep 2026-06-09)

Gezielter Stabilisierungs-Durchlauf gegen user-sichtbare Fehler, plus der bisher fehlende automatische Test-Gate.

Nr Funktion Issue Status
K1 Prompt-Delegation FastMCP-3.x-robust: /tipps_und_tricks + /profil_sync luden „Inhalt konnte nicht geladen werden" (FastMCP 3.x kennt _prompt_manager nicht mehr, Exception wurde verschluckt). Statische Texte als modul-level Builder (build_*_prompt, Single Source), kein Zugriff mehr auf FastMCP-Interna #692
K2 kontakt_verknuepfen Meeting-Link: link_contact fragte Tabelle meetings statt application_meetings ab → no such table #685
K3 kontakt_verknuepfen akzeptiert CON--Praefix: IdKind.CONTACT ergaenzt, damit parse_id/strip_prefix die Kontakt-ID entprefixen (Output emittierte CON-, Input lehnte es ab) #684
K4 stellenbeschreibung_nachladen kappte bei 2000 Zeichen: fetch_description_from_detail(max_chars=...), explizites Nachladen nutzt 20000 (Bulk-Scraper bleiben bei 2000) #690
K5 CI-Test-Gate (.github/workflows/tests.yml): volle Suite bei push/PR mit [docs,dev,scraper]-Extras + Playwright-Chromium. Schliesst die Luecke, dass Regressionen (fehlende Extras, FastMCP-Major-Bump) bisher unbemerkt blieben
K6 fastmcp in pyproject.toml auf >=3.0,<4 begrenzt — ein erneuter Major-Bump kann nicht mehr lautlos Interna brechen #692
K7 Issue-Hygiene: 14 im Code erledigte, aber offen gebliebene Issues geschlossen (beta.81–100)
K8 stellen_auto_aussortieren (#691): (a) Platzhalter/leere LLM-Begruendung 'KURZBEGRUENDUNG' wird zentral in _clean_match_reason bereinigt; (b) Wall-Clock-Budget-Default 180→50s (unter dem ~60s-MCP-Client-Timeout) + die zwei ungeschuetzten DB-Reads abgesichert → schemakonformes status='teilweise' statt hartem outputSchema-Validierungsfehler #691
K9 Jobsuche-Orchestrator (#668): Phase-1 (httpx-Quellen) sammelt Ergebnisse jetzt via as_completed statt in Submit-Reihenfolge (Fortschritt bewegt sich mit der schnellsten Quelle, statt bis zu 90-180s an der zuerst-submitteten zu haengen) + globales Phasen-Budget fuer haengende Quellen. Behebt "Jobsuche laeuft komplett in Timeout (0%)". Live verifiziert + Code-Audit beta.105 (K28) #668
K10 Doku→Bewerbung-Matching (#686): analyse_plan_erstellen erkennt Firmen jetzt auch aus dem Dokument-INHALT (_company_match_key, Rechtsformen-Stopliste) und matcht gegen bestehende Bewerbungen → neues Feld bewerbungs_zuordnungen + Dubletten-Hinweis in der Empfehlung. Regressionstest test_v17_doku_bewerbung_match_686 #686
K11 Onboarding-Sackgassen in gefuehrten Prompts: nicht-existentes anschreiben_generieren + falsche fit_analyse/lebenslauf_angepasst_exportieren-Signaturen im Workflow bewerbung_vorbereitung; Umlaut-Toolnamen (skill_hinzufügen, bewerbung_status_ändern, position_hinzufügen) in 4 Live-Prompts; workflow_starten normalisiert Umlaut-Namen + klarer Fehler statt status='gestartet' bei unbekanntem Workflow; Kein-Profil-Fall im Ersterfassungs-Prompt; willkommen-Quellen-Zahl; faq-Verweis auf Wiki statt unlesbarem docs/FAQ.md; tote Alt-Prompt-Bloecke entfernt #694 ✅ (beta.101)
K12 Stille Falsch-Erfolge: Existenz-Guards in stelle_bewerten (verhindert Phantom-Statistik) + bewerbung_status_aendern (inkl. APP--Praefix-Support + bool-Auswertung); profil_erstellen merged Bestandsfelder statt sie mit Leerwerten zu ueberschreiben (Datenverlust-Fix, empirisch belegt); jobsuche_starten-Guard ohne Suchkriterien (verhindert BA-Default-Keyword-Flut) #695 ✅ (beta.101)
K13 Neulings-Robustheit: ehrliche Leere-DB-Antworten der Dokument-Tools (0 Dokumente ≠ "alle analysiert"; kein_profil mit Handlungsanweisung); pbp_capabilities-Sync: kennlerngespraech_abschliessen korrekt beschrieben (Onboarding-Wizard, NICHT Interview-Nachgang), King-Features beta.78-100 ergaenzt (Tasks, Dokument-Lifecycle, stelle_reaktivieren, Wiedergaenger, Ablehnungsgruende-Editor, Minus-Keywords, onboarding_hints) #696 ✅ (beta.101)
K14 Installation fuer Neulinge: macOS-Doku ehrlich (Python-Voraussetzung + Gatekeeper-Hinweis in README/Release-Notes-Template/Wiki); Chromium-Install-Schritt in INSTALLIEREN.command (Paritaet zu install.sh); ServicePointManager-Typo im BAT-PowerShell-Fallback; Release-Notes-Block um Schritt 6/7 ergaenzt (Claude-Desktop-Neustart + Erstbefehl "Starte die Ersterfassung"); ZIP-Unterordner-Hinweis; Linux-Claude-Desktop-Korrektur #697 ✅ (beta.101)
K15 Wiki-Sync beta.92-101: User-Doku-Welle (Home, FAQ, Erste-Schritte, MCP-Tools, Workflows, Architektur, Jobportale, Tab-Seiten) + Plan-Begleitseiten (MCP-Layer, Jobsuche B21/B23-Kollision, Bewerbungen D20-D23, Dokumente #643-Dublette) + Zahlen-Normierung (177 Tools, Schema v46, 34 Quellen) ✅ (beta.101)
K16 Blacklist-Schutz fuer laufende Bewerbungen: blacklist_verwalten(typ='firma') prueft vor dem Eintragen auf Bewerbungen mit kritischem Status (interview/zweitgespraech/angebot/interview_abgeschlossen) → Warnung mit betroffenen Bewerbungen statt Eintrag; force=True uebersteuert. User-Test-Fund 10.06. (beinahe-Verlust einer Interview-Bewerbung) #699 ✅ (beta.101)
K17 Auto-Reconciler respektiert Termine: (a) kein Auto-Nachfass wenn fuer die Bewerbung ein zukuenftiger Termin (geplant/bestaetigt) existiert; (b) Dashboard trennt echte Termine (Anstehende Termine) von Follow-up-Erinnerungen (eigener Block) #700 ✅ (beta.101)
K18 Zeitdarstellung Teilfix: relative Datums-Labels im Dashboard (heute/morgen/in X Tagen) rechnen auf lokalem Datum statt UTC (Kipp-Fehler um Mitternacht UTC); Vollausbau Timestamp-Standard siehe A18 #701 ✅ (beta.101)
K19 Feinschliff-Welle aus der eigenen Dashboard-Tour (beta.101 gegen DB-Kopie, alle 8 Bereiche geklickt, 0 JS-Fehler): nackte React-0 (is_private-Integer), stale hints.json (v1.6.2-Banner), Follow-ups ohne Uhrzeit statt "02:00", Singular/Plural + n=1-Hinweis bei Gehaltskennzahl, Elwosa-Pick ueberspringt Linien mit leeren Platzhaltern, Wiki-Snippets-Zahlen, Hilfe-Text + MINUS-Keywords, KPI-Label "Faellige Nachfaesse", Quellen-Zahl auf 35 normiert (len(SOURCE_REGISTRY)). Nebenbei live verifiziert: #668 + #701-Teilfix #702 ✅ (beta.102)
K20 DB-Lock-Haertung (User-Test 11.06., kritisch): busy_timeout=5000 auf der Haupt-Connection (fehlte — Write scheiterte sofort statt zu warten) + Rollback-Sicherheitsnetz in der Tool-Middleware (on_call_tool: offene Transaktion nach Tool-Ende → rollback + WARNING) + gleiches Netz um Auto-Engine-Zyklen. Vorher liess ein geleakter Write-Lock alle Folge-Writes bis zum Neustart scheitern #708 ✅ (beta.103)
K21 Dedup-Gate ehrlich: der in der Fehlermeldung versprochene notes-Override war NIE implementiert → expliziter force=True-Parameter; endkunde-Parameter in bewerbung_erstellen/bewerbung_bearbeiten durchgereicht (Spalte existiert seit Schema v14!) und Dedup vergleicht bei gesetztem Endkunden company+endkunde statt nur company+title (Vermittler-Mehrfach-Engagements) #709 #710 ✅ (beta.103)
K22 Release-Banner = Update-Hinweis (Regression aus K19-hints.json-Update): Hint nur anzeigen wenn Hint-Version NEUER als installierte Version (Semantik wie 1.6.x); hints.json bekommt version-Feld, Endpoint filtert per Versionsvergleich #711 ✅ (beta.103)
K23 Profil-Datenverlust-Haertung: Migrationen leeren nachweislich keine Felder (ALTER-only) — wahrscheinliche Ursachen des Reports sind der erst in beta.101 gefixte profil_erstellen-Bug (User lief beta.99/100) bzw. die Backup-Wiederherstellung vom 10.06.; Haertung trotzdem: Profil-Integritaets-Check nach Migration (warnt wenn vorher gefuellte Pflichtfelder/informal_notes leer wurden) + Wiederherstellungs-Weg aus data/backups dokumentiert #705 ✅ (beta.103)
K24 Jobsuche-Workflow schliesst manuelle Quellen ein: Workflow-Prompt + jobsuche_starten-Hinweis weisen Claude an, die in manuelle_quellen genannten Portale automatisch via Claude-in-Chrome abzuarbeiten (wenn verbunden) statt auf Nachfrage zu warten #704 ✅ (beta.103)
K25 Release-Gate A1 — Datenintegritaet (#705): Generalprobe Migration (voll befuelltes 1.6.x-Profil inkl. informal_notes -> aktuelles Schema, Feld- und Tabellen-Zaehler-genauer Vorher/Nachher-Vergleich, kein Datenverlust); belegt dass der reale 1.6.x->1.7-Pfad rein additiv ist (Tabellen-Rebuilds nur fuer Schema < v23); Pre-Migration-Backup bricht bei Fehler HART ab statt ohne Netz zu migrieren; Merge-Randfaelle (#695) + Export/Import-Roundtrip (informal_notes). Tests test_v17_migration_generalprobe_705 #705 ✅ (beta.105)
K26 Release-Gate A2 — DB-Schreib-Kontention Dashboard<->MCP (#723): busy_timeout 5s->30s (BUSY_TIMEOUT_MS) auf der geteilten Connection (ueberdauert Bulk-Writes/Auto-Engine-Zyklen, bleibt unter dem 4-Min-Client-Limit); WAL + rollback_if_stale (K20) bereits da. Reproduktionstest test_v17_db_contention_723: contended Write wartet auf Lock-Freigabe und geht durch statt zu haengen #723 ✅ (beta.105)
K27 Release-Gate A3 — Zeitanzeige (#701): relative Datumslabels rechnen jetzt tz-robust in Europe/Berlin (pure Hilfsfunktion frontend/src/lib/relativeDate.js), kippen nicht mehr um Mitternacht UTC; Kipp-Test relativeDate.test.mjs laeuft in der CI bewusst unter TZ=UTC. A18 (UTC-Vollumbau) bleibt bewusst vertagt #701 ✅ (Teilfix, beta.105)
K28 Release-Gate verifiziert+geschlossen: #668 (Jobsuche-Timeout — Pro-Scraper-Timeout, Auto-Skip, Teilergebnis, Parallelisierung alle belegt), #724 (E-Mail-Matching ueber ALLE Bewerbungs-Status, kein Aktiv-Filter), #725 (offen-Kachel klickbar mit Zuordnen/Loeschen) #668 #724 #725 ✅ (beta.105)
K29 B2 Scraper-Robustheit (Feature-Block, Teil B): Fehlerklassifikation statt Pauschal-Deaktivierung. (#720) classify_scraper_error -> tot/blockiert/server_weg/kaputt, durchgereicht in scraper_health.last_status_detail + neue Spalte error_class (Schema v47, additiv). (#721) fail-Pfad nutzt Backoff-/Probe-Mechanik nach Klasse: server_weg/blockiert pausiert-mit-Probe (Retry-After respektiert), tot/kaputt hart; einzelner Aussetzer deaktiviert nicht; fehlende Klasse = Altverhalten. (#722) differenzierte Health-Badges (pausiert/blockiert/tot/kaputt) + Fehlerklasse im Klartext + Probe-Zeitpunkt + letzter Erfolg/Treffer. Generalprobe als Test. 1.8-Roadmap (Claude-Handoff, Playwright-SPA #656, Langzeit-Auswertung) bleibt offen #719 #720 #721 #722 ✅ (beta.106)
K30 Bugfix-Welle beta.107 (5 Issues): (#728) macOS-Installer probiert versionierte Homebrew-Binaries (python3.13/3.12/3.11) zuerst statt nur auf Apples System-Python 3.9 zu fallen; (#729) Blacklist-Check in stelle_manuell_anlegen (force ueberbrueckt) + kein doppelter Blacklist-Hinweis nach stelle_bewerten (neuer Helfer is_company_blacklisted); (#701) relative Labels mit Berliner Uhrzeit ('in 2 Tagen, 14:00 Uhr') + Serverzeit im Footer + tz-robuste berlinTimeOfDay — DB-Timestamp-Vollumbau bleibt A18; (#698) Hochschulabschluss-Malus konfigurierbar (Scoring-Regler hochschulabschluss/fehlt, Default -2, ignorierbar; Schema v47->v48 additiv); (#630 Stufe 1) Aktualisieren-Button + 'Letzter Sync' + FAQ #728 #729 #701 #698 #630 ✅ (beta.107)
K31 Bugfix-Welle beta.108 (Datenqualitaet Suche + Stilarchiv): (#732) Geo-Filter — neue konservative is_non_dach_location (DACH-Marker gewinnt immer, unbekannte/reine-Remote-Orte bleiben drin) + Hard-Exclude in save_jobs: neue Stellen aus Scraper-Quellen mit klar nicht-DACH Ort -> is_active=0/dismiss_reason='zu_weit_entfernt' (manuelle/Email ausgenommen via _manual_entry, umkehrbar via stelle_reaktivieren); (#731) Consumer-Tech-False-Positives via Remote-Aggregatoren (z.B. „Brazil" durch MUSS-Keyword „Product Lifecycle") dadurch schon vor dem Scoring geblockt; (#736) stil_auswertung zaehlt Interview-Erreichung ueber Status-Verlauf (application_events) + has_reached_interview-Flag statt finalem Status, neue Aufschluesselung absage_nach_interview/absage_ohne_interview; (#733) stelle_manuell_anlegen gibt hinweis wenn Quelle 'manuell' bleibt; (#734) anschreiben_exportieren -> Stilarchiv-Autosave (neue upsert_document_version, „letzte Version gewinnt"; CV bewusst vertagt). Keine Schema-Migration (v48). Tests test_v17_beta108_fixes (35). Begleit: Master-Issue #719 geschlossen, 1.8-Folge als #735 ausgegliedert #731 #732 #733 #734 #736 ✅ (beta.108)

Regressionstests: test_v167_quickfixes (#692), test_v17_kontakt_link_684_685 (#684/#685), test_v17_refetch_690 (#690), test_v17_auto_aussortieren_691 (#691), test_v17_doku_bewerbung_match_686 (#686), test_v17_prompts_workflows_694 (#694), test_v17_guards_695 + test_v17_profil_merge_695 (#695), test_v17_doku_leere_db_696 + test_v17_capabilities_696 (#696), test_v17_user_test_699_700 (#699/#700). Volle Suite gruen (Stand beta.101: ueber 1700 Tests).


Teil A — Datenbasis & Persistenz

Foundation: Schema, Multi-Profil, Skills mit Zeitraeumen, Suchkriterien. Alles Aendern an Stellen/Bewerbungen/Dokumenten laeuft durch DB-Helper mit Lifecycle (Audit, Lerneffekt, Statistik).

Nr Funktion Issue Wiki Status
A1 SQLite-Schema mit _migrate-Funktion (v1 → v46, ALTER-only) mehrere Architektur
A2 Multi-Profil-System (mehrere Karrieren parallel verwalten) Tab-Profil
A3 Skills mit Zeitraeumen (start/end pro Skill) Tab-Profil
A4 Positionen / Ausbildung / Projekte (STAR-Struktur) Tab-Profil
A5 Suchkriterien (MUSS/PLUS/AUSSCHLUSS-Keywords, Regionen, Gewichtungen) Suchkriterien
A6 Profile-Cluster-Klassifikation (9 Cluster) #590 Profile-Cluster
A7 Typisierte IDs (Praefix-System: APP-, JOB-, DOC-) #505
A8 Profil-Importieren / Exportieren Tab-Profil
A9 Hash-Resolve mit Profil-Prefix (resolve_job_hash)
A10 Update-Whitelist mit _ALLOWED_UPDATE_FIELDS
A11 Hard-Guard save_jobs gegen leere URLs aus Scraper-Quellen #645 Stellen-Qualitaet
A12 Inhalts-Duplikat-Erkennung (Titel+Firma → duplikat) #641
A13 DB-Backup-Strategie + automatisches Restore Architektur
A14 Mojibake-Repair fuer doppelt-encodete Strings
A15 SQLite WAL-Mode + busy_timeout fuer Parallel-Reads
A16 Skill-Datenqualitaet: Junk-Heuristik verschaerft (Satzfragmente raus) + skills_bereinigen-Tool fuer Altbestand + ehrliches Skill-Loeschen #681 Tab-Profil ✅ (beta.96)
A17 Informelle Notizen voll editierbar: profil_bearbeiten(notizen, ...) kann jetzt lesen (strukturiert), ersetzen + loeschen pro Sektion — vorher nur anhang/aendern #680 Tab-Profil ✅ (beta.97)
A18 Einheitlicher Timestamp-Standard (Cross-Cutting, beta.102-Kandidat): alle DB-Timestamps UTC mit Offset (keine naiven/aware-Mischung in application_events/meetings/follow_ups), zentrales "Jetzt" im Backend, Frontend-Relativlabels auf Europe/Berlin, Serverzeit im Dashboard sichtbar. Anzeige-Teil komplett (relative Labels Europe/Berlin + Uhrzeit + Serverzeit, K27/K30, beta.105-107); offen bleibt nur der DB-weite naive/aware-Umbau #701

Teil B — Jobsuche & Quellen

34 Quellen-Adapter, Scraper-Health-System, Auto-Reactivate-Backoff, Profile-Cluster-Empfehlung. Die einzelnen Quellen sind in Plan-Jobsuche gelistet.

Nr Funktion Issue Wiki Status
B1 Scraper-Plugin-Architektur (LegacyAdapter + AdapterResult) #499 Jobportale
B2 34 Quellen-Adapter (HTTP/API, Browser, JobSpy) mehrere Jobportale 🟨 (6 produktiv, 7 defekt, siehe Health-Stand)
B3 Scraper-Health-System mit Auto-Reactivate-Backoff (24h/48h/72h/168h) #432 Jobportale
B4 Aktiver Quellen-Probe via quellen_health_check #624 🟨 (Probe-URLs teilweise veraltet)
B5 Profile-Cluster-basierte Quellen-Empfehlung #590 Profile-Cluster
B6 Workday-DAX-Cluster fuer Konzern-Bewerbungen #590 Jobportale
B7 Suchprofile (mehrere parallel verwaltbar) #564 Suchkriterien
B8 Scoring (6 Kriterien: Skills/Erfahrung/Branche/Standort/Gehalt/Modell) mehrere Tab-Stellen
B9 URL-Pflege-Pipeline (Detail-URL > jobId-rekonstruiert > Such-URL Fallback) #436, #645 Stellen-Qualitaet
B10 Stellenbeschreibung-Auto-Refetch (max 8/Lauf, Backoff bei 3 Fehlern) #622 Tab-Stellen
B11 URL-Aging-Auto-Cleanup (404/expired → dismiss veraltet_url) #645 Stellen-Qualitaet 🟨 (beta.73 ausgespielt, beta.72 hat es noch nicht)
B12 7 defekte Quellen — URL-Updates fuer ferchau/ingenieur_de, Deprecation fuer monster/solcom #653 Jobportale 🟨 (URL-Fixes + Deprecation ✅ beta.77; gulp/kimeta/heise_jobs in B18)
B13 quellen_health_check Probe-URLs aktualisieren offen
B14 Chrome-Extension-Fallback fuer Login-Wall-Quellen Jobportale
B15 Quellen-Rotation im job_runner #590-C.4
B16 Eigene Karriereseiten-URLs als Custom-Source #627
B17 Neuer Adapter: Adzuna API (REST, kostenlos, deutsche Stellen) #654 Jobportale
B18 Playwright-Adapter fuer SPA-Quellen (gulp/kimeta/heise_jobs) — bewusst zurueckgestellt, siehe Optimierung #656
B19 Minus-Keywords: weiche Score-Abwertung zusaetzlich zu harten Ausschluss-Keywords (Backend: Tools + Scoring) #667
B20 Minus-Keywords Frontend-Sektion + Gewicht-Slider #667 ✅ (Backend beta.84, Frontend beta.89)
B21 Scraper-Auto-Skip bei consecutive_failures >= 5 (Total-Timeout-Bugfix) #668
B22 stelle_manuell_anlegen Duplikat-Erkennung verfeinern (Titel-Aehnlichkeit statt nur Firma+Keyword, URL als starkes Signal, force=true-Override statt hartem Block) #670
B23 Interne Jobsuche nach Zeitplan (taeglich/woechentlich/alle 3 Tage; nur Scraper-Quellen, Browser-Quellen bleiben manuell). Teil des Automatik-Schedulers #678 Tab-Einstellungen ✅ (beta.94)
B24 Snapshot-Nachhol-Trigger: Stellen ohne Volltext-Snapshot in der Tagesroutine nachziehen (Flag + Auto-Engine-Step; deterministischer HTTP-Refetch, Ollama optional) #688

Teil C — Stellen-Lifecycle & Bewertung

Nr Funktion Issue Wiki Status
C1 stellen_anzeigen mit Filter/Score/Quellen Tab-Stellen
C2 stelle_bewerten (Score) mit Ablehnungsgruende-Whitelist #108
C3 stellen_bulk_bewerten mit Filtern (#514 Anti-DB-Bypass) #514 MCP-Tools
C4 stellen_bulk_bewerten 90s-Wall-Clock-Budget #646 FAQ
C5 stellen_auto_aussortieren via Lokaler AI (Profil-Match) #586 Lokale-KI
C6 stellen_auto_aussortieren Hard-Cap + Wall-Clock-Budget #646 FAQ
C7 stelle_manuell_anlegen (LinkedIn/XING via Chrome-Extension) #160
C8 stelle_bearbeiten mit url=-Parameter (Backfill) #645 Stellen-Qualitaet
C9 stelle_vergleichen (Skills + Score + Gehalt + Standort) #580
C10 stelle_mergen (Master + Duplikat zusammenfuehren) #470
C11 aehnliche_stellen_finden (Token-Overlap) #580
C12 fit_analyse mit MUSS/PLUS-Hits + Risiko-Faktoren mehrere Tab-Stellen
C13 scoring_konfigurieren (Slider fuer Gewichtungen) Suchkriterien
C14 stellen_qualitaet_pruefen (URL-Health + Beschreibungs-Vollstaendigkeit) #645 Stellen-Qualitaet 🟨 (beta.73, beta.72 noch nicht)
C15 Adaptive Hints "Score unsicher / Beschreibung fehlt" #594 Lern-System
C16 Pin / Unpin von Top-Kandidaten Tab-Stellen
C18 fit_analyse mit 3-Stufen-Empfehlung (EMPFOHLEN/BEDINGT/NICHT_EMPFOHLEN) + k.o.-Kriterien #662 Plan-Stellen
C19 scoring_vorschau robust gegen Bracket-Keys mit Einheit (50km) #661
C20 Ablehnungsgruende editierbar: dyn. Whitelist + 4 MCP-Tools + is_active-Spalte + Frontend-Tab #663 ✅ (Backend beta.85, Frontend beta.90)
C21 stelle_reaktivieren MCP-Tool (Anti-DB-Bypass-Lueckenschluss) #664
C22 Ablehnungsgruende loeschen (mit Pflicht-Neuzuordnung) + umbenennen (Cascade auf jobs, Merge) + ablehnungsgrund_loeschen-Tool. User-Test-Fix #663 Tab-Einstellungen ✅ (beta.92)
C17 Outcome-Signal in fit_analyse (Warnung bei aussortierten Aehnlichen) #648 Tab-Stellen
C23 Volltext-Snapshot beim Anlegen einer Stelle (unveraenderliches Feld beschreibung_snapshot + Quelle/Zeitstempel; schuetzt vor Offline-Gehen der URL; Schema-Anteil bei A1) #687
C24 Hochschulabschluss-Malus konfigurierbar: als Scoring-Dimension in scoring_konfigurieren (Default -2 rueckwaertskompatibel, ignorieren=True moeglich, wirkt bei scores_neu_berechnen). beta.102-Kandidat #698

Teil D — Bewerbungs-Lifecycle

Nr Funktion Issue Wiki Status
D1 Bewerbungs-Wizard (Anschreiben + Doku-Zuordnung + Status) Tab-Bewerbungen
D2 Status-Lifecycle (offen → beworben → interview → angenommen/abgelehnt) Tab-Bewerbungen
D3 Event-Timeline pro Bewerbung (jedes Status-Update als Event) Tab-Bewerbungen
D4 Follow-up / Nachfass mit Auto-Reminder Workflows
D5 Recruiter-Inbound-Workflow (Anfrage → optional ablehnen oder anlegen) MCP-Tools
D6 Bewerbung ↔ Stelle n:m-Verknuepfung (eine Stelle → mehrere Varianten) #472
D7 Bewerbungs-Bericht-Export (PDF/XLSX/ZIP) #313
D8 Bewerbungs-Print-Layout (HTML-Protokoll mit Timeline+Doku) #313
D9 bewerbung_event_datum_setzen (Status-Datum nachtraeglich korrigieren) #631 MCP-Tools
D10 Kontakte-System (Recruiter, Hiring Manager, ...) mit Kategorien #607
D11 Kontakte aus Bestand importieren (Bewerbungen + Mails durchsuchen) #563
D12 Phantom-Bewerbungen aus CV-Dateinamen verhindern #642 FAQ
D13 Mail-Doku-Verknuepfung (email_verknuepfen mit getrennten ID-Raeumen) #644
D14 Interview-Reflexion (eigene Notizen pro Interview-Termin)
D15 Nachfass-Trigger bei Status ohne Update >7 Tage (Adaptive Hint + Elwosa) #650 Tab-Bewerbungen
D17 nachfass_planen Dubletten-Check (MCP-Teil) #665
D18 nachfass_planen Frontend: Direkt-Abhaken-Button in "Offene Aktionen" #665 ✅ (Backend beta.85, Frontend beta.90)
D19 Generisches Task/Todo-System: Schema v45 + 4 MCP-Tools + REST-API + Frontend-Sektion #666 ✅ (Backend beta.85, Frontend beta.90)
D20 recherche_speichern Bugfix: Bewerbung-Recherche landete in applications.fit_analyse (Kollision + unsichtbar) — jetzt ins anzeigbare research_notes der verknuepften Stelle geroutet, Dedupe, klare Meldung ohne Stelle #672 Tab-Bewerbungen ✅ (beta.97)
D21 Recherchen in Timeline/Details sichtbar machen (eigener Abschnitt, alle Kategorien) #673 Tab-Bewerbungen ✅ (beta.98 — recherchen-Abschnitt in bewerbung_details + Detail-Dialog, auf-/zuklappbar pro Kategorie)
D22 Ein-Schritt-Persistenz fuer Recherche-Tools + Kategorie-Routing (eigene Tabelle research_notes, Schema v46) #674 MCP-Tools ✅ (beta.98 — Tabelle research_notes + add/get-Helper; firmen_recherche/branchen_trends/skill_gap_analyse persistieren optional direkt)
D23 Aufgaben mit „Erledigt bis"-Datum (Frontend-Datumsfeld) + prominente Dashboard-Warnung bei Ueberfaelligkeit (get_overdue_tasks → Workspace-Summary) #683 Tab-Bewerbungen ✅ (beta.100)

Teil E — Dokumenten-Pipeline

Nr Funktion Issue Wiki Status
E1 Dokumenten-Upload + Auto-Klassifikation (CV/Anschreiben/Zeugnis/Mail/...) Tab-Dokumente
E2 Lokale-AI-Profil-Extraktion (Skills, Stationen aus CV/Zeugnis) Profil-aus-Dokumenten
E3 /dokumente_verarbeiten-Prompt (Routing: Profil/Mail/Anhang/Termin) #634 Profil-aus-Dokumenten
E4 Tiefenanalyse nach Basis-Extraktion (basis_analysiert weiterprozessieren) #640
E5 Bewerbungs-Anhang-Erkennung (bewerbungs_dokumente_erkennen) Tab-Dokumente
E6 Lebenslauf-/Anschreiben-Generierung + Export (DOCX/PDF)
E7 Mail-Import (.msg/.eml/IMAP) + Auto-Status-Erkennung
E8 Mail-Anhang-Auto-Extract zu Dokumenten + Verknuepfung
E9 Auto-Klassifikation eingehender Mails via Lokale AI Lokale-KI
E10 Doku-Integrity-Check (DB-Eintrag vs. Datei auf Disk + Auto-Fix) #441
E11 Dokumente verarbeiten — alle bewerbungsrelevanten Typen (Einladungen/Absagen/Termine) #643 Plan-Dokumente
E12 Auto-Tiefenanalyse-Step fuer basis_analysiert-Dokumente (max N/Lauf) #651
E13 Few-Shot fuer Recruiter-Anfrage-Klassifikator (Recall-Problem fixen) #649
E14 Doku-Typen erweitern + Per-Typ-Handler-System #655 Profil-aus-Dokumenten
E15 Dokument-Lifecycle Reparatur: basis_analysiertangewendet fuer Korrespondenz entkoppeln #658 Plan-Dokumente
E16 Lifecycle-Spalte aktiv/archiviert/veraltet + Auto-Veralten #657 Plan-Dokumente

Teil F — Lokale KI & Elwosa

Nr Funktion Issue Wiki Status
F1 LLM-Service-Routing (LOCAL/CLAUDE/MANUAL, TaskKind-Tabelle) #512 Lokale-KI
F2 Ollama-Integration mit Status-Caching + Auto-Detect #591 Lokale-KI
F3 Ollama-Modell-Selection mit models_detail (Name, Size, Family) #592 Lokale-KI
F4 Ollama Cold-Start-Fix (keep_alive 60min, Pre-Warmup) #638 Lokale-KI
F5 Ollama als permanente KI-Backbone fuer Hintergrund-Tasks #638 Lokale-KI
F6 Token-Klassen-Anzeige + Pre-Flight-Schaetzung pro Tool #632 🟨 (Stufe 1 ✅, Pre-Flight-Schaetzung ⬜)
F7 Ollama-Genauigkeits-Statistik (auto-aussortiert vs. spaeter reaktiviert/beworben) #638 Lokale-KI
F8 Few-Shot-Beispiele aus User-History fuer match_job_to_skills #638
F9 validate_job_quality TaskKind (Stelle vollstaendig genug?) #645 Stellen-Qualitaet 🟨 (beta.73, beta.72 noch nicht)
F10 Ollama aus PBP heraus starten (wenn gestoppt) #637
F11 Elwosa Live-Statusanzeige mit Persoenlichkeit #599 Elwosa
F12 Elwosa Tonfall-Modi (aus/sachlich/minimal/humorvoll) #612 Elwosa
F13 Elwosa Varianz-Pools (Same-Day-Anti-Repeat) #614 Elwosa
F14 Elwosa Wiki-Snippets pro Page-Wechsel #594 Elwosa
F15 Elwosa Ollama-Live-Generierung + Claude-Eskalation (Ebene 1/2) #669
F17 Elwosa KI-freies Safety-Net: Validierungs-Retry + Tageslebenszeichen-Garantie (rotierender Pool) #669
F16 Wiedergaenger-Erkenner: KI-freier DB-Check (Ebene 0) + Claude-Kontext in fit_analyse (Ebene 2). Firma+Domaene schon X-mal mit Grund Y verworfen #671 ✅ (Ebene 0+2; Ollama-Ebene 1 optional ⬜)
F22 Lern-System: Pattern-Analyse aus User-Aktivitaet (LLM, opt-in Telemetrie) — war faelschlich als zweites F15 nummeriert #594 Lern-System
F21 Transparenz + Steuerung der lokalen KI (konkretisiert 12.06.): eigener Bereich "Was wurde aussortiert" (Liste der Auto-Aussortierungen mit KI-Begruendung + Zurueckholen-Aktion; Minimal: Leistungs-Kachel klickbar → Ausgeblendet-Filter) + Lernprotokoll in den Einstellungen (learning_insights + Few-Shot-Basis) + Insight-Loeschen/Reset #689 🟨 (Teil 1 beta.104; offen: Insight-Loeschen/Reset)
F23 Empfehlungs-Kanal: Ollama-Erkenntnisse, Empfehlungen-an-Claude und Bug-/Feature-Kandidaten sammeln + anzeigen; pro Eintrag auf User-Klick als GitHub-Issue (PII-gescrubbt) oder Mail an den Maintainer melden — nie automatisch. v1.7.1/v1.8-Kandidat #714
F24 Elwosa: nutzungsbasierte, anklickbare Feature-Tipps — user_activity_events erkennt selten/nie genutzte Funktionen, Elwosa stellt sie gezielt vor ([link:]-Markup zur Navigation bzw. copyPrompt fuer den fertigen Claude-Prompt). Spielt endlich die onboarding_hints (#652/G11) aus #713 ✅ (beta.104)
F18 Ollama-Lern-Automatik: Pattern-Analyse + Doku-Lernen laeuft periodisch (Intervall einstellbar) statt nur bei offenem Dashboard. Teil des Automatik-Schedulers #677 Tab-Einstellungen ✅ (beta.94)
F19 Elwosa nennt die echte Uhrzeit: {zeit}-Platzhalter (format_uhrzeit) statt fester Zeiten im Linientext #679 Elwosa ✅ (beta.95)
F20 Ollama-Zeitkontext: aktuelles Datum vor jeden lokalen LLM-Prompt (_run_local), damit Zeitraeume/Aktualitaet gegen das echte Jahr gerechnet werden #679 ✅ (beta.96)

Teil G — Frontend & Dashboard

Nr Funktion Issue Wiki Status
G1 8-Tab-Layout (Dashboard / Profil / Stellen / Bewerbungen / Dokumente / Kalender / Statistiken / Einstellungen) Dashboard
G2 Dashboard mit Workspace-Card "naechster sinnvoller Schritt" Tab-Dashboard
G3 AdaptiveHintBanner pro Page (#594 Stufe 4) #594 Lern-System
G4 Split-View Festanstellung / Freelance Tab-Stellen
G5 Verwaltungsnummern (S-/B-/D-/K-Praefix, Klick = in Zwischenablage kopieren) Erste-Schritte
G6 Statistik-Charts + Bewerbungsbericht-Export Tab-Statistiken
G7 Gefahrenzone (DB-Reset, Komplett-Deinstallation) Tab-Einstellungen
G8 Live-Updates Frontend zeigt Claude-Aenderungen ohne Refresh #630
G9 Sidebar-Menue-Vorrang-Fix #625
G10 Ollama-Leistung-Card in Einstellungen #638 Lokale-KI
G11 Onboarding-Hints fuer ungenutzte Features (Suchprofile, Aufwand, Reflexion) — Backend: ✅, Frontend folgt #652 MCP-Tools 🟨
G12 App-weite ErrorBoundary (ein Tab-Crash blankt nie die ganze App, Sidebar bleibt) + White-Screen-Fix (fehlender SelectInput-Import im Datenschutz-Tab) + Telemetrie-MCP (telemetrie_status/_setzen) als Recovery. User-Test-Fix #676 Tab-Einstellungen ✅ (beta.93)
G16 Interview-Vorbereitung direkt aus der Bewerbung: Button in Uebersicht + Timeline (Status interview/zweitgespraech), startet den Workflow vorbefuellt + legt Todo mit Faelligkeit an #706
G13 Outcome-Quoten (expired/rejection/withdrawal) + Segmentierung am PBP-Startdatum (gesamt/seit_pbp/vor_pbp) in get_statistics; Statistik-Kachel mit Umschalter. Aktiv-vs-Inbound-Schnitt bewusst offen (kein zuverlaessiger Marker) #682 Tab-Statistiken ✅ (beta.99)

Teil H — MCP-Layer & Diagnose

Nr Funktion Issue Wiki Status
H1 FastMCP-Server-Setup mit 11 Tool-Modulen MCP-Tools
H2 177 MCP-Tools (volle UI-Parity) mehrere MCP-Tools
H3 24 Prompts (vorgefertigte Workflow-Starter) MCP-Tools
H4 pbp_capabilities (kuratierte Tool-Uebersicht) #514
H5 pbp_diagnose (Gesundheits-Check + Auto-Fix) mehrere
H6 pbp_mcp_diagnose (Tool-Call-Telemetrie fuer Timeout-Diagnose) #636 MCP-Tools
H7 pbp_grenze_melden (Edge-Case-Reporter) #514
H8 scraper_diagnose mit Reaktivierungs-Tool #432
H9 Anti-DB-Bypass-Pattern (Claude darf nicht direkt in SQLite) #514
H10 Slow-Call-WARNING ins Server-Log (>= 5s) #636
H11 Wall-Clock-Budget fuer Bulk-Tools (90s/180s) #646 FAQ
H12 pbp_capabilities Tool-Count-Sync (gesamt 152 vs. kuratiert 95 transparent) #647
H13 profil_bearbeiten: Umlaut-Normalisierung fuer aktion/bereich #659
H15 informal_notes aktiv pflegen: Prompt-Guidance (Claude notiert persoenliche Erkenntnisse proaktiv via profil_bearbeiten) + Dashboard-Hint bei leeren/kurzen Notizen + UI-Tooltip #707
H14 CLAUDE.md: hartes Verbot eigener Ablehnungsgruende + Fit-Verdict-Stil #663 #662

Teil I — Distribution & Installer

Nr Funktion Issue Wiki Status
I1 INSTALLIEREN.bat (Windows, Doppelklick-Install) Installation
I2 INSTALLIEREN.command (macOS) Installation
I3 installer/install.sh (Linux) Installation
I4 DEINSTALLIEREN.bat mit klarer Abgrenzung (Claude Desktop bleibt) Installation
I5 Komplett-Deinstallation aus der Gefahrenzone (UI-getrieben) Tab-Einstellungen
I6 Installer-Autostart (PBP nach Installation automatisch starten) #639
I7 Cross-Platform-Build-Pipeline (GitHub Actions)
I8 Code-Signing (Win + macOS)
I9 Auto-Updater

Teil J — Roadmap v1.8 (Plugin-Plattform & Integrationen)

Explizit User-Vorgabe: das soll als Plug-Ins kommen, nicht als Kern-Code.

Nr Funktion Issue Wiki Status
J1 Plugin-Plattform v1.7 (Sub-Add-Ins, Capability-Manifest, stabile Ingest-API) #504
J2 Thunderbird-Add-On "An PBP senden" #478
J3 Outlook-Office-Add-In "An PBP senden" #480
J4 Calendar-Sync (iCalendar-Export, optional CalDAV/Graph) #481
J5 Newsletter-Ingest (StepStone/JobLeads/freelance.de/LinkedIn/XING) #525
J6 Interview-Training-Arc (eigener PBP-Bereich) #452
J7 Community-Tagesimpulse (User koennen Sprueche beisteuern) #513
J8 Branchen-Radar & Tools-News (gemeinsame Recherche-Engine, 2 Kanaele: Dossier-Abschnitt on-demand + erinnerungsbasierter Radar als Dauerwert) #718 (Master), #716, #717

Reihenfolge-Logik

Warum Datenbasis (A) und MCP-Layer (H) zuerst, dann Domains (B-G)? Schema + MCP-Layer sind Querschnitts-Module. Jede neue Domain ist von ihnen abhaengig. Wenn das Schema sich aendert nachdem 5 Domains drauf bauen, ist es teurer als wenn 5 Domains an einem fertigen Schema dranhaengen.

Warum Jobsuche (B) vor Stellen-Lifecycle (C) vor Bewerbungen (D)? Pipeline-Reihenfolge. Erst kommt die Stelle ueber Scraping rein (B), dann wird sie bewertet/aussortiert (C), dann wird daraus eine Bewerbung (D). Wer B fixed muss nicht zwingend C/D anfassen.

Warum Lokale KI (F) als eigener Cluster, nicht in einzelne Tools verteilt? Weil das Ollama-Routing in services/llm_service.py zentral ist. Jeder Task-Typ (Doku-Klassifikation, Profil-Match, Stelle-Validierung, ...) nutzt dieselbe Routing-Tabelle. Aenderung dort wirkt ueberall.

Warum Elwosa in F und nicht in G (Frontend)? Elwosa ist konzeptuell Persoenlichkeit + Trigger-Engine, nicht UI. Die UI in der Sidebar ist nur das Frontend einer Backend-Logik die selber Lokale AI nutzen kann. G ist nur die Anzeige.

Warum Plugin-Plattform (J) erst nach allem anderen? Weil Plugins gegen eine stabile Ingest-API andocken. Erst muss die API stabil sein, dann darf sie nach aussen geoeffnet werden. Andersrum entsteht Wildwuchs.


Was nicht im Plan steht (bewusst aus Scope)

PBP ist kein:

  • Job-Search-Aggregator-Hosting — wir scrapen lokal, kein Backend-Cache, kein "PBP-Cloud-Service".
  • ATS-System — keine Recruiter-Tools fuer Firmen.
  • Karriere-Coaching-Service — die KI gibt Sparring, ist aber kein Coach-Ersatz.
  • CV-Builder-fuer-andere — kein Multi-User-Hosting, jede Installation ist persoenlich.
  • Direkt-Bewerbungs-Versender — PBP traegt Anschreiben + CV bei, der User schickt selbst (keine Auto-Send-Funktion).
  • Headhunter-Marktplatz — keine Verbindung Recruiter ↔ User-Profile.
  • Gehalts-Statistik-Datenbank — wir nutzen externe Daten (Stepstone-Gehaltsanalyse etc.), bauen keine eigene.

Akzeptanzkriterium pro Position

Eine Position gilt nur als ✅ wenn alle drei zutreffen:

  1. Code ist im Repo, lauffaehig.
  2. Tests sind gruen — die jeweils relevanten in tests/.
  3. Wiki-Eintrag existiert mit:
    • Kurzbeschreibung der Funktion
    • Wie nutzt man sie (Beispiel-Call oder UI-Screenshot)
    • Welche Parameter / Optionen gibt es
    • Bekannte Einschraenkungen
    • Verweis auf Issue + relevante Code-Pfade

Solange ein Punkt fehlt, bleibt die Position 🟨 oder ⬜. Diese Disziplin ist ab beta.74 verbindlich (siehe CLAUDE.md).


Was wird getrackt

  • Plan-Fortschritt: Status-Spalten oben werden mit jedem Schritt aktualisiert.
  • Wiki-Vollstaendigkeit: Stub-Verweise werden ergaenzt sobald die Position fertig ist.
  • Issue-Verlinkung: Jede Position verweist auf das relevante GitHub-Issue (wenn vorhanden).
  • Test-Anzahl: wird im CI gemessen (aktuell 1679 passed, 1 skipped — Stand Beta-Stabilisierung 2026-06-09, +7 Regressionstests; automatischer Gate via K5).
  • MCP-Tool-Count: aktuell 177 Tools, 24 Prompts, pbp_capabilities ist die kuratierte Uebersicht.
  • QA-Selbsttest (beta.90): voller Test-Lauf + Migration v43→v45 auf einer Real-DB-Kopie + 10/10 REST-Endpoints (FastAPI-TestClient) gruen. Wiki-Drift (beta.74→beta.90) korrigiert, beta.78-90-Features user-seitig dokumentiert. Details: docs/QA-Audit-beta90.md.
  • Beta-Stabilisierung (2026-06-09): FastMCP-3.x-Prompt-Bug (#692), kontakt_verknuepfen Meeting+CON-Praefix (#685/#684), Nachlade-Cap (#690), auto_aussortieren-Schema+Begruendung (#691) gefixt — je mit Regressionstest; Jobsuche-Timeout (#668) entschaerft; CI-Test-Gate eingefuehrt (K5); fastmcp gepinnt (K6); 14 im Code erledigte Issues geschlossen (Hygiene). Volle Suite gruen (1679 passed). Siehe Teil K.

Naechste Schritte

Priorisierung + Zeitschaetzung in Master-Plan-Optimierung.

Clone this wiki locally