IntentIQ Identity module: server-side identity resolution#4548
Open
Bengo7918 wants to merge 1 commit into
Open
IntentIQ Identity module: server-side identity resolution#4548Bengo7918 wants to merge 1 commit into
Bengo7918 wants to merge 1 commit into
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
🔧 Type of changes
✨ What's the context?
Adds the
intentiq-identitymodule — a server-side identity-resolution hook. At theprocessed-auction-requeststage it calls the IntentIQ Bid Enhancement S2S API and merges theresolved IDs into
user.eidsbefore the request is sent to bidders. Optionally, at theauction-responsestage it reports winning bids as impressions to a reporting endpoint.The module includes an optional two-layer cache (Caffeine L1 + a pluggable
IdentityStoreL2,Redis by default) with multi-key alias caching, negative caching, and in-progress dedup, plus
per-module custom metrics. Configuration and behavior are documented in the module README.
🧠 Rationale behind the change
Publishers using IntentIQ want server-side ID enrichment without shipping/licensing device
detection to the client. Implemented as a standard PBS module using the hooks framework (no direct
HTTP; uses the framework HttpClient). The L2 store is
@ConditionalOnMissingBean, so partners canswap Redis for their own backend or disable caching entirely. Device detection stays fully
server-side. Trade-off: winning bids are reported server-side rather than as true client renders.
🧪 Test plan
Unit-tested across the module (120 tests) covering the resolution hook, response/impression hook,
caching (L1/L2, negative, in-progress, alias back-fill), TTL policy, metrics, Redis store/stats,
and Spring config. JaCoCo: 97% instruction coverage, no class below 90%. Verified locally with
mvn -f extra/pom.xml -pl modules/intentiq-identity clean test checkstyle:check— all green,0 checkstyle violations. Also smoke-tested the bundle per the README "Running the demo" steps.
🏎Quality check