Skip to content

feat(workertypes): centralize CategorizedSummaryVisitor interface and EventSummary DTO (#2622)#2633

Open
jcscottiii wants to merge 1 commit into
mainfrom
feat/all-saved-search-categorizer-interface
Open

feat(workertypes): centralize CategorizedSummaryVisitor interface and EventSummary DTO (#2622)#2633
jcscottiii wants to merge 1 commit into
mainfrom
feat/all-saved-search-categorizer-interface

Conversation

@jcscottiii

Copy link
Copy Markdown
Collaborator

Centralizes summary highlight categorization and filtering across notification channels using a Visitor pattern to eliminate divergent logic across delivery channels.

  • Introduces CategorizedSummaryVisitor interface and BaseSummaryVisitor engine in lib/workertypes.
  • Adds EventSummary.Categorize(triggers) and EventSummary.Accept(visitor, triggers) for double-dispatch processing and error propagation.
  • Exports Highlights, QueryErrors, and ResolvedQueryErrors fields on EventSummary, removing custom JSON marshaling boilerplate.
  • Documents optional pointer semantics for SummaryHighlight.Moved and SummaryHighlight.Split fields and includes the 5-part testing blueprint checklist in Godoc and skill documentation.
  • Adds unit tests for highlight filtering, category routing, visitor error handling, and summary serialization.

Fixes #2622 (PR 1/5)

CONV=f70d8c59-6f49-4a69-bb74-5643e908f5b1
TAG=agy

@jcscottiii
jcscottiii force-pushed the feat/all-saved-search-categorizer-interface branch 4 times, most recently from 77e657e to ee74103 Compare July 21, 2026 21:43
… EventSummary DTO (#2622)

Centralize summary highlight categorization and filtering across notification channels using a Visitor pattern. This ensures all delivery renderers (Email, Webhook, RSS) consume an identical, type-safe categorization contract via the visitor interface rather than maintaining potentially divergent filtering logic.

- Introduce CategorizedSummaryVisitor interface and BaseSummaryVisitor engine in lib/workertypes to replace ad-hoc categorization logic across delivery channels.
- Add EventSummary.Categorize(triggers) and EventSummary.Accept(visitor, triggers) for double-dispatch processing and error propagation.
- Export Highlights, QueryErrors, and ResolvedQueryErrors fields on EventSummary, removing custom JSON marshaling boilerplate.
- Add Godoc documentation explaining optional pointer semantics for SummaryHighlight.Moved and SummaryHighlight.Split fields.
- Add unit tests for highlight filtering, category routing, visitor error handling, and summary serialization.

CONV=f70d8c59-6f49-4a69-bb74-5643e908f5b1
TAG=agy
@jcscottiii
jcscottiii force-pushed the feat/all-saved-search-categorizer-interface branch from ee74103 to ad1d254 Compare July 22, 2026 14:01
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[ENHANCEMENT] Notification Pipeline Architecture: Category Renderer Visitor Pattern & Control-Plane Event Separation

1 participant