diff --git a/docs/superpowers/specs/2026-06-12-projekt-anlegen-erweiterung-design.md b/docs/superpowers/specs/2026-06-12-projekt-anlegen-erweiterung-design.md index 52b40f7..3032b52 100644 --- a/docs/superpowers/specs/2026-06-12-projekt-anlegen-erweiterung-design.md +++ b/docs/superpowers/specs/2026-06-12-projekt-anlegen-erweiterung-design.md @@ -46,14 +46,14 @@ durch den Skill `projekt-anlegen`. Ändern sich selten. ## Einsatzort-Regel - 100 % Remote → ✅ (Ort egal). -- Onsite/Hybrid, Ort ≲ 50 km Luftlinie um Sauerlach → ✅. -- Onsite/Hybrid, Ort grenzwertig ≈ 50–60 km → ❔. -- Onsite/Hybrid, Ort ≳ 60 km → ❌. +- Onsite/Hybrid, Ort ≤ 50 km Luftlinie um Sauerlach → ✅. +- Onsite/Hybrid, Ort 50–60 km (grenzwertig) → ❔. +- Onsite/Hybrid, Ort > 60 km → ❌. - Einsatzort/Remote-Anteil unklar oder nicht genannt → ❌. -### Referenz-Distanzen ab Sauerlach (Luftlinie, gerundet) -- München-Zentrum ≈ 25 km ✅ · Holzkirchen ≈ 10 km ✅ · Wolfratshausen ≈ 15 km ✅ · Rosenheim ≈ 40 km ✅ -- Augsburg ≈ 75 km ❌ · Landshut ≈ 80 km ❌ · Ingolstadt ≈ 95 km ❌ · Nürnberg ≈ 150 km ❌ · Stuttgart ≈ 200 km ❌ +Distanz = Luftlinie zwischen Onsite-Ort und Sauerlach (47,9721 N / 11,6528 O), +bestimmt per Geokodierung (Nominatim/OpenStreetMap, nur Deutschland) und Haversine. +Unbekannter/mehrdeutiger Ort → ❔. Hinweis: „heute" = aktuelles Datum der Session. „8 Wochen" = 56 Tage. ``` @@ -72,7 +72,7 @@ Zusätzlich zu Projektname/URL/Anforderungen aus der Ausschreibung ziehen: Misc-Anforderungen zu Verfügbarkeit/Auslastung/Laufzeit/Einsatzort werden gegen `vorgaben/rahmenbedingungen.md` bewertet und erhalten direkt ✅/❌/❔ gemäß den Regeln in §3 — **statt** des bisherigen pauschalen ❔. Greift eine Regel nicht eindeutig (Auslastung/Start nicht genannt, Ort grenzwertig), bleibt es ❔. -- Distanzbeurteilung: Luftlinie vom genannten Onsite-Ort nach Sauerlach schätzen; Referenz-Distanzen aus §3 als Anker. Klar innerhalb → ✅, klar außerhalb → ❌, grenzwertig/unbekannter Ort → ❔ bzw. ❌ gemäß Regel. +- Distanzbeurteilung per **Geokodierung**: Onsite-Ort über Nominatim (OpenStreetMap; `format=json`, `countrycodes=de`, `limit=1`, eigener `User-Agent`; max. 1 Request/s) auflösen, Luftlinie zu Sauerlach (47,9721 N / 11,6528 O) per Haversine berechnen, gegen die Bänder ≤ 50 / 50–60 / > 60 km prüfen. Geokodierung gescheitert oder Ort mehrdeutig → ❔. (Feasibility verifiziert: München 19 km, Rosenheim 38 km, Augsburg 71 km, Nürnberg 170 km.) - Startdatum: „heute + 8 Wochen" (56 Tage) gegen den genannten Projektstart prüfen. - Misc-Zeilen gehen weiterhin **nicht** in die Match-Prozente ein; die automatische Bewertung ist informativ und spart das manuelle Setzen. @@ -90,7 +90,8 @@ Alle Schreibvorgänge erst **nach** der Review-Freigabe (§7). ### 6.2 Kontakt (`Contact`) 1. Dedup-Suche per Name analog zu 6.1. -2. Kein/zu bestätigender Treffer → nach Freigabe neu anlegen: `POST /Contact` mit `{firstName, lastName, accountId}` (verknüpft mit der Firma aus 6.1). +2. Kein/zu bestätigender Treffer → nach Freigabe neu anlegen: `POST /Contact` mit `{firstName, lastName, accountId}`. + - **Die Verknüpfung zur Firma aus 6.1 wird beim Neu-Anlegen zwingend mitgesetzt** (`accountId`), sodass der neue Kontakt der Firma zugeordnet ist. - Namensaufteilung: letztes Token = `lastName`, der Rest = `firstName`. Ungewöhnliche Fälle im Review klären. ### 6.3 Verkaufschance (`Opportunity`) @@ -118,7 +119,7 @@ Erst nach Freigabe werden Firma, Kontakt und Verkaufschance in dieser Reihenfolg - Unberührt: `cowork-projekt-match` (Archiv). ## 9. Bewusst NICHT enthalten (YAGNI) -- Keine automatische Geokodierung/Distanz-API — Distanz wird anhand der Referenz-Anker geschätzt; Grenzfälle → ❔. +- Keine Fahrstrecken-/Routing-Berechnung — für das 50-km-Kriterium genügt die Luftlinie (Haversine) auf Basis der Nominatim-Geokodierung. - Keine automatische Zusammenführung bestehender CRM-Dubletten. - Keine Änderung der Must/Nice-Bewertungslogik oder der Match-Berechnung.