Gap
The PostJobAction JPA entity and repository exist, but:
- No
PostJobActionService — no business logic for managing or executing actions.
- No
PostJobActionController — no REST API endpoints to create, list, update, delete, or execute post-job actions.
- No execution trigger —
JobService does not invoke post-job actions on job completion or failure.
The three action types (WEBHOOK, EMAIL, SCRIPT) are defined as enums but have no implementation.
Affected files:
backend/src/main/kotlin/com/opendatamask/model/PostJobAction.kt
backend/src/main/kotlin/com/opendatamask/repository/PostJobActionRepository.kt
Required Work
- Create
PostJobActionService with CRUD operations and execution logic for each action type (WEBHOOK, EMAIL, SCRIPT).
- Create
PostJobActionController with endpoints scoped to workspaces (e.g. POST /api/workspaces/{id}/actions, GET, PUT, DELETE).
- Integrate execution into
JobService: after a job completes (or fails), query enabled PostJobAction entries for the workspace and execute them.
- Implement webhook HTTP call-out, email dispatch, and script execution.
- Add frontend views/components for managing post-job actions.
Gap
The
PostJobActionJPA entity and repository exist, but:PostJobActionService— no business logic for managing or executing actions.PostJobActionController— no REST API endpoints to create, list, update, delete, or execute post-job actions.JobServicedoes not invoke post-job actions on job completion or failure.The three action types (
WEBHOOK,EMAIL,SCRIPT) are defined as enums but have no implementation.Affected files:
backend/src/main/kotlin/com/opendatamask/model/PostJobAction.ktbackend/src/main/kotlin/com/opendatamask/repository/PostJobActionRepository.ktRequired Work
PostJobActionServicewith CRUD operations and execution logic for each action type (WEBHOOK,EMAIL,SCRIPT).PostJobActionControllerwith endpoints scoped to workspaces (e.g.POST /api/workspaces/{id}/actions,GET,PUT,DELETE).JobService: after a job completes (or fails), query enabledPostJobActionentries for the workspace and execute them.