Repository navigation
Clarify SEO and GEO workflows and prevent implicit paid generation - #5
Merged
Merged
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.
Opening a search diagnosis page could previously regenerate a paid GEO report. Recommendation reads now return saved data only; a separate explicit generation command uses idempotency, a brand lock and the last-seen report timestamp to prevent duplicate spend.
This change also gives SEO diagnosis/actions direct navigation, keeps action filters in the URL, distinguishes connection and evidence-readiness states, explains search/GA data scope and comparison windows, localizes system-authored SEO evidence and outlines, and fixes mobile action controls. Evidence tables expose raw JSON only under technical details. Existing snapshots/actions are compatible; no database migration is needed. Public opportunity reads return
not-generatedwhen no saved report exists, reflected in OpenAPI and MCP wording.Validation: lint and lib/web/e2e type checks; production web build and bundle check; MVP regression (1,301 unit tests and 61 integrations), then 22 focused regressions including www normalization; 16 Storybook cases; disposable browser tests covering 320px controls, Chinese outline, action review/implementation, filter navigation and reload; 202 API requests/473 assertions, OpenAPI, worker and scheduling checks. Existing local workspace read-only checks passed with no Google refresh or paid generation. Details: docs/beat-geo/search-workflow-validation.md.