package usecase import "context" type PolicySummary struct { AccountID string Enabled bool MaxDailyPosts int MinIntervalMinutes int ConsecutiveFailurePauseLimit int Paused bool PausedReason string UpdateAt int64 } type UpsertRequest struct { TenantID string OwnerUID string AccountID string Enabled bool MaxDailyPosts int MinIntervalMinutes int ConsecutiveFailurePauseLimit int Paused *bool PausedReason string } type CheckRequest struct { TenantID string OwnerUID string AccountID string Now int64 PublishedToday int64 LastPublishedAt int64 FailureStreak int } type CheckResult struct { Allowed bool DelayUntil int64 Reason string ShouldPause bool } type UseCase interface { Get(ctx context.Context, tenantID, ownerUID, accountID string) (*PolicySummary, error) Upsert(ctx context.Context, req UpsertRequest) (*PolicySummary, error) Resume(ctx context.Context, tenantID, ownerUID, accountID string) (*PolicySummary, error) Check(ctx context.Context, req CheckRequest) (*CheckResult, error) Pause(ctx context.Context, tenantID, ownerUID, accountID, reason string) (*PolicySummary, error) }