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

164 lines
5.3 KiB
Go

package usecase
import "context"
type TopicCandidateSummary struct {
ID string
PersonaID string
Name string
Source string
Category string
SeedQuery string
TrendReason string
TrendKeywords []string
HeatScore int
FitScore int
InteractionScore int
ExtendScore int
RiskScore int
FinalScore float64
RecommendedMissions []string
Status string
CreateAt int64
UpdateAt int64
}
type ContentPlanSummary struct {
ID string
PersonaID string
TopicCandidateID string
Topic string
Mission string
TargetAudience string
Angle string
OpeningType string
BodyType string
Emotion string
EndingType string
CtaType string
RiskLevel string
RequiresHumanReview bool
Avoid []string
SelectedKnowledge []string
Status string
CreateAt int64
UpdateAt int64
}
type FeedbackEventSummary struct {
ID string
PersonaID string
ContentPlanID string
DraftID string
Decision string
Note string
Snapshot string
CreateAt int64
}
type KnowledgeSourceSummary struct {
ID, PersonaID, SourceType, Title, Filename, ParsedStatus string
ChunkCount int
CreateAt int64
}
type KnowledgeChunkSummary struct {
ID, PersonaID, SourceID, Content, RiskLevel string
Topics, StyleTags []string
CreateAt int64
}
type FormulaPoolSummary struct {
ID, PersonaID, Type, Name, Pattern string
UseCases, Avoid []string
Weight int
CreateAt, UpdateAt int64
}
type KnowledgeSourceInput struct{ TenantID, OwnerUID, PersonaID, SourceType, Title, Filename, Content, ContentBase64 string }
type FormulaPoolInput struct {
TenantID, OwnerUID, PersonaID, Type, Name, Pattern string
UseCases, Avoid []string
Weight int
}
type TopicCandidateInput struct {
TenantID string
OwnerUID string
PersonaID string
Name string
Source string
Category string
SeedQuery string
TrendReason string
TrendKeywords []string
HeatScore int
FitScore int
InteractionScore int
ExtendScore int
RiskScore int
RecommendedMissions []string
}
type ContentPlanInput struct {
TenantID string
OwnerUID string
PersonaID string
TopicCandidateID string
Topic string
Mission string
TargetAudience string
Angle string
OpeningType string
BodyType string
Emotion string
EndingType string
CtaType string
RiskLevel string
RequiresHumanReview bool
Avoid []string
SelectedKnowledge []string
}
type ContentPlanPatch struct {
Topic *string
Mission *string
TargetAudience *string
Angle *string
OpeningType *string
BodyType *string
Emotion *string
EndingType *string
CtaType *string
RiskLevel *string
RequiresHumanReview *bool
Avoid []string
SelectedKnowledge []string
Status *string
}
type FeedbackEventInput struct {
TenantID string
OwnerUID string
PersonaID string
ContentPlanID string
DraftID string
Decision string
Note string
Snapshot string
}
type UseCase interface {
CreateTopicCandidate(ctx context.Context, req TopicCandidateInput) (*TopicCandidateSummary, error)
ListTopicCandidates(ctx context.Context, tenantID, ownerUID, personaID string, limit int) ([]TopicCandidateSummary, error)
CreateContentPlan(ctx context.Context, req ContentPlanInput) (*ContentPlanSummary, error)
UpdateContentPlan(ctx context.Context, tenantID, ownerUID, personaID, id string, patch ContentPlanPatch) (*ContentPlanSummary, error)
GetContentPlan(ctx context.Context, tenantID, ownerUID, personaID, id string) (*ContentPlanSummary, error)
ListContentPlans(ctx context.Context, tenantID, ownerUID, personaID string, limit int) ([]ContentPlanSummary, error)
CreateFeedbackEvent(ctx context.Context, req FeedbackEventInput) (*FeedbackEventSummary, error)
ListFeedbackEvents(ctx context.Context, tenantID, ownerUID, personaID string, limit int) ([]FeedbackEventSummary, error)
CreateKnowledgeSource(ctx context.Context, req KnowledgeSourceInput) (*KnowledgeSourceSummary, error)
ListKnowledgeSources(ctx context.Context, tenantID, ownerUID, personaID string, limit int) ([]KnowledgeSourceSummary, error)
ListKnowledgeChunks(ctx context.Context, tenantID, ownerUID, personaID string, limit int) ([]KnowledgeChunkSummary, error)
CreateFormulaPool(ctx context.Context, req FormulaPoolInput) (*FormulaPoolSummary, error)
ListFormulaPools(ctx context.Context, tenantID, ownerUID, personaID string, limit int) ([]FormulaPoolSummary, error)
}