feat(api): approvals + ECO workflow API with YAML-configurable workflows
- Add internal/workflow/ package for YAML workflow definitions (Load, LoadAll, Validate)
- Add internal/db/item_approvals.go repository (Create, AddSignature, GetWithSignatures, ListByItemWithSignatures, UpdateState, UpdateSignature)
- Add internal/api/approval_handlers.go with 4 endpoints:
- GET /{partNumber}/approvals (list approvals with signatures)
- POST /{partNumber}/approvals (create ECO with workflow + signers)
- POST /{partNumber}/approvals/{id}/sign (approve or reject)
- GET /workflows (list available workflow definitions)
- Rule-driven state transitions: any_reject and all_required_approve
- Pack approvals into silo/approvals.json on .kc checkout
- Add WorkflowsConfig to config, load workflows at startup
- Migration 019: add workflow_name column to item_approvals
- Example workflows: engineering-change.yaml, quick-review.yaml
- 7 workflow tests, all passing
Closes #145
This commit is contained in:
19
workflows/quick-review.yaml
Normal file
19
workflows/quick-review.yaml
Normal file
@@ -0,0 +1,19 @@
|
||||
workflow:
|
||||
name: quick-review
|
||||
version: 1
|
||||
description: "Single reviewer approval for minor changes"
|
||||
|
||||
states:
|
||||
- draft
|
||||
- pending
|
||||
- approved
|
||||
- rejected
|
||||
|
||||
gates:
|
||||
- role: reviewer
|
||||
label: "Review"
|
||||
required: true
|
||||
|
||||
rules:
|
||||
any_reject: rejected
|
||||
all_required_approve: approved
|
||||
Reference in New Issue
Block a user