import { AgentTaskStep } from 'src/agent/agent.task';
import { getUserInput } from 'src/agent/agent.input';
import { ModalController } from '@ionic/angular/standalone';
import { FmodeChatCompletion } from 'fmode-ng';

export function TaskPoemPictureDesc(options:{
    modalCtrl:ModalController
    shareData:any}
    ):AgentTaskStep{
        let task1 = new AgentTaskStep({title:"意境分析",shareData:options.shareData})
        task1.handle = ()=>{
            return new Promise(async (resolve,reject)=>{
                // 获取用户输入的诗词
                let userInput = await getUserInput(options.modalCtrl,{fieldsArray:[
                    {name:"诗文内容",type:"text",desc:"诗文句子或段落"}
                ]});
                console.log("已获取用户输入：",userInput)
                if(userInput){
                    console.log("已获取诗文内容：",userInput['诗文内容'])
                }
                if(!userInput?.['诗文内容']){
                    task1.error = "缺少诗文内容，请重新开始"
                    resolve(false);
                }

                    // 文本生成
                let PromptTemplate = `您是一名专业的美术画家，请您根据古诗文的内容，将其描述的画面、场景、人物、物品等用最简短的语言表达，直接写出画面，并且以中国的古风意境为主
                诗文如下：
                ${userInput['诗文内容']}
                `
                let completion = new FmodeChatCompletion([
                    {role:"system",content:""},
                    {role:"user",content:PromptTemplate}
                    ])
                    completion.sendCompletion().subscribe((message:any)=>{
                        if(task1.progress < 0.5){
                            task1.progress += 0.1
                        }
                        if(task1.progress >= 0.5){
                            task1.progress += 0.01
                        }
                        // 打印消息体
                        // console.log(message.content)
                        // 赋值消息内容给组件内属性
                        options.shareData.PictureDescResult = message.content
                        if(message.complete){ // 判断message为完成状态，则设置isComplete为完成
                            task1.progress = 1
                            resolve(true)
                        }
                })
            })

        }
        return task1
}