feat(projekt-matching): auto-tag created opportunities, add German docs (S68)
Every opportunity created by the workflow now carries the CTag "Auto: Durch Suchagent-Treffer erstellt" (id 6a83292a186dce7b2), set via cTagsIds directly in the create POST. The tag id is resolved at runtime by name (EspoClient.ensure_ctag, same pattern as team_id; self-healing after a CRM rebuild); the read-back verification now also checks the tag. No backfill: existing opportunities and the saved "Via cowork-api erstellt" list filter are untouched. Live-verified end to end: synthetic trigger mail, opportunity 6a832b8f29cc86bdf created with cTagsNames containing the tag (test artifact removed afterwards). 65/65 pytest. Also adds the complete German technical documentation of the workflow (docs/projekt-matching-dokumentation.md, sections 1-13 + S68 appendix). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -47,6 +47,19 @@ def test_ensure_account_exact_match_and_create():
|
||||
assert payload == {"name": "Neue GmbH", "type": "Customer"}
|
||||
|
||||
|
||||
def test_ensure_ctag_find_and_create():
|
||||
hits = {"list": [{"id": "t1", "name": "Auto: Durch Suchagent-Treffer erstellt"}]}
|
||||
client = make_client([resp(body=hits)])
|
||||
assert client.ensure_ctag("Auto: Durch Suchagent-Treffer erstellt") == "t1"
|
||||
params = client.session.request.call_args.kwargs["params"]
|
||||
assert params["where[0][type]"] == "equals"
|
||||
assert params["where[0][attribute]"] == "name"
|
||||
client = make_client([resp(body={"list": []}), resp(body={"id": "t2"})])
|
||||
assert client.ensure_ctag("Auto: Durch Suchagent-Treffer erstellt") == "t2"
|
||||
payload = client.session.request.call_args.kwargs["json"]
|
||||
assert payload == {"name": "Auto: Durch Suchagent-Treffer erstellt"}
|
||||
|
||||
|
||||
def test_unique_opportunity_name_suffix():
|
||||
hits = {"list": [{"name": "Projekt X"}, {"name": "Projekt X (2)"}]}
|
||||
client = make_client([resp(body=hits)])
|
||||
|
||||
Reference in New Issue
Block a user