thread-master/old/backend/internal/model/publish_queue/domain/usecase/usecase.go

180 lines
4.1 KiB
Go
Raw Normal View History

package usecase
import "context"
type QueueItemSummary struct {
ID string
AccountID string
PersonaID string
CopyMissionID string
CopyDraftID string
Text string
2026-07-09 03:45:28 +00:00
ImageKey string
ImageKeys []string
TopicTag string
ScheduledAt int64
Status string
MediaID string
Permalink string
PublishedAt int64
ErrorMessage string
RetryCount int
LastAttemptAt int64
NextAttemptAt int64
MissedAt int64
PausedReason string
CreateAt int64
UpdateAt int64
}
type CreateRequest struct {
TenantID string
OwnerUID string
AccountID string
PersonaID string
CopyMissionID string
CopyDraftID string
Text string
2026-07-09 03:45:28 +00:00
ImageKey string
ImageKeys []string
TopicTag string
ScheduledAt int64
}
type UpdateRequest struct {
TenantID string
OwnerUID string
AccountID string
QueueID string
Text *string
2026-07-09 03:45:28 +00:00
ImageKey *string
ImageKeys *[]string
TopicTag *string
ScheduledAt *int64
}
type ListRequest struct {
TenantID string
OwnerUID string
AccountID string
Status string
Page int
PageSize int
}
type RangeRequest struct {
TenantID string
OwnerUID string
AccountID string
Status string
StartAt int64
EndAt int64
Page int
PageSize int
}
type ListResult struct {
Items []QueueItemSummary
Total int64
Page int
PageSize int
TotalPages int
}
type PublishHealthSummary struct {
PendingScheduled int64
FailedCount int64
Published7d int64
TotalLikes7d int
TotalReplies7d int
}
type PublishHealthCheckpoint struct {
Checkpoint string
LikeCount int
ReplyCount int
RepostCount int
QuoteCount int
Views int
CheckedAt int64
}
type PublishHealthItem struct {
MediaID string
Permalink string
Text string
PublishedAt int64
LikeCount int
ReplyCount int
RepostCount int
QuoteCount int
Views int
Shares int
Checkpoints []PublishHealthCheckpoint
}
type PublishHealthResult struct {
Summary PublishHealthSummary
Items []PublishHealthItem
Total int64
Page int
PageSize int
TotalPages int
}
type RecordPublishedRequest struct {
TenantID string
OwnerUID string
AccountID string
PersonaID string
CopyMissionID string
CopyDraftID string
Text string
2026-07-09 03:45:28 +00:00
ImageKey string
ImageKeys []string
TopicTag string
MediaID string
Permalink string
PublishedAt int64
}
type SlotInsight struct {
Weekday int
Time string
AvgLikes1h int
AvgReplies1h int
AvgLikes24h int
AvgReplies24h int
AvgLikes7d int
AvgReplies7d int
SampleSize int
Recommendation string
}
type Alert struct {
Type string
Severity string
Message string
QueueID string
AccountID string
CreateAt int64
}
type UseCase interface {
Create(ctx context.Context, req CreateRequest) (*QueueItemSummary, error)
RecordPublished(ctx context.Context, req RecordPublishedRequest) (*QueueItemSummary, error)
Get(ctx context.Context, tenantID, ownerUID, accountID, queueID string) (*QueueItemSummary, error)
ListByIDs(ctx context.Context, tenantID, ownerUID string, ids []string) ([]QueueItemSummary, error)
List(ctx context.Context, req ListRequest) (*ListResult, error)
ListRange(ctx context.Context, req RangeRequest) (*ListResult, error)
Update(ctx context.Context, req UpdateRequest) (*QueueItemSummary, error)
Cancel(ctx context.Context, tenantID, ownerUID, accountID, queueID string) (*QueueItemSummary, error)
Retry(ctx context.Context, tenantID, ownerUID, accountID, queueID string) (*QueueItemSummary, error)
Delete(ctx context.Context, tenantID, ownerUID, accountID, queueID string) error
DispatchDue(ctx context.Context, limit int) (int, error)
MarkMissed(ctx context.Context, graceNs int64, limit int) (int, error)
ListAlerts(ctx context.Context, tenantID, ownerUID, accountID string) ([]Alert, error)
ListSlotInsights(ctx context.Context, tenantID, ownerUID, accountID, timezone string) ([]SlotInsight, error)
ListPublishHealth(ctx context.Context, tenantID, ownerUID, accountID string, page, pageSize int) (*PublishHealthResult, error)
}