Carry firma_slug on job offers, supplied by the ingesting client

The blacklist company slug now lives on the offers themselves. POST /joboffers
accepts firma_slug and stores it as supplied (deriving it from firma only when
omitted); it is persisted on jobangebote (schema + ALTER/backfill + index) and
returned in the Joboffer response. Blacklist matching prefers the client-supplied
slug over one derived from firma, so the indexing client controls the identity
used to block an offer. OpenAPI request/response schemas updated.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-07-06 22:42:41 +02:00
co-authored by Claude Opus 4.8
parent f935e00b53
commit 22f967c753
4 changed files with 28 additions and 5 deletions
+3 -1
View File
@@ -130,7 +130,9 @@ function offerSignature(offer) {
external_id: o.external_id != null && String(o.external_id).trim() !== ''
? String(o.external_id).trim() : null,
firma_norm: normText(o.firma),
firma_slug: firmaSlug(o.firma),
// Prefer a client-supplied slug (offers carry firma_slug); else derive it.
firma_slug: o.firma_slug != null && String(o.firma_slug).trim() !== ''
? String(o.firma_slug).trim() : firmaSlug(o.firma),
stelle_norm: normText(o.stelle),
ort_norm: normText(o.ort),
};