docs: finalize contacts and organizations handoff

This commit is contained in:
david committed 2026-08-29 04:36:36 +02:00
1 parent 6ea5f6fd28
commit 586994e28c
18 files changed
+750 -252

No files matched your search

@@ -1,49 +1,32 @@
---
kind: screen
kind: decision
project: HiveGrid Screen Project
ticket: D-CRM
package: WF-P6 Kontakte und Organisationen
id: M01
screen: Kontakt anlegen
typ: Modal
umsetzung: Bauen
status: Validiert
route: "aus S01 + ueberall (z. B. Lead-Konvertierung)"
typ: Entscheidungsdokument
umsetzung: Nicht bauen
status: Aus Produktscope und Subframe entfernt
route: "entfällt; S01 öffnet S03 im Anlagezustand"
subframe: ""
---
# M01 — Kontakt anlegen
# M01 — Kontakt anlegen (entfällt)
## Ziel
## Entscheidung vom 2026-08-29
Neuen Kontakt in Sekunden anlegen — ohne Dubletten zu produzieren.
Der separate Dialog M01 wird nicht benötigt. `Neue Person` in S01 öffnet unmittelbar [[S03 Kontakt-Karteikarte]] im Anlagezustand. Die Person wird dort in derselben vollständigen Detailansicht erfasst, in der sie später weiter gepflegt wird.
## Pattern / Archetyp
## Ersetzender Flow
A5 Dialog (echtes Modal: DialogLayout → Dialog → Dialog.Content).
1. S01 → `Neue Person`.
2. S03 öffnet direkt mit leeren Personenfeldern und bearbeitbarer Detailansicht.
3. Der erste gültige Speichervorgang legt die Person an; die Ansicht bleibt S03 und wechselt ohne Zwischenseite in den normalen Detailzustand.
4. Bei möglichem Duplikat erscheint [[M01a Kontakt anlegen Duplikatwarnung]] aus S03 heraus.
## Daten
Es gibt weder ein vorgeschaltetes Kurzformular noch einen Erfolgszustand zwischen Liste und Detailansicht.
- **Pflicht: nur der Name.** Optional: Typ (Privatperson/Organisation, Default Privatperson), E-Mail, Telefon, Organisation verknüpfen (mit Rolle), Verantwortlicher
- **Live-Duplikat-Check** beim Tippen (Name/E-Mail/Telefon): Banner »Gibt es schon?« mit Treffer-Vorschau
## Subframe-Löschung
## Aktionen
- »Anlegen« → Karteikarte öffnet sich (dort Rest pflegen)
- Bei Duplikat-Banner: »Bestehenden öffnen« oder »Trotzdem anlegen«
- Abbrechen
## Meldungsentscheidung
| Ereignis | UI-Form | Blockiert? | Umsetzung | Copy/Notiz |
|---|---|---|---|---|
| Mögliches Duplikat | Banner im Modal | nein | Nur dokumentieren | Treffer klickbar |
| Name leer | Inline-Validierung | ja (Feld) | Nur dokumentieren | einziges Pflichtfeld |
## Subframe
- (erst nach explizitem OK)
## Notizen
- P7 greift fachlich auf diese Mechanik zurück: M02/M08 verknüpfen oder erstellen Ansprechpartner, M01 übernimmt optional einen Kontakt. Ob dabei dieser P6-Dialog technisch wiederverwendet wird, ist im aktuellen Subframe-Export nicht verdrahtet; der frühere Sonderfall `Lead → Projekt` bleibt als P7-Produktdelta offen.
Die nicht mehr verwendete Subframe-Seite wurde am 2026-08-29 gelöscht. Eine Wiederherstellung ist nur über die Subframe-Projektversionierung möglich.
@@ -0,0 +1,37 @@
---
kind: screen
project: HiveGrid Screen Project
ticket: D-CRM
package: WF-P6 Kontakte und Organisationen
id: M01a
screen: Person – Duplikatwarnung im Anlagezustand
typ: Modal-Zustand
umsetzung: Bauen
status: Validiert 2026-08-29
route: "aus S03 im Anlagezustand beim Duplikat-Check"
subframe: "https://app.subframe.com/f023064a5ca0/design/38a86afc-5cfd-40a6-bdab-fc6a19d93697/edit"
---
# M01a — Person · Duplikatwarnung im Anlagezustand
## Ziel
Vor dem ersten Speichern in S03 kurz einen möglichen vorhandenen Personenkontakt prüfen, ohne die Detailansicht zu verlassen oder ein Anlageformular zu zeigen.
## Pattern / Inhalt
A5 Entscheidungsdialog aus dem Anlagezustand von [[S03 Kontakt-Karteikarte]]. Oben stehen die neu eingegebenen Identitätsdaten aus S03, darunter der stärkste vorhandene Treffer mit Übereinstimmungsgrad und direkter Aktion `Öffnen`. Weitere Stammdaten gehören nicht in diesen Dialog.
## Aktionen
- `Öffnen` → vorhandene [[S03 Kontakt-Karteikarte]] öffnen; der neue Entwurf wird nicht gespeichert.
- `Trotzdem anlegen` → Person speichern; dieselbe S03-Ansicht wechselt in den normalen Detailzustand.
- `Abbrechen` bzw. Schließen → mit unveränderten Eingaben zu S03 im Anlagezustand zurück.
## Entscheidung
Von David am 2026-08-29 als bewusst einfacher Duplikat-Zustand bestätigt. Kein zusätzliches Langformular und kein Merge in diesem Moment.
## Subframe
- [Subframe](https://app.subframe.com/f023064a5ca0/design/38a86afc-5cfd-40a6-bdab-fc6a19d93697/edit)
@@ -1,38 +1,32 @@
---
kind: screen
kind: decision
project: HiveGrid Screen Project
ticket: D-CRM
package: WF-P6 Kontakte und Organisationen
id: M02
screen: Organisation anlegen
typ: Modal
umsetzung: Bauen
status: Validiert
route: "aus S02 + aus M01/S03 (Organisation verknuepfen)"
typ: Entscheidungsdokument
umsetzung: Nicht bauen
status: Aus Produktscope und Subframe entfernt
route: "entfällt; S02 öffnet S04 im Anlagezustand"
subframe: ""
---
# M02 — Organisation anlegen
# M02 — Organisation anlegen (entfällt)
## Ziel
## Entscheidung vom 2026-08-29
Neue Organisation schnell anlegen — gleiches Muster wie Kontakt anlegen.
Der separate Dialog M02 wird nicht benötigt. `Neue Organisation` in S02 öffnet unmittelbar [[S04 Organisations-Karteikarte]] im Anlagezustand. Die Organisation wird dort in derselben vollständigen Detailansicht erfasst, in der sie später weiter gepflegt wird.
## Pattern / Archetyp
## Ersetzender Flow
A5 Dialog, analog [[M01 Kontakt anlegen]].
1. S02 → `Neue Organisation`.
2. S04 öffnet direkt mit leeren Organisationsfeldern und bearbeitbarer Detailansicht.
3. Der erste gültige Speichervorgang legt die Organisation an; die Ansicht bleibt S04 und wechselt ohne Zwischenseite in den normalen Detailzustand.
4. Bei möglichem Duplikat erscheint [[M02a Organisation anlegen Duplikatwarnung]] aus S04 heraus.
## Daten
Es gibt weder ein vorgeschaltetes Kurzformular noch einen Erfolgszustand zwischen Liste und Detailansicht.
- **Pflicht: nur der Name.** Optional: Branche/Merkmal, E-Mail, Telefon, Adresse, Verantwortlicher, Hauptkontakt verknüpfen
- Live-Duplikat-Check (Name/E-Mail)
## Subframe-Löschung
## Aktionen
- »Anlegen« → Organisations-Karteikarte öffnet
- Duplikat-Banner: »Bestehende öffnen« / »Trotzdem anlegen«
- Abbrechen
## Subframe
- (erst nach explizitem OK)
Die nicht mehr verwendete Subframe-Seite wurde am 2026-08-29 gelöscht. Eine Wiederherstellung ist nur über die Subframe-Projektversionierung möglich.
@@ -0,0 +1,37 @@
---
kind: screen
project: HiveGrid Screen Project
ticket: D-CRM
package: WF-P6 Kontakte und Organisationen
id: M02a
screen: Organisation – Duplikatwarnung im Anlagezustand
typ: Modal-Zustand
umsetzung: Bauen
status: Validiert 2026-08-29
route: "aus S04 im Anlagezustand beim Duplikat-Check"
subframe: "https://app.subframe.com/f023064a5ca0/design/de4c91e1-3f45-49e8-b3c4-f3f830c50e74/edit"
---
# M02a — Organisation · Duplikatwarnung im Anlagezustand
## Ziel
Vor dem ersten Speichern in S04 kurz eine mögliche vorhandene Organisation prüfen, ohne die Detailansicht zu verlassen oder ein Anlageformular zu zeigen.
## Pattern / Inhalt
A5 Entscheidungsdialog aus dem Anlagezustand von [[S04 Organisations-Karteikarte]], analog [[M01a Kontakt anlegen Duplikatwarnung]]. Oben stehen die neu eingegebenen Identitätsdaten aus S04, darunter der stärkste bestehende Treffer mit Übereinstimmungsgrad und direkter Aktion `Öffnen`.
## Aktionen
- `Öffnen` → vorhandene [[S04 Organisations-Karteikarte]] öffnen; der neue Entwurf wird nicht gespeichert.
- `Trotzdem anlegen` → Organisation speichern; dieselbe S04-Ansicht wechselt in den normalen Detailzustand.
- `Abbrechen` bzw. Schließen → mit unveränderten Eingaben zu S04 im Anlagezustand zurück.
## Entscheidung
Von David am 2026-08-29 als bewusst einfacher Duplikat-Zustand bestätigt. Kein zusätzliches Langformular und kein Merge in diesem Moment.
## Subframe
- [Subframe](https://app.subframe.com/f023064a5ca0/design/de4c91e1-3f45-49e8-b3c4-f3f830c50e74/edit)
@@ -0,0 +1,52 @@
---
kind: decision
project: HiveGrid Screen Project
ticket: D-CRM
package: WF-P6 Kontakte und Organisationen
id: M04
screen: Kontakt verknuepfen
typ: Entscheidungsdokument
umsetzung: Nicht bauen
status: Aus Produktscope und Subframe entfernt
route: "entfällt; Relation wird in S03/S04 gepflegt"
subframe: ""
---
# M04 — Kontakt verknüpfen (entfällt)
## Entscheidung vom 2026-08-29
M04, M04a, M04b und M04c sind keine eigenen Produktseiten mehr. Die komplette Relationspflege passiert inline in [[S03 Kontakt-Karteikarte]] und [[S04 Organisations-Karteikarte]]. S03 unterscheidet dabei bewusst zwischen einer direkten Organisationsverknüpfung über den Primärpfad und einer Person-Verknüpfung mit Primär-/Sekundärwahl; S04 pflegt Personen direkt in den beiden Ansprechpartner-Sektionen.
## Ersetzendes Inline-Muster
- In S03 besitzt `Organisationen` genau den Button `Organisation verknüpfen`. Es gibt keine sichtbare Primär-/Sekundärwahl; die Relation wird über den Primärpfad angelegt.
- In S03 öffnet `Person verknüpfen` zuerst ein kompaktes Dropdown mit `Primär verknüpfen` und `Sekundär verknüpfen`. Anschließend folgt die durchsuchbare Personenauswahl.
- In S04 sitzt `+ Hinzufügen` weiterhin direkt an `Primäre Ansprechpartner` oder `Sekundäre Ansprechpartner`; dadurch ist der Zielbereich bereits festgelegt.
- Die Auswahl des Ziels erzeugt die Relation unmittelbar.
- Eine optionale freie Bezeichnung wie `Geschäftsführerin`, `Mitarbeiter` oder `Ehepartner` wird direkt in der neuen Zeile ergänzt oder später inline bearbeitet. Sie blockiert die schnelle Auswahl nicht.
- Zeilenklick bzw. Zeilenmenü erlaubt Bezeichnung ändern, Personenrelationen nach Primär/Sekundär verschieben und Verknüpfung lösen. Dafür öffnet sich kein weiteres Modal.
- `Neue Person anlegen` öffnet S03, `Neue Organisation anlegen` S04 jeweils direkt im Anlagezustand und mit unsichtbar erhaltenem Relationskontext. Nach dem ersten Speichern wird die Relation angelegt; die neue Detailseite bleibt geöffnet. Auch hier gibt es kein Anlage-Modal.
## Ehemalige Varianten
| ID | Früherer Zweck | Entscheidung | Technischer Stand |
|---|---|---|---|
| M04 | Von Person aus Organisation wählen | Raus; inline in S03 | Aus Subframe gelöscht 2026-08-29 |
| M04a | Person in fester Organisation wählen | Raus; inline in S04 | Aus Subframe gelöscht 2026-08-29 |
| M04b | Person mit Person verknüpfen | Raus; inline in S03 | Aus Subframe gelöscht 2026-08-29 |
| M04c | Bestehende Relation bearbeiten | Raus; Zeileninteraktion in S03/S04 | Aus Subframe gelöscht 2026-08-29 |
Alle vier nicht mehr verwendeten Subframe-Seiten wurden am 2026-08-29 gelöscht. Eine Wiederherstellung ist nur über die Subframe-Projektversionierung möglich.
## Verbindliche Inline-Zustände
Diese Zustände gelten als Development-Handoff.
| Zustand | Verhalten | Umsetzung |
|---|---|---|
| Ziel bereits verknüpft | nicht doppelt anlegen; bestehende Zeile hervorheben bzw. öffnen | Nur dokumentieren |
| Person versucht Selbstbezug | eigener Datensatz ist nicht auswählbar | Nur dokumentieren |
| Kein Suchtreffer | `Neue Person anlegen` bzw. `Neue Organisation anlegen` anbieten und Relationskontext nach erstem Speichern anwenden | Nur dokumentieren |
| Speichern fehlgeschlagen | Inline-Zeile bleibt mit Fehler und Wiederholen erhalten | Wiederverwenden |
| Verknüpfung lösen | kompakte Bestätigung mit Zielname; übrige Stammdaten bleiben bestehen | Nur dokumentieren |
@@ -0,0 +1,40 @@
---
kind: screen
project: HiveGrid Screen Project
ticket: D-CRM
package: WF-P6 Kontakte und Organisationen
id: M08
screen: Kontakt archivieren
typ: Bestätigungsdialog
umsetzung: Bauen
status: Validiert 2026-08-29
route: "aus S03/S04 sowie Einzelaktion in S01/S02"
subframe: "https://app.subframe.com/f023064a5ca0/design/a5efa71b-e485-4c76-80bf-8f3bb4c47de0/edit"
---
# M08 — Kontakt archivieren
## Ziel
Archivieren als bewusste, reversible Zustandsänderung bestätigen. Das ist neben der Duplikatentscheidung der einzige verbleibende eigenständige Aktionsdialog dieses Kernflows.
## Pattern / dynamische Copy
A5 kompakter Bestätigungsdialog. Dieselbe Komponente gilt für Personen und Organisationen; Objektbegriff, Name und Buttontext werden dynamisch eingesetzt.
- Titel: `Person archivieren?` bzw. `Organisation archivieren?`
- Text: `[Name] wird aus aktiven Listen und der Suche entfernt. Du kannst den Eintrag jederzeit im Archiv wiederherstellen.`
- Bestehende Relationen, Projekte und Verlaufseinträge werden nicht gelöscht. Nach dem Wiederherstellen sind sie weiterhin vorhanden.
## Aktionen
- `Abbrechen` → Dialog schließen, keine Änderung.
- `Person archivieren` / `Organisation archivieren` → archivieren und zur jeweiligen Liste zurückkehren.
## Development-Vorgabe zur dynamischen Copy
Der statische Referenzscreen zeigt die Personen-Copy `Kontakt archivieren?`. Development setzt Objektbegriff, Name und Buttontext dynamisch auch für Organisationen ein; eine zweite Modalvariante ist dafür nicht nötig.
## Subframe
- [Subframe](https://app.subframe.com/f023064a5ca0/design/a5efa71b-e485-4c76-80bf-8f3bb4c47de0/edit)
@@ -9,7 +9,7 @@ typ: Liste
umsetzung: Bauen
status: Validiert
route: "/contacts"
subframe: ""
subframe: "https://app.subframe.com/f023064a5ca0/design/82f7c7cb-18d2-4f3c-b374-15ca56e12635/edit"
---
# S01 — Kontakte-Liste
@@ -24,17 +24,26 @@ A2 Liste; oben Reiter-Wechsel zu [[S02 Organisationen-Liste]].
## Daten
- **Zeigt ALLE Personen** — auch Ansprechpartner aus Organisationen (validiert): Zeile macht die Zugehörigkeit sichtbar (Organisation + Rollen-Badge Haupt-/Sekundärkontakt)
- Zeile: Avatar + Name · Organisation (mit Rolle) · Kontaktstatus (Kontakt/Kunde/Bestandskunde) · E-Mail · Telefon · Tags · Verantwortlicher · letzte Aktivität
- Suche · Filter: Verantwortlicher, Kontaktstatus, Tags (UND/ODER), Organisation (auch »ohne Organisation«), Datum · Archiviert-Schalter
- Keine Misch-Liste: Organisationen haben ihren eigenen Reiter ([[S02 Organisationen-Liste]])
- **Zeigt ALLE Personen** — auch Ansprechpartner aus Organisationen. Eine Zeile kann mehrere Organisationen mit ihrer jeweiligen Rolle zeigen.
- Kompakte Zeile: Person · Organisationen/Rollen · Status · Kontakt (E-Mail + Telefon) · Verantwortlich · Tags · letzte Aktivität
- In der Kontaktspalte werden die jeweilige Standard-E-Mail und Standardtelefonnummer gezeigt. Existieren weitere Werte desselben Typs, steht direkt rechts daneben ein kleiner blauer `+n`-Indikator – visuell identisch zum Organisationsüberlauf –, z. B. `+2` für zwei zusätzliche E-Mail-Adressen oder `+1` für eine weitere Telefonnummer.
- `Organisationen / Rolle` zeigt ausschließlich Firmen-/Organisationszuordnungen. Person-Person-, Projekt- und sonstige Verknüpfungen gehören nicht in diese Listenspalte und werden an ihren eigenen Feldern bzw. auf der Detailseite gezeigt.
- Pro Tabellenzelle werden höchstens zwei Organisationen bzw. zwei Tags ausgeschrieben; weitere Werte erscheinen als kompakter `+n weitere`-Indikator.
- Statusmodell: kein Status · Interessent · Kunde · Bestandskunde · Ehemaliger Kunde. Reine Ansprechpartner ohne eigene Geschäftsbeziehung bleiben ohne Status; »Kontakt« ist kein Status. Ein fehlender Status erscheint nicht als Badge, sondern als grauer Klartext `Kein Status` analog zu `Keine Organisation`.
- Gleiche Statuswerte verwenden überall dieselbe Badge-Farbe.
- Suche · Filter: Status, Verantwortlich, Organisation und Tags
- `Letzte Aktivität` bleibt eine reine Zeitangabe und ist über den Tabellenkopf auf- bzw. absteigend sortierbar; dafür gibt es keinen zusätzlichen Datumsfilter.
- Archivierte Kontakte werden über den festen Button `Archiv` geöffnet. Ein zusätzlicher Archiv-Schalter in der Filterleiste ist bewusst nicht vorhanden.
- Keine Misch-Liste: Organisationen haben ihre eigene Ansicht; Wechsel über kompakten Switch.
- Server-seitig sortiert/paginiert
- Der Subframe-Draft zeigt zehn unterschiedliche Beispieldatensätze: mehrere Kunden, reine Ansprechpartner ohne Status und mehrere Organisationsrollen.
## Aktionen
- Zeile öffnen → [[S03 Kontakt-Karteikarte]]
- »+ Kontakt« → [[M01 Kontakt anlegen]]
- Mehrfach-Auswahl: Tag vergeben · Verantwortlichen zuweisen · Archivieren · CSV-Export
- `Neue Person` → [[S03 Kontakt-Karteikarte]] öffnet direkt im Anlagezustand; kein M01-Dialog.
- Zeilenmenü: Öffnen · Archivieren → [[M08 Kontakt archivieren]] · Löschen. Beziehungen werden ausschließlich in der geöffneten [[S03 Kontakt-Karteikarte]] gepflegt; ein schneller `Verknüpfen`-Eintrag würde wieder in die entfernten M04-Modals führen und entfällt deshalb.
- Mehrfach-Auswahl ist direkt in S01 integriert: Checkboxen stehen dauerhaft links in jeder Zeile. Sobald mindestens ein Kontakt gewählt ist, erscheint die bestehende `BulkActionBar` mit Status ändern · Tags vergeben · Verantwortlichen zuweisen · Archivieren. Ausgewählte Zeilen werden zusätzlich blau hinterlegt. Ein eigener Auswahlmodus und ein Button `Auswählen` existieren nicht mehr.
## Zustände
@@ -49,7 +58,7 @@ A2 Liste; oben Reiter-Wechsel zu [[S02 Organisationen-Liste]].
## Subframe
- (erst nach explizitem OK)
- [Subframe](https://app.subframe.com/f023064a5ca0/design/82f7c7cb-18d2-4f3c-b374-15ca56e12635/edit)
## Notizen
@@ -9,7 +9,7 @@ typ: Liste
umsetzung: Bauen
status: Validiert
route: "/contacts/companies"
subframe: ""
subframe: "https://app.subframe.com/f023064a5ca0/design/6d1512ab-898a-4931-976c-2622d8d4aff4/edit"
---
# S02 — Organisationen-Liste
@@ -24,14 +24,21 @@ A2 Liste (Reiter neben [[S01 Kontakte-Liste]]). UI-Begriff: **»Organisation«**
## Daten
- Zeile: Name · Branche/Merkmal · Anzahl verknüpfter Kontakte · Verantwortlicher · letzte Aktivität · Tags
- Suche · Filter analog S01
- Kompakte Zeile: Organisation · Branche · Rechtsform · Status · Primärkontakt · Verantwortlich · letzte Aktivität
- Branche und Rechtsform sind getrennte Felder.
- `Primärkontakt` bleibt einzeilig: Avatar/Initialen und Name der ersten Person erscheinen als blauer, klickbarer Link. Existieren weitere Primärkontakte, folgt direkt ein blauer `+n weitere`-Indikator. Sekundärkontakte werden bewusst erst in der Organisationsdetailansicht gezeigt.
- Suche · Filter: Status, Branche, Rechtsform, Verantwortlich und Tags
- `Letzte Aktivität` bleibt eine reine Zeitangabe und ist über den Tabellenkopf auf- bzw. absteigend sortierbar; dafür gibt es keinen zusätzlichen Datumsfilter.
- Archivierte Organisationen werden über den festen Button `Archiv` geöffnet. Ein zusätzlicher Archiv-Schalter in der Filterleiste ist bewusst nicht vorhanden.
- Gleiche Statuswerte verwenden dieselben Badge-Farben wie in S01.
- Der Stack unmittelbar um die Tabelle trägt `overflow-x-auto`; damit bleibt die breite Organisationsliste auf schmaleren Screens horizontal scrollbar, ohne die gemeinsame `Table`-Komponente zu verändern.
## Aktionen
- Zeile öffnen → [[S04 Organisations-Karteikarte]]
- »+ Organisation« → [[M02 Organisation anlegen]]
- Mehrfach-Aktionen analog S01
- `Neue Organisation` → [[S04 Organisations-Karteikarte]] öffnet direkt im Anlagezustand; kein M02-Dialog.
- Zeilenmenü: Öffnen · Archivieren → [[M08 Kontakt archivieren]] · Löschen. Ansprechpartner werden ausschließlich in der geöffneten [[S04 Organisations-Karteikarte]] gepflegt; ein separater `Verknüpfen`-Eintrag entfällt mit M04a.
- Mehrfach-Auswahl ist wie in S01 direkt integriert: Checkboxen stehen dauerhaft links in jeder Zeile. Sobald mindestens eine Organisation gewählt ist, erscheint die bestehende `BulkActionBar` mit Status ändern · Tags vergeben · Verantwortlichen zuweisen · Archivieren. Ausgewählte Zeilen werden zusätzlich blau hinterlegt; einen eigenen Auswahlmodus gibt es nicht.
## Zustände
@@ -45,4 +52,4 @@ Wie S01.
## Subframe
- (erst nach explizitem OK)
- [Subframe](https://app.subframe.com/f023064a5ca0/design/6d1512ab-898a-4931-976c-2622d8d4aff4/edit)
@@ -5,39 +5,97 @@ ticket: D-CRM
package: WF-P6 Kontakte und Organisationen
id: S03
screen: Kontakt-Karteikarte
typ: Detail (Muster-Vorlage)
typ: Detail
umsetzung: Bauen
status: Validiert
status: Validiert 2026-08-29
route: "/contacts/:id"
subframe: ""
subframe: "https://app.subframe.com/f023064a5ca0/design/13a46cd7-44b6-4495-bad5-57eb1ffc978a/edit"
---
# S03 — Kontakt-Karteikarte ⭐
# S03 — Kontakt-Karteikarte
## Ziel
In 5 Sekunden im Bilde sein: Wer ist das, was lief zuletzt, was ist offen? **Die Muster-Vorlage für ALLE Detailseiten der App.**
In 5 Sekunden im Bilde sein: Wer ist das, was lief zuletzt, was ist offen?
## Pattern / Archetyp
A3 Detail — validiertes Grundgerüst: **Zweispalter + Reiter**.
A3 Detail als Pipeline-/Kanban-native, validierte Subframe-Referenz. **S03 ist die einzige vollständige Hauptansicht und Source of Truth** für Kopf, Daten, Relationen und Schnellaktionen. Die sechs Zustände des rechten Werkzeugbereichs werden separat als schmale Miniscreens gepflegt, damit Änderungen am Detailgrundgerüst nicht in jeder Variante wiederholt werden müssen.
## Aufbau (validiert)
## Anlagezustand
- **Kopf:** Avatar, Name, Kontaktstatus-Badge, Organisation + Rolle · **Schnell-Aktionen:** Anrufen (v1: `tel:`-Link; AirCall kommt mit P15) · E-Mail · Termin · Aufgabe · Tag
- **Linke Spalte (schmal):** Stammdaten inline editierbar (Klick → Feld → speichern) · eigene Felder (SHK-Vorlagen) · Tags · **Verknüpfungen mit Rolle**: Organisationen, bei denen die Person Haupt-/Sekundärkontakt ist — und umgekehrt kann auch eine Privatperson eigene Sekundärkontakte haben (z. B. Ehepartner), gleiche Mechanik wie bei Organisationen
- **Rechte Spalte (breit), Reiter:**
- `Neue Person` in S01 öffnet unmittelbar diese vollständige S03-Ansicht mit leeren Personenfeldern. Es gibt keinen vorgeschalteten M01-Dialog.
- Stammdaten, Kontaktwege, Adressen und Relationen werden auf derselben Arbeitsfläche gepflegt, die später die normale Karteikarte bildet.
- Der erste gültige Speichervorgang legt die Person an; S03 bleibt geöffnet und wechselt ohne Erfolgsseite oder Navigation in den normalen Detailzustand.
- Mindestens Vorname oder Nachname muss vor dem ersten Speichern befüllt sein. `Kein Status` ist zulässig.
- Der Live-Duplikat-Check auf Name, E-Mail und Telefon führt bei einem Treffer in [[M01a Kontakt anlegen Duplikatwarnung]]. `Abbrechen` dort kehrt mit unveränderten Eingaben in diesen Anlagezustand zurück.
- Development-Vorgabe: `Verantwortlich` wird bei Neuanlage mit dem angemeldeten Nutzer vorbelegt, bleibt aber änderbar und kann geleert werden.
- Zurück-Navigation mit Eingaben warnt vor dem Verwerfen. Ein vollständig leerer Anlagezustand erzeugt keinen sichtbaren Listeneintrag.
## Aktueller Subframe-Stand
- **Kopf:** Avatar, Name, Typ und optionaler Kontaktstatus; rechts die systemgeführte Kundennummer (read-only), Zurück zu Kontakte und Speichern — analog zur Pipeline-Detailseite.
- **Linke Datenspalte:** Stammdaten und Kontaktwege als ruhige, kompakte Zeilen. Enthalten sind Anrede, Titel, Vorname, Nachname, optionaler Status, Verantwortlich sowie die wiederholbaren E-Mail- und Telefonzeilen.
- **Kontaktwege:** beliebig viele E-Mail-Adressen und Telefonnummern. Jede Zeile besitzt eine beschreibbare Typbezeichnung; genau ein Wert je Kontaktweg kann als Standard markiert werden. Hinzufügen erfolgt über einen Plus-Button unter der jeweiligen Liste. Je Bereich bleibt eine leere Referenzzeile sichtbar, damit Placeholder, deaktivierte Standard-Aktion und unbefüllter Zustand eindeutig dokumentiert sind.
- **Mittlere Kontextspalte:** beginnt oben mit `Weitere Angaben` aus Quelle, Kunde seit, Tags und Notiz. Darunter folgen Adressen und Verknüpfungen, klar von den Stammdaten getrennt. Standard- und Rechnungsadresse sind vorbereitet; beliebig viele weitere benannte Adressen sind möglich. Organisationen und Personen werden getrennt angezeigt. Eine Organisation wird in S03 direkt über `Organisation verknüpfen` hinzugefügt und intern dem Primärpfad zugeordnet, ohne Primär/Sekundär im Personen-Screen anzuzeigen. Bei Person-Verknüpfungen wählt ein Dropdown zwischen Primär und Sekundär. Ein eigenes M04-Modal gibt es nicht.
- **Rechter Werkzeugbereich (ca. 340 px):** Ein festes 2×3-Raster wechselt zwischen Verlauf, Projekte, Aufgaben, Dateien, Notizen und Aktivitäten. Der aktive Bereich wird direkt darunter kompakt dargestellt; es gibt keine breite zweite Arbeitsfläche mehr.
- **Verlauf** (Default): chronologischer Activity-Stream — Anrufe, BCC-Mails, Notizen, Status-Wechsel, mit Actor-Marker
- **Projekte:** verknüpfte Projekte mit Board-Status (kommt inhaltlich mit D-P8)
- **Aufgaben:** eingebettete Kompakt-Liste = V01 aus WF-P4 Aufgaben
- **Dateien:** vorgefilterte Datei-Sektion aus WF-P4 Dateien
- **Notizen:** Markdown-Notizen
- **Schnellaktionen unten:** schwebende Leiste wie in der Pipeline-Detailseite mit Anrufen, E-Mail, Termin, Aufgabe, Notiz und Hochladen. Kontextaktionen liegen damit einheitlich am unteren Rand statt verteilt im Kopf.
- **»Verlauf dieses Objekts«** (Audit): Einstieg zum M03-Drawer aus WF-P3 Audit Log
## Hauptansicht und Werkzeug-Miniscreens
- **S03 — Hauptansicht:** vollständige Kontakt-Detailseite mit Kopf, linker Datenspalte, mittlerer Kontextspalte, rechtem Werkzeugbereich und Schnellaktionen unten. Nur hier wird das gemeinsame Grundlayout gepflegt.
- **S03a — Projekte:** reiner 340-px-Werkzeug-Miniscreen mit kompakten Projektkarten.
- **S03b — Aufgaben:** reiner Werkzeug-Miniscreen mit offenen und erledigten Aufgaben.
- **S03c — Dateien:** reiner Werkzeug-Miniscreen mit Upload-Fläche und Dateiliste.
- **S03d — Notizen:** reiner Werkzeug-Miniscreen mit kurzer Erfassung und bestehenden Notizen.
- **S03e — Verlauf:** reiner Werkzeug-Miniscreen mit chronologischem Kommunikations- und Ereignisverlauf.
- **S03f — Aktivitäten:** reiner Werkzeug-Miniscreen für Änderungen und systemische Objektaktivitäten, z. B. Daten geändert, Projekt verknüpft, Aufgabe erstellt oder Tag hinzugefügt.
Die Miniscreens enthalten bewusst **keine** Kopie von Kopf, Kontaktfeldern, Adressen, Relationen oder Schnellaktionen. Sie dokumentieren nur den jeweils aktiven rechten Zustand und sind keine eigenständigen Produktseiten.
## Finalisierte Hauptansicht (2026-08-29)
Die kompakte Inline-Zeilen-Richtung ist nach der visuellen und funktionalen Detailprüfung die kanonische S03-Hauptseite:
- [S03 Review – Inline-Zeilen](https://app.subframe.com/f023064a5ca0/design/13a46cd7-44b6-4495-bad5-57eb1ffc978a/edit)
Die frühere Seite `S03 Kontakt-Detailseite` sowie die Variante `S03 Review – Akkordeon-Gruppen` wurden nach der Richtungsentscheidung aus Subframe entfernt. Die verbleibende Seite setzt verbindlich um:
- Alle bearbeitbaren Werte sind echte Subframe-Formular- und Menükomponenten statt statischer Textattrappen: `TextInput`, `Select`, `DropdownMenuSelect`, `DatePicker`, `MultiSelectTags`, `TextArea` und `Accordion`.
- Grunddaten verwenden passende Controls: Anrede und Titel als Select, Status als Badge-Select nach dem Pipeline-Muster, Verantwortlich als durchsuchbares Single-Select-Dropdown sowie Vorname und Nachname als TextInput. Verantwortliche werden mit der fertigen `DropdownMenuSelect.DropdownUserItem`-Zeile aus Avatar, Name und sekundärer Information dargestellt; einfache Textoptionen sind dafür nicht ausreichend. Im Statusfeld und in jeder Statusoption wird derselbe Badge samt konsistenter Farbe gezeigt.
- E-Mail- und Telefontypen sind frei beschreibbare TextInputs. `Privat`, `Geschäftlich`, `Mobil` und `Assistenz` dienen als Startwerte beziehungsweise Vorschläge, bilden aber bewusst keine geschlossene Auswahlliste.
- Der Standardwert ist kein Dropdown: Nicht-Standardwerte besitzen den direkten Button `Als Standard`; der aktuelle Standard wird als ausgewählter Button mit Haken gezeigt. Je Kontaktweg kann genau ein Eintrag Standard sein.
- E-Mail und Telefon enthalten jeweils eine vollständig leere Referenzzeile. Typ und Wert zeigen nur ihre Placeholder; `Als Standard` bleibt deaktiviert, bis ein verwertbarer Kontaktweg vorhanden ist.
- Kompakte Inline-Zeilen erhalten feste Wrapper für Typ, Standard-Aktion und Zeilenmenü; das eigentliche E-Mail-/Telefonfeld nutzt den verbleibenden Platz. Interne Mindestbreiten eines Controls dürfen diese Wrapper nicht überlaufen. Die Standard-Aktion besitzt immer eine belastbare Mindestbreite und sichtbares horizontales Padding.
- Die Hinzufügen-Aktionen für E-Mail, Telefon, Adressen, Organisationen, Personen und weitere Verknüpfungen nehmen jeweils die volle Sektionsbreite ein.
- Standard-, Rechnungs- und weitere benannte Adressen sind echte, unabhängig auf-/zuklappbare Akkordeons; mindestens ein Block ist zur Referenz geöffnet. Jeder Adressblock enthält denselben Feldsatz aus dem Adressflow: Straße, Nr., Adresszusatz, PLZ, Ort und Land. Textfelder und Länder-Select besitzen stets eine sichtbare Umrandung. Jeder Nicht-Standard-Adressblock besitzt die direkte Button-Aktion `Standardadresse übernehmen`; die Standardadresse selbst zeigt diese Aktion nicht.
- Quelle ist ein durchsuchbares Single-Select-Dropdown, `Kunde seit` ein DatePicker, Tags ein MultiSelect und die Notiz eine TextArea.
- Select-Optionen besitzen sichtbare Item-Inhalte. Drei-Punkte-Aktionen sind mit einem echten Dropdown-Root, Trigger, Portal und Menüinhalt verdrahtet; ein alleinstehender IconButton gilt hier nicht als Menü.
- Organisationen und Personen sind getrennte auf-/zuklappbare Relationsbereiche. Organisationen bilden in S03 eine flache Liste ohne sichtbare Primär-/Sekundär-Unterteilung; `Organisation verknüpfen` legt über den internen Primärpfad an. Personen bleiben in Primär und Sekundär getrennt und erlauben je Bereich 0..n Einträge.
- Relationseinträge zeigen das verknüpfte Ziel als Link und die relationsbezogene Bezeichnung. Primär/Sekundär wird nur bei Personenrelationen gezeigt. Bearbeiten bleibt über das Zeilenmenü erreichbar.
- Projekte/Vorgänge stehen als eigener Bereich `Weitere Verknüpfungen` und werden nicht mit Personen- oder Organisationsrelationen vermischt.
- Systemgeführte Werte bleiben bewusst read-only, insbesondere Kundennummer und Verlaufseinträge.
### Gewählte Darstellungslogik
- **Organisationen:** ein einziger Full-Width-Button `Organisation verknüpfen`; keine sichtbare Gruppenwahl. Die neue Relation wird in S03 automatisch dem Primärpfad zugeordnet.
- **Personen:** ein Full-Width-Button `Person verknüpfen` öffnet ein Dropdown mit `Primär verknüpfen` und `Sekundär verknüpfen`. Erst danach öffnet die durchsuchbare Personenauswahl.
- Eine optionale freie Relationsbezeichnung wird direkt in der neuen Zeile oder später per Zeilenklick bearbeitet. Sie blockiert die schnelle Verknüpfung nicht.
- Über Zeilenklick/Zeilenmenü lassen sich Bezeichnung ändern, Personenrelationen zwischen Primär und Sekundär verschieben oder Relationen lösen. M04, M04b und M04c entfallen vollständig als separate Screens.
- Kein Treffer bietet `Neue Organisation anlegen` bzw. `Neue Person anlegen` an und öffnet S04 bzw. S03 direkt im Anlagezustand. Der Relationskontext bleibt unsichtbar erhalten und wird nach dem ersten Speichern einmalig angewendet.
Die visuelle Detailvalidierung ist abgeschlossen. Die Seite `S03 Review – Inline-Zeilen` ist trotz ihres bestehenden Subframe-Namens die vollständige S03-Source-of-Truth; daneben bleiben nur S03a–S03f als isolierte Werkzeug-Miniscreens bestehen.
## Aktionen
- Inline-Edit aller Stammdaten/eigenen Felder · Tag hinzufügen/entfernen · Organisation verknüpfen (mit Rolle)
- Archivieren · Zusammenführen-Hinweis bei Duplikat-Verdacht
- Inline-Edit der Stammdaten · Kontaktweg/Adresse hinzufügen, umbenennen und Standard setzen · Tag hinzufügen/entfernen · Organisation ohne sichtbare Gruppenwahl verknüpfen · Person über Primär/Sekundär-Dropdown verknüpfen · Relation inline bearbeiten/verschieben/lösen
- Archivieren → [[M08 Kontakt archivieren]] · Zusammenführen-Hinweis bei Duplikat-Verdacht
## Banner / Hinweise
@@ -45,11 +103,21 @@ A3 Detail — validiertes Grundgerüst: **Zweispalter + Reiter**.
## Zustände
Die folgenden Relationszustände sind verbindliche Development-Vorgaben.
| Zustand | Beschreibung | Umsetzung |
|---|---|---|
| Nicht gefunden / kein Recht | 404 | Wiederverwenden |
| Laden / Fehler | A7 | Wiederverwenden |
| Verlauf leer | »Noch keine Aktivitäten« | Nur dokumentieren |
| Anlage: Vor- und Nachname leer | Inline-Validierung beim ersten Speichern | Nur dokumentieren |
| Anlage: mögliches Duplikat | [[M01a Kontakt anlegen Duplikatwarnung]] | Bauen · validiert |
| Anlage verlassen mit Eingaben | Verwerfen-Bestätigung | Nur dokumentieren |
| Relation: kein Suchtreffer | Inline-Aktion `Neu anlegen`; Kontext nach Neuanlage anwenden | Nur dokumentieren |
| Relation bereits vorhanden | keine Dublette; bestehende Zeile hervorheben | Nur dokumentieren |
| Person-Person-Selbstbezug | eigener Kontakt nicht auswählbar | Nur dokumentieren |
| Relation speichern fehlgeschlagen | Inline-Fehler, Eingabe bleibt stehen, erneut versuchen | Wiederverwenden |
| Relation lösen | kompakte Bestätigung mit Zielname | Nur dokumentieren |
## Permissions / Gates
@@ -57,8 +125,8 @@ A3 Detail — validiertes Grundgerüst: **Zweispalter + Reiter**.
## Subframe
- (erst nach explizitem OK)
- [Subframe](https://app.subframe.com/f023064a5ca0/design/13a46cd7-44b6-4495-bad5-57eb1ffc978a/edit)
## Notizen
- **Nach dem Subframe-Bau:** dieses Muster (Kopf + Zweispalter + Reiter) als Detailseiten-Standard festhalten → `04 Standards`, nur mit Davids Freigabe.
- S03 bleibt unabhängig von der Werkzeugvalidierung die gemeinsame Hauptreferenz. Bei Änderungen am Grundlayout wird nur S03 angepasst; S03a–S03f ändern sich ausschließlich, wenn sich der jeweilige rechte Werkzeugzustand ändert.
@@ -7,26 +7,85 @@ id: S04
screen: Organisations-Karteikarte
typ: Detail
umsetzung: Bauen
status: Validiert
status: Validiert 2026-08-29
route: "/contacts/companies/:id"
subframe: ""
subframe: "https://app.subframe.com/f023064a5ca0/design/a6fe8461-1728-49c2-96c0-005cea90b547/edit"
---
# S04 — Organisations-Karteikarte
## Ziel
Alles über eine Organisation — gleiches Muster wie die Kontakt-Karteikarte.
Alles über eine Organisation, inklusive mehrerer primärer und sekundärer Ansprechpartner mit eigenen Relationsbezeichnungen.
## Pattern / Archetyp
A3, **gleiches Grundgerüst wie [[S03 Kontakt-Karteikarte]]** (Zweispalter + Reiter).
A3 Detail auf der validierten S03-Struktur; organisationsspezifisch angepasst und final als Development-Referenz bestätigt.
## Anlagezustand
- `Neue Organisation` in S02 öffnet unmittelbar diese vollständige S04-Ansicht mit leeren Organisationsfeldern. Es gibt keinen vorgeschalteten M02-Dialog.
- Stammdaten, Kontaktwege, Adressen und Ansprechpartner werden auf derselben Arbeitsfläche gepflegt, die später die normale Organisations-Karteikarte bildet.
- Der erste gültige Speichervorgang legt die Organisation an; S04 bleibt geöffnet und wechselt ohne Erfolgsseite oder Navigation in den normalen Detailzustand.
- Der Organisationsname ist vor dem ersten Speichern Pflicht. `Kein Status` ist zulässig.
- Der Live-Duplikat-Check auf Name und E-Mail führt bei einem Treffer in [[M02a Organisation anlegen Duplikatwarnung]]. `Abbrechen` dort kehrt mit unveränderten Eingaben in diesen Anlagezustand zurück.
- Development-Vorgabe: `Verantwortlich` wird bei Neuanlage mit dem angemeldeten Nutzer vorbelegt, bleibt aber änderbar und kann geleert werden.
- Zurück-Navigation mit Eingaben warnt vor dem Verwerfen. Ein vollständig leerer Anlagezustand erzeugt keinen sichtbaren Listeneintrag.
## Unterschiede zu S03
- Linke Spalte zusätzlich: **Ansprechpartner-Liste** — alle verknüpften Personen mit Rollen-Badge, **genau ein Hauptkontakt** (markiert, umhängbar; erste zugeordnete Person wird automatisch Hauptkontakt) · hinzufügen (bestehenden Kontakt oder neu via [[M01 Kontakt anlegen]])
- Kopf: Organisations-Merkmal/Branche statt Kontaktstatus-Person-Logik (Status gibt es auch hier: Kontakt/Kunde/Bestandskunde)
- Reiter identisch: Verlauf · Projekte · Aufgaben · Dateien · Notizen
- Eigene, unabhängig mehrwertige Bereiche für **Primäre Ansprechpartner** und **Sekundäre Ansprechpartner**. Beide erlauben 0..n Personen; es gibt keinen Zwang auf genau einen Primärkontakt.
- Jede Zuordnung trägt eine frei benennbare Relationsbezeichnung wie `Geschäftsführerin`, `Mitarbeiter`, `Verkaufsleiter` oder `Bauleitung`. Diese Bezeichnung wird nicht am Personendatensatz gespeichert.
- Eine Person darf zusätzlich in weiteren Organisationen verknüpft sein.
- Branche und Rechtsform sind getrennte Felder.
- Status-Draft: kein Status · Interessent · Kunde · Bestandskunde · Ehemaliger Kunde.
- Telefonnummern und E-Mails sind beliebig wiederholbar und beschreibbar.
- Standard- und Rechnungsadresse sind vorbereitet; weitere benannte Adressen sind unbegrenzt ergänzbar und alle Adressblöcke auf-/zuklappbar.
- Die systemgeführte Kundennummer steht read-only oben rechts im Kopf.
- Rechter Werkzeugbereich identisch: Verlauf · Projekte · Aufgaben · Dateien · Notizen · Aktivitäten
## Finaler Subframe-Stand (2026-08-29)
- **Struktur:** S04 verwendet dieselbe blanke Pipeline-/Kanban-Detailfläche wie S03: Kopf, linke Datenspalte, mittlere Kontextspalte, fester 340-px-Werkzeugbereich rechts und schwebende Schnellaktionen unten. Eine App-Shell wird im Referenzscreen nicht wiederholt.
- **Organisations-Grunddaten:** Organisationsname, Rechtsform, Branche, Website, USt-IdNr., Handelsregister, optionaler Status und Verantwortlich. Personenfelder wie Anrede, Titel, Vorname und Nachname existieren in S04 nicht.
- **Echte Controls:** Rechtsform ist ein Select; Status zeigt konsistente Badges im Feld und in allen Optionen; Branche, Quelle und Verantwortlich sind durchsuchbar. Verantwortliche und Personenoptionen verwenden `DropdownMenuSelect.DropdownUserItem` mit Avatar, Name und sekundärer Information.
- **Kontaktwege:** E-Mail-Adressen und Telefonnummern verwenden dasselbe wiederholbare Muster wie S03. Typen sind frei beschreibbare TextInputs, der Standard wird über direkte Buttons gesetzt, jedes Zeilenmenü ist vollständig verdrahtet und pro Bereich dokumentiert eine leere Referenzzeile den unbefüllten Zustand. Das Zeilenraster wurde im zweiten QA-Durchgang kompakter gesetzt, damit Typ, Wert, Standardaktion und Menü nicht kollidieren.
- **Mittlere Spalte:** `Weitere Angaben` steht oberhalb von Adressen und Ansprechpartnern. Standard-, Rechnungs- und weitere benannte Adressen nutzen vollständige Akkordeons mit Straße, Nr., Adresszusatz, PLZ, Ort und Land. Nur Nicht-Standard-Adressen bieten `Standardadresse übernehmen`.
- **Ansprechpartner:** Primäre und sekundäre Ansprechpartner sind getrennte, jeweils mehrwertige Akkordeonbereiche mit 0..n Personen. Das Hinzufügen startet direkt in der gewählten Sektion mit durchsuchbarer Personenauswahl; eine zusätzliche Primär-/Sekundär-Abfrage entfällt. Linkname, Relationsbezeichnung und echtes Zeilenmenü bleiben getrennt.
- **Weitere Verknüpfungen:** Projekte/Vorgänge bleiben als eigener Bereich außerhalb der Ansprechpartnerlogik.
- **QA:** Nach dem initialen Aufbau wurden zwei vollständige Review-Durchgänge anhand der S03-Fehlerhistorie erstellt und nacheinander in die Versionshistorie dieser kanonischen S04-Seite übernommen. Geprüft wurden insbesondere echte Controls, sichtbare Dropdown-Inhalte, Suchfähigkeit, Standardlogik, leere Referenzzeilen, Min-Breiten/Paddings, vollständige Adressen und Relationsmenüs. Alte und temporäre S04-Seiten wurden danach entfernt.
## Ansprechpartner direkt in der Detailansicht pflegen
- `+ Hinzufügen` bleibt direkt an `Primäre Ansprechpartner` bzw. `Sekundäre Ansprechpartner`. Damit steht der Bereich bereits fest; eine zusätzliche Rollenwahl entfällt.
- Der Klick öffnet direkt unter der Überschrift eine kompakte, durchsuchbare Personenauswahl. Auswahl erzeugt die Relation unmittelbar; M04a wird nicht geöffnet.
- Die optionale freie Relationsbezeichnung kann direkt in der neuen Zeile oder später per Zeilenklick ergänzt werden. Sie blockiert die schnelle Auswahl nicht.
- Zeilenklick/Zeilenmenü erlaubt Bezeichnung ändern, zwischen Primär/Sekundär verschieben und Verknüpfung lösen. M04c entfällt.
- Bei keinem Treffer bietet die Auswahl `Neue Person anlegen` an und öffnet S03 direkt im Anlagezustand. Organisation und Zielbereich bleiben unsichtbar als Kontext erhalten und werden nach dem ersten Speichern angewendet.
## Relationszustände
Diese Zustände sind verbindliche Development-Vorgaben.
| Zustand | Verhalten | Umsetzung |
|---|---|---|
| Person bereits verknüpft | kein zweiter Eintrag; bestehende Zeile hervorheben/öffnen | Nur dokumentieren |
| Kein Suchtreffer | `Neue Person anlegen` anbieten und Relationskontext nach erstem Speichern anwenden | Nur dokumentieren |
| Speichern fehlgeschlagen | Inline-Fehler, Auswahl bleibt erhalten, erneut versuchen | Wiederverwenden |
| Verknüpfung lösen | kompakte Bestätigung mit Personenname | Nur dokumentieren |
## Anlagezustände
| Zustand | Verhalten | Umsetzung |
|---|---|---|
| Organisationsname leer | Inline-Validierung beim ersten Speichern | Nur dokumentieren |
| Mögliches Duplikat | [[M02a Organisation anlegen Duplikatwarnung]] | Bauen · validiert |
| Anlage verlassen mit Eingaben | Verwerfen-Bestätigung | Nur dokumentieren |
## Aktionen
- Ansprechpartner inline hinzufügen/bearbeiten/verschieben/lösen
- Archivieren → [[M08 Kontakt archivieren]]
## Zustände / Permissions
@@ -34,4 +93,4 @@ Wie S03.
## Subframe
- (erst nach explizitem OK)
- [Subframe](https://app.subframe.com/f023064a5ca0/design/a6fe8461-1728-49c2-96c0-005cea90b547/edit)
@@ -6,38 +6,21 @@ package: WF-P6 Kontakte und Organisationen
id: S06
screen: Tags
typ: Settings-Liste
umsetzung: Bauen
status: Validiert
route: "/admin/tags (Einstellungen -> Daten)"
umsetzung: Nicht bauen
status: Aus Hauptflow entfernt
route: ""
subframe: ""
---
# S06 — Tags
## Ziel
## Entscheidung vom 2026-08-28
Tags zentral pflegen, Wildwuchs zusammenführen.
Die eigenständige Tag-Verwaltung S06 und das zugehörige Modal M06 wurden aus dem P6-Hauptflow und aus Subframe entfernt.
## Pattern / Archetyp
- Tags bleiben als Kontaktmerkmal, Filter und Mehrfachaktion erhalten.
- Entfernt wurde ausschließlich die zentrale Verwaltungsoberfläche zum Anlegen, Umbenennen und Färben von Tags.
- Der Backlog wurde nicht verändert.
- Die gelöschten Subframe-Seiten können bei Bedarf nur über die Subframe-Projektversionierung wiederhergestellt werden.
A2 Settings-Liste unter Einstellungen → Daten.
## Daten
- Je Tag: Name · Farbe · Anzahl Verknüpfungen
## Aktionen
- Tag anlegen/umbenennen/Farbe ändern
- **Zusammenführen** (Tag A in Tag B aufgehen lassen, mit Bestätigung + Anzahl-Klartext)
- Löschen (mit Hinweis auf Verknüpfungs-Anzahl)
## Zustände
| Zustand | Beschreibung | Umsetzung |
|---|---|---|
| Laden / Fehler / kein Zugriff | A7 | Wiederverwenden |
## Subframe
- (erst nach explizitem OK)
Kein aktiver Subframe-Screen.
@@ -1,69 +1,44 @@
{
"nodes":[
{"id":"group-daten","type":"group","x":-80,"y":1020,"width":2980,"height":380,"label":"Datenpflege (Einstellungen → Daten)"},
{"id":"group-kontakte","type":"group","x":-80,"y":-100,"width":1820,"height":380,"label":"Kontakte"},
{"id":"group-orgs","type":"group","x":-80,"y":460,"width":1820,"height":380,"label":"Organisationen (Reiter im selben Tab)"},
{"id":"group-anlegen","type":"group","x":1960,"y":460,"width":1120,"height":380,"label":"Anlegen (Modals)"},
{"id":"group-modell","type":"group","x":1980,"y":-520,"width":700,"height":520,"label":"Kontaktmodell (validiert 2026-07-08)"},
{"id":"group-kontakte","type":"group","x":-80,"y":-100,"width":1820,"height":380,"label":"Personen"},
{"id":"group-orgs","type":"group","x":-80,"y":460,"width":1820,"height":380,"label":"Organisationen (Switch im selben Bereich)"},
{"id":"group-anlegen","type":"group","x":1960,"y":380,"width":1120,"height":460,"label":"Duplikatentscheidung aus dem Anlagezustand"},
{"id":"group-entscheidungen","type":"group","x":1960,"y":1160,"width":1120,"height":380,"label":"Verbleibende Aktionsentscheidung"},
{"id":"group-daten","type":"group","x":-80,"y":1120,"width":1820,"height":400,"label":"Backlog – Datenpflege"},
{"id":"group-modell","type":"group","x":1960,"y":-520,"width":1120,"height":420,"label":"Kontaktmodell – aktueller Vertrag 2026-08-29"},
{"id":"md-paket","type":"file","file":"02 Wireframes/P6 Kontakte und Organisationen/WF-P6 Kontakte und Organisationen/WF-P6 Kontakte und Organisationen.md","x":-80,"y":-440,"width":460,"height":280},
{"id":"note-entry","type":"text","text":"# Einstieg\n\nSidebar → Kontakte (`/contacts`).\n\nZwei Reiter, nie gemischt: **Kontakte** (ALLE Personen, auch Ansprechpartner — Organisation + Rolle in der Zeile) und **Organisationen**.","x":0,"y":0,"width":360,"height":200},
{"id":"note-entry","type":"text","text":"# Einstieg\n\nSidebar → Kontakte (`/contacts`).\n\nZwei getrennte Listen mit direktem Switch: **Personen** und **Organisationen**. `Neue Person` öffnet S03, `Neue Organisation` S04 jeweils sofort im Anlagezustand. **Kein M01/M02-Dialog.**","x":0,"y":0,"width":360,"height":220},
{"id":"s01","type":"file","file":"02 Wireframes/P6 Kontakte und Organisationen/WF-P6 Kontakte und Organisationen/Screens/S01 Kontakte-Liste.md","x":560,"y":0,"width":420,"height":200},
{"id":"s03","type":"file","file":"02 Wireframes/P6 Kontakte und Organisationen/WF-P6 Kontakte und Organisationen/Screens/S03 Kontakt-Karteikarte.md","x":1240,"y":0,"width":420,"height":200},
{"id":"note-orgs","type":"text","text":"# Hinweis\n\nUI-Begriff »Organisation«, nicht »Firma/Unternehmen« (öffentl. Einrichtungen!).\n\nKarteikarte zeigt die **Ansprechpartner-Liste** mit Rollen — genau EIN Hauptkontakt (markiert, umhängbar).","x":0,"y":560,"width":360,"height":200},
{"id":"note-orgs","type":"text","text":"# Relationen inline\n\nPrimär und Sekundär erlauben jeweils **0..n** Einträge. `+ Hinzufügen` sitzt direkt an der Zielsektion; Person/Organisation wird dort gesucht und ausgewählt.\n\nBezeichnung ergänzen, verschieben und lösen passiert in derselben Zeile. **Kein M04-Modal.**","x":0,"y":560,"width":360,"height":220},
{"id":"s02","type":"file","file":"02 Wireframes/P6 Kontakte und Organisationen/WF-P6 Kontakte und Organisationen/Screens/S02 Organisationen-Liste.md","x":560,"y":560,"width":420,"height":200},
{"id":"s04","type":"file","file":"02 Wireframes/P6 Kontakte und Organisationen/WF-P6 Kontakte und Organisationen/Screens/S04 Organisations-Karteikarte.md","x":1240,"y":560,"width":420,"height":200},
{"id":"m01","type":"file","file":"02 Wireframes/P6 Kontakte und Organisationen/WF-P6 Kontakte und Organisationen/Screens/M01 Kontakt anlegen.md","x":2000,"y":560,"width":420,"height":200},
{"id":"m02","type":"file","file":"02 Wireframes/P6 Kontakte und Organisationen/WF-P6 Kontakte und Organisationen/Screens/M02 Organisation anlegen.md","x":2580,"y":560,"width":420,"height":200},
{"id":"note-daten","type":"text","text":"# Einstieg\n\nEinstellungen → Daten. Gilt auch für Projekte/Anfragen (Ziel-Typ umschaltbar).","x":0,"y":1120,"width":360,"height":200},
{"id":"s05","type":"file","file":"02 Wireframes/P6 Kontakte und Organisationen/WF-P6 Kontakte und Organisationen/Screens/S05 Eigene Felder.md","x":560,"y":1120,"width":420,"height":200},
{"id":"s06","type":"file","file":"02 Wireframes/P6 Kontakte und Organisationen/WF-P6 Kontakte und Organisationen/Screens/S06 Tags.md","x":1140,"y":1120,"width":420,"height":200},
{"id":"s07","type":"file","file":"02 Wireframes/P6 Kontakte und Organisationen/WF-P6 Kontakte und Organisationen/Screens/S07 Duplikat-Tool.md","x":1720,"y":1120,"width":420,"height":200},
{"id":"m03","type":"file","file":"02 Wireframes/P6 Kontakte und Organisationen/WF-P6 Kontakte und Organisationen/Screens/M03 Zusammenfuehren.md","x":2400,"y":1120,"width":420,"height":200},
{"id":"note-modell","type":"text","text":"# Regeln\n- **EIN Datensatz für alles:** »Firma« = Kontakt vom Typ Organisation (Unterart = Auswahlfeld)\n- **Kontaktart (Haupt/Sekundär) = Rolle der Verknüpfung**, nicht der Person\n- Privatperson: nur Name Pflicht, keine Kontaktart-Frage\n- Organisation: auch ohne Person anlegbar\n- Genau **ein Hauptkontakt** je Organisation — erste Person automatisch, umhängbar\n- Auch **Privatpersonen können Sekundärkontakte** haben (Shell-Prinzip, z. B. Ehepartner)","x":2020,"y":-440,"width":620,"height":400}
{"id":"m01a","type":"file","file":"02 Wireframes/P6 Kontakte und Organisationen/WF-P6 Kontakte und Organisationen/Screens/M01a Kontakt anlegen Duplikatwarnung.md","x":2000,"y":500,"width":420,"height":220},
{"id":"m02a","type":"file","file":"02 Wireframes/P6 Kontakte und Organisationen/WF-P6 Kontakte und Organisationen/Screens/M02a Organisation anlegen Duplikatwarnung.md","x":2580,"y":500,"width":420,"height":220},
{"id":"m08","type":"file","file":"02 Wireframes/P6 Kontakte und Organisationen/WF-P6 Kontakte und Organisationen/Screens/M08 Kontakt archivieren.md","x":2000,"y":1260,"width":420,"height":200},
{"id":"note-entscheidungen","type":"text","text":"# Was bewusst kein Screen ist\n\nM01/M02 und M04–M04c sind aus dem Produktscope und seit 2026-08-29 auch aus Subframe entfernt. Anlage und Relationspflege passieren lokal in S03/S04.\n\nM08 bleibt, weil Archivieren eine bewusste, reversible Zustandsänderung ist.","x":2580,"y":1260,"width":420,"height":200},
{"id":"note-daten","type":"text","text":"# Backlog\n\nEigene Felder sowie das spätere Duplikat-Tool bleiben geparkt. Tags bleiben am Kontakt nutzbar; die eigene Tag-Verwaltung S06 ist aus dem Hauptflow entfernt.","x":0,"y":1220,"width":360,"height":220},
{"id":"s05","type":"file","file":"02 Wireframes/P6 Kontakte und Organisationen/WF-P6 Kontakte und Organisationen/Screens/S05 Eigene Felder.md","x":500,"y":1220,"width":360,"height":220},
{"id":"s07","type":"file","file":"02 Wireframes/P6 Kontakte und Organisationen/WF-P6 Kontakte und Organisationen/Screens/S07 Duplikat-Tool.md","x":960,"y":1220,"width":360,"height":220},
{"id":"m03","type":"file","file":"02 Wireframes/P6 Kontakte und Organisationen/WF-P6 Kontakte und Organisationen/Screens/M03 Zusammenfuehren.md","x":1380,"y":1220,"width":300,"height":220},
{"id":"note-modell","type":"text","text":"# Regeln\n- Ein Kontaktmodell, UI-Typ **Person** oder **Organisation**\n- Personenanlage: mindestens Vorname oder Nachname\n- Organisation: Name Pflicht, auch ohne Ansprechpartner anlegbar\n- Status optional; reine Ansprechpartner dürfen ohne Kundenstatus bleiben\n- Primär/Sekundär gehört zur Relation; beide Bereiche erlauben 0..n\n- Relationsbezeichnung liegt nur an der Relation, ist optional und blockiert die schnelle Auswahl nicht\n- Person-Person-Selbstbezug und doppelte Relation verhindern","x":2000,"y":-440,"width":1040,"height":300}
],
"edges":[
{
"id":"e-entry",
"styleAttributes":{"path":"dotted"},
"fromNode":"note-entry",
"fromSide":"right",
"toNode":"s01",
"toSide":"left"
},
{"id":"e-open","fromNode":"s01","fromSide":"right","toNode":"s03","toSide":"left","label":"Kontakt öffnen"},
{
"id":"e-tab",
"styleAttributes":{"path":"dotted"},
"fromNode":"s01",
"fromSide":"bottom",
"toNode":"s02",
"toSide":"top",
"label":"Reiter Organisationen"
},
{"id":"e-open2","fromNode":"s02","fromSide":"right","toNode":"s04","toSide":"left","label":"öffnen"},
{"id":"e-new1","fromNode":"s01","fromSide":"bottom","toNode":"m01","toSide":"top","label":"+ Kontakt"},
{"id":"e-new2","fromNode":"s02","fromSide":"bottom","toNode":"m02","toSide":"bottom","label":"+ Organisation"},
{
"id":"e-after",
"styleAttributes":{"path":"long-dashed"},
"fromNode":"m01",
"fromSide":"top",
"toNode":"s03",
"toSide":"right",
"label":"öffnet Karteikarte"
},
{
"id":"e-entry-daten",
"styleAttributes":{"path":"dotted"},
"fromNode":"note-daten",
"fromSide":"right",
"toNode":"s05",
"toSide":"left"
},
{"id":"e-entry","styleAttributes":{"path":"dotted"},"fromNode":"note-entry","fromSide":"right","toNode":"s01","toSide":"left"},
{"id":"e-open","fromNode":"s01","fromSide":"right","toNode":"s03","toSide":"left","label":"bestehende Person öffnen"},
{"id":"e-tab","styleAttributes":{"path":"dotted"},"fromNode":"s01","fromSide":"bottom","toNode":"s02","toSide":"top","label":"Switch Organisationen"},
{"id":"e-open2","fromNode":"s02","fromSide":"right","toNode":"s04","toSide":"left","label":"bestehende Organisation öffnen"},
{"id":"e-new1","fromNode":"s01","fromSide":"top","toNode":"s03","toSide":"top","label":"Neue Person · Anlagezustand"},
{"id":"e-new2","fromNode":"s02","fromSide":"bottom","toNode":"s04","toSide":"bottom","label":"Neue Organisation · Anlagezustand"},
{"id":"e-dup1","fromNode":"s03","fromSide":"right","toNode":"m01a","toSide":"left","label":"mögliches Duplikat"},
{"id":"e-dup2","fromNode":"s04","fromSide":"right","toNode":"m02a","toSide":"left","label":"mögliches Duplikat"},
{"id":"e-dup-out1","styleAttributes":{"path":"long-dashed"},"fromNode":"m01a","fromSide":"top","toNode":"s03","toSide":"top","label":"öffnen / trotzdem anlegen"},
{"id":"e-dup-out2","styleAttributes":{"path":"long-dashed"},"fromNode":"m02a","fromSide":"bottom","toNode":"s04","toSide":"bottom","label":"öffnen / trotzdem anlegen"},
{"id":"e-archive1","fromNode":"s03","fromSide":"bottom","toNode":"m08","toSide":"top","label":"archivieren"},
{"id":"e-archive2","fromNode":"s04","fromSide":"right","toNode":"m08","toSide":"left","label":"archivieren"},
{"id":"e-entry-daten1","styleAttributes":{"path":"dotted"},"fromNode":"note-daten","fromSide":"right","toNode":"s05","toSide":"left"},
{"id":"e-entry-daten2","styleAttributes":{"path":"dotted"},"fromNode":"note-daten","fromSide":"right","toNode":"s07","toSide":"left"},
{"id":"e-merge","fromNode":"s07","fromSide":"right","toNode":"m03","toSide":"left","label":"Paar öffnen"}
],
"metadata":{
"version":"1.0-1.0",
"frontmatter":{}
}
}
"metadata":{"version":"1.0-1.0","frontmatter":{}}
}
@@ -4,23 +4,23 @@ project: HiveGrid Screen Project
ticket: D-CRM
package: WF-P6 Kontakte und Organisationen
typ: Flow
status: Validiert
subframe: ""
status: Fertig / Development-Handoff
subframe: "https://app.subframe.com/f023064a5ca0/flow/68046dc7-bc93-4232-a0da-a406a8bd10b8/edit"
canvas: "WF-P6 Kontakte und Organisationen.canvas"
---
# WF-P6 Kontakte und Organisationen
Status: Validiert (Screen-Liste)
Subframe-Link: -
Canvas: [Canvas](<WF-P6 Kontakte und Organisationen.canvas>)
Stand: 2026-07-08
Status: Fertig / Development-Handoff
Subframe-Link: [Subframe](https://app.subframe.com/f023064a5ca0/flow/68046dc7-bc93-4232-a0da-a406a8bd10b8/edit)
Canvas: [Canvas](<WF-P6 Kontakte und Organisationen.canvas>)
Stand: 2026-08-29
---
## 1. Kurzfassung
Das Adressbuch mit Gedächtnis: Kontakte- und Organisationen-Listen, die **Kontakt-Karteikarte als Vorlage für ALLE Detailseiten**, Anlegen mit Duplikat-Warnung, plus die drei Datenpflege-Seiten in den Einstellungen (Eigene Felder, Tags, Duplikat-Tool). Fundament der Kette Anfrage → Projekt.
Ein bewusst schlankes CRM-Grundgerüst: getrennte, aber direkt umschaltbare Listen für Personen und Organisationen, Anlage direkt in der jeweiligen Detailansicht, lokale Relationspflege und kurze Duplikat-Entscheidung. S03 ist die einzige vollständige Kontakt-Detailreferenz im Pipeline-/Kanban-Muster; die sechs rechten Werkzeugzustände werden als isolierte Miniscreens gepflegt.
---
@@ -30,7 +30,7 @@ Das Adressbuch mit Gedächtnis: Kontakte- und Organisationen-Listen, die **Konta
|---|---|
| Welches Ticket/Modul ist betroffen? | D-CRM (P6), Dev-Pendant R-P6 |
| Was soll der Nutzer am Ende schaffen? | Kunden finden, in 5 Sekunden im Bilde sein (Verlauf), Daten pflegen, Dubletten loswerden |
| Flow, Screen, Zustand oder Doku? | Screen-Cluster: 2 Listen, 2 Karteikarten, 2 Anlege-Modals, 3 Einstellungs-Seiten, 1 Merge-Modal |
| Flow, Screen, Zustand oder Doku? | Screen-Cluster: 2 Listen, 2 Karteikarten mit je einem Anlagezustand, Inline-Relationspflege sowie Duplikat- und Archiventscheidung; erweiterte Datenpflege im Backlog |
| Welche Planning-Quellen wurden geprüft? | `ticket-docs/D-CRM.md`, ENTITY-MODEL (Pivot-Vorrang), SCREEN-MAP §2, HiveGrid Map |
| Was ist sicher im Scope? | Alles oben + Live-Duplikat-Check + Kontaktmodell (Typ/Status/Rolle) |
| Was ist sicher nicht im Scope? | Leads (D-P7), Pipelines (D-P8), Lead-Promotion-Modal (Pivot: existiert nicht mehr) |
@@ -47,61 +47,157 @@ Das Adressbuch mit Gedächtnis: Kontakte- und Organisationen-Listen, die **Konta
| Nutzerrolle | Maximalansicht (Admin) |
| Startpunkt | Sidebar »Kontakte« |
| Ziel | Kontakt gefunden/angelegt/gepflegt; Historie sichtbar |
| Haupt-Archetyp | A2 Listen · **A3 Detail (Muster-Vorlage!)** · A5 Modals · A2 Settings-Listen |
| Haupt-Archetyp | A2 kompakte Listen nach dem Aufgaben-Muster · A5 schlanke Modals · A3 Detail nach dem Pipeline-/Kanban-Muster |
| Bespoke-Anteil | Keiner; Side-by-Side-Merge ist die aufwendigste Einzelkomponente |
| Out of scope | Leads, Pipelines, Kampagnen-Anbindung (nur Anzeige im Verlauf) |
---
## 4. Entscheidungen (validiert 2026-07-08)
## 4. Finale Entscheidungen (2026-08-29)
| Entscheidung | Status | Notiz |
|---|---|---|
| EIN großes Paket (inkl. Datenpflege-Seiten) | genommen | Davids Entscheidung |
| Anlegen als **Modal** mit Live-Duplikat-Warnung | genommen | Nach Anlegen öffnet die Karteikarte |
| **Inline-Anlegen in der Liste (Notion-Stil)** | dokumentiert / später | Davids Idee: Plus in der Liste → neue Zeile inline; funktioniert, weil nur der Name Pflicht ist; Zeile ohne Namen wird automatisch gelöscht. Erstmal nicht bauen |
| Karteikarte = **Zweispalter + Reiter** | genommen | Links schmal: Stammdaten, eigene Felder, Tags, Verknüpfungen (inline editierbar). Rechts breit: Reiter Verlauf · Projekte · Aufgaben · Dateien · Notizen. Schnell-Aktionen im Kopf. **= Muster-Vorlage für alle Detailseiten** |
| Kontaktmodell (fix aus Datenmodell) | genommen | EIN Kontakt-Datensatz für alles. Typ = Privatperson/Organisation (Organisations-Art wie Unternehmen/öffentl. Einrichtung = einfaches Auswahlfeld) · Status = Kontakt/Kunde/Bestandskunde · Kontaktart (Haupt-/Sekundär) = **Rolle der Verknüpfung**, nicht der Person |
| **Zwei getrennte Reiter, keine Misch-Liste** | genommen | Reiter »Kontakte« (alle Personen) + Reiter »Organisationen« — nie beide Typen in einer Liste gemischt (validiert 2026-07-08) |
| Kontakte-Reiter zeigt **ALLE Personen** | genommen | Auch Ansprechpartner, die in Organisationen stecken — mit sichtbarer Organisation + Rolle in der Zeile. Privatpersonen sowieso |
| **Anlege-Regeln** | genommen | Privatperson: nur Name Pflicht, keine Kontaktart-Frage (steht für sich) · Organisation: auch ohne Person anlegbar, Ansprechpartner optional · Zuordnung Person→Organisation mit Rollen-Wahl · genau EIN Hauptkontakt je Organisation, erste zugeordnete Person automatisch (umhängbar) |
| **Auch Privatpersonen können Sekundärkontakte haben** | genommen | Davids »Shell«-Gedanke: Verknüpfungen gehen an jeden Kontakt (z. B. Ehepartner/Mitbewohner an einer Privatperson) — gleiche Mechanik wie bei Organisationen, nur andere Felder |
| Datenpflege-Seiten unter Einstellungen → Daten | genommen | passt zum Infrastruktur-Beschluss |
| Querschnitts-Bausteine einbetten | genommen | Aufgaben-Reiter = V01 (P4) · Datei-Sektion (P4) · »Verlauf«-Drawer = M03 (P3 Audit) — werden referenziert, nicht neu gebaut |
| Ein Kontaktmodell für beide Typen | genommen | Jeder Datensatz ist fachlich ein Kontakt; Typ = Person oder Organisation. »Kontakt« ist deshalb kein Status. |
| Zwei Listen mit direktem Wechsel | genommen | Personen und Organisationen werden nicht vermischt, sind aber über einen kompakten Switch erreichbar. `Neue Person` führt direkt in S03, `Neue Organisation` direkt in S04. |
| Anlage direkt in der Detailansicht | genommen 2026-08-29 | M01 und M02 entfallen vollständig. S03/S04 öffnen mit leeren Feldern im Anlagezustand; der erste gültige Speichervorgang wechselt dieselbe Ansicht in den normalen Detailzustand. |
| Personen ↔ Organisationen = n:m | genommen | Eine Person kann mehreren Organisationen angehören. Die Organisation kann mehrere Personen enthalten. |
| Primär-/Sekundärkontakt ist Relationsrolle | genommen | Die Rolle gilt pro Verknüpfung, nicht global an der Person. Organisationen besitzen zwei getrennte, jeweils mehrwertige Bereiche: primäre und sekundäre Ansprechpartner. Beide dürfen leer sein; es gibt keine Regel »genau ein Primärkontakt«. |
| Benannte Kontakt-Verknüpfungen | genommen | Jede Verknüpfung kann eine optionale, frei benennbare Funktion/Beziehung erhalten, z. B. `Verkaufsleiter`, `Mitarbeiter` oder `Ehepartner`. Die Bezeichnung liegt ausschließlich an der Verknüpfung, verändert den verknüpften Kontakt nicht und blockiert die schnelle Zielauswahl nicht. |
| Sekundärkontakte an Personen | genommen | Dieselbe Relationsmechanik deckt z. B. Ehepartner oder Mitbewohner ab. Eine Person darf mehrere andere Personen verknüpfen; die Beziehung wird je Verknüpfung benannt. |
| Statusmodell | genommen | Kein Status ist zulässig. `Interessent` → noch kein Kunde; `Kunde` → aktive/manuell gepflegte Kundenbeziehung; `Bestandskunde` → mindestens ein erfolgreich abgeschlossenes Projekt (automatisch, manuell übersteuerbar); `Ehemaliger Kunde` → explizit verlorene/inaktive Kundenbeziehung. Kein automatisches Zurückstufen ohne fachliches Ereignis. |
| Flexible Kontaktwege und Adressen | genommen · Backend-Delta | Telefonnummern, E-Mails und Adressen sind wiederholbare Listen mit frei wähl- bzw. beschreibbarem Typ. Standard- und Rechnungsadresse sind vorgegeben; beliebig viele weitere Adressen sind möglich. Jeder Nicht-Standard-Adressblock bietet `Standardadresse übernehmen` als direkte Button-Aktion. Projekte dürfen zusätzliche projektspezifische Adressen haben. |
| Wachsende Auswahllisten | genommen 2026-08-29 | Verantwortlich und Quelle sind durchsuchbare Single-Select-Dropdowns. Verantwortliche verwenden `DropdownMenuSelect.DropdownUserItem` mit Avatar, Name und sekundärer Information. Status bleibt ein normales Select, zeigt den gewählten Status und alle Optionen jedoch als farbkonsistente Badges nach dem Pipeline-Muster. |
| Anlage-Defaults und Verlassen | genommen 2026-08-29 | Bei Neuanlage wird `Verantwortlich` mit dem angemeldeten Nutzer vorbelegt, bleibt aber änderbar und kann geleert werden. Navigation mit Eingaben warnt vor dem Verwerfen; ein vollständig leerer Anlagezustand erzeugt keinen Datensatz. |
| Organisationsfelder | genommen | `Branche` und `Rechtsform` sind getrennte Felder; kein kombiniertes »Branche / Merkmal«. |
| Duplikatprüfung | genommen | Kurzer Entscheidungsdialog aus dem Anlagezustand von S03/S04: bestehenden Eintrag öffnen oder bewusst trotzdem anlegen; kein Anlageformular. |
| Relationspflege ohne Modal | genommen 2026-08-29 | In S03 verknüpft `Organisation verknüpfen` ohne sichtbare Gruppenwahl über den Primärpfad; `Person verknüpfen` bietet Primär/Sekundär im Dropdown an. In S04 bleiben primäre und sekundäre Ansprechpartner getrennte Zielbereiche. Ziel auswählen und Bezeichnung inline ergänzen; bestehende Relation ebenfalls in der Zeile bearbeiten, verschieben oder lösen. M04–M04c entfallen als Produktseiten. |
| Tags als Kontaktmerkmal | genommen | Tags bleiben an Kontakten nutzbar. Die eigene Verwaltungsoberfläche S06/M06 gehört jedoch nicht mehr zum P6-Hauptflow und wurde aus Subframe entfernt. |
| Subframe ohne App-Shell | genommen | Die P6-Seiten zeigen nur den eigentlichen Screen-Inhalt auf einer blanken Seite. Topbar und Sidebar werden im Flow bewusst nicht wiederholt. |
| Kontakt-Detail S03 | **Validiert 2026-08-29** | Einzige vollständige Source of Truth im Pipeline-nativen Dreispaltenmuster: Stammdaten und Kontaktwege links, Weitere Angaben oberhalb von Adressen/Relationen mittig, fester Werkzeugbereich rechts sowie schwebende Schnellaktionen unten. Die frühere S03-Seite wurde entfernt; `S03 Review – Inline-Zeilen` ist die kanonische Hauptseite. |
| Werkzeugzustände S03a–S03f | **Validiert 2026-08-29** | Sechs isolierte 340-px-Miniscreens für Projekte, Aufgaben, Dateien, Notizen, Verlauf und Aktivitäten. Sie enthalten keine Kopie der übrigen Detailseite und werden nur für den jeweiligen rechten Zustand gepflegt. |
| Organisations-Detail S04 | **Validiert 2026-08-29** | Auf der validierten S03-Struktur aufgebaut und ausschließlich auf Organisationsdaten sowie Primär-/Sekundär-Ansprechpartner angepasst. Zwei interne QA-Durchgänge liegen in der Versionshistorie; David hat den Gesamtflow anschließend abgeschlossen. |
| Archivieren bestätigen | genommen | M08 bleibt als einziger eigener Aktionsdialog neben der Duplikatentscheidung. Dieselbe dynamische Referenz gilt für Personen und Organisationen; bestehende Relationen werden beim Archivieren nicht gelöscht. |
| **Inline-Anlegen in der Liste (Notion-Stil)** | dokumentiert / später | Nicht Bestandteil des aktuellen Drafts. |
## 5. Kontakt-Datenmodell — finaler v1-Vertrag
### 5.1 Begriffe und Ebenen
- **Kontakt** bleibt der technische Oberbegriff. Im UI gibt es **Personen** und **Organisationen**. Der technische Typ sollte langfristig `person` statt `privatperson` heißen, weil eine Person auch Ansprechpartner einer Organisation sein kann und deshalb nicht automatisch ein Privatkunde ist.
- **Stammdaten** beschreiben den Datensatz selbst: Wer ist die Person bzw. Organisation?
- **Verknüpfungsdaten** gelten nur zwischen zwei Datensätzen: Welche Rolle hat diese Person bei dieser Organisation oder gegenüber einer anderen Person?
- **Projektdaten** gelten nur im Projekt: Auftraggeber, Bauherr, Rechnungsempfänger und Projekt-Ansprechpartner bleiben an `ProjektKontakt` und werden nicht zu dauerhaften Personenrollen.
- **Primär/Sekundär** ist nie eine globale Eigenschaft einer Person. Es ist nur die Ablage der konkreten Verknüpfung in einem der beiden Bereiche einer Organisation bzw. eines privaten Personenverbunds.
### 5.2 Empfohlener schlanker Feldumfang
| Ebene | v1-Standardfelder | Später / nur bei echtem Bedarf |
|---|---|---|
| Alle Kontakte | optionaler Beziehungsstatus, Verantwortlich, editierbare und durchsuchbare Quelle, Tags, Notiz, Sprache, Kunden-Nr., Kunde seit, erstellt/geändert/archiviert | weitere tenant-spezifische Werte über Eigene Felder |
| Person | Anrede, Titel, Vorname, Nachname; beliebig viele E-Mails und Telefonnummern mit beschreibbarem Typ + einem Standardwert; beliebig viele Adressen | Geburtsdatum, Geschlecht, Social-Profile und weitere private Daten nicht standardmäßig sammeln |
| Organisation | Organisationsname, Rechtsform, Branche; beliebig viele E-Mails/Telefonnummern und Adressen; Website, USt-IdNr., Handelsregister | Mitarbeiterzahl nur bei nachgewiesenem Filter-/Reporting-Bedarf |
| Rechnungsprofil | Rechnungsempfänger/-name, Rechnungs-E-Mail, Standard-Zahlungsziel, Versandweg, Rechnungsadresse | Werte werden beim Erstellen von Projekt/Rechnung übernommen und dort als eigener Stand überschreibbar bzw. historisch stabil gehalten |
| Person ↔ Organisation | In S03 direkte Organisationszuordnung ohne sichtbare Gruppenwahl und mit Primär als Default; in S04 Zuordnung zu `Primäre Ansprechpartner` oder `Sekundäre Ansprechpartner`; optionale frei benennbare Funktion, z. B. Mitarbeiter oder Verkaufsleiter | Gültigkeitszeitraum erst später, falls ehemalige Ansprechpartner relevant werden |
| Person ↔ Person | Inline-Zuordnung zu Primär/Sekundär; optionale frei benennbare Beziehung, z. B. Ehepartner, Familienmitglied oder Mitbewohner | keine lange Pflicht-Auswahlliste; weitere Semantik erst bei einem konkreten Workflow |
### 5.3 Primärkontakt-Regeln
1. Organisationen dürfen ohne Ansprechpartner existieren.
2. `Primäre Ansprechpartner` und `Sekundäre Ansprechpartner` sind zwei getrennte Listen mit jeweils **0..n** Personen. Es gibt bewusst keine Pflicht und keine Eindeutigkeitsregel für einen Primärkontakt.
3. In S04 startet das Hinzufügen direkt in der gewählten Primär-/Sekundärsektion. In S03 verwendet `Organisation verknüpfen` ohne sichtbare Gruppenwahl den Primärpfad; `Person verknüpfen` fragt Primär/Sekundär einmalig im Dropdown ab. Nach Auswahl des Ziels wird die Relation sofort erzeugt.
4. Die optionale Verknüpfungsbezeichnung wird an der Relation gespeichert und inline ergänzt. Sie blockiert die schnelle Auswahl nicht. Name, E-Mail, Telefon und sonstige Stammdaten des verknüpften Kontakts bleiben unangetastet.
5. Eine Person darf in mehreren Organisationen und in mehreren Person-Verknüpfungen vorkommen; jede Relation besitzt ihre eigene Gruppe und Bezeichnung.
6. Person-Person-Verknüpfungen dürfen keine Selbstbezüge erzeugen. Der private Verbund bleibt in v1 eine flache Liste und wird nicht rekursiv als Baum dargestellt.
### 5.4 Notwendige Backend-Deltas
- `KontaktArt` mischt heute Gruppierung (`hauptkontakt`/`sekundaerkontakt`) mit Beziehungsbezeichnung (`mitarbeiter`/`sonstige`). Diese Dimensionen trennen in **Gruppe** (`primaer`/`sekundaer`) und eine optionale, frei benennbare **Funktion/Beziehung**.
- Es gibt absichtlich keinen Unique-Zwang auf Primärkontakte. Pro Organisation/Person sind 0..n primäre und 0..n sekundäre Relationen erlaubt.
- `Kontakt.adresseId` durch eine Kontakt-Adress-Zuordnung ersetzen. `standard` und `rechnung` sind vorgegebene Adresstypen; weitere Typen/Bezeichnungen sind frei ergänzbar.
- E-Mail-Adressen erhalten wie Telefonnummern einen beschreibbaren Typ. Die Kontaktwege bleiben in v1 am Kontakt; die Relation speichert nur Gruppe und Bezeichnung. Organisationsspezifische Arbeits-E-Mail/Telefonnummern werden erst ergänzt, wenn dafür ein echter Workflow entsteht.
- Der Status ist optional: **kein Status** bedeutet reine gespeicherte Person/reiner Ansprechpartner ohne eigene Kundenbeziehung. `Interessent`, `Kunde`, `Bestandskunde` und `Ehemaliger Kunde` beschreiben nur eine tatsächlich vorhandene eigene Geschäftsbeziehung.
- Kunden-Nr. und `Kunde seit` sind gemeinsame Geschäftsdaten, nicht reine Organisationsfelder; auch eine Person kann selbst Kunde sein.
- Die Kundennummer ist systemgeführt und in der Detailansicht nur lesbar, bevorzugt oben rechts im Kopf statt als bearbeitbares Formularfeld.
- Rechnungsdefaults logisch als eigenes Profil behandeln. Projekt- und Rechnungswerte dürfen davon übernommen, müssen danach aber unabhängig überschrieben bzw. historisch stabil gespeichert werden können.
### 5.5 Bedienmuster für wiederholbare Felder
- Pro Telefonnummer und E-Mail gibt es einen Wert und eine beschreibbare Typbezeichnung. Vorgaben wie `Mobil`, `Privat`, `Geschäftlich` oder `Assistenz` beschleunigen die Auswahl; eigene Bezeichnungen bleiben möglich.
- Ein erster Eintrag ist sichtbar. Über `+ Telefonnummer hinzufügen`, `+ E-Mail-Adresse hinzufügen` bzw. `+ Adresse hinzufügen` können beliebig viele weitere Zeilen ergänzt werden.
- Genau ein Eintrag je Kontaktweg kann als Standard markiert werden; weitere Einträge bleiben gleichwertig erreichbar.
- Standard- und Rechnungsadresse sind als feste Adressblöcke vorbereitet. Weitere Adressen erhalten eine frei benennbare Bezeichnung.
- Adressblöcke sind auf- und zuklappbar, damit mehrere vollständige Adressen die Detailseite nicht unnötig verlängern.
### 5.6 Anlagezustand in S03/S04
- S01 öffnet S03 unmittelbar mit leeren Personenfeldern; S02 öffnet S04 unmittelbar mit leeren Organisationsfeldern.
- Es gibt kein vorgeschaltetes Kurzformular. Stammdaten, Kontaktwege, Adressen und Relationen werden auf derselben Detailarbeitsfläche gepflegt.
- Der erste gültige Speichervorgang legt den Datensatz an; dieselbe Ansicht bleibt geöffnet und wird zum normalen Detailzustand.
- Person: mindestens Vorname oder Nachname. Organisation: Organisationsname. Alle übrigen Felder folgen den Regeln der jeweiligen Detailansicht.
- Der Duplikat-Check führt aus S03 in M01a bzw. aus S04 in M02a. `Abbrechen` erhält die Eingaben im Anlagezustand.
- Geburtsdatum, Bankdaten und private Zusatzinformationen werden ohne konkreten Workflow nicht als Standardfelder aufgenommen.
## 6. Ablauf und Zustände
### Happy Path
1. Sidebar »Kontakte« → Liste, tippen/filtern, Kontakt öffnen.
2. Karteikarte: links Stammdaten direkt editieren; rechts im Verlauf sehen, was zuletzt lief (Anrufe, Mails, Notizen); Schnell-Aktion »Aufgabe« oder »Termin« direkt aus dem Kopf.
3. Neuer Kunde ruft an → »+ Kontakt« → Modal, beim Tippen kommt ggf. »gibt's schon« → bestehenden öffnen statt Dublette anlegen.
4. Aufräumen: Einstellungen → Duplikat-Tool → Paar nebeneinander → Feld für Feld übernehmen → zusammenführen.
3. Neuer Kunde ruft an → `Neue Person` bzw. `Neue Organisation` → S03/S04 öffnet direkt im Anlagezustand → beim Tippen ggf. M01a/M02a `Mögliches Duplikat` → bestehenden öffnen oder bewusst speichern; kein M01/M02-Formular.
4. Relation ergänzen → in S03 Organisation direkt oder Person nach Primär/Sekundär-Wahl verknüpfen; in S04 die gewünschte Ansprechpartner-Sektion verwenden → Ziel suchen/auswählen → Relation steht sofort in der Liste; kein M04-Dialog.
5. Aufräumen: Einstellungen → Duplikat-Tool → Paar nebeneinander → Feld für Feld übernehmen → zusammenführen.
### Meldungs-/Error-States (validiert)
| Ereignis | UI-Form | Blockiert? | Bauen? | Copy/Notiz |
|---|---|---|---|---|
| Fremder Kontakt bei `read_own` | 404 bzw. taucht in Liste nicht auf | ja | Wiederverwenden | Dev-Vorgabe |
| Mögliches Duplikat beim Anlegen | Banner im Modal: »trotzdem anlegen« / »bestehenden öffnen« | nein | Nur dokumentieren | Live-Check beim Tippen |
| Mögliches Duplikat beim ersten Speichern | kurzer Entscheidungsdialog M01a aus S03 / M02a aus S04 | ja (Entscheidung) | Bauen · validiert | »Öffnen« / »Trotzdem anlegen« |
| Relationsziel bereits verknüpft | bestehende Zeile hervorheben, keine Dublette erzeugen | nein | Nur dokumentieren | gilt für S03/S04 |
| Person-Person-Selbstbezug | eigener Kontakt nicht auswählbar | ja (Auswahl) | Nur dokumentieren | gilt für S03 |
| Kein Relations-Suchtreffer | Inline-Aktion `Neu anlegen` | nein | Nur dokumentieren | S03/S04 im Anlagezustand öffnen, Relationskontext mitführen und nach dem ersten Speichern einmalig anwenden |
| Relation konnte nicht gespeichert werden | Inline-Fehler mit Wiederholen | ja | Wiederverwenden | Auswahl/Eingabe bleibt erhalten |
| Einzelnen Kontakt archivieren | M08 mit dynamischer Personen-/Organisations-Copy | ja (Aktion) | Bauen | reversibel; Relationen bleiben bestehen |
| Zusammenführen ist endgültig | Bestätigung mit Klartext | ja (Aktion) | Nur dokumentieren | »Kann nicht rückgängig gemacht werden« |
| Großer CSV-Export | läuft im Hintergrund + Meldung | nein | Nur dokumentieren | Benachrichtigung wenn fertig |
| Leere Liste (Filter/read_own) | Leer-Zustand mit Klartext | nein | Nur dokumentieren | »Keine Kontakte für diese Filter« |
### 6.1 Flow-Bereinigung — aktueller Stand
Die Bereinigung betrachtet ausschließlich ganze Funktionsbereiche im Hauptflow. Der Backlog ist ausdrücklich ausgenommen.
- S06 `Tags – Datenpflege` und M06 `Tag anlegen und bearbeiten` wurden aus dem Hauptflow und aus Subframe entfernt.
- Tags selbst bleiben als Kontaktmerkmal, Filter und Mehrfachaktion erhalten; entfernt wurde nur die eigene Verwaltungsoberfläche.
- M08 `Kontakt archivieren` bleibt als eigenständige Referenz, weil die notwendige Bestätigung sichtbar definiert sein soll.
- M01 `Kontakt anlegen` und M02 `Organisation anlegen` sind seit 2026-08-29 aus dem Produktscope und aus Subframe entfernt. S03/S04 übernehmen den Anlagezustand.
- M01a/M02a bleiben als von David bestätigte Duplikatentscheidung und werden direkt aus S03/S04 ausgelöst.
- M04, M04a, M04b und M04c sind seit 2026-08-29 aus dem Produktscope und aus Subframe entfernt. Ihre Aufgaben liegen vollständig als Inline-Interaktion in S03/S04.
- Die frühere S01a-Variante wurde nach Davids Freigabe in S01 integriert: Checkboxen sind dauerhaft links in der Tabelle sichtbar, die `BulkActionBar` erscheint bei aktiver Auswahl. Der separate Screen und der Button `Auswählen` wurden entfernt.
- Im Backlog wurde durch diese Bereinigung nichts geändert.
Der Subframe-Hauptflow umfasst aktuell **13 Seiten**: vier Kernseiten S01–S04, M08, die beiden Duplikatentscheidungen M01a/M02a und sechs isolierte Werkzeugzustände S03a–S03f. Die ausgewählte Inline-Zeilen-Seite ist selbst die kanonische S03; eine zusätzliche S03-Reviewseite existiert nicht mehr. M01/M02 und M04–M04c existieren ebenfalls nicht mehr als Subframe-Seiten.
---
## 7. Validierte Screen-Liste
## 7. Screen-Liste
| ID | Screen/Zustand | Typ | Umsetzung | Ort | Status |
|---|---|---|---|---|---|
| S01 | Kontakte-Liste | Liste | Bauen | `/contacts` | Validiert |
| S02 | Organisationen-Liste | Liste | Bauen | `/contacts/companies` | Validiert |
| S03 | Kontakt-Karteikarte ⭐ | Detail (Muster-Vorlage) | Bauen | `/contacts/:id` | Validiert |
| S04 | Organisations-Karteikarte | Detail | Bauen | `/contacts/companies/:id` | Validiert |
| M01 | Kontakt anlegen | Modal | Bauen | aus S01 + überall | Validiert |
| M02 | Organisation anlegen | Modal | Bauen | aus S02 | Validiert |
| S05 | Eigene Felder | Settings-Liste | Bauen | `/admin/custom-fields` | Validiert |
| S06 | Tags | Settings-Liste | Bauen | `/admin/tags` | Validiert |
| S07 | Duplikat-Tool | Settings-Liste | Bauen | `/admin/duplicates` | Validiert |
| M03 | Zusammenführen (Seite an Seite) | Modal (groß) | Bauen | aus S07 | Validiert |
| S03 | Kontakt-Karteikarte inkl. Anlagezustand | Detail + Anlagezustand | Bauen | `/contacts/:id` + Neue Person | Validiert 2026-08-29 |
| S03a–S03d | Projekte · Aufgaben · Dateien · Notizen | Werkzeug-Miniscreens | Referenz | innerhalb S03 | Validiert 2026-08-29 |
| S03e–S03f | Verlauf · Aktivitäten | Werkzeug-Miniscreens | Referenz | innerhalb S03 | Validiert 2026-08-29 |
| S04 | Organisations-Karteikarte inkl. Anlagezustand | Detail + Anlagezustand | Bauen | `/contacts/companies/:id` + Neue Organisation | Validiert 2026-08-29 |
| M01 | Kontakt anlegen – Person | Entscheidungsdoku | Nicht bauen | ersetzt durch S03 Anlagezustand | Aus Subframe gelöscht 2026-08-29 |
| M01a | Person – Duplikatwarnung | Entscheidungsdialog | Bauen | aus S03 Anlagezustand | Validiert 2026-08-29 |
| M02 | Organisation anlegen | Entscheidungsdoku | Nicht bauen | ersetzt durch S04 Anlagezustand | Aus Subframe gelöscht 2026-08-29 |
| M02a | Organisation – Duplikatwarnung | Entscheidungsdialog | Bauen | aus S04 Anlagezustand | Validiert 2026-08-29 |
| M04–M04c | Relations-Modals | Entscheidungsdoku | Nicht bauen | ersetzt durch Inline in S03/S04 | Aus Subframe gelöscht 2026-08-29 |
| M08 | Kontakt/Organisation archivieren | Bestätigungsdialog | Bauen | aus S01–S04 | Validiert 2026-08-29 |
| S05 | Eigene Felder | Settings-Liste | Später | `/admin/custom-fields` | Backlog |
| S07 | Duplikat-Tool | Settings-Liste | Später | `/admin/duplicates` | Backlog |
| M03 | Zusammenführen (Seite an Seite) | Modal (groß) | Später | aus S07 | Backlog |
| D01 | Inline-Anlegen in Liste (Notion-Stil) | Idee | Später | in S01 | Dokumentiert |
| D02–D05 | Banner/Zustände (s. Tabelle) | Inline/Banner | Nur dokumentieren | — | Validiert |
@@ -110,10 +206,16 @@ Das Adressbuch mit Gedächtnis: Kontakte- und Organisationen-Listen, die **Konta
## 8. Grid
```text
Sidebar -> S01 <-> S02 (Reiter)
S01 -> S03 (Karteikarte) / S02 -> S04
S01 -> M01 (+ Kontakt) / S02 -> M02
Einstellungen -> S05 / S06 / S07 -> M03 (Zusammenfuehren)
Sidebar -> S01 <-> S02 (direkter Switch)
S01 -> S03 (öffnen oder direkt im Anlagezustand) / S02 -> S04 (öffnen oder Anlagezustand)
S03 Anlagezustand -> M01a (mögliches Personenduplikat)
S04 Anlagezustand -> M02a (mögliches Organisationsduplikat)
S03: Organisation direkt über Primärpfad; Person über Primär-/Sekundär-Dropdown verknüpfen; kein M04
S04: Personen direkt in primäre/sekundäre Ansprechpartner-Sektion verknüpfen; kein M04
S03/S04 -> M08 (Archivieren bestätigen)
Einstellungen -> S05 / S07 -> M03 (Zusammenfuehren)
S03: vollständiges Pipeline-Detailmuster als Source of Truth
S03a–S03f: ausschließlich der rechte Werkzeugbereich für Projekte, Aufgaben, Dateien, Notizen, Verlauf und Aktivitäten
S03/S04 betten ein: Aufgaben V01 (P4), Datei-Sektion (P4), Verlauf-Drawer M03 (P3 Audit)
```
@@ -123,21 +225,25 @@ S03/S04 betten ein: Aufgaben V01 (P4), Datei-Sektion (P4), Verlauf-Drawer M03 (P
- [[S01 Kontakte-Liste]] · [[S02 Organisationen-Liste]]
- [[S03 Kontakt-Karteikarte]] · [[S04 Organisations-Karteikarte]]
- [[M01 Kontakt anlegen]] · [[M02 Organisation anlegen]]
- [[S05 Eigene Felder]] · [[S06 Tags]] · [[S07 Duplikat-Tool]] · [[M03 Zusammenfuehren]]
- [[M01a Kontakt anlegen Duplikatwarnung]] · [[M02a Organisation anlegen Duplikatwarnung]] — echte Duplikatentscheidungen
- [[M01 Kontakt anlegen]] · [[M02 Organisation anlegen]] — Entscheidungsdoku; nicht bauen
- [[M08 Kontakt archivieren]]
- [[M04 Kontakt verknuepfen]] — Entscheidungsdoku; nicht bauen
- [[S05 Eigene Felder]] · [[S07 Duplikat-Tool]] · [[M03 Zusammenfuehren]]
---
## 10. Offene Fragen
## 10. Nicht blockierende Folgethemen
- Inline-Anlegen (D01): wann/ob bauen → David entscheidet später
- Reiter-Label: David sagte locker »Firmen oder sowas« — Spec-Vorgabe ist »Organisation« (öffentliche Einrichtungen sind keine Firmen); wir bleiben bei **»Organisationen«**, final beim Subframe-Bau
- Sekundärkontakte an Privatpersonen (Shell-Gedanke): Datenmodell (KontaktRelation = Kontakt↔Kontakt) deckt das ab — beim Handoff kurz mit Dev bestätigen
- Quick-Action »Anrufen« zeigt in v1 `tel:`-Link, AirCall-Anbindung kommt mit D-P15
- Karteikarten-Muster nach Subframe-Bau als Standard dokumentieren (→ `04 Standards`, nur mit Davids Freigabe)
- Inline-Anlegen in der Liste (D01) bleibt bewusst später und ist kein Bestandteil dieses Handoffs.
- Primär/Sekundär kann bei Person-Person-Verknüpfungen langfristig neutraler benannt werden; Datenmodell und Inline-Mechanik bleiben davon unberührt.
- Die Quick-Action `Anrufen` verwendet in v1 einen `tel:`-Link. AirCall folgt separat mit D-P15.
- Eigene Felder, Duplikat-Tool und Zusammenführen bleiben als S05, S07 und M03 im Backlog.
## Handoff-Check
- [x] Jeder Screen ist mit Umsetzung markiert.
- [x] Meldungs-/Error-State-Matrix ist ausgefüllt.
- [ ] Subframe-Link ist eingetragen. *(Subframe erst nach explizitem OK)*
- [x] Subframe-Link ist eingetragen.
- [x] Alle 13 Live-Seiten wurden am 2026-08-29 per MCP gelesen und gerendert.
- [x] Obsidian-Paket, Canvas, Tracker und Ticket-Handoff sind synchron.
+21 -16
View File
@@ -40,7 +40,7 @@ Diese Datei ist der erste Ort, um zu sehen:
| WF-P4 Aufgaben | D-P4 | Aufgaben & Dateien | Fertig / Development-Handoff | [MD](<P4 Aufgaben/WF-P4 Aufgaben/WF-P4 Aufgaben.md>) | [Canvas](<P4 Aufgaben/WF-P4 Aufgaben/WF-P4 Aufgaben.canvas>) | [Subframe](<https://app.subframe.com/f023064a5ca0/flow/192a194e-bb51-4f4c-9f02-7c05d26584e8/edit>) | Übergabe abgeschlossen | 16/16 Live-Seiten synchron: S01/S02/S03/M01, zwei finale V01-Repräsentationen und zehn Interaktionsmodals; Zustände in Z01; Flow-Name `WF-P16 Aufgaben` als nicht blockierende Abweichung dokumentiert |
| WF-P4 Dateien | D-P4 | Aufgaben & Dateien | Validiert | [MD](<P4 Dateien/WF-P4 Dateien/WF-P4 Dateien.md>) | [Canvas](<P4 Dateien/WF-P4 Dateien/WF-P4 Dateien.canvas>) | - | Subframe nach explizitem OK | Screens validiert 2026-07-08; Teilen/Ordner/Versionen sichtbar als Backlog v2 |
| WF-P5 Integrationen | D-P5 | Integrationen | Validiert | [MD](<P5 Integrationen/WF-P5 Integrationen/WF-P5 Integrationen.md>) | [Canvas](<P5 Integrationen/WF-P5 Integrationen/WF-P5 Integrationen.canvas>) | - | Subframe nach explizitem OK | Screens validiert 2026-07-08; Sync-Verlauf als eigene Seiten; Connection-Card = Muster fuer P14/P15/P16 |
| WF-P6 Kontakte und Organisationen | D-CRM | Kontakte | Validiert | [MD](<P6 Kontakte und Organisationen/WF-P6 Kontakte und Organisationen/WF-P6 Kontakte und Organisationen.md>) | [Canvas](<P6 Kontakte und Organisationen/WF-P6 Kontakte und Organisationen/WF-P6 Kontakte und Organisationen.canvas>) | - | Subframe nach explizitem OK | Screens validiert 2026-07-08; Karteikarte = Muster-Vorlage fuer alle Detailseiten (Zweispalter + Reiter) |
| WF-P6 Kontakte und Organisationen | D-CRM | Kontakte | Fertig / Development-Handoff | [MD](<P6 Kontakte und Organisationen/WF-P6 Kontakte und Organisationen/WF-P6 Kontakte und Organisationen.md>) | [Canvas](<P6 Kontakte und Organisationen/WF-P6 Kontakte und Organisationen/WF-P6 Kontakte und Organisationen.canvas>) | [Subframe](<https://app.subframe.com/f023064a5ca0/flow/68046dc7-bc93-4232-a0da-a406a8bd10b8/edit>) | Übergabe abgeschlossen | 13/13 Live-Seiten gelesen und gerendert; S01–S04, M01a/M02a, M08 und S03a–S03f validiert; Backlog separat |
| WF-P7 Leads | D-P7 | Leads | Fertig / Development-Handoff | [MD](<P7 Leads/WF-P7 Leads/WF-P7 Leads.md>) | [Canvas](<P7 Leads/WF-P7 Leads/WF-P7 Leads.canvas>) | [Subframe](<https://app.subframe.com/f023064a5ca0/flow/69f745e5-4a15-4227-b9db-ec08c78fd6d7/edit>) | Übergabe abgeschlossen | 20/20 Seiten nach Davids finalen Änderungen am 2026-08-20 erneut synchronisiert; S01 mit neuer UUID, Folgethemen separat dokumentiert |
| WF-P8 Pipelines | D-P8 + D-KANBAN | Pipelines | In Subframe | [MD](<P8 Pipelines/WF-P8 Pipelines/WF-P8 Pipelines.md>) | [Canvas](<P8 Pipelines/WF-P8 Pipelines/WF-P8 Pipelines.canvas>) | [Subframe](<https://app.subframe.com/f023064a5ca0/flow/d9dfdec6-7236-4386-8514-697b9e0f0bc4/edit>) | Development-Handoff | 23 aktuelle Seiten per MCP abgeglichen; S03/S04/M03/M04-Produktlogik am 2026-07-28 von David validiert |
| WF-P9 Projekt-Akte | D-P9 | Auftrag | Validiert | [MD](<P9 Projekt-Akte/WF-P9 Projekt-Akte/WF-P9 Projekt-Akte.md>) | [Canvas](<P9 Projekt-Akte/WF-P9 Projekt-Akte/WF-P9 Projekt-Akte.canvas>) | - | Subframe nach explizitem OK | Screens validiert 2026-07-09; Rechnung v1 neu; Board-Auftragsoptionen erweitern WF-P8 S04 |
@@ -149,17 +149,22 @@ Diese Datei ist der erste Ort, um zu sehen:
| M01 | Assistent OAuth | WF-P5 Integrationen | Modal/Wizard | Bauen | Validiert | aus S02 | [MD](<P5 Integrationen/WF-P5 Integrationen/Screens/M01 Assistent OAuth.md>) | - | [Canvas](<P5 Integrationen/WF-P5 Integrationen/WF-P5 Integrationen.canvas>) |
| M02 | Assistent API-Schluessel | WF-P5 Integrationen | Modal/Wizard | Bauen | Validiert | aus S02 | [MD](<P5 Integrationen/WF-P5 Integrationen/Screens/M02 Assistent API-Schluessel.md>) | - | [Canvas](<P5 Integrationen/WF-P5 Integrationen/WF-P5 Integrationen.canvas>) |
| M03 | Trennen-Bestaetigung | WF-P5 Integrationen | Modal | Bauen | Validiert | aus S02 | [MD](<P5 Integrationen/WF-P5 Integrationen/Screens/M03 Trennen-Bestaetigung.md>) | - | [Canvas](<P5 Integrationen/WF-P5 Integrationen/WF-P5 Integrationen.canvas>) |
| S01 | Kontakte-Liste | WF-P6 Kontakte und Organisationen | Liste | Bauen | Validiert | `/contacts` | [MD](<P6 Kontakte und Organisationen/WF-P6 Kontakte und Organisationen/Screens/S01 Kontakte-Liste.md>) | - | [Canvas](<P6 Kontakte und Organisationen/WF-P6 Kontakte und Organisationen/WF-P6 Kontakte und Organisationen.canvas>) |
| S02 | Organisationen-Liste | WF-P6 Kontakte und Organisationen | Liste | Bauen | Validiert | `/contacts/companies` | [MD](<P6 Kontakte und Organisationen/WF-P6 Kontakte und Organisationen/Screens/S02 Organisationen-Liste.md>) | - | [Canvas](<P6 Kontakte und Organisationen/WF-P6 Kontakte und Organisationen/WF-P6 Kontakte und Organisationen.canvas>) |
| S03 | Kontakt-Karteikarte (Muster-Vorlage) | WF-P6 Kontakte und Organisationen | Detail | Bauen | Validiert | `/contacts/:id` | [MD](<P6 Kontakte und Organisationen/WF-P6 Kontakte und Organisationen/Screens/S03 Kontakt-Karteikarte.md>) | - | [Canvas](<P6 Kontakte und Organisationen/WF-P6 Kontakte und Organisationen/WF-P6 Kontakte und Organisationen.canvas>) |
| S04 | Organisations-Karteikarte | WF-P6 Kontakte und Organisationen | Detail | Bauen | Validiert | `/contacts/companies/:id` | [MD](<P6 Kontakte und Organisationen/WF-P6 Kontakte und Organisationen/Screens/S04 Organisations-Karteikarte.md>) | - | [Canvas](<P6 Kontakte und Organisationen/WF-P6 Kontakte und Organisationen/WF-P6 Kontakte und Organisationen.canvas>) |
| M01 | Kontakt anlegen | WF-P6 Kontakte und Organisationen | Modal | Bauen | Validiert | aus S01 + ueberall | [MD](<P6 Kontakte und Organisationen/WF-P6 Kontakte und Organisationen/Screens/M01 Kontakt anlegen.md>) | - | [Canvas](<P6 Kontakte und Organisationen/WF-P6 Kontakte und Organisationen/WF-P6 Kontakte und Organisationen.canvas>) |
| M02 | Organisation anlegen | WF-P6 Kontakte und Organisationen | Modal | Bauen | Validiert | aus S02 | [MD](<P6 Kontakte und Organisationen/WF-P6 Kontakte und Organisationen/Screens/M02 Organisation anlegen.md>) | - | [Canvas](<P6 Kontakte und Organisationen/WF-P6 Kontakte und Organisationen/WF-P6 Kontakte und Organisationen.canvas>) |
| S05 | Eigene Felder | WF-P6 Kontakte und Organisationen | Settings-Liste | Bauen | Validiert | `/admin/custom-fields` | [MD](<P6 Kontakte und Organisationen/WF-P6 Kontakte und Organisationen/Screens/S05 Eigene Felder.md>) | - | [Canvas](<P6 Kontakte und Organisationen/WF-P6 Kontakte und Organisationen/WF-P6 Kontakte und Organisationen.canvas>) |
| S06 | Tags | WF-P6 Kontakte und Organisationen | Settings-Liste | Bauen | Validiert | `/admin/tags` | [MD](<P6 Kontakte und Organisationen/WF-P6 Kontakte und Organisationen/Screens/S06 Tags.md>) | - | [Canvas](<P6 Kontakte und Organisationen/WF-P6 Kontakte und Organisationen/WF-P6 Kontakte und Organisationen.canvas>) |
| S07 | Duplikat-Tool | WF-P6 Kontakte und Organisationen | Settings-Liste | Bauen | Validiert | `/admin/duplicates` | [MD](<P6 Kontakte und Organisationen/WF-P6 Kontakte und Organisationen/Screens/S07 Duplikat-Tool.md>) | - | [Canvas](<P6 Kontakte und Organisationen/WF-P6 Kontakte und Organisationen/WF-P6 Kontakte und Organisationen.canvas>) |
| M03 | Zusammenfuehren (Seite an Seite) | WF-P6 Kontakte und Organisationen | Modal (gross) | Bauen | Validiert | aus S07 | [MD](<P6 Kontakte und Organisationen/WF-P6 Kontakte und Organisationen/Screens/M03 Zusammenfuehren.md>) | - | [Canvas](<P6 Kontakte und Organisationen/WF-P6 Kontakte und Organisationen/WF-P6 Kontakte und Organisationen.canvas>) |
| D01 | Inline-Anlegen in Liste (Notion-Stil) | WF-P6 Kontakte und Organisationen | Idee | Spaeter | Dokumentiert | in S01 | [MD](<P6 Kontakte und Organisationen/WF-P6 Kontakte und Organisationen/WF-P6 Kontakte und Organisationen.md>) | - | - |
| S01 | Kontakte-Liste | WF-P6 Kontakte und Organisationen | Liste | Bauen | Validiert | `/contacts` | [MD](<P6 Kontakte und Organisationen/WF-P6 Kontakte und Organisationen/Screens/S01 Kontakte-Liste.md>) | [Subframe](<https://app.subframe.com/f023064a5ca0/design/82f7c7cb-18d2-4f3c-b374-15ca56e12635/edit>) | [Canvas](<P6 Kontakte und Organisationen/WF-P6 Kontakte und Organisationen/WF-P6 Kontakte und Organisationen.canvas>) |
| S02 | Organisationen-Liste | WF-P6 Kontakte und Organisationen | Liste | Bauen | Validiert | `/contacts/companies` | [MD](<P6 Kontakte und Organisationen/WF-P6 Kontakte und Organisationen/Screens/S02 Organisationen-Liste.md>) | [Subframe](<https://app.subframe.com/f023064a5ca0/design/6d1512ab-898a-4931-976c-2622d8d4aff4/edit>) | [Canvas](<P6 Kontakte und Organisationen/WF-P6 Kontakte und Organisationen/WF-P6 Kontakte und Organisationen.canvas>) |
| S03 | Kontakt-Karteikarte inkl. Anlagezustand | WF-P6 Kontakte und Organisationen | Detail + Anlagezustand | Bauen | Validiert 2026-08-29 | `/contacts/:id` + Neue Person | [MD](<P6 Kontakte und Organisationen/WF-P6 Kontakte und Organisationen/Screens/S03 Kontakt-Karteikarte.md>) | [Subframe](<https://app.subframe.com/f023064a5ca0/design/13a46cd7-44b6-4495-bad5-57eb1ffc978a/edit>) | [Canvas](<P6 Kontakte und Organisationen/WF-P6 Kontakte und Organisationen/WF-P6 Kontakte und Organisationen.canvas>) |
| S03a–S03f | Werkzeug-Miniscreens | WF-P6 Kontakte und Organisationen | Referenzzustände | Referenz | Validiert 2026-08-29 | innerhalb S03 | [MD](<P6 Kontakte und Organisationen/WF-P6 Kontakte und Organisationen/Screens/S03 Kontakt-Karteikarte.md>) | [Subframe-Flow](<https://app.subframe.com/f023064a5ca0/flow/68046dc7-bc93-4232-a0da-a406a8bd10b8/edit>) | [Canvas](<P6 Kontakte und Organisationen/WF-P6 Kontakte und Organisationen/WF-P6 Kontakte und Organisationen.canvas>) |
| S04 | Organisations-Karteikarte inkl. Anlagezustand | WF-P6 Kontakte und Organisationen | Detail + Anlagezustand | Bauen | Validiert 2026-08-29 | `/contacts/companies/:id` + Neue Organisation | [MD](<P6 Kontakte und Organisationen/WF-P6 Kontakte und Organisationen/Screens/S04 Organisations-Karteikarte.md>) | [Subframe](<https://app.subframe.com/f023064a5ca0/design/a6fe8461-1728-49c2-96c0-005cea90b547/edit>) | [Canvas](<P6 Kontakte und Organisationen/WF-P6 Kontakte und Organisationen/WF-P6 Kontakte und Organisationen.canvas>) |
| M01 | Kontakt anlegen | WF-P6 Kontakte und Organisationen | Entscheidungsdoku | Nicht bauen | Aus Subframe gelöscht 2026-08-29 | entfällt; S03 Anlagezustand | [MD](<P6 Kontakte und Organisationen/WF-P6 Kontakte und Organisationen/Screens/M01 Kontakt anlegen.md>) | - | - |
| M01a | Person – Duplikatwarnung | WF-P6 Kontakte und Organisationen | Entscheidungsdialog | Bauen | Validiert 2026-08-29 | aus S03 Anlagezustand | [MD](<P6 Kontakte und Organisationen/WF-P6 Kontakte und Organisationen/Screens/M01a Kontakt anlegen Duplikatwarnung.md>) | [Subframe](<https://app.subframe.com/f023064a5ca0/design/38a86afc-5cfd-40a6-bdab-fc6a19d93697/edit>) | [Canvas](<P6 Kontakte und Organisationen/WF-P6 Kontakte und Organisationen/WF-P6 Kontakte und Organisationen.canvas>) |
| M02 | Organisation anlegen | WF-P6 Kontakte und Organisationen | Entscheidungsdoku | Nicht bauen | Aus Subframe gelöscht 2026-08-29 | entfällt; S04 Anlagezustand | [MD](<P6 Kontakte und Organisationen/WF-P6 Kontakte und Organisationen/Screens/M02 Organisation anlegen.md>) | - | - |
| M02a | Organisation – Duplikatwarnung | WF-P6 Kontakte und Organisationen | Entscheidungsdialog | Bauen | Validiert 2026-08-29 | aus S04 Anlagezustand | [MD](<P6 Kontakte und Organisationen/WF-P6 Kontakte und Organisationen/Screens/M02a Organisation anlegen Duplikatwarnung.md>) | [Subframe](<https://app.subframe.com/f023064a5ca0/design/de4c91e1-3f45-49e8-b3c4-f3f830c50e74/edit>) | [Canvas](<P6 Kontakte und Organisationen/WF-P6 Kontakte und Organisationen/WF-P6 Kontakte und Organisationen.canvas>) |
| M04–M04c | Relations-Modals | WF-P6 Kontakte und Organisationen | Entscheidungsdoku | Nicht bauen | Aus Subframe gelöscht 2026-08-29 | S03/S04 inline | [MD](<P6 Kontakte und Organisationen/WF-P6 Kontakte und Organisationen/Screens/M04 Kontakt verknuepfen.md>) | - | [Canvas](<P6 Kontakte und Organisationen/WF-P6 Kontakte und Organisationen/WF-P6 Kontakte und Organisationen.canvas>) |
| M08 | Kontakt/Organisation archivieren | WF-P6 Kontakte und Organisationen | Bestätigungsdialog | Bauen | Validiert 2026-08-29 | aus S01–S04 | [MD](<P6 Kontakte und Organisationen/WF-P6 Kontakte und Organisationen/Screens/M08 Kontakt archivieren.md>) | [Subframe](<https://app.subframe.com/f023064a5ca0/design/a5efa71b-e485-4c76-80bf-8f3bb4c47de0/edit>) | [Canvas](<P6 Kontakte und Organisationen/WF-P6 Kontakte und Organisationen/WF-P6 Kontakte und Organisationen.canvas>) |
| S05 | Eigene Felder | WF-P6 Kontakte und Organisationen | Settings-Liste | Später | Backlog | `/admin/custom-fields` | [MD](<P6 Kontakte und Organisationen/WF-P6 Kontakte und Organisationen/Screens/S05 Eigene Felder.md>) | - | [Canvas](<P6 Kontakte und Organisationen/WF-P6 Kontakte und Organisationen/WF-P6 Kontakte und Organisationen.canvas>) |
| S06 | Tags-Verwaltung | WF-P6 Kontakte und Organisationen | Settings-Liste | Nicht bauen | Aus Hauptflow entfernt | — | [MD](<P6 Kontakte und Organisationen/WF-P6 Kontakte und Organisationen/Screens/S06 Tags.md>) | - | - |
| S07 | Duplikat-Tool | WF-P6 Kontakte und Organisationen | Settings-Liste | Später | Backlog | `/admin/duplicates` | [MD](<P6 Kontakte und Organisationen/WF-P6 Kontakte und Organisationen/Screens/S07 Duplikat-Tool.md>) | - | [Canvas](<P6 Kontakte und Organisationen/WF-P6 Kontakte und Organisationen/WF-P6 Kontakte und Organisationen.canvas>) |
| M03 | Zusammenfuehren (Seite an Seite) | WF-P6 Kontakte und Organisationen | Modal (gross) | Später | Backlog | aus S07 | [MD](<P6 Kontakte und Organisationen/WF-P6 Kontakte und Organisationen/Screens/M03 Zusammenfuehren.md>) | - | [Canvas](<P6 Kontakte und Organisationen/WF-P6 Kontakte und Organisationen/WF-P6 Kontakte und Organisationen.canvas>) |
| D01 | Inline-Anlegen in Liste (Notion-Stil) | WF-P6 Kontakte und Organisationen | Idee | Später | Dokumentiert | in S01 | [MD](<P6 Kontakte und Organisationen/WF-P6 Kontakte und Organisationen/WF-P6 Kontakte und Organisationen.md>) | - | - |
| S01 | Arbeitsliste | WF-P7 Leads | priorisierte Liste | Bauen | Fertig / Development-Handoff | Leads > Arbeitsliste | [MD](<P7 Leads/WF-P7 Leads/Screens/S01 Arbeitsliste.md>) | [Subframe](<https://app.subframe.com/f023064a5ca0/design/ae41c6ea-d1b0-4656-9a5c-55f64343962a/edit>) | [Canvas](<P7 Leads/WF-P7 Leads/WF-P7 Leads.canvas>) |
| M05 | Ansicht speichern | WF-P7 Leads | Modal | Bauen | Fertig / Development-Handoff | aus S02 Eingang | [MD](<P7 Leads/WF-P7 Leads/Screens/M05 Ansicht speichern.md>) | [Subframe](<https://app.subframe.com/f023064a5ca0/design/c011c64f-df15-42c2-b920-66f0ebea87fd/edit>) | [Canvas](<P7 Leads/WF-P7 Leads/WF-P7 Leads.canvas>) |
| S03 | Lead-Record | WF-P7 Leads | Detail | Bauen | Fertig / Development-Handoff | aus S01/S02 | [MD](<P7 Leads/WF-P7 Leads/Screens/S03 Lead-Record.md>) | [Subframe](<https://app.subframe.com/f023064a5ca0/design/6c173984-ea71-4d85-b53e-ebc397b3c821/edit>) | [Canvas](<P7 Leads/WF-P7 Leads/WF-P7 Leads.canvas>) |
@@ -446,11 +451,11 @@ Diese Datei ist der erste Ort, um zu sehen:
| WF-P5 Integrationen | Sync-Verlauf-Ort | Genommen | Verlauf und Lauf-Detail als eigene Seiten (kein Drawer-Muster). | Davids Entscheidung 2026-07-08 |
| WF-P5 Integrationen | Assistent-Varianten | Genommen | OAuth-Weg und API-Schluessel-Weg als eigene Frames. | Formular auto-generiert aus App-Schema |
| WF-P5 Integrationen | Kommende Apps als Teaser? | Offen | Zeigt der Katalog nicht verfuegbare Apps mit Schloss (analog Abo-Gating)? | David/Dev |
| WF-P6 Kontakte | Karteikarten-Grundgeruest | Genommen | Zweispalter + Reiter (links Stammdaten/Felder/Tags/Verknuepfungen, rechts Reiter Verlauf/Projekte/Aufgaben/Dateien/Notizen). | Muster-Vorlage fuer ALLE Detailseiten; nach Subframe-Bau als Standard festhalten (mit Freigabe) |
| WF-P6 Kontakte | Anlegen | Genommen | Modal mit Live-Duplikat-Warnung; nur Name Pflicht; danach oeffnet Karteikarte. | Validiert 2026-07-08 |
| WF-P6 Kontakte | Karteikarten-Grundgeruest | Genommen / final | S03 nutzt das Pipeline-native Dreispaltenmuster: Daten links, Adressen/Relationen mittig, Werkzeugbereich rechts; S04 übernimmt die Struktur mit Organisationsdaten. | Finaler MCP-Readback und Rendering 2026-08-29 |
| WF-P6 Kontakte | Anlegen | Genommen / final | Kein Modal: `Neue Person` öffnet S03, `Neue Organisation` S04 jeweils direkt im Anlagezustand. Der erste gültige Speichervorgang wechselt dieselbe Ansicht in den normalen Detailzustand. | David 2026-08-29; M01/M02 entfernt; Verantwortlich standardmäßig aktueller Nutzer, aber änder-/leerbar |
| WF-P6 Kontakte | Inline-Anlegen (Notion-Stil) | Spaeter | Plus in der Liste -> neue Zeile inline; leere Zeile loescht sich automatisch. | Davids Idee, dokumentiert; erstmal nicht bauen |
| WF-P6 Kontakte | Listen-Struktur | Genommen | Zwei getrennte Reiter (Kontakte = ALLE Personen inkl. Ansprechpartner mit sichtbarer Org+Rolle; Organisationen separat); nie gemischt. | Validiert 2026-07-08 |
| WF-P6 Kontakte | Anlege-Regeln + Hauptkontakt | Genommen | Privatperson ohne Kontaktart-Frage; Org auch ohne Person; genau EIN Hauptkontakt je Org, erste Person automatisch (umhaengbar); auch Privatpersonen koennen Sekundaerkontakte haben. | Validiert 2026-07-08 |
| WF-P6 Kontakte | Listen-Struktur | Genommen | Zwei getrennte Listen mit direktem Switch (Personen inkl. Ansprechpartner mit sichtbarer Org+Relation; Organisationen separat); nie gemischt. | Validiert; aktueller Subframe-Stand 2026-08-29 |
| WF-P6 Kontakte | Relationsregeln | Genommen / final | Organisationen und Personen erlauben je 0..n primäre und sekundäre Relationen; kein automatischer oder eindeutiger Hauptkontakt. Hinzufügen und Bearbeiten passiert direkt in S03/S04, M04–M04c entfallen. Die Relationsbezeichnung ist optional und blockiert die Auswahl nicht. | David 2026-08-29; Development-Handoff abgeschlossen |
| WF-P7 Leads | Aktueller Subframe-Bestand | Geltend / final | 20 Seiten aus `WF-P7 LeadListe`; Namen, UUIDs, Links und sichtbare JSX-Inhalte sind in Paket, Screen-Dateien und Canvas synchronisiert. | Finaler MCP-Abgleich 2026-08-20 |
| WF-P7 Leads | Eingang und Arbeitsliste | Geltend / final | S02 Karten/Liste triagiert neue Anfragen. `Übernehmen` weist der handelnden Person zu, `Zuweisen` einer gewählten Person; beide führen in S01. | Handoff-Logik 2026-08-20 |
| WF-P7 Leads | Deal oder Projekt | Finaler UI-Stand | Subframe zeigt `Qualifiziert zu Deal` und `In Deal umwandeln` auf festem Vertriebsboard. Die ältere Projekt-Konversion bleibt als Vertragsdelta dokumentiert, ist aber kein Screen-Handoff-Blocker. | Davids Finalisierungsanweisung 2026-08-20 |
+1 -1
View File
@@ -24,7 +24,7 @@
{"id":"e6d8c36a0f89d954","type":"text","text":"## Automationen: Übersicht & Verläufe\n**Ticket:** `D-P12` · **Status:** ✅ validiert / Development-Handoff\n**Wo:** `/automations`\n\n**Final:** Eigener Verwaltungs-Flow mit 5 Seiten: S01 Automation-Liste, S02 Lauf-Liste, S03 Lauf-Detail, M04 Vorlagen-Katalog und S06 Zugangsdaten. Zusammen mit den 39 Workflow-Engine-Seiten sind 44/44 aktuelle Seiten synchronisiert.\n\nDie 32 Konfigurationsdialoge bleiben einzeln dokumentiert.","x":3067,"y":3100,"width":460,"height":360,"color":"2"},
{"id":"8272764aa65537b0","type":"text","text":"## Lead-Eingang (Anfragen)\n**Ticket:** `D-P7` · **Status:** ✅ Development-Handoff\n**Quelle:** final 20/20 Seiten abgeglichen · S01 neue UUID · Subframe unverändert\n**Wo:** Eingang → Arbeitsliste → Lead-Record\n\n**Gebaut:** Karten-/Listen-Triage, priorisierte Arbeit, Record, Anlage/Dubletten, nächste Aktion, E-Mail und Dialer. M01 konvertiert final zu einem Deal.\n\n**Folgethemen:** ältere Projekt-Konversion, Freigabe/Zielwahl sowie Statistik, Quellen, Anti-Spam und CSV.","x":2007,"y":1040,"width":460,"height":360,"color":"5"},
{"id":"487ffd8c4ba06816","type":"file","file":"02 Wireframes/P7 Leads/WF-P7 Leads/WF-P7 Leads.canvas","x":2007,"y":1440,"width":460,"height":220},
{"id":"d9868dadb782f253","type":"text","text":"## Kontakte & Organisationen\n**Ticket:** `D-CRM` · **Status:** 🟡 vorgeplant (Screens validiert, Subframe offen)\n**Wo:** `/contacts`\n\n**Was drin ist:** Kontakt-Liste, Organisations-Liste, Kontakt-Detailseite (die Vorlage für ALLE Detailseiten), eigene Felder, Tags, Duplikate zusammenführen\n\n**So funktioniert's:** Ein Kontakt ist Privatperson oder Organisation und hat einen Status (Kontakt → Kunde → Bestandskunde). Auf der Detailseite sieht man alles: Projekte, Mails, Anrufe, Aufgaben, Dateien, Notizen.","x":3077,"y":1040,"width":460,"height":360,"color":"5"},
{"id":"d9868dadb782f253","type":"text","text":"## Kontakte & Organisationen\n**Ticket:** `D-CRM` · **Status:** ✅ Development-Handoff\n**Quelle:** Subframe · 13/13 Seiten gelesen und gerendert\n**Wo:** `/contacts`\n\n**Final:** getrennte Personen-/Organisationslisten, S03/S04 als Pipeline-native Karteikarten, sechs Werkzeugzustände, Duplikatentscheidungen und Archivierung. Anlage und Relationspflege passieren direkt in S03/S04.\n\n**Modell:** Status optional; Primär/Sekundär liegt an der Relation, 0..n je Bereich; Relationsbezeichnung optional. Backlog bleibt separat.","x":3077,"y":1040,"width":460,"height":360,"color":"4"},
{"id":"e7b3227af605e50f","type":"file","file":"02 Wireframes/P6 Kontakte und Organisationen/WF-P6 Kontakte und Organisationen/WF-P6 Kontakte und Organisationen.canvas","x":3077,"y":1440,"width":460,"height":220},
{"id":"e10a35560a461111","type":"text","text":"## Kanban-Board & Pipelines (Projekte)\n**Ticket:** `D-P8` + `D-KANBAN` · **Status:** 🟢 in Subframe, 23/23 Seiten abgeglichen (2026-07-28)\n**Wo:** Boards-Startseite + Board/Liste + Admin\n\n**Was drin ist:** S00 Board-Auswahl, S01 Kanban und S03 Liste mit Empty States, S02 Projekt-Detail, Board-/Verlustgrund-/Detailfeld-Verwaltung sowie alle Modals.\n\n**Für Development validiert:** S07 → S04 Board-Einstellungsdetail; S03 setzt den aktiven Pipeline-Namen ein; Karten-Rechtsklick öffnet M03; letzte Stage/finaler Status öffnet M04 automatisch. Details und direkte Screen-Links liegen im P8-Paket.","x":4037,"y":1040,"width":460,"height":360,"color":"4"},
{"id":"dffe68e69f10ce02","type":"file","file":"02 Wireframes/P8 Pipelines/WF-P8 Pipelines/WF-P8 Pipelines.canvas","x":4037,"y":1440,"width":460,"height":220},
+14 -13
View File
@@ -44,7 +44,7 @@ Gesamtkarte aller HiveGrid-v1-Features. Eine Karte = **ein Feature** (so benannt
| Dashboard (Startseite) | Suche & Dashboard | D-DASH (Teil) | 🔵 | ⬜ offen |
| Suche (Cmd+K) | Suche & Dashboard | D-DASH (Teil) | 🔴 klein | ⬜ offen |
| Lead-Eingang (Anfragen) | Vertrieb | D-P7 | 🔵 | ✅ Development-Handoff · Folgethemen dokumentiert |
| Kontakte & Organisationen | Vertrieb | D-CRM | 🔵 | 🟡 vorgeplant |
| Kontakte & Organisationen | Vertrieb | D-CRM | 🔵 | ✅ Development-Handoff |
| Kanban-Board & Pipelines (Projekte) | Vertrieb | D-P8 + D-KANBAN | 🟠 | 🟢 in Subframe, abgeglichen |
| Projekt-Akte (Auftrag) 📱 | Auftrag & Baustelle | D-P9 | 🟠 | 🟡 vorgeplant |
| Plantafel (Einsatzplanung) 📱 | Auftrag & Baustelle | D-PLAN | 🔴 | 🟡 vorgeplant |
@@ -205,18 +205,19 @@ Abhaken = in der groben Planung berücksichtigt (Screens/Flow verortet). Quelle:
- Folgethemen außerhalb dieses finalen Screen-Flows: Weiterverarbeitungsfreigabe/Zielwahl, Statistiken, Quellen-Verwaltung, Anti-Spam und CSV-Import.
- Paket: [WF-P7 Leads](<../02 Wireframes/P7 Leads/WF-P7 Leads/WF-P7 Leads.md>) · [Canvas](<../02 Wireframes/P7 Leads/WF-P7 Leads/WF-P7 Leads.canvas>) · [Ticket](<../Tickets/Fertige Tickets/D-P7 Leads.md>)
#### Kontakte & Organisationen — `D-CRM` — 🟡 vorgeplant (2026-07-08)
- [x] Kontakt-Liste (Filter, Mehrfach-Aktionen, CSV-Export)
- [x] Organisations-Liste (heißt »Organisation«, nicht »Unternehmen«)
- [x] Kontakt-Karteikarte = **Vorlage für alle Detailseiten** — validiertes Grundgerüst: Zweispalter + Reiter (links Stammdaten/Felder/Tags/Verknüpfungen, rechts Verlauf/Projekte/Aufgaben/Dateien/Notizen, Schnell-Aktionen im Kopf)
- [x] Organisations-Karteikarte (verknüpfte Kontakte mit Rolle, Hauptkontakt markiert)
- [x] Eigene Felder verwalten (je Datentyp, SHK-Vorlagen vorbefüllt)
- [x] Tags verwalten (Farbe, zusammenführen)
- [x] Duplikate nebeneinander vergleichen und Feld für Feld zusammenführen
- [x] Kontakt-Logik: Typ (Privatperson/Organisation) · Status (Kontakt/Kunde/Bestandskunde) · Rolle bei Verknüpfung
- [x] Duplikat-Warnung schon beim Anlegen (Anlegen als Modal, nur Name Pflicht)
- Davids Idee dokumentiert (Später): Inline-Anlegen in der Liste (Notion-Stil)
- Paket: `02 Wireframes/P6 Kontakte und Organisationen/WF-P6 Kontakte und Organisationen/` (Screens validiert; Subframe steht aus)
#### Kontakte & Organisationen — `D-CRM` — ✅ Development-Handoff (2026-08-29)
- [x] 13/13 Live-Seiten vollständig aus Subframe gelesen und gerendert
- [x] Getrennte Personen- und Organisationslisten mit direktem Switch, Filtern und Mehrfachaktionen
- [x] S03 als vollständige Personen-Karteikarte im Pipeline-nativen Dreispaltenmuster
- [x] S04 auf derselben Struktur mit Organisationsfeldern und 0..n primären/sekundären Ansprechpartnern
- [x] Sechs isolierte Werkzeugzustände für Projekte, Aufgaben, Dateien, Notizen, Verlauf und Aktivitäten
- [x] Anlage direkt in S03/S04; M01/M02 entfernt
- [x] Relationspflege inline; M04–M04c entfernt; Relationsbezeichnung optional und nur an der Relation
- [x] M01a/M02a als Duplikatentscheidung und M08 als dynamische Archivierungsreferenz
- [x] Wiederholbare E-Mails, Telefonnummern und Adressen mit Standardlogik
- [x] Statusmodell: kein Status, Interessent, Kunde, Bestandskunde, Ehemaliger Kunde
- Backlog separat: Eigene Felder, Duplikat-Tool/Zusammenführen und Inline-Anlegen in der Liste
- Paket: [WF-P6 Kontakte und Organisationen](<../02 Wireframes/P6 Kontakte und Organisationen/WF-P6 Kontakte und Organisationen/WF-P6 Kontakte und Organisationen.md>) · [Canvas](<../02 Wireframes/P6 Kontakte und Organisationen/WF-P6 Kontakte und Organisationen/WF-P6 Kontakte und Organisationen.canvas>) · [Ticket](<../Tickets/Fertige Tickets/D-CRM Kontakte und Organisationen.md>)
#### Kanban-Board & Pipelines (Projekte) — `D-P8` + `D-KANBAN` — 🟢 in Subframe, abgeglichen (2026-07-28)
- [x] 23 aktuelle Subframe-Seiten per MCP inklusive JSX inventarisiert und in Obsidian verlinkt
@@ -0,0 +1,141 @@
---
kind: ticket-handoff
project: HiveGrid Screen Project
ticket: D-CRM
area: Kontakte / Organisationen / Kontaktmodell
status: Fertig / Development-Handoff
repo: https://git.tool-ctrl.de/toolctrl-labs/HiveGrid-Wireframes
stand: 2026-08-29
---
# D-CRM Kontakte und Organisationen
Repo: https://git.tool-ctrl.de/toolctrl-labs/HiveGrid-Wireframes
Zentrale Tracker-Datei: [Screen Paket Tracker](../../02%20Wireframes/Screen%20Paket%20Tracker.md)
Flow-Paket: [WF-P6 Kontakte und Organisationen](../../02%20Wireframes/P6%20Kontakte%20und%20Organisationen/WF-P6%20Kontakte%20und%20Organisationen/WF-P6%20Kontakte%20und%20Organisationen.md)
Canvas: [WF-P6 Kontakte und Organisationen.canvas](../../02%20Wireframes/P6%20Kontakte%20und%20Organisationen/WF-P6%20Kontakte%20und%20Organisationen/WF-P6%20Kontakte%20und%20Organisationen.canvas)
Subframe: [WF-P6 Kontakte und Organisationen](https://app.subframe.com/f023064a5ca0/flow/68046dc7-bc93-4232-a0da-a406a8bd10b8/edit)
## Kurzfassung
Der Kontakte-/Organisationen-Flow ist als Development-Handoff abgeschlossen. Der finale Subframe-Flow enthält **13 Seiten**: zwei getrennte Listen, die Personen- und Organisations-Karteikarte, zwei Duplikatentscheidungen, einen Archivierungsdialog und sechs isolierte Zustände des rechten Werkzeugbereichs.
Alle 13 Seiten wurden am 2026-08-29 per MCP vollständig als JSX gelesen und anschließend frisch gerendert. Namen, UUIDs, Direktlinks, Kernkomponenten und sichtbare Inhalte stimmen mit Paket-MD, Screen-Dateien, Tracker und Canvas überein. S04 wurde aus der finalen S03-Struktur aufgebaut und in zwei eigenen QA-Durchgängen gegen die vollständige S03-Fehlerhistorie geprüft. Die frühere S03-Seite, die veraltete S04 und temporäre Reviewseiten sind aus Subframe entfernt.
Backlog-Bereiche bleiben bewusst außerhalb dieses Handoffs: Eigene Felder, Duplikat-Tool, Zusammenführen und Inline-Anlegen in der Liste.
## Gemacht
- Personen und Organisationen als getrennte, direkt umschaltbare Listen finalisiert.
- Dauerhafte Auswahl-Checkboxen und `BulkActionBar` in S01/S02 dokumentiert; keine eigene Auswahlseite.
- S03 als einzige vollständige Personen-Karteikarte im Pipeline-nativen Dreispaltenmuster finalisiert.
- S04 auf derselben Struktur mit Organisationsfeldern und getrennten primären/sekundären Ansprechpartnern aufgebaut.
- Sechs rechte Werkzeugzustände als isolierte Miniscreens für Projekte, Aufgaben, Dateien, Notizen, Verlauf und Aktivitäten validiert.
- Anlage direkt in S03/S04 verlegt; M01/M02 als Formulare entfernt.
- Relationspflege vollständig inline in S03/S04 verlegt; M04–M04c entfernt.
- M01a/M02a als kurze Duplikatentscheidungen und M08 als dynamischer Archivierungsdialog finalisiert.
- Wiederholbare E-Mails, Telefonnummern und Adressen inklusive Standardlogik und leeren Referenzzeilen festgelegt.
- Statusmodell, Verantwortlichen-Default, Relationsmodell, Suchlogik und Fehlerzustände als Development-Vertrag dokumentiert.
- P6-Paket, Screen-Dateien, Canvas, Tracker und dieser Ticket-Handoff synchronisiert.
## Finale Produktentscheidungen
- **Kontaktmodell:** `Kontakt` ist der technische Oberbegriff; im UI gibt es `Person` und `Organisation`. `Kontakt` ist kein Status.
- **Listen:** Personen und Organisationen werden nie gemischt, sind aber über einen kompakten Switch direkt erreichbar.
- **Anlage:** `Neue Person` öffnet S03, `Neue Organisation` S04 jeweils direkt mit leeren Feldern. Der erste gültige Speichervorgang legt den Datensatz an und lässt dieselbe Detailseite geöffnet.
- **Verantwortlich:** Bei Neuanlage ist der angemeldete Nutzer vorbelegt. Das Feld bleibt änderbar und kann geleert werden.
- **Status:** Kein Status ist zulässig. Weitere Werte sind `Interessent`, `Kunde`, `Bestandskunde` und `Ehemaliger Kunde`. Reine Ansprechpartner benötigen keinen Kundenstatus.
- **Bestandskunde:** Ein erfolgreich abgeschlossenes Projekt kann den Status automatisch setzen; manuelle Übersteuerung bleibt möglich. Ohne fachliches Ereignis erfolgt keine automatische Rückstufung.
- **Kontaktwege:** E-Mail-Adressen und Telefonnummern sind beliebig wiederholbar, besitzen frei beschreibbare Typen und genau einen Standardwert pro Kontaktweg.
- **Adressen:** Standard- und Rechnungsadresse sind vorbereitet; weitere benannte Adressen sind unbegrenzt möglich. Jeder Nicht-Standard-Block kann direkt zur Standardadresse gemacht werden.
- **Relationen:** Personen und Organisationen sind n:m verknüpfbar. Primär/Sekundär gehört ausschließlich zur konkreten Relation; beide Gruppen erlauben 0..n Einträge und dürfen leer sein.
- **Relationsbezeichnung:** Funktion/Beziehung ist optional, frei benennbar und liegt nur an der Relation. Sie blockiert die schnelle Auswahl nicht.
- **Inline-Pflege:** S03 verknüpft Organisationen ohne sichtbare Gruppenwahl über den Primärpfad und Personen nach einmaliger Primär-/Sekundärwahl. S04 fügt Personen direkt in der gewählten Ansprechpartnersektion hinzu.
- **Kein Suchtreffer:** `Neu anlegen` öffnet S03/S04 im Anlagezustand, behält den Relationskontext unsichtbar und wendet ihn nach dem ersten Speichern einmalig an.
- **Duplikate:** Beim ersten Speichern führt ein möglicher Treffer in M01a/M02a: bestehenden Datensatz öffnen oder bewusst trotzdem anlegen.
- **Archivieren:** M08 ist eine gemeinsame Referenz. Objektbegriff, Name und Buttontext werden für Person/Organisation dynamisch eingesetzt; Relationen, Projekte und Verlauf werden nicht gelöscht.
- **App-Shell:** Die Referenzscreens zeigen nur den eigentlichen Screen-Inhalt auf blanker Fläche. Globale Topbar und Sidebar werden nicht dupliziert.
## Hauptfluss
```text
S01 Personenliste <-> S02 Organisationenliste
| |
v v
S03 Person S04 Organisation
| |
+-> M01a Duplikat +-> M02a Duplikat
+-> M08 Archivieren +-> M08 Archivieren
S03/S04 rechter Werkzeugbereich:
S03a Projekte · S03b Aufgaben · S03c Dateien
S03d Notizen · S03e Verlauf · S03f Aktivitäten
```
## Vollständiges Subframe-Inventar
| ID | Live-Name | UUID | Repo | Subframe |
|---|---|---|---|---|
| S01 | S01 Kontakte-Liste | `82f7c7cb-18d2-4f3c-b374-15ca56e12635` | [MD](../../02%20Wireframes/P6%20Kontakte%20und%20Organisationen/WF-P6%20Kontakte%20und%20Organisationen/Screens/S01%20Kontakte-Liste.md) | [Subframe](https://app.subframe.com/f023064a5ca0/design/82f7c7cb-18d2-4f3c-b374-15ca56e12635/edit) |
| S02 | S02 Organisationen-Liste | `6d1512ab-898a-4931-976c-2622d8d4aff4` | [MD](../../02%20Wireframes/P6%20Kontakte%20und%20Organisationen/WF-P6%20Kontakte%20und%20Organisationen/Screens/S02%20Organisationen-Liste.md) | [Subframe](https://app.subframe.com/f023064a5ca0/design/6d1512ab-898a-4931-976c-2622d8d4aff4/edit) |
| S03 | S03 Review – Inline-Zeilen | `13a46cd7-44b6-4495-bad5-57eb1ffc978a` | [MD](../../02%20Wireframes/P6%20Kontakte%20und%20Organisationen/WF-P6%20Kontakte%20und%20Organisationen/Screens/S03%20Kontakt-Karteikarte.md) | [Subframe](https://app.subframe.com/f023064a5ca0/design/13a46cd7-44b6-4495-bad5-57eb1ffc978a/edit) |
| S04 | S04 Organisations-Karteikarte | `a6fe8461-1728-49c2-96c0-005cea90b547` | [MD](../../02%20Wireframes/P6%20Kontakte%20und%20Organisationen/WF-P6%20Kontakte%20und%20Organisationen/Screens/S04%20Organisations-Karteikarte.md) | [Subframe](https://app.subframe.com/f023064a5ca0/design/a6fe8461-1728-49c2-96c0-005cea90b547/edit) |
| M01a | M01a Kontakt anlegen – Duplikatwarnung | `38a86afc-5cfd-40a6-bdab-fc6a19d93697` | [MD](../../02%20Wireframes/P6%20Kontakte%20und%20Organisationen/WF-P6%20Kontakte%20und%20Organisationen/Screens/M01a%20Kontakt%20anlegen%20Duplikatwarnung.md) | [Subframe](https://app.subframe.com/f023064a5ca0/design/38a86afc-5cfd-40a6-bdab-fc6a19d93697/edit) |
| M02a | M02a Organisation anlegen – Duplikat erkannt | `de4c91e1-3f45-49e8-b3c4-f3f830c50e74` | [MD](../../02%20Wireframes/P6%20Kontakte%20und%20Organisationen/WF-P6%20Kontakte%20und%20Organisationen/Screens/M02a%20Organisation%20anlegen%20Duplikatwarnung.md) | [Subframe](https://app.subframe.com/f023064a5ca0/design/de4c91e1-3f45-49e8-b3c4-f3f830c50e74/edit) |
| M08 | M08 Kontakt archivieren | `a5efa71b-e485-4c76-80bf-8f3bb4c47de0` | [MD](../../02%20Wireframes/P6%20Kontakte%20und%20Organisationen/WF-P6%20Kontakte%20und%20Organisationen/Screens/M08%20Kontakt%20archivieren.md) | [Subframe](https://app.subframe.com/f023064a5ca0/design/a5efa71b-e485-4c76-80bf-8f3bb4c47de0/edit) |
| S03a | S03a Kontakt-Karteikarte - Projekte | `b4d311db-d9fb-430e-9cbc-438d639e1915` | [S03-Doku](../../02%20Wireframes/P6%20Kontakte%20und%20Organisationen/WF-P6%20Kontakte%20und%20Organisationen/Screens/S03%20Kontakt-Karteikarte.md) | [Subframe](https://app.subframe.com/f023064a5ca0/design/b4d311db-d9fb-430e-9cbc-438d639e1915/edit) |
| S03b | S03b Kontakt-Karteikarte - Aufgaben | `181aba66-b00e-4cb2-a560-d2160610040f` | [S03-Doku](../../02%20Wireframes/P6%20Kontakte%20und%20Organisationen/WF-P6%20Kontakte%20und%20Organisationen/Screens/S03%20Kontakt-Karteikarte.md) | [Subframe](https://app.subframe.com/f023064a5ca0/design/181aba66-b00e-4cb2-a560-d2160610040f/edit) |
| S03c | S03c Kontakt-Karteikarte - Dateien | `68974b3a-ab6c-4be8-a3b8-53c82fb89eb3` | [S03-Doku](../../02%20Wireframes/P6%20Kontakte%20und%20Organisationen/WF-P6%20Kontakte%20und%20Organisationen/Screens/S03%20Kontakt-Karteikarte.md) | [Subframe](https://app.subframe.com/f023064a5ca0/design/68974b3a-ab6c-4be8-a3b8-53c82fb89eb3/edit) |
| S03d | S03d Kontakt-Karteikarte - Notizen | `337b0721-9d27-4037-bb0d-59d066ed9769` | [S03-Doku](../../02%20Wireframes/P6%20Kontakte%20und%20Organisationen/WF-P6%20Kontakte%20und%20Organisationen/Screens/S03%20Kontakt-Karteikarte.md) | [Subframe](https://app.subframe.com/f023064a5ca0/design/337b0721-9d27-4037-bb0d-59d066ed9769/edit) |
| S03e | S03e Kontakt-Detail – Pipeline exakt | `ebf980fb-4569-45b0-b799-c76d2daff8e9` | [S03-Doku](../../02%20Wireframes/P6%20Kontakte%20und%20Organisationen/WF-P6%20Kontakte%20und%20Organisationen/Screens/S03%20Kontakt-Karteikarte.md) | [Subframe](https://app.subframe.com/f023064a5ca0/design/ebf980fb-4569-45b0-b799-c76d2daff8e9/edit) |
| S03f | S03f Kontakt-Detail – Pipeline editierbar | `6f1048f4-adaa-46ed-bd8c-6460ac3d43aa` | [S03-Doku](../../02%20Wireframes/P6%20Kontakte%20und%20Organisationen/WF-P6%20Kontakte%20und%20Organisationen/Screens/S03%20Kontakt-Karteikarte.md) | [Subframe](https://app.subframe.com/f023064a5ca0/design/6f1048f4-adaa-46ed-bd8c-6460ac3d43aa/edit) |
## Development-Hinweise
- Die exportierten `onClick`-Handler sind statische Platzhalter. Routing und Outcomes folgen dem Paket-MD, Canvas und den Screen-Dateien.
- S03 trägt im Live-Flow weiterhin den Namen `S03 Review – Inline-Zeilen`; diese Seite ist die kanonische S03-Referenz und keine zusätzliche Reviewvariante.
- S03a–S03f sind keine eigenen Routen. Sie dokumentieren ausschließlich den aktiven Zustand des rechten 340-px-Werkzeugbereichs.
- Die Kundennummer ist systemgeführt und read-only. `Kunde seit` ist ein eigener Geschäftswert.
- `KontaktArt` muss im Backend in Relationsgruppe (`primaer`/`sekundaer`) und optionale Funktion/Beziehung getrennt werden.
- `Kontakt.adresseId` muss durch eine mehrwertige Kontakt-Adress-Zuordnung mit Standard-/Rechnungskennzeichnung ersetzt werden.
- E-Mail-Adressen benötigen wie Telefonnummern einen beschreibbaren Typ und eine Standardmarkierung.
- Verantwortlich und Quelle sind durchsuchbare Single-Selects; Personenoptionen verwenden Avatar, Name und sekundäre Information.
- Bestehende Relationen dürfen beim Archivieren nicht gelöscht werden.
- Standard-Loading-, Fehler-, 404- und Permission-Muster werden wiederverwendet und benötigen keine zusätzlichen P6-Screens.
## Entfernt oder bewusst nicht im Hauptflow
- M01/M02: Anlageformulare entfallen; S03/S04 übernehmen den Anlagezustand.
- M04–M04c: Relationsmodale entfallen; Pflege erfolgt inline.
- S06/M06: eigene Tag-Verwaltung entfernt; Tags am Kontakt bleiben erhalten.
- S01a: Mehrfachauswahl in S01 integriert.
- Frühere S03- und S04-Seiten sowie temporäre Reviewseiten wurden aus Subframe entfernt. Wiederherstellung ist nur über die Subframe-Projektversionierung möglich.
## Separate Folgethemen
Diese Punkte blockieren den Handoff nicht:
- S05 Eigene Felder.
- S07 Duplikat-Tool und M03 Zusammenführen.
- D01 Inline-Anlegen direkt in der Liste.
- AirCall-Anbindung der Anruf-Schnellaktion mit D-P15; v1 verwendet `tel:`.
- Optional neutralere Bezeichnungen für Primär/Sekundär bei Person-Person-Verknüpfungen.
## Abschlussprüfung
- 13 Live-Seiten = 13 gelesene JSX-Dateien = 13 vollständige Renderings.
- Flow-ID, Seitennamen, UUIDs und Direktlinks sind eindeutig und synchron.
- S01/S02 enthalten Auswahl-Checkboxen und `BulkActionBar`.
- S03/S04 enthalten die erwarteten Daten-, Kontaktweg-, Adress-, Relations- und Werkzeugbereiche.
- M01a/M02a und M08 rendern als kompakte Dialogreferenzen.
- P6-Canvas ist JSON-valide; IDs sind eindeutig und alle 15 Kanten referenzieren vorhandene Nodes.
- Paket-MD, Screen-Dateien, Tracker, Canvas und Ticket-Handoff verwenden denselben finalen Status.
- Backlog-Dokumente wurden nicht in den Hauptflow gezogen.
## Hinweis für das Ticket-System
Diese Datei ist der kompakte fertige Handoff für `D-CRM`. Für die vollständige Detailwahrheit sind das [P6-Flow-Paket](../../02%20Wireframes/P6%20Kontakte%20und%20Organisationen/WF-P6%20Kontakte%20und%20Organisationen/WF-P6%20Kontakte%20und%20Organisationen.md), der [P6-Canvas](../../02%20Wireframes/P6%20Kontakte%20und%20Organisationen/WF-P6%20Kontakte%20und%20Organisationen/WF-P6%20Kontakte%20und%20Organisationen.canvas), die verknüpften Screen-Dateien und der [Screen Paket Tracker](../../02%20Wireframes/Screen%20Paket%20Tracker.md) maßgeblich.
+1
View File
@@ -21,6 +21,7 @@ Die Detailwahrheit bleibt in den Wireframe-Paketen und im `Screen Paket Tracker`
| D-P2 | [D-P2 Auth Wireframes](<Fertige Tickets/D-P2 Auth Wireframes.md>) |
| D-P3 (Benachrichtigungen) | [D-P3 Benachrichtigungen](<Fertige Tickets/D-P3 Benachrichtigungen.md>) |
| D-D0b | [D-D0b Layout Standards](<Fertige Tickets/D-D0b Layout Standards.md>) |
| D-CRM | [D-CRM Kontakte und Organisationen](<Fertige Tickets/D-CRM Kontakte und Organisationen.md>) |
| D-FORM | [D-FORM Form Builder](<Fertige Tickets/D-FORM Form Builder.md>) |
| D-P8 + D-KANBAN | [D-P8 Pipelines Wireframes](<Fertige Tickets/D-P8 Pipelines Wireframes.md>) |
| D-FLOW + D-P12 | [D-FLOW Workflow Engine](<Fertige Tickets/D-FLOW Workflow Engine.md>) |