Some checks failed
CI/CD / test-sqlite (pull_request) Has been cancelled
CI/CD / build-and-deploy (pull_request) Has been cancelled
CI/CD / test-runners (pull_request) Has been skipped
CI/CD / test-frontend (pull_request) Has been cancelled
CI/CD / detect-changes (pull_request) Successful in 4s
CI/CD / test-go-pg (pull_request) Has been cancelled
CI/CD / e2e-smoke (pull_request) Has been cancelled
Public→team stage handoff with audience mismatch detection, enriched assignment API responses (workflow_name, stage_name, sla_breached), team inbox with claim/assign actions, assignment notifications, team middleware system-admin bypass fix, and SDK gap closure. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
62 lines
3.1 KiB
Go
62 lines
3.1 KiB
Go
package store
|
|
|
|
import (
|
|
"context"
|
|
"encoding/json"
|
|
|
|
"armature/models"
|
|
)
|
|
|
|
// WorkflowStore manages workflow definitions, stages, version snapshots,
|
|
// instances, and assignments.
|
|
type WorkflowStore interface {
|
|
// Workflow CRUD
|
|
Create(ctx context.Context, w *models.Workflow) error
|
|
GetByID(ctx context.Context, id string) (*models.Workflow, error)
|
|
GetBySlug(ctx context.Context, teamID *string, slug string) (*models.Workflow, error)
|
|
Update(ctx context.Context, id string, patch models.WorkflowPatch) error
|
|
Delete(ctx context.Context, id string) error
|
|
ListForTeam(ctx context.Context, teamID string) ([]models.Workflow, error)
|
|
ListGlobal(ctx context.Context) ([]models.Workflow, error)
|
|
|
|
// Stage CRUD
|
|
CreateStage(ctx context.Context, s *models.WorkflowStage) error
|
|
ListStages(ctx context.Context, workflowID string) ([]models.WorkflowStage, error)
|
|
UpdateStage(ctx context.Context, s *models.WorkflowStage) error
|
|
DeleteStage(ctx context.Context, id string) error
|
|
ReorderStages(ctx context.Context, workflowID string, orderedIDs []string) error
|
|
|
|
// Versioning
|
|
Publish(ctx context.Context, v *models.WorkflowVersion) error
|
|
GetVersion(ctx context.Context, workflowID string, versionNumber int) (*models.WorkflowVersion, error)
|
|
GetLatestVersion(ctx context.Context, workflowID string) (*models.WorkflowVersion, error)
|
|
|
|
// Instances
|
|
CreateInstance(ctx context.Context, inst *models.WorkflowInstance) error
|
|
GetInstance(ctx context.Context, id string) (*models.WorkflowInstance, error)
|
|
GetInstanceByToken(ctx context.Context, token string) (*models.WorkflowInstance, error)
|
|
UpdateInstance(ctx context.Context, inst *models.WorkflowInstance) error
|
|
ListInstances(ctx context.Context, workflowID string, status string, opts ListOptions) ([]models.WorkflowInstance, error)
|
|
AdvanceStage(ctx context.Context, id string, nextStage string, stageData json.RawMessage) error
|
|
CompleteInstance(ctx context.Context, id string) error
|
|
CancelInstance(ctx context.Context, id string) error
|
|
MarkInstanceStale(ctx context.Context, id string) error
|
|
ListActiveInstances(ctx context.Context) ([]models.WorkflowInstance, error)
|
|
ListInstancesByTeam(ctx context.Context, teamID string, status string, opts ListOptions) ([]models.WorkflowInstance, error)
|
|
|
|
// Assignments
|
|
CreateAssignment(ctx context.Context, a *models.WorkflowAssignment) error
|
|
ClaimAssignment(ctx context.Context, id string, userID string) error
|
|
UnclaimAssignment(ctx context.Context, id string) error
|
|
CompleteAssignment(ctx context.Context, id string, reviewData json.RawMessage) error
|
|
CancelAssignment(ctx context.Context, id string) error
|
|
ListAssignmentsByTeam(ctx context.Context, teamID string, status string) ([]models.WorkflowAssignment, error)
|
|
ListAssignmentsByInstance(ctx context.Context, instanceID string) ([]models.WorkflowAssignment, error)
|
|
ListAssignmentsByUser(ctx context.Context, userID string, status string) ([]models.WorkflowAssignment, error)
|
|
|
|
// Signoffs
|
|
CreateSignoff(ctx context.Context, s *models.WorkflowSignoff) error
|
|
ListSignoffs(ctx context.Context, instanceID, stage string) ([]models.WorkflowSignoff, error)
|
|
CountSignoffs(ctx context.Context, instanceID, stage, decision string) (int, error)
|
|
}
|