package entity const ( TopicCandidateCollectionName = "topic_candidates" ContentPlanCollectionName = "content_plans" FeedbackEventCollectionName = "feedback_events" KnowledgeSourceCollectionName = "knowledge_sources" KnowledgeChunkCollectionName = "knowledge_chunks" FormulaPoolCollectionName = "formula_pools" ) type TopicCandidate struct { ID string `bson:"_id"` TenantID string `bson:"tenant_id"` OwnerUID string `bson:"owner_uid"` PersonaID string `bson:"persona_id"` Name string `bson:"name"` Source string `bson:"source,omitempty"` Category string `bson:"category,omitempty"` SeedQuery string `bson:"seed_query,omitempty"` TrendReason string `bson:"trend_reason,omitempty"` TrendKeywords []string `bson:"trend_keywords,omitempty"` HeatScore int `bson:"heat_score,omitempty"` FitScore int `bson:"fit_score,omitempty"` InteractionScore int `bson:"interaction_score,omitempty"` ExtendScore int `bson:"extend_score,omitempty"` RiskScore int `bson:"risk_score,omitempty"` FinalScore float64 `bson:"final_score,omitempty"` RecommendedMissions []string `bson:"recommended_missions,omitempty"` Status string `bson:"status,omitempty"` CreateAt int64 `bson:"create_at"` UpdateAt int64 `bson:"update_at"` } type KnowledgeSource struct { ID string `bson:"_id"` TenantID string `bson:"tenant_id"` OwnerUID string `bson:"owner_uid"` PersonaID string `bson:"persona_id"` SourceType string `bson:"source_type"` Title string `bson:"title,omitempty"` Filename string `bson:"filename,omitempty"` RawContent string `bson:"raw_content,omitempty"` ParsedStatus string `bson:"parsed_status,omitempty"` ChunkCount int `bson:"chunk_count,omitempty"` CreateAt int64 `bson:"create_at"` } type KnowledgeChunk struct { ID string `bson:"_id"` TenantID string `bson:"tenant_id"` OwnerUID string `bson:"owner_uid"` PersonaID string `bson:"persona_id"` SourceID string `bson:"source_id"` Content string `bson:"content"` Topics []string `bson:"topics,omitempty"` StyleTags []string `bson:"style_tags,omitempty"` RiskLevel string `bson:"risk_level,omitempty"` CreateAt int64 `bson:"create_at"` } type FormulaPool struct { ID string `bson:"_id"` TenantID string `bson:"tenant_id"` OwnerUID string `bson:"owner_uid"` PersonaID string `bson:"persona_id"` Type string `bson:"type"` Name string `bson:"name"` Pattern string `bson:"pattern,omitempty"` UseCases []string `bson:"use_cases,omitempty"` Avoid []string `bson:"avoid,omitempty"` Weight int `bson:"weight,omitempty"` CreateAt int64 `bson:"create_at"` UpdateAt int64 `bson:"update_at"` } type ContentPlan struct { ID string `bson:"_id"` TenantID string `bson:"tenant_id"` OwnerUID string `bson:"owner_uid"` PersonaID string `bson:"persona_id"` TopicCandidateID string `bson:"topic_candidate_id,omitempty"` Topic string `bson:"topic"` Mission string `bson:"mission"` TargetAudience string `bson:"target_audience,omitempty"` Angle string `bson:"angle,omitempty"` OpeningType string `bson:"opening_type,omitempty"` BodyType string `bson:"body_type,omitempty"` Emotion string `bson:"emotion,omitempty"` EndingType string `bson:"ending_type,omitempty"` CtaType string `bson:"cta_type,omitempty"` RiskLevel string `bson:"risk_level,omitempty"` RequiresHumanReview bool `bson:"requires_human_review,omitempty"` Avoid []string `bson:"avoid,omitempty"` SelectedKnowledge []string `bson:"selected_knowledge,omitempty"` Status string `bson:"status,omitempty"` CreateAt int64 `bson:"create_at"` UpdateAt int64 `bson:"update_at"` } type FeedbackEvent struct { ID string `bson:"_id"` TenantID string `bson:"tenant_id"` OwnerUID string `bson:"owner_uid"` PersonaID string `bson:"persona_id"` ContentPlanID string `bson:"content_plan_id,omitempty"` DraftID string `bson:"draft_id,omitempty"` Decision string `bson:"decision"` Note string `bson:"note,omitempty"` Snapshot string `bson:"snapshot,omitempty"` CreateAt int64 `bson:"create_at"` }