feat(jobs): wire auto-triggering on revision_created and bom_changed events #107

Closed
opened 2026-02-15 10:54:36 +00:00 by forbes · 0 comments
Owner

Ref: docs/WORKERS.md §3, §4

The job definition system supports trigger types revision_created and bom_changed, and triggerJobs() exists in the codebase, but it is not wired to item lifecycle events.

Requirements

  • When a new revision is created (HandleCreateRevision), call triggerJobs("revision_created", item) to auto-create jobs for all enabled definitions matching that trigger type and filter
  • When BOM entries are added/updated/deleted (HandleAddBOMEntry, HandleUpdateBOMEntry, HandleDeleteBOMEntry), call triggerJobs("bom_changed", item) similarly
  • Filter matching: definition's trigger.filter (e.g., item_type: assembly) must be checked against the item before creating a job
  • Only trigger if the jobs module is enabled
  • Publish SSE job.created event for each auto-triggered job

Acceptance Criteria

  • Revision create triggers matching job definitions automatically
  • BOM change triggers matching job definitions automatically
  • Filter conditions are evaluated correctly (e.g., only assemblies)
  • No jobs created when jobs module is disabled
  • Tests for trigger wiring

Related: #103 (Redis backend is a future optimization)

**Ref:** docs/WORKERS.md §3, §4 The job definition system supports trigger types `revision_created` and `bom_changed`, and `triggerJobs()` exists in the codebase, but it is **not wired** to item lifecycle events. ## Requirements - When a new revision is created (`HandleCreateRevision`), call `triggerJobs("revision_created", item)` to auto-create jobs for all enabled definitions matching that trigger type and filter - When BOM entries are added/updated/deleted (`HandleAddBOMEntry`, `HandleUpdateBOMEntry`, `HandleDeleteBOMEntry`), call `triggerJobs("bom_changed", item)` similarly - Filter matching: definition's `trigger.filter` (e.g., `item_type: assembly`) must be checked against the item before creating a job - Only trigger if the jobs module is enabled - Publish SSE `job.created` event for each auto-triggered job ## Acceptance Criteria - [ ] Revision create triggers matching job definitions automatically - [ ] BOM change triggers matching job definitions automatically - [ ] Filter conditions are evaluated correctly (e.g., only assemblies) - [ ] No jobs created when jobs module is disabled - [ ] Tests for trigger wiring Related: #103 (Redis backend is a future optimization)
Sign in to join this conversation.
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: kindred/silo#107