package sop_task

import (
	"context"
	"fmt"

	"wechat-api/hook/fastgpt"
	"wechat-api/internal/svc"
	"wechat-api/internal/types"

	"github.com/zeromicro/go-zero/core/logx"
)

type GenerateAiAnswerLogic struct {
	logx.Logger
	ctx    context.Context
	svcCtx *svc.ServiceContext
}

func NewGenerateAiAnswerLogic(ctx context.Context, svcCtx *svc.ServiceContext) *GenerateAiAnswerLogic {
	return &GenerateAiAnswerLogic{
		Logger: logx.WithContext(ctx),
		ctx:    ctx,
		svcCtx: svcCtx}
}

func (l *GenerateAiAnswerLogic) GenerateAiAnswer(req *types.GenerateAiAnswerReq) (*types.GenerateAiAnswerResp, error) {
	resp := types.GenerateAiAnswerResp{}
	prompt := fmt.Sprintf(`
请根据用户输入的内容，包括角色、目标用户和背景介绍优化用户输入的内容。
用户输入内容：%s

# 回复要求
- 如果优化成功，只返回具体的优化后的内容
- 如果未优化成功，只返回优化失败的原因
`, req.Content)
	systemPrompt := "你是一个写作高手，帮助用户撰写或优化文案"
	baseUrl := l.svcCtx.Config.Fastgpt.BASE_URL
	apiKey := l.svcCtx.Config.Fastgpt.API_KEY
	answer, err := fastgpt.ChatWithCustomConfig(baseUrl, apiKey, systemPrompt, prompt)
	if err != nil {
		return nil, err
	}
	resp.Data = answer

	return &resp, nil
}
