Files
ai-workflow/inbox/internal/domain/humantask/humantask.go
T

48 lines
1.2 KiB
Go

package humantask
import "fmt"
type Status string
const (
StatusPending Status = "pending"
StatusAnswered Status = "answered"
StatusCancelled Status = "cancelled"
)
type Record struct {
ID string `json:"id"`
WorkspaceID string `json:"workspace_id"`
TopicID string `json:"topic_id"`
RoleName string `json:"role_name"`
PromptMessageID string `json:"prompt_message_id"`
Status Status `json:"status"`
AnsweredMessageID string `json:"answered_message_id,omitempty"`
CreatedAt string `json:"created_at"`
UpdatedAt string `json:"updated_at"`
}
func (r Record) Validate() error {
if r.WorkspaceID == "" {
return fmt.Errorf("workspace id is required")
}
if r.TopicID == "" {
return fmt.Errorf("topic id is required")
}
if r.RoleName == "" {
return fmt.Errorf("role name is required")
}
if r.PromptMessageID == "" {
return fmt.Errorf("prompt message id is required")
}
switch r.Status {
case StatusPending, StatusAnswered, StatusCancelled:
default:
return fmt.Errorf("invalid human task status %q", r.Status)
}
if r.Status == StatusAnswered && r.AnsweredMessageID == "" {
return fmt.Errorf("answered message id is required")
}
return nil
}