Files
aiops/backend/model/approval_workflow.go
2026-07-09 14:16:56 +08:00

69 lines
2.8 KiB
Go

package model
import "time"
// ApprovalWorkflow 审批流程定义
type ApprovalWorkflow struct {
ID uint `gorm:"primarykey" json:"id"`
Name string `gorm:"size:128;not null" json:"name"`
Description string `gorm:"size:500" json:"description"`
Category string `gorm:"size:32;default:resource" json:"category"` // resource, app, permission
IsDefault bool `gorm:"default:false" json:"is_default"`
IsActive bool `gorm:"default:true" json:"is_active"`
CreatedAt time.Time `json:"created_at"`
UpdatedAt time.Time `json:"updated_at"`
Steps []ApprovalWorkflowStep `gorm:"foreignKey:WorkflowID" json:"steps,omitempty"`
}
func (ApprovalWorkflow) TableName() string {
return "approval_workflows"
}
// ApprovalWorkflowStep 审批流程步骤
type ApprovalWorkflowStep struct {
ID uint `gorm:"primarykey" json:"id"`
WorkflowID uint `json:"workflow_id"`
StepNumber int `gorm:"not null" json:"step_number"`
Name string `gorm:"size:128;not null" json:"name"`
StepType string `gorm:"size:32;not null" json:"step_type"` // submit, audit, execute
ApproverIDs string `gorm:"type:text" json:"approver_ids"` // JSON array of user IDs
IsRequired bool `gorm:"default:true" json:"is_required"`
TimeoutHours int `gorm:"default:24" json:"timeout_hours"`
AutoApprove bool `gorm:"default:false" json:"auto_approve_on_timeout"`
CreatedAt time.Time `json:"created_at"`
UpdatedAt time.Time `json:"updated_at"`
}
func (ApprovalWorkflowStep) TableName() string {
return "approval_workflow_steps"
}
// CreateWorkflowRequest 创建审批流程请求
type CreateWorkflowRequest struct {
Name string `json:"name" binding:"required"`
Description string `json:"description"`
Category string `json:"category"`
Steps []CreateWorkflowStepReq `json:"steps"`
}
type CreateWorkflowStepReq struct {
StepNumber int `json:"step_number"`
Name string `json:"name" binding:"required"`
StepType string `json:"step_type" binding:"required,oneof=submit audit execute"`
ApproverIDs string `json:"approver_ids"`
IsRequired bool `json:"is_required"`
TimeoutHours int `json:"timeout_hours"`
AutoApproveTimeout bool `json:"auto_approve_on_timeout"`
}
// UpdateWorkflowRequest 更新审批流程请求
type UpdateWorkflowRequest struct {
Name *string `json:"name,omitempty"`
Description *string `json:"description,omitempty"`
Category *string `json:"category,omitempty"`
IsActive *bool `json:"is_active,omitempty"`
IsDefault *bool `json:"is_default,omitempty"`
Steps []CreateWorkflowStepReq `json:"steps,omitempty"`
}