diff --git a/.claude/skills/projekt-anlegen/SKILL.md b/.claude/skills/projekt-anlegen/SKILL.md index 649068a..35eda77 100644 --- a/.claude/skills/projekt-anlegen/SKILL.md +++ b/.claude/skills/projekt-anlegen/SKILL.md @@ -188,16 +188,18 @@ curl -s -G "$BASE/Contact" -H "X-Api-Key: $KEY" \ Bestehenden Kontakt → dessen `id` als CONTACT_ID merken. Sonst neu anlegen — Payload nach `/tmp/contact.json`; die **Verknüpfung zur Firma über `accountId` ist beim Neu-Anlegen zwingend**: ```json -{"firstName": "", "lastName": "", "accountId": "", "emailAddress": "", "phoneNumber": "", "description": ""} +{"firstName": "", "lastName": "", "accountId": "", "emailAddress": "", "phoneNumber": "", "title": ""} ``` **Alle in Schritt 1 gefundenen Kontaktdaten immer mitschreiben** — ein Kontakt ohne E-Mail und Telefon ist für den späteren Bewerbungsversand wertlos: - `emailAddress` — E-Mail-Adresse der Ansprechperson. - `phoneNumber` — Telefonnummer, in der Schreibweise der Signatur. -- `description` — **Position/Jobtitel** der Ansprechperson (z. B. „Principal Candidate Consultant"). Die Position gehört in das Feld **Beschreibung**, **nicht** in das Feld `title`: `title` ist im EspoCRM-Layout des Nutzers nicht eingeblendet und wäre dort unsichtbar. +- `title` — **Position/Jobtitel** der Ansprechperson (z. B. „Principal Candidate Consultant"). `title` ist beim Kontakt kein gewöhnliches Feld, sondern `notStorable` und bildet die **Rolle in der Verknüpfung Kontakt ↔ Firma** ab (`AccountContact.role`). Es hat deshalb keine eigene Zeile im Detail-Layout, wird aber **hinter dem Firmennamen angezeigt**. Das Setzen über `title` funktioniert und setzt `accountsColumns[].role`. Voraussetzung ist, dass `accountId` gesetzt ist. **Die Position nicht zusätzlich nach `description` schreiben** (Nutzer-Entscheidung 2026-08-03: sonst steht sie doppelt; `description` bleibt für echte Notizen frei). Felder, für die es keine Angabe gibt, einfach weglassen. Nichts erfinden. +Das Detail-Layout des Kontakts umfasst: Name und Firmen (mit Rolle), E-Mail und Telefon, Adresse, Beschreibung. Was dort nicht vorkommt, sieht der Nutzer im CRM nicht. + ```bash curl -s -i -X POST "$BASE/Contact" -H "X-Api-Key: $KEY" -H 'Content-Type: application/json' --data @/tmp/contact.json ``` @@ -245,4 +247,4 @@ Nach dem POST den Datensatz gegenlesen: curl -s -G "$BASE/Opportunity/" -H "X-Api-Key: $KEY" ``` -Prüfen: stimmen Name und Projektlink, hat die Beschreibung die Match-Zeile und alle Tabellenzeilen, sind ✅/❌/❔ intakt; sind die Verknüpfungen korrekt — Agentur: `cAccount1Name` gesetzt und `accountName` leer; Direktauftrag: `accountName` gesetzt; `contactsIds`/`contactId` enthält den Kontakt; am Kontakt selbst sind `emailAddress`, `phoneNumber` und `description` (Position) gesetzt, soweit die Ausschreibung sie hergab; `teamsNames` enthält das richtige Team (`DesTEngS` / `Arbeitnehmer` / `ANÜ`). Dann im Chat melden: gewählter Name (inkl. evtl. Duplikat-Suffix), beide Match-Zahlen, Firma und Kontakt (jeweils neu/bestehend), zugewiesenes Team und der Direktlink `https://crm.creature-go.com/#Opportunity/view/`. +Prüfen: stimmen Name und Projektlink, hat die Beschreibung die Match-Zeile und alle Tabellenzeilen, sind ✅/❌/❔ intakt; sind die Verknüpfungen korrekt — Agentur: `cAccount1Name` gesetzt und `accountName` leer; Direktauftrag: `accountName` gesetzt; `contactsIds`/`contactId` enthält den Kontakt; am Kontakt selbst sind `emailAddress`, `phoneNumber` und `title` (Position, erscheint hinter dem Firmennamen) gesetzt, soweit die Ausschreibung sie hergab; `teamsNames` enthält das richtige Team (`DesTEngS` / `Arbeitnehmer` / `ANÜ`). Dann im Chat melden: gewählter Name (inkl. evtl. Duplikat-Suffix), beide Match-Zahlen, Firma und Kontakt (jeweils neu/bestehend), zugewiesenes Team und der Direktlink `https://crm.creature-go.com/#Opportunity/view/`.