Promote tracker patterns to org third parties via worker

Manual moves of a non-extension TrackerPattern lacking a ThirdPartyID
now request mapping, which the tracker-mapping worker resolves with a
four-stage pipeline: exact common_third_party_id link, heuristic
ranking, agent disambiguation, and finally CreateFromCommon. Existing
fuzzy-matched org rows are tagged with common_third_party_id so the
next promotion takes the O(1) exact-link path.

The matching primitives live in pkg/thirdparty (RankCandidates,
LinkToCommon, CreateFromCommon, ScoredCandidate, threshold constants)
so the disambiguation agent and the heuristic share one candidate
type. Cookiebanner orchestrates them; cookie-banner-specific concerns
(pattern -> common-pattern -> common-party navigation, the EXTENSION
gate, and structured logs) stay in the worker.

Signed-off-by: Émile Ré <emile@probo.com>
This commit is contained in:
Émile Ré
2026-05-28 17:20:36 +02:00
parent 33ddba9770
commit a99a4dde14
12 changed files with 1491 additions and 94 deletions

View File

@@ -645,6 +645,7 @@ func (v *ThirdParty) Update(
q := `
UPDATE third_parties
SET
common_third_party_id = @common_third_party_id,
name = @name,
description = @description,
category = @category,
@@ -675,6 +676,7 @@ WHERE %s
args := pgx.StrictNamedArgs{
"third_party_id": v.ID,
"updated_at": time.Now(),
"common_third_party_id": v.CommonThirdPartyID,
"name": v.Name,
"description": v.Description,
"category": v.Category,