package job

import (
	missionentity "haixun-backend/internal/model/copy_mission/domain/entity"
	missiondomain "haixun-backend/internal/model/copy_mission/domain/usecase"
)

// similarAccountsFromSummary converts the read-side usecase summary back into a
// write-side entity slice so that worker jobs can preserve previously
// discovered accounts (including MatchedSource provenance) across re-runs
// without losing information. Fields that the summary does not carry are left
// at their zero value.
func similarAccountsFromSummary(in []missiondomain.SimilarAccountSummary) []missionentity.SimilarAccount {
	if len(in) == 0 {
		return nil
	}
	out := make([]missionentity.SimilarAccount, 0, len(in))
	for _, item := range in {
		matched := item.MatchedSource
		if len(matched) == 0 && item.Source != "" {
			matched = []string{item.Source}
		}
		out = append(out, missionentity.SimilarAccount{
			Username:        item.Username,
			Reason:          item.Reason,
			Source:          item.Source,
			MatchedSource:   matched,
			Confidence:      item.Confidence,
			Status:          item.Status,
			TopicRelevance:  item.TopicRelevance,
			LastSeenAt:      item.LastSeenAt,
			ProfileURL:      item.ProfileURL,
			AuthorVerified:  item.AuthorVerified,
			FollowerCount:   item.FollowerCount,
			EngagementScore: item.EngagementScore,
			LikeCount:       item.LikeCount,
			ReplyCount:      item.ReplyCount,
			PostCount:       item.PostCount,
		})
	}
	return out
}
