Translate linkText for intsch-origin products on multibinding stores#560
Conversation
Documents the brainstorming outcome for distinguishing intsch from intelligent-search origin so linkText is translated on multibinding stores using the new PDP/PLP endpoints.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
intsch currently sends origin: 'intelligent-search' for compatibility; this change requires a paired PR on the intsch platform to switch it to 'intsch'. search-resolver does not stamp origin itself. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Add ProductOrigin type union ('intelligent-search' | 'intsch') to replace generic string type on SearchProduct.origin field. This enables stricter type checking for origin discrimination in resolver logic.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
…ores Distinguishes origin === 'intsch' from origin === 'intelligent-search' in the linkText resolver, passing ignoreIndexedTranslation to shouldTranslateToBinding so intsch-origin products (which never go through the Rewriter server-side, unlike intelligent-search-api) get their linkText translated to the binding locale via the rewriter client. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Widen the origin check in the productClusters resolver to recognize both 'intsch' and 'intelligent-search' as modern array-shaped origins. This ensures consistent handling of the array format across both modern data sources. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Widen the properties resolver's origin check to recognize both 'intsch' and 'intelligent-search' origins as having valid product.properties data, eliminating the fallback to allSpecifications-based construction. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
|
Hi! I'm VTEX IO CI/CD Bot and I'll be helping you to publish your app! 🤖 Please select which version do you want to release:
And then you just need to merge your PR when you are ready! There is no need to create a release commit/tag.
|
|
Beep boop 🤖 I noticed you didn't make any changes at the
In order to keep track, I'll create an issue if you decide now is not a good time
|
|
Paired platform-side change: vtex/intelligent-search#178 — changes |
|
Your PR has been merged! App is being published. 🚀 After the publishing process has been completed (check #vtex-io-releases) and doing A/B tests with the new version, you can deploy your release by running:
After that your app will be updated on all accounts. For more information on the deployment process check the docs. 📖 |
What problem is this solving?
TIS-707: on multibinding stores,
Product.linkTextis not translated to the shopper's binding locale when product data comes from theintschclient (used whenshouldUseNewPDPEndpoint/shouldUseNewPLPEndpointare on).Root cause:
intschcurrently sendsorigin: 'intelligent-search'(kept for compatibility with 5 other origin-gated fields), so thelinkTextresolver'sorigin === 'intelligent-search'check can't distinguish it from the legacyvtex.intelligent-search-apipath — which, unlikeintsch, already performs the Rewriter translation server-side.intschnever does that call, so itslinkTextwas silently left untranslated.This PR:
ProductOriginunion type ('intelligent-search' | 'intsch') forSearchProduct.origininstead of a barestring.linkTextresolver to route'intsch'-origin products through the existing binding-translation path (via the already-existing but previously unusedignoreIndexedTranslationparameter onshouldTranslateToBinding), while leaving'intelligent-search'behavior unchanged.clusterHighlights,productClusters,properties,specificationGroups,itemMetadata) to treat'intsch'the same as'intelligent-search', since they share the same modern data shape.This change is inert until a paired PR on the
intschplatform ships, changing its response to sendorigin: 'intsch'instead oforigin: 'intelligent-search'. Until then,origin === 'intsch'simply never matches in production — this PR is safe to merge and deploy independently ahead of that.Design doc:
specs/2026-07-10-linktext-intsch-origin-design.mdImplementation plan:
specs/plans/2026-07-10-linktext-intsch-origin.mdHow should this be manually tested?
Covered by unit tests in
node/resolvers/search/product.test.ts(mockingorigin: 'intsch'products ahead of the platform-side change). End-to-end manual testing on a multibinding store requires the pairedintschplatform PR to also be deployed first.Checklist/Reminders
README.md.CHANGELOG.md.Screenshots or example usage
Type of changes
Notes
Depends on a paired PR against the
intschplatform to change itsoriginvalue to'intsch'— see the design doc's "Cross-repo dependency" section.🤖 Generated with Claude Code