Add ResolveDocTaskDuty, require the system policy on save/preview, lock the policy row during activation, and derive A/A/A assignments. Co-authored-by: Cursor <cursoragent@cursor.com>
51 lines
2.4 KiB
Go
51 lines
2.4 KiB
Go
package projectinstance
|
|
|
|
import (
|
|
"errors"
|
|
|
|
"chat-agent-system/internal/workflowdef"
|
|
)
|
|
|
|
var (
|
|
ErrNotAvailable = errors.New("project instance store not available")
|
|
ErrProjectNotFound = errors.New("project not found")
|
|
ErrForbiddenNotCreator = errors.New("forbidden: only project creator can configure workflow")
|
|
ErrPlanFrozen = errors.New("plan frozen: workflow already active")
|
|
ErrWorkflowAlreadyActive = errors.New("workflow already active for project")
|
|
ErrPlanChangedReconfirm = errors.New("plan changed: reconfirm required")
|
|
ErrInvalidPlan = errors.New("invalid workflow plan")
|
|
ErrValidationFailed = errors.New("workflow plan validation failed")
|
|
ErrTokenInvalid = errors.New("activation token invalid or expired")
|
|
ErrConcurrentConflict = errors.New("conflict: project version mismatch")
|
|
ErrPlanRevisionConflict = errors.New("conflict: plan revision mismatch")
|
|
ErrWorkflowVersionNotFound = errors.New("workflow version not found or not published")
|
|
ErrLegacySwitchBlocked = errors.New("legacy workflow switch blocked: use project settings activation")
|
|
ErrInstanceNotFound = errors.New("workflow instance not found")
|
|
ErrStageGateNotReady = errors.New("stage gate not ready: required documents not approved")
|
|
ErrStageNotActive = errors.New("stage is not the active stage")
|
|
ErrInvalidStage = errors.New("invalid stage key for instance")
|
|
ErrInstanceRevisionConflict = errors.New("conflict: instance config revision mismatch")
|
|
ErrEmptyWorkflow = errors.New("empty workflow: at least one enabled document required to activate")
|
|
ErrTerminationNotAllowed = errors.New("termination not allowed for instance state")
|
|
ErrAuthorOnlyPolicyDisabled = errors.New("author-only approval policy disabled")
|
|
ErrAuthorOnlyPolicyUnavailable = errors.New("author-only approval policy store unavailable")
|
|
ErrAuthorOnlyPolicyChanged = errors.New("author-only approval policy changed since preview")
|
|
)
|
|
|
|
// ValidationError 保留具体校验问题,供 HTTP 层返回可操作的错误信息。
|
|
type ValidationError struct {
|
|
Issues []workflowdef.ValidationIssue
|
|
}
|
|
|
|
func (e *ValidationError) Error() string {
|
|
return ErrValidationFailed.Error()
|
|
}
|
|
|
|
func (e *ValidationError) Unwrap() error {
|
|
return ErrValidationFailed
|
|
}
|
|
|
|
func newValidationError(result workflowdef.ValidationResult) error {
|
|
return &ValidationError{Issues: result.Issues}
|
|
}
|