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';
import { extactAndParseJsonFromString } from 'src/agent/agent.json';

export function TaskInqueryDoctorQuestion(options:{
    modalCtrl:ModalController
    shareData:any}
    ):AgentTaskStep{
        /**
         shareData.userStory // 已经拥有的用户描述数据
         {
                  "keshi": "神经内科",
                  "sympList": [
                      {
                          "title": "偏头痛",
                          "desc": "持续了2天的偏头疼",
                          "duration": "2天"
                      },
                      {
                          "title": "发冷",
                          "desc": "感觉发冷，已经有一天",
                          "duration": "1天"
                      }
                  ]
              }
         */
        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:"描述下感觉到的症状或不适。"}
                // ]});

                // if(!userInput?.['症状口述']){
                //     task1.error = "无症状口述，无法判断科室"
                //     resolve(false);
                // }

                // 文本生成
                let PromptTemplate = `您是一名专业的${options.shareData.userStory.keshi}主任医生，患者简单描述了一下他的情况，请您思考下还有哪些需要询问。
                症状口述：${options.shareData.userStory['症状口述']}
                结果以JSON格式表示：
                {
                    "questionList":[
                        {"title":"问题标题","desc":"问题描述"}
                    ]
                }
                `
                let completion = new FmodeChatCompletion([
                    {role:"system",content:""},
                    {role:"user",content:PromptTemplate}
                    ])
                    completion.sendCompletion().subscribe((message:any)=>{
                        if(task1.progress < 0.5){
                            task1.progress += 0.05
                        }
                        if(task1.progress >= 0.5 && task1.progress <= 0.7){
                            task1.progress += 0.01
                        }
                        if(task1.progress >= 0.7){
                            task1.progress += 0.001
                        }
                        // 打印消息体
                        console.log(message.content)
                        // 赋值消息内容给组件内属性
                        if(message.complete){ // 判断message为完成状态，则设置isComplete为完成
                            options.shareData.userStory.questionList = extactAndParseJsonFromString(message.content).questionList || []
                            task1.progress = 1
                            resolve(true)
                        }
                })
            })

        }
        return task1
}