Skip to content

feat: add queue timeout and wire event-driven categorization#7

Merged
shepherdwind merged 1 commit into
mainfrom
feat/006-event-driven-categorization
Apr 5, 2026
Merged

feat: add queue timeout and wire event-driven categorization#7
shepherdwind merged 1 commit into
mainfrom
feat/006-event-driven-categorization

Conversation

@shepherdwind

Copy link
Copy Markdown
Owner

Background

Task 006 (final task) of the grammY migration plan. Wire the event-driven categorization flow and add queue timeout to prevent permanent blocking.

Approach

The event → notification → conversation wiring was mostly done in Task 005. This task adds the missing timeout mechanism and fixes edge cases around late task completions.

Changes

  • message-queue.service.ts — add 30-minute task timeout with auto-completion, guard against late completions, clean up merchant registry on timeout
  • telegram.adapter.ts — add removePendingMerchantByMerchantId() for timeout cleanup path

Testing

39 tests pass (7 suites).

Code Review

  • Review tool: Codex
  • Rounds: 3 (max)
  • Issues fixed: (1) guard completeTask against late completions from timed-out tasks (P1), (2) clean up merchant registry on timeout to invalidate stale buttons (P2), (3) use merchantId-based cleanup instead of shortId (P2)

- Add 30-minute timeout to MessageQueueService to prevent permanent
  queue blocking when users ignore categorization notifications
- Clean up pending merchant registry on timeout to invalidate
  stale Telegram inline buttons
- Guard completeTask() against late completions from timed-out tasks
- Add removePendingMerchantByMerchantId() for timeout cleanup path

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@shepherdwind shepherdwind merged commit 3c54a9a into main Apr 5, 2026
3 checks passed
@shepherdwind shepherdwind deleted the feat/006-event-driven-categorization branch April 5, 2026 00:21
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.

1 participant