thread-master/backend/internal/model/copy_draft/domain/usecase/usecase.go

147 lines
3.9 KiB
Go
Raw Normal View History

2026-06-26 08:37:04 +00:00
package usecase
import (
"context"
)
type CopyDraftSummary struct {
ID string
PersonaID string
ContentPlanID string
CopyMissionID string
ScanPostID string
FormulaID string
DraftType string
SortOrder int
Text string
TopicTag string
Angle string
Hook string
Rationale string
ReferenceNotes string
Sources []string
AiScore int
FormulaScore int
BrandFitScore int
RiskScore int
SimilarityScore int
EngagementPotential int
FreshnessScore int
ReviewSuggestion string
Status string
PublishQueueID string
PublishedMediaID string
PublishedPermalink string
PublishedAt int64
CreateAt int64
2026-06-26 08:37:04 +00:00
}
type MarkPublishedRequest struct {
TenantID string
OwnerUID string
PersonaID string
DraftID string
MediaID string
Permalink string
}
type MarkScheduledRequest struct {
TenantID string
OwnerUID string
PersonaID string
DraftID string
QueueID string
}
2026-06-26 08:37:04 +00:00
type CreateRequest struct {
TenantID string
OwnerUID string
PersonaID string
ContentPlanID string
CopyMissionID string
ScanPostID string
FormulaID string
DraftType string
SortOrder int
Text string
TopicTag string
Angle string
Hook string
Rationale string
ReferenceNotes string
Sources []string
AiScore int
FormulaScore int
BrandFitScore int
RiskScore int
SimilarityScore int
EngagementPotential int
FreshnessScore int
ReviewSuggestion string
2026-06-26 08:37:04 +00:00
}
type CreateManyRequest struct {
TenantID string
OwnerUID string
PersonaID string
Drafts []CreateRequest
}
type CopyDraftPatch struct {
Text *string
TopicTag *string
Hook *string
Angle *string
Rationale *string
Status *string
2026-06-26 08:37:04 +00:00
}
type UpdateRequest struct {
TenantID string
OwnerUID string
PersonaID string
DraftID string
Patch CopyDraftPatch
}
type InboxListRequest struct {
TenantID string
OwnerUID string
PersonaID string
Status string
RangeStart int64
RangeEnd int64
Page int
PageSize int
}
type InboxListResult struct {
Items []CopyDraftSummary
Total int64
}
2026-06-28 08:28:42 +00:00
type DeleteMissionMatrixDraftsRequest struct {
TenantID string
OwnerUID string
PersonaID string
MissionID string
DraftIDs []string
}
2026-06-26 08:37:04 +00:00
type UseCase interface {
Create(ctx context.Context, req CreateRequest) (*CopyDraftSummary, error)
CreateMany(ctx context.Context, req CreateManyRequest) ([]CopyDraftSummary, error)
ReplaceMissionMatrix(ctx context.Context, tenantID, ownerUID, personaID, missionID string, drafts []CreateRequest) ([]CopyDraftSummary, error)
Get(ctx context.Context, tenantID, ownerUID, personaID, draftID string) (*CopyDraftSummary, error)
Update(ctx context.Context, req UpdateRequest) (*CopyDraftSummary, error)
MarkPublished(ctx context.Context, req MarkPublishedRequest) (*CopyDraftSummary, error)
MarkScheduled(ctx context.Context, req MarkScheduledRequest) (*CopyDraftSummary, error)
2026-06-26 08:37:04 +00:00
List(ctx context.Context, tenantID, ownerUID, personaID string, limit int) ([]CopyDraftSummary, error)
ListInbox(ctx context.Context, req InboxListRequest) (*InboxListResult, error)
PruneIdleDrafts(ctx context.Context, tenantID, ownerUID, personaID string, keep int) (int64, error)
2026-06-26 08:37:04 +00:00
ListByMission(ctx context.Context, tenantID, ownerUID, personaID, missionID string, limit int) ([]CopyDraftSummary, error)
2026-06-28 08:28:42 +00:00
Delete(ctx context.Context, tenantID, ownerUID, personaID, draftID string) error
DeleteMissionMatrixDrafts(ctx context.Context, req DeleteMissionMatrixDraftsRequest) (int, error)
2026-06-26 08:37:04 +00:00
ClearByMission(ctx context.Context, tenantID, ownerUID, personaID, missionID string) error
}