- 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
26 lines
502 B
YAML
26 lines
502 B
YAML
workflow:
|
|
name: engineering-change
|
|
version: 1
|
|
description: "Standard engineering change order with peer review and manager approval"
|
|
|
|
states:
|
|
- draft
|
|
- pending
|
|
- approved
|
|
- rejected
|
|
|
|
gates:
|
|
- role: engineer
|
|
label: "Peer Review"
|
|
required: true
|
|
- role: manager
|
|
label: "Manager Approval"
|
|
required: true
|
|
- role: quality
|
|
label: "Quality Sign-off"
|
|
required: false
|
|
|
|
rules:
|
|
any_reject: rejected
|
|
all_required_approve: approved
|