docs: land full parity tracking plan

This commit is contained in:
2026-06-06 08:31:13 +08:00
parent efceb22b4c
commit 32084f9f4c
+17 -3
View File
@@ -35,11 +35,23 @@ Hermes plan landing map:
| `.hermes/plans/2026-05-24-automation-macro-csat.md` | B8 CSAT, B9 automation/macro, P5.4/P5.5/P5.6/P5.12 durable automation/CSAT jobs, B12 enterprise smoke. | Future automation, macro, and CSAT gaps must be opened from fresh `reference/chatwoot` inspection or B12 smoke failures. |
| User-confirmed enterprise scope | Phase 4 enterprise feature completion, B7-B11, B12 enterprise smoke. | SSO/SAML/LDAP/OIDC stay excluded; no other paid-feature family may be silently dropped. |
Hermes task landing checklist:
| Source plan task family | Tracker owner | Current state | Follow-up trigger |
| --- | --- | --- | --- |
| Search config, engine interface, Meilisearch client, index settings, DB fallback | Phase 1, B6 | Review. Meilisearch-first engine, bootstrap/settings, no-live tests, release-mode DB fallback rejection, and `cmd/reindex_search` guard are represented here. | Reopen only from live Meilisearch gate failure, frontend search payload drift, or `reference/chatwoot` search behavior not covered by B6. |
| Search indexing for conversations, messages, contacts, companies, articles | P5.3, B4, B6 | Review. Service-layer indexing hooks, document builders, CRM search through Meilisearch, and entity/global payload shapes are tracked in the Commit Ledger. | Reopen when a model mutation path writes searchable data without indexing or when live smoke shows stale search results. |
| Automation rule CRUD, listener triggers, condition/action execution, external webhook/email actions | B9, P5.4 | Review. Rule payloads, trigger coverage, execution logs, retryable external actions, durable team email, and enterprise `add_sla` action are tracked. | Reopen from fresh reference evidence for unsupported action params, trigger events, or failed B12 automation smoke. |
| Macro CRUD and execute side effects | B9, P5.5 | Review. Macro serializers, permissions, action params, and display-ID conversation execution are tracked. | Reopen from macro frontend smoke failures or new reference action semantics. |
| CSAT account reports, public submit/update, resolved-conversation sends, downloads, channel templates | B8, P5.6 | Review. CSAT response/report payloads, public lock behavior, resolve-triggered survey send, CSV download, and queued channel templates are tracked. | Reopen from CSAT live smoke failures, provider-template status drift, or new reference survey settings. |
| Enterprise feature set excluding SSO/SAML/LDAP/OIDC | B7-B11, B12 | Review/Doing. SLA, audit, custom roles, limits/capacity, Captain/Copilot, CSAT, automation/macros, and assignment policies have explicit tracker rows. | Reopen or split only from reused frontend failures or current `reference/chatwoot` evidence. |
| Reused Chatwoot frontend verification | B12, Phase 7 | Review. API, browser, enterprise API, and enterprise browser smoke harnesses are checked in; live execution remains environment-dependent. | Run when PostgreSQL, Redis, Meilisearch, GoChat, Vite, and Chrome are available; every failure becomes a named slice. |
## Current Baseline
- Current tracking checkpoint: 2026-06-06 after this implementation checkpoint, prepared as `feat(help-center): expose public sitemap`.
- Latest implementation checkpoint: this checkpoint, prepared as `feat(help-center): expose public sitemap`.
- Latest documentation/tooling checkpoint: `docs: land parity execution tracker`; this document is now the active follow-up plan and supersedes `.hermes/plans/*`.
- Current tracking checkpoint: 2026-06-06 after docs checkpoint, prepared as `docs: land full parity tracking plan`.
- Latest implementation checkpoint: `efceb22 feat(help-center): expose public sitemap`.
- Latest documentation/tooling checkpoint: this checkpoint, prepared as `docs: land full parity tracking plan`; this document is now the active follow-up plan and supersedes `.hermes/plans/*`.
- Worktree status at this implementation checkpoint: P3.8/P6.6l public help-center sitemap drift is now implemented for Chatwoot `Public::Api::V1::PortalsController#sitemap`, `sitemap.xml.erb`, and `routes.rb:591`. GoChat registers `/hc/:slug/sitemap.xml`, resolves only non-archived portals by slug, emits sitemap XML for published portal articles only, uses the portal custom domain when configured, prefixes `https://` when the base URL has no protocol, and emits public article links plus ISO date `lastmod` entries. P6.6g public article lists, P6.6h public categories, P6.6i public portal show, P6.6j public portal search, P6.6k public article show/markdown/tracking, P3.5 company avatar form/pagination drift, P3.11 account integrations apps/hooks API, P3.10 account webhook API, P3.9 account agent-bot API, P6.8 contact outbound voice call, P3.7d enterprise help-center article translation, P6.5 inbox agent-bot member actions, P6 message retry parity, P6 conversation custom-attribute response parity, and P3.7a-P3.7c help-center payload parity remain in Review. The fresh placeholder audit found remaining `chatwootParityStub` routes only in webhook handler-not-injected fallbacks, not in the reused dashboard account/contact/conversation/message/inbox critical path. P3.6 custom filters/custom attribute definitions and label CRUD are already in Review. B11.1a-B11.3e Captain/Copilot slices remain in Review; B12.1/B12.2/B12.3 smoke harnesses remain in Review; P5 durable job work through P5.13b is in Review. Next active implementation slice is another Phase 6 placeholder burn-down item or a new Phase 2/3 drift slice from fresh reference/smoke evidence.
- `go test ./...` passes.
- Route dump succeeds with `TOTAL: 881` after adding the public help-center sitemap route.
@@ -195,6 +207,7 @@ This ledger records the committed parity checkpoints that future slices should b
| Commit | Scope | Verification summary | Follow-up state |
| --- | --- | --- | --- |
| `docs: land full parity tracking plan` | Documentation-only checkpoint requested before continuing implementation. It confirms the worktree was already clean at `efceb22`, makes the Hermes search and automation/macro/CSAT task families explicit in the master tracker, and records the current implementation baseline plus next executable checkpoints in one place. | `git diff --check`. No Go code changed and no route artifacts changed. | Continue Phase 2/3 drift audit, Phase 6 placeholder audit, or B12 live smoke from this tracker; `.hermes/plans/*` are source notes only. |
| `feat(help-center): expose public sitemap` | Advances P3.8/P6.6 public help-center parity by matching `Public::Api::V1::PortalsController#sitemap`, `sitemap.xml.erb`, and `routes.rb:591`. GoChat now registers `/hc/:slug/sitemap.xml`, resolves only non-archived portals by slug, emits sitemap XML for published portal articles only, uses custom domain URLs with Chatwoot-style `https://` prefixing when no protocol is present, and writes public article links plus ISO date `lastmod` values. | `go test ./internal/handler/api/v1 -run PortalHandler -count=1`; `go test ./internal/router -run Router -count=1`; `go test ./cmd/route_parity -count=1`; `go run ./cmd/dump_routes > docs/parity/gochat_routes.txt`; `go run ./cmd/route_parity`; `go test ./...`; `git diff --check`. Route dump is `TOTAL: 881`; tracked route parity is `333 exact, 0 method-compatible, 9 parameter-compatible, 0 missing out of 342`. | P3.8/P6.6l moves to Review for current public sitemap evidence; continue Phase 2/3 drift audit, Phase 6 placeholder audit, or B12 live smoke. |
| `feat(help-center): expose public article show` | Advances P3.8/P6.6 public help-center parity by matching `Public::Api::V1::Portals::ArticlesController#show/#show_markdown/#tracking_pixel`, the public article Jbuilder payload, and `routes.rb:598-601`. GoChat now registers the public article route, dispatches `.md` and `.png` suffixes through the same Gin-compatible article slug route, resolves only non-archived portals by slug, returns public article payloads by slug, serves raw markdown for published articles, rejects markdown for drafts, and increments published article views when serving the 1x1 tracking pixel. | `go test ./internal/handler/api/v1 -run ArticleHandler -count=1`; `go test ./internal/router -run Router -count=1`; `go test ./cmd/route_parity -count=1`; `go run ./cmd/dump_routes > docs/parity/gochat_routes.txt`; `go run ./cmd/route_parity`; `go test ./...`; `git diff --check`. Route dump is `TOTAL: 880`; tracked route parity is `332 exact, 0 method-compatible, 9 parameter-compatible, 0 missing out of 341`. | P3.8/P6.6k moves to Review for current public article show/markdown/tracking evidence; continue Phase 2/3 drift audit, Phase 6 placeholder audit, or B12 live smoke. |
| `feat(help-center): expose public portal search` | Advances P3.8/P6.6 public help-center parity by matching `Public::Api::V1::Portals::SearchController#index`, the public search-article Jbuilder partial, and `routes.rb:593`. GoChat now registers `/hc/:slug/:locale/search`, resolves only non-archived portals by slug, trims blank searches to empty results, restricts public search to published articles in the requested locale, uses the Chatwoot 10-result page size, and returns search article payloads with plain-text snippets plus `/hc/:slug/articles/:article_slug` links. | `go test ./internal/handler/api/v1 -run ArticleHandler -count=1`; `go test ./internal/router -run Router -count=1`; `go test ./cmd/route_parity -count=1`; `go run ./cmd/dump_routes > docs/parity/gochat_routes.txt`; `go run ./cmd/route_parity`; `go test ./...`; `git diff --check`. Route dump is `TOTAL: 879`; tracked route parity is `331 exact, 0 method-compatible, 7 parameter-compatible, 0 missing out of 338`. | P3.8/P6.6j moves to Review for current public portal search evidence; continue Phase 2/3 drift audit, Phase 6 placeholder audit, or B12 live smoke. |
@@ -2331,3 +2344,4 @@ Verification milestone gates:
- 2026-06-06: P3.8/P6.6j public portal search checkpoint prepared as `feat(help-center): expose public portal search`; audited Chatwoot public portal search controller, `_search_article.json.jbuilder`, and route `593`. GoChat now exposes `/hc/:slug/:locale/search`, trims query input, returns empty payloads for blank queries, filters results to published locale-scoped non-archived portal articles, paginates at 10 results, and returns public search article payloads with plain-text snippets and `/hc/:slug/articles/:article_slug` links. Focused article/router/route-parity tests, route dump/parity regeneration, full `go test ./...`, and `git diff --check` passed. Continue Phase 2/3 drift audit, Phase 6 placeholder audit, or B12 live smoke.
- 2026-06-06: P3.8/P6.6k public article checkpoint prepared as `feat(help-center): expose public article show`; audited Chatwoot public articles show/markdown/tracking controller actions, public article Jbuilder, and routes `598-601`. GoChat now exposes `/hc/:slug/articles/:article_slug`, handles `.md` and `.png` suffixes through a Gin-compatible dispatcher, returns public article payloads by slug, serves raw markdown for published articles, rejects draft markdown, and increments published article views when serving the tracking pixel. Focused article/router/route-parity tests, route dump/parity regeneration, full `go test ./...`, and `git diff --check` passed. Continue Phase 2/3 drift audit, Phase 6 placeholder audit, or B12 live smoke.
- 2026-06-06: P3.8/P6.6l public sitemap checkpoint prepared as `feat(help-center): expose public sitemap`; audited Chatwoot public portal sitemap action, `sitemap.xml.erb`, and route `591`. GoChat now exposes `/hc/:slug/sitemap.xml`, rejects archived portals, returns sitemap XML for published articles only, uses portal custom domains with `https://` prefixing when no protocol is present, and emits public article links plus ISO `lastmod` dates. Focused portal/router/route-parity tests, route dump/parity regeneration, full `go test ./...`, and `git diff --check` passed. Continue Phase 2/3 drift audit, Phase 6 placeholder audit, or B12 live smoke.
- 2026-06-06: Documentation checkpoint prepared as `docs: land full parity tracking plan`; worktree was clean at `efceb22 feat(help-center): expose public sitemap`, so this docs-only checkpoint lands the remaining Hermes task-family checklist directly into the master tracker. The plan now maps search, indexing, automation, macros, CSAT, enterprise paid features, and B12 reused-frontend smoke to concrete owner sections, current states, and reopen triggers. Verification for this docs-only checkpoint: `git diff --check`; continue Phase 2/3 drift audit, Phase 6 placeholder audit, or B12 live smoke.