package queue import ( "context" "time" "git.ilapage.cn/OPC/chorus/internal/core/model" ) type Claim struct { Generation model.Generation LeaseToken string } type Repository interface { CreateIdempotent(ctx context.Context, generation *model.Generation, inputs []model.GenerationInput) (created bool, err error) ClaimNext(ctx context.Context, owner string, leaseDuration time.Duration) (*Claim, error) BeginProviderAttempt(ctx context.Context, generationID uint64, leaseToken string, routeMemberID, providerModelID uint64) (model.Attempt, bool, error) FinishProviderAttempt(ctx context.Context, generationID uint64, leaseToken string, attempt model.Attempt) (bool, error) Defer(ctx context.Context, generationID uint64, leaseToken string, availableAt time.Time) (bool, error) AssignProvider(ctx context.Context, generationID uint64, leaseToken string, providerModelID uint64) (bool, error) Succeed(ctx context.Context, generationID uint64, leaseToken string, outputs []model.GenerationOutput, attempt model.Attempt) (bool, error) Fail(ctx context.Context, generationID uint64, leaseToken string, code, message string, attempt model.Attempt) (bool, error) Inputs(ctx context.Context, generationID uint64) ([]model.GenerationInput, error) }