78 lines
2.9 KiB
Go
78 lines
2.9 KiB
Go
|
|
package copy_mission
|
||
|
|
|
||
|
|
import (
|
||
|
|
missionentity "haixun-backend/internal/model/copy_mission/domain/entity"
|
||
|
|
missiondomain "haixun-backend/internal/model/copy_mission/domain/usecase"
|
||
|
|
)
|
||
|
|
|
||
|
|
func summaryResearchItemsToEntity(items []missiondomain.ResearchItemSummary) []missionentity.ResearchItem {
|
||
|
|
out := make([]missionentity.ResearchItem, 0, len(items))
|
||
|
|
for _, item := range items {
|
||
|
|
out = append(out, missionentity.ResearchItem{
|
||
|
|
Title: item.Title,
|
||
|
|
URL: item.URL,
|
||
|
|
Snippet: item.Snippet,
|
||
|
|
Query: item.Query,
|
||
|
|
})
|
||
|
|
}
|
||
|
|
return out
|
||
|
|
}
|
||
|
|
|
||
|
|
func summaryToEntityResearchMap(summary missiondomain.ResearchMapSummary) missionentity.ResearchMap {
|
||
|
|
tags := make([]missionentity.SuggestedTag, 0, len(summary.SuggestedTags))
|
||
|
|
for _, tag := range summary.SuggestedTags {
|
||
|
|
tags = append(tags, missionentity.SuggestedTag{
|
||
|
|
Tag: tag.Tag,
|
||
|
|
Reason: tag.Reason,
|
||
|
|
SearchIntent: tag.SearchIntent,
|
||
|
|
SearchType: tag.SearchType,
|
||
|
|
})
|
||
|
|
}
|
||
|
|
accounts := make([]missionentity.SimilarAccount, 0, len(summary.SimilarAccounts))
|
||
|
|
for _, acc := range summary.SimilarAccounts {
|
||
|
|
accounts = append(accounts, missionentity.SimilarAccount{
|
||
|
|
Username: acc.Username,
|
||
|
|
Reason: acc.Reason,
|
||
|
|
Source: acc.Source,
|
||
|
|
MatchedSource: append([]string(nil), acc.MatchedSource...),
|
||
|
|
Confidence: acc.Confidence,
|
||
|
|
Status: acc.Status,
|
||
|
|
TopicRelevance: acc.TopicRelevance,
|
||
|
|
LastSeenAt: acc.LastSeenAt,
|
||
|
|
ProfileURL: acc.ProfileURL,
|
||
|
|
AuthorVerified: acc.AuthorVerified,
|
||
|
|
FollowerCount: acc.FollowerCount,
|
||
|
|
EngagementScore: acc.EngagementScore,
|
||
|
|
LikeCount: acc.LikeCount,
|
||
|
|
ReplyCount: acc.ReplyCount,
|
||
|
|
PostCount: acc.PostCount,
|
||
|
|
})
|
||
|
|
}
|
||
|
|
samples := make([]missionentity.AudienceSample, 0, len(summary.AudienceSamples))
|
||
|
|
for _, sample := range summary.AudienceSamples {
|
||
|
|
samples = append(samples, missionentity.AudienceSample{
|
||
|
|
Username: sample.Username,
|
||
|
|
SamplePostID: sample.SamplePostID,
|
||
|
|
SampleText: sample.SampleText,
|
||
|
|
ReplyLikeCount: sample.ReplyLikeCount,
|
||
|
|
Appearances: sample.Appearances,
|
||
|
|
FirstSeenAt: sample.FirstSeenAt,
|
||
|
|
LastSeenAt: sample.LastSeenAt,
|
||
|
|
Status: sample.Status,
|
||
|
|
})
|
||
|
|
}
|
||
|
|
return missionentity.ResearchMap{
|
||
|
|
AudienceSummary: summary.AudienceSummary,
|
||
|
|
ContentGoal: summary.ContentGoal,
|
||
|
|
Questions: append([]string(nil), summary.Questions...),
|
||
|
|
Pillars: append([]string(nil), summary.Pillars...),
|
||
|
|
Exclusions: append([]string(nil), summary.Exclusions...),
|
||
|
|
KnowledgeItems: append([]string(nil), summary.KnowledgeItems...),
|
||
|
|
SelectedKnowledgeItems: append([]string(nil), summary.SelectedKnowledgeItems...),
|
||
|
|
ResearchItems: summaryResearchItemsToEntity(summary.ResearchItems),
|
||
|
|
SuggestedTags: tags,
|
||
|
|
SimilarAccounts: accounts,
|
||
|
|
AudienceSamples: samples,
|
||
|
|
BenchmarkNotes: summary.BenchmarkNotes,
|
||
|
|
}
|
||
|
|
}
|