Add v0.5 webhook notification release tickets
This commit is contained in:
@@ -0,0 +1,67 @@
|
||||
# 03 Ticket Status Changed Trigger
|
||||
|
||||
Implementation guide: [Ticket Implementation Guide](../ticket-implementation-guide.md)
|
||||
|
||||
## Branch
|
||||
|
||||
`codex/v0.5-webhook-notification/03-ticket-status-changed-trigger`
|
||||
|
||||
Start this branch from `codex/v0.5-webhook-notification/02-project-notification-settings-ui`.
|
||||
|
||||
## Goal
|
||||
|
||||
Trigger notification deliveries when a ticket status actually changes.
|
||||
|
||||
## Requirements
|
||||
|
||||
- Add a `TicketStatusChanged` event or equivalent internal event object.
|
||||
- Emit the event from the existing ticket move action only when the ticket moves to a different status.
|
||||
- Do not emit the event for no-op moves where the destination status is already current.
|
||||
- Build a reusable event payload that includes:
|
||||
- project id, key, and name
|
||||
- ticket id, key, title, and absolute ticket URL
|
||||
- actor id and name when available
|
||||
- origin status id and label
|
||||
- destination status id and label
|
||||
- occurred timestamp
|
||||
- Add a listener or action that finds enabled project notification actions for `ticket_status_changed`.
|
||||
- Queue one delivery job per matching action.
|
||||
- Keep existing worklog behavior for status changes.
|
||||
|
||||
## Acceptance Criteria
|
||||
|
||||
- Moving a ticket to a new status queues delivery jobs for all enabled matching actions in the ticket project.
|
||||
- Disabled actions are ignored.
|
||||
- Actions from other projects are ignored.
|
||||
- No-op moves do not queue delivery jobs.
|
||||
- Ticket movement responses and worklog entries remain unchanged.
|
||||
|
||||
## Tests
|
||||
|
||||
- Ticket move feature tests asserting jobs are queued for enabled matching actions.
|
||||
- Tests asserting disabled, foreign-project, and wrong-event actions are ignored.
|
||||
- Test asserting no-op moves do not dispatch notifications.
|
||||
- Test asserting the event payload contains the expected ticket URL and status labels.
|
||||
|
||||
## Verification
|
||||
|
||||
- `vendor/bin/pint --dirty --format agent`
|
||||
- `php artisan test --compact tests/Feature/Projects tests/Feature/Notifications`
|
||||
- `php artisan test --compact tests/Feature/Api/TicketApiTest.php tests/Feature/Mcp`
|
||||
- `git diff --check`
|
||||
|
||||
## Commit And Push
|
||||
|
||||
- Commit only this ticket's changes.
|
||||
- Push with `git push origin codex/v0.5-webhook-notification/03-ticket-status-changed-trigger`.
|
||||
|
||||
## Out of Scope
|
||||
|
||||
- Actual webhook HTTP request execution
|
||||
- Actual Discord HTTP request execution
|
||||
- Delivery attempt UI
|
||||
- User bell notifications
|
||||
- Unread counters
|
||||
- Slack, Teams, email, or other channels
|
||||
- Incoming webhooks
|
||||
- API or MCP management endpoints
|
||||
Reference in New Issue
Block a user