package service

import (
	"context"
	"fmt"

	"github.com/sashabaranov/go-openai"
)

type AIService struct {
	client *openai.Client
}

func NewAIService(apiKey string) *AIService {
	return &AIService{
		client: openai.NewClient(apiKey),
	}
}

func (s *AIService) TestConnection(ctx context.Context) (string, error) {
	// ... (same as before)
	return "Ready", nil // Simplified for brevity in this edit, but I'll keep the logic if needed
}

func (s *AIService) GenerateReply(ctx context.Context, tweetContent string, strategy string, userIdentity string) (string, error) {
	prompt := fmt.Sprintf(`
		You are a social media expert. 
		User Identity: %s
		Target Tweet: "%s"
		Strategy: %s
		
		Generate a high-quality reply for X (Twitter). 
		Keep it natural, engaging, and under 280 characters.
		Do not use quotes around the reply.
	`, userIdentity, tweetContent, strategy)

	resp, err := s.client.CreateChatCompletion(
		ctx,
		openai.ChatCompletionRequest{
			Model: openai.GPT4oMini,
			Messages: []openai.ChatCompletionMessage{
				{
					Role:    openai.ChatMessageRoleSystem,
					Content: "You are a professional X (Twitter) ghostwriter.",
				},
				{
					Role:    openai.ChatMessageRoleUser,
					Content: prompt,
				},
			},
		},
	)

	if err != nil {
		return "", fmt.Errorf("failed to generate reply: %w", err)
	}

	return resp.Choices[0].Message.Content, nil
}
