[EDU-17906] feat: implement Hybrid Search API integration#456
Open
barbara-celi wants to merge 53 commits into
Open
[EDU-17906] feat: implement Hybrid Search API integration#456barbara-celi wants to merge 53 commits into
barbara-celi wants to merge 53 commits into
Conversation
- Added a new API endpoint `/api/search` that proxies requests to the VTEX Docs Hybrid Search API. - Implemented query parameter handling, including validation and default limits. - Introduced caching for successful responses at the CDN edge. - Created a reusable Hybrid Search client for API interactions. - Added comprehensive unit tests for the API handler and client functionality. - Documented the setup and usage in a new `hybrid-search-setup.md` file.
✅ Deploy Preview for leafy-mooncake-7c2e5e ready!
To edit notification comments on pull requests, go to your Netlify project configuration. |
4 tasks
- Clarified the purpose of the `NEXT_PUBLIC_HYBRID_SEARCH_ENABLED` variable. - Added detailed steps for enabling hybrid search in local development and Netlify deployment. - Included a note about the need for a rebuild when using the `NEXT_PUBLIC_` prefix.
Contributor
|
O deploy preview ainda roda algolia. Notei que a flag No local aqui também roda algolia, mesmo depois de instalar a dependência da branch |
| /** | ||
| * Reusable client for the VTEX Docs Hybrid Search API. | ||
| * | ||
| * This module is intentionally framework-agnostic (no Next.js / React |
Contributor
There was a problem hiding this comment.
Acho que esse cliente deveria ser implementado no components. Mas o Cursor falou que isso pode abrir uma vulnerabilidade. Então acho que podemos estudar essa migração com mais calma durante o rollout.
O que acha @brunoamui ?
PedroAntunesCosta
requested changes
May 8, 2026
- Updated library config to support hybrid search via NEXT_PUBLIC_HYBRID_SEARCH_ENABLED - Configured settings for Algolia and hybrid search backends with API endpoints
… troubleshooting pages - Updated translation files to include new messages for results found. - Enhanced the respective pages to display the number of results found based on user filters.
- Modified the Search component to accept an itemsPerPage prop, setting it to 10. - Increased the default limit for hybrid search results from 10 to 50.
…n library config - Removed the itemsPerPage prop from the Search component. - Set the default itemsPerPage value to 10 in the library configuration for hybrid search.
Required so the Netlify deploy preview resolves the hybrid search adapter that libraryConfig.ts wires up.
Add an after:spec inter-spec settle (default 3s, env-overridable) so the Netlify preview's per-IP throttle window (B-5) decays between specs, and document the serial execution + spec ordering rationale in cypress.config.cjs.
Move the 20s timeout onto the single descendant selector that yields the count badge so the async-count assertion inherits the full retry window instead of .find()'s 5s default, fixing the beforeEach count-gate flake.
…3s (T-42) Wraps cy.visit with a cy.request gate that retries non-2xx (esp. B-5 preview 403s) and page-load timeouts with exponential backoff before visiting, so a cold/throttled doc page lands as a fast cache hit instead of failing. Replaces bare cy.visit across the 9 doc-page specs.
…t settle (T-47) Adds a configurable settle delay before each cy.visit inside visitWithRetry, gated by CYPRESS_PRE_VISIT_SETTLE_MS (default 1500ms, 0 disables). Widens the gap between the ~107 per-run page-load bursts to reduce per-IP request rate under Netlify's abuse heuristic (B-5).
…e-decay window (T-48) Increase INTER_SPEC_SETTLE_MS default from 3000 to 8000 in plugins/index.js so Netlify's per-IP throttle window (B-5) has more time to decay between spec starts. Still overridable via CYPRESS_INTER_SPEC_SETTLE_MS.
…efore() hooks (T-49) Replace visitWithRetry gate-cy.request+visit pair with cy.intercept capture: one origin hit per attempt instead of two, and visit-level 403/5xx now self-heal (closes the V-42 gap). Remove before() warmUp from the 6 specs whose paths the workflow pre-warm (T-44) already covers statically (locale-switching, search-locale, search-pagination, search-regression, search-results, search-doctype-filter). Keep dynamic in-spec warming for copy-for-llm and helpcenter-navigation-status (runtime-derived URLs).
…7e54532) feat/hybrid-search now includes main's TroubleshootingCard, ListingFilter, and related exports from v6.1.1, so the helpcenter build no longer fails with missing-export TypeScript errors after the main merge.
The homepage (/) redirects to /en/ with a 307. visitWithRetry was retrying on any non-2xx, causing locale-switching to fail with "returned HTTP 307 after 5 attempts". cy.visit follows redirects automatically — only 4xx/5xx need a retry.
The vitest runner fails to start on any test file that statically imports from 'vitest' in the current toolchain. Drop those imports and rely on the existing globals: true config so the suites boot and execute again.
Accept an optional doctype on the hybrid search client and the /api/search proxy, validate it against the fixed doctype allowlist, and forward it upstream only when valid. Absent or invalid values preserve the current unfiltered behavior; the response echoes doctype only when applied. Adds unit coverage for the validation and passthrough.
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.
What is the purpose of this pull request?
This PR implements a new
/api/searchendpoint in the Help Center that proxies requests to the VTEX Docs Hybrid Search API.The implementation includes:
/api/search) that validates input, handles errors, and applies CDN caching.hybrid-search-client.ts) designed to be shared between Help Center and Dev Portal.What problem is this solving?
EDU-17906 - Implement hybrid search: Help Center implementation
The Help Center currently relies entirely on Algolia for search. This implementation:
help-center).@vtexdocs/componentsand shared with the Dev Portal.How should this be manually tested?
@vtexdocs/componentspoints to the branch with hybrid search support. For this task, I'm working on thefeat/hybrid-searchbranch. Important: This change is only needed for testing until thevtexdocs/componentsPR merges to main. Revert this before committing your final changes.yarn installto fetch the updated components.yarn dev.Screenshots or example usage
Types of changes