package entity const CollectionName = "copy_missions" type Status string const ( StatusOpen Status = "open" StatusMapped Status = "mapped" StatusScanned Status = "scanned" StatusDrafted Status = "drafted" StatusArchived Status = "archived" StatusDeleted Status = "deleted" ) type SuggestedTag struct { Tag string `bson:"tag" json:"tag"` Reason string `bson:"reason,omitempty" json:"reason,omitempty"` SearchIntent string `bson:"search_intent,omitempty" json:"search_intent,omitempty"` SearchType string `bson:"search_type,omitempty" json:"search_type,omitempty"` } const ( SimilarAccountStatusRecommended = "recommended" SimilarAccountStatusPinned = "pinned" SimilarAccountStatusExcluded = "excluded" SimilarAccountStatusPromoted = "promoted" ) const ( AudienceSampleStatusPinned = "pinned" AudienceSampleStatusExcluded = "excluded" ) type SimilarAccount struct { Username string `bson:"username" json:"username"` Reason string `bson:"reason,omitempty" json:"reason,omitempty"` Source string `bson:"source,omitempty" json:"source,omitempty"` MatchedSource []string `bson:"matched_source,omitempty" json:"matched_source,omitempty"` Confidence string `bson:"confidence,omitempty" json:"confidence,omitempty"` Status string `bson:"status,omitempty" json:"status,omitempty"` TopicRelevance float64 `bson:"topic_relevance,omitempty" json:"topic_relevance,omitempty"` LastSeenAt int64 `bson:"last_seen_at,omitempty" json:"last_seen_at,omitempty"` ProfileURL string `bson:"profile_url,omitempty" json:"profile_url,omitempty"` AuthorVerified bool `bson:"author_verified,omitempty" json:"author_verified,omitempty"` FollowerCount int `bson:"follower_count,omitempty" json:"follower_count,omitempty"` EngagementScore int `bson:"engagement_score,omitempty" json:"engagement_score,omitempty"` LikeCount int `bson:"like_count,omitempty" json:"like_count,omitempty"` ReplyCount int `bson:"reply_count,omitempty" json:"reply_count,omitempty"` PostCount int `bson:"post_count,omitempty" json:"post_count,omitempty"` } type ResearchItem struct { Title string `bson:"title,omitempty" json:"title,omitempty"` URL string `bson:"url,omitempty" json:"url,omitempty"` Snippet string `bson:"snippet,omitempty" json:"snippet,omitempty"` Query string `bson:"query,omitempty" json:"query,omitempty"` } type AudienceSample struct { Username string `bson:"username" json:"username"` SamplePostID string `bson:"sample_post_id,omitempty" json:"sample_post_id,omitempty"` SampleText string `bson:"sample_text,omitempty" json:"sample_text,omitempty"` ReplyLikeCount int `bson:"reply_like_count,omitempty" json:"reply_like_count,omitempty"` Appearances int `bson:"appearances,omitempty" json:"appearances,omitempty"` FirstSeenAt int64 `bson:"first_seen_at" json:"first_seen_at"` LastSeenAt int64 `bson:"last_seen_at,omitempty" json:"last_seen_at,omitempty"` Status string `bson:"status,omitempty" json:"status,omitempty"` } type ResearchMap struct { AudienceSummary string `bson:"audience_summary,omitempty" json:"audience_summary,omitempty"` ContentGoal string `bson:"content_goal,omitempty" json:"content_goal,omitempty"` Questions []string `bson:"questions,omitempty" json:"questions,omitempty"` Pillars []string `bson:"pillars,omitempty" json:"pillars,omitempty"` Exclusions []string `bson:"exclusions,omitempty" json:"exclusions,omitempty"` KnowledgeItems []string `bson:"knowledge_items,omitempty" json:"knowledge_items,omitempty"` SelectedKnowledgeItems []string `bson:"selected_knowledge_items,omitempty" json:"selected_knowledge_items,omitempty"` ResearchItems []ResearchItem `bson:"research_items,omitempty" json:"research_items,omitempty"` SuggestedTags []SuggestedTag `bson:"suggested_tags,omitempty" json:"suggested_tags,omitempty"` SimilarAccounts []SimilarAccount `bson:"similar_accounts,omitempty" json:"similar_accounts,omitempty"` AudienceSamples []AudienceSample `bson:"audience_samples,omitempty" json:"audience_samples,omitempty"` BenchmarkNotes string `bson:"benchmark_notes,omitempty" json:"benchmark_notes,omitempty"` } func (m ResearchMap) IsEmpty() bool { return m.AudienceSummary == "" && m.ContentGoal == "" && len(m.Questions) == 0 && len(m.KnowledgeItems) == 0 && len(m.SuggestedTags) == 0 } type Mission struct { ID string `bson:"_id"` TenantID string `bson:"tenant_id"` OwnerUID string `bson:"owner_uid"` PersonaID string `bson:"persona_id"` Label string `bson:"label,omitempty"` SeedQuery string `bson:"seed_query,omitempty"` Brief string `bson:"brief,omitempty"` ResearchMap ResearchMap `bson:"research_map,omitempty"` SelectedTags []string `bson:"selected_tags,omitempty"` LastScanJobID string `bson:"last_scan_job_id,omitempty"` Status Status `bson:"status"` CreateAt int64 `bson:"create_at"` UpdateAt int64 `bson:"update_at"` }