projekt-anlegen: Angebotstyp bestimmen und CRM-Team setzen
Neuer Prozessschritt: Angebotstyp (Projekt / Arbeitnehmer-Angebot / ANUE) klassifizieren und daraus das Team der Verkaufschance ableiten - Projekt -> DesTEngS, Arbeitnehmer -> Arbeitnehmer, ANUE -> ANUE; bei Unklarheit nachfragen. Team-ID per Namens-Suche ermitteln (nie raten) und als teamsIds in den Opportunity-Payload aufnehmen; Review und Verifikation um Angebotstyp/Team erweitert. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -40,6 +40,12 @@ Daraus entnehmen:
|
||||
- **Projekt-URL**: die tatsächliche URL der Seite, falls vorhanden.
|
||||
- **Beschreibung und Aufgaben**: nur Kontext für die Bewertung, keine Tabellenzeilen.
|
||||
- **Anforderungen**: jede Anforderung einzeln, im Originalwortlaut (behutsam kürzen ist erlaubt, Bedeutung nie verändern). Rahmenbedingungen (Start, Einsatzort/Remote-Anteil, Auslastung, Laufzeit) zählen als Anforderungen der Kategorie Misc.
|
||||
- **Angebotstyp** (bestimmt das CRM-Team der Verkaufschance, siehe Schritt 7.0):
|
||||
- **Projekt** — Freiberufler-/Werkauftrag, ob über Agentur oder als Direktauftrag → Team `DesTEngS`.
|
||||
- **Arbeitnehmer-Angebot** — Fest-/Angestelltenverhältnis (Signale: „Festanstellung", „unbefristet", „Anstellung", „Gehalt", „Arbeitsvertrag") → Team `Arbeitnehmer`.
|
||||
- **Arbeitnehmerüberlassung (ANÜ)** — Personalüberlassung/Zeitarbeit (Signale: „Arbeitnehmerüberlassung", „ANÜ", „AÜG", „Überlassung") → Team `ANÜ`.
|
||||
- Nicht eindeutig zuordenbar → im Review nachfragen.
|
||||
- Der Käufer-Typ (Agentur/Direktauftrag) unten ist nur eine Unterscheidung **innerhalb** des Angebotstyps „Projekt".
|
||||
- **Käufer-Typ**: Agentur (Wiederverkäufer) ODER Endkunde (Direktauftrag).
|
||||
- Agentur-Signale: bekannte Personaldienstleister/Vermittler (Hays, GULP/Randstad, SThree/Computer Futures, Aristo …), Formulierungen wie „im Auftrag unseres Kunden", „für unseren Kunden", Vermittler-Kontext des Portals.
|
||||
- Nicht eindeutig bestimmbar → im Review nachfragen.
|
||||
@@ -132,12 +138,13 @@ Must-have-Match: 50 % · Nice-to-have-Match: 33 %
|
||||
Niemals ohne explizite Freigabe ins CRM schreiben. Im Chat zeigen:
|
||||
|
||||
1. Vorgesehener **Name** der Opportunity (= Projektname) und **Projektlink**.
|
||||
2. **Käufer-Typ** (Agentur/Direktauftrag) mit Kurzbegründung.
|
||||
3. **Firma:** Name und `type` (Reseller bei Agentur, Customer bei Direktauftrag); „neu anlegen" oder „bestehende nutzen: <Name/ID>". Bei ähnlichen, nicht identischen Treffern die Kandidatenliste zeigen und entscheiden lassen.
|
||||
4. **Kontakt:** Name; „neu anlegen" oder „bestehend nutzen: <Name/ID>".
|
||||
5. **Verknüpfungs-Zuordnung** der Verkaufschance (account vs. cAccount1, Kontakt).
|
||||
6. Den wörtlichen Beschreibungs-Markdown in einem Codeblock.
|
||||
7. Kurze Begründungen zu allen ❌- und ❔-Bewertungen (Must/Nice/Misc) außerhalb der Tabelle.
|
||||
2. **Angebotstyp** (Projekt / Arbeitnehmer-Angebot / ANÜ) und resultierendes **Team** (`DesTEngS` / `Arbeitnehmer` / `ANÜ`) mit Kurzbegründung.
|
||||
3. **Käufer-Typ** (Agentur/Direktauftrag) mit Kurzbegründung — nur bei Angebotstyp „Projekt".
|
||||
4. **Firma:** Name und `type` (Reseller bei Agentur, Customer bei Direktauftrag); „neu anlegen" oder „bestehende nutzen: <Name/ID>". Bei ähnlichen, nicht identischen Treffern die Kandidatenliste zeigen und entscheiden lassen.
|
||||
5. **Kontakt:** Name; „neu anlegen" oder „bestehend nutzen: <Name/ID>".
|
||||
6. **Verknüpfungs-Zuordnung** der Verkaufschance (account vs. cAccount1, Kontakt, Team).
|
||||
7. Den wörtlichen Beschreibungs-Markdown in einem Codeblock.
|
||||
8. Kurze Begründungen zu allen ❌- und ❔-Bewertungen (Must/Nice/Misc) außerhalb der Tabelle.
|
||||
|
||||
Korrekturen kommen als „Nr. X → ✅/❌/❔" oder als Korrektur zu Firma/Kontakt/Typ. Danach betroffene Matches neu berechnen und geänderte Werte nennen. Erst nach Freigabe weiter zu Schritt 7.
|
||||
|
||||
@@ -150,6 +157,19 @@ KEY=$(grep -oE '[0-9a-f]{32}' .secrets/espocrm-api.md | head -1)
|
||||
BASE=$(grep -oE 'https://[^ `]+/api/v1' .secrets/espocrm-api.md | head -1)
|
||||
```
|
||||
|
||||
### 7.0 Team-ID ermitteln (aus Angebotstyp)
|
||||
Team-Name aus dem Angebotstyp (Schritt 1): Projekt → `DesTEngS`, Arbeitnehmer-Angebot → `Arbeitnehmer`, ANÜ → `ANÜ`. ID per Namens-Suche holen:
|
||||
|
||||
```bash
|
||||
curl -s -G "$BASE/Team" -H "X-Api-Key: $KEY" \
|
||||
--data-urlencode 'where[0][type]=equals' \
|
||||
--data-urlencode 'where[0][attribute]=name' \
|
||||
--data-urlencode 'where[0][value]=<TEAM>' \
|
||||
--data-urlencode 'select=name' --data-urlencode 'maxSize=10'
|
||||
```
|
||||
|
||||
`id` aus dem Treffer als TEAM_ID merken. **Niemals eine Team-ID raten.** Kommt die Liste leer zurück oder fehlt der API-Rolle der Team-Zugriff (Lesen leer trotz `200`, `POST /Team` → `403 No create access`), nicht weiterschreiben, sondern im Chat melden: Der CRM-Benutzer `cowork-api` braucht Zugriff auf die Entität `Team` (mindestens Lesen + Team-Zuweisung auf Verkaufschancen), und die Teams `DesTEngS`, `Arbeitnehmer`, `ANÜ` müssen im CRM existieren. Erst dann lässt sich `teamsIds` setzen.
|
||||
|
||||
### 7.1 Firma (Account)
|
||||
Dedup-Suche mit einem Kern-Token des Namens (z. B. „Aristo"):
|
||||
|
||||
@@ -211,8 +231,10 @@ Payload nach `/tmp/opp.json`. Verknüpfungen je Käufer-Typ:
|
||||
- **Agentur:** `cAccount1Id` = ACCOUNT_ID („Über Agentur"); **kein** `accountId`.
|
||||
- **Direktauftrag:** `accountId` = ACCOUNT_ID; **kein** `cAccount1Id`.
|
||||
|
||||
Zusätzlich immer `teamsIds` = `["<TEAM_ID>"]` aus Schritt 7.0 (Angebotstyp-Team) setzen.
|
||||
|
||||
```json
|
||||
{"name": "<EINDEUTIGER_NAME>", "description": "<BESCHREIBUNG_MARKDOWN>", "cProjektlink": "<PROJEKT_URL>", "contactsIds": ["<CONTACT_ID>"], "cAccount1Id": "<ACCOUNT_ID — nur bei Agentur, sonst Feld weglassen und stattdessen accountId setzen>"}
|
||||
{"name": "<EINDEUTIGER_NAME>", "description": "<BESCHREIBUNG_MARKDOWN>", "cProjektlink": "<PROJEKT_URL>", "contactsIds": ["<CONTACT_ID>"], "teamsIds": ["<TEAM_ID>"], "cAccount1Id": "<ACCOUNT_ID — nur bei Agentur, sonst Feld weglassen und stattdessen accountId setzen>"}
|
||||
```
|
||||
|
||||
```bash
|
||||
@@ -229,4 +251,4 @@ Nach dem POST den Datensatz gegenlesen:
|
||||
curl -s -G "$BASE/Opportunity/<id>" -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. Dann im Chat melden: gewählter Name (inkl. evtl. Duplikat-Suffix), beide Match-Zahlen, Firma und Kontakt (jeweils neu/bestehend) und der Direktlink `https://crm.creature-go.com/#Opportunity/view/<id>`.
|
||||
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; `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/<id>`.
|
||||
|
||||
Reference in New Issue
Block a user