import { Component } from '@angular/core';
import { ModalController } from '@ionic/angular/standalone';
// 引用fmode-ng智能体组件
import { ChatPanelOptions, FmChatModalInput, FmodeChat, FmodeChatMessage, openChatPanelModal } from 'fmode-ng';
import Parse from "parse";

@Component({
  selector: 'app-tab2',
  templateUrl: 'tab2.page.html',
  styleUrls: ['tab2.page.scss'],
  standalone: false,
})
export class Tab2Page {

  constructor(
    private modalCtrl:ModalController
  ) {

  }
  openConsult(chatId?:string){
    localStorage.setItem("company","E4KpGvTEto")
    let options:ChatPanelOptions = {
      roleId:"2DXJkRsjXK", // 预设，无需更改
      // chatId:chatId, // 若存在，则恢复会话。若不存在，则开启新会话
      onChatInit:(chat:FmodeChat)=>{
        console.log("onChatInit");
        console.log("Chat类",chat);
        console.log("预设角色",chat.role);
        // 角色名称
        chat.role.set("name","林舒窈");
        // 角色称号
        chat.role.set("title","东方食养家");
        // 角色描述
        chat.role.set("desc","谈吐带有中医师的沉稳，擅长用生活化比喻解释复杂理论，林舒窈，年龄26岁");
        // 角色标签
        chat.role.set("tags",['跑步', '动感单车']);
        // 角色头像
        chat.role.set("avatar","/assets/lin.jpg")
        // 角色提示词
        chat.role.set("prompt",`
# 角色设定
姓名：林舒窈（Shuyao Lin）
称号：「东方食养家」
年龄：26岁
背景：

教育：北京中医药大学中医学+营养学双学位，后赴日本进修「药膳料理」，融合传统中医理论与现代营养学。

职业经历：曾任北京某三甲医院临床营养科主任，后创立个人品牌「四季食养」，为明星、企业家定制高端养生膳食。

社会身份：央视《健康中国》栏目常驻嘉宾，著有《本草厨房》《节气餐桌》等畅销书。

形象侧写
外貌：

发型：乌黑及肩中长发，工作时用木簪盘起，干练优雅；

五官：典型的东方温润长相，柳叶眉，眼神柔和但透着专业性的锐利；

着装：工作时穿改良中式立领白袍（袖口绣二十四节气纹样），日常偏爱真丝旗袍+针织开衫。

气质：

谈吐带有中医师的沉稳，擅长用生活化比喻解释复杂理论（如“脾胃就像锅炉，火候不对再好的食材也浪费”）；

手部特写：指甲修剪圆润，无名指戴一枚翡翠戒指（家传药膳秘方的信物）。
`);
        // 对话灵感分类
        let promptCates = [
          {
            "img": "/assets/icon/yy.jpg",
            "name": "营养"
          },
          {
            "img": "/assets/icon/rl.jpg",
            "name": "热量"
          },
          {
            "img": "/assets/icon/aq.jpg",
            "name": "安全"
          }
        ]
        setTimeout(() => {
          chat.role.set("promptCates",promptCates)
        }, 500);
        // 对话灵感列表
        let promptList = [
          {
            cate:"营养",img:"/assets/icon/yy.jpg",
            messageList:[
              "如何在不减少食物种类的情况下保证营养均衡？",
              "有哪些高蛋白但低脂肪的美食推荐？",
              "素食者如何确保摄入足够的蛋白质和铁？",
              "怎样搭配碳水化合物、蛋白质和脂肪的比例更健康？"
            ]
          },
          {
            cate:"热量",img:"/assets/icon/rl.jpg",
            messageList:[
              "有哪些低卡路里但依然美味的零食选择？",
              "如何在享受甜点的同时减少糖分摄入？",
              "外出就餐时如何选择既健康又美味的菜品？",
              "有哪些烹饪方式可以降低食物的热量但保留风味？"
            ]
          },
          {
            cate:"安全",img:"/assets/icon/aq.jpg",
            messageList: [
              "如何判断食材是否新鲜，避免食物中毒？",
              "长期吃外卖如何降低对健康的影响？",
              "有哪些容易被忽视的饮食习惯可能危害健康？",
              "如何合理规划一周的饮食，避免营养单一？"
            ]
          },
        ]
        let ChatPrompt = Parse.Object.extend("ChatPrompt");
        setTimeout(() => {
          chat.promptList = promptList.map(item=>{
            let prompt = new ChatPrompt();
            prompt.set(item);
            prompt.img = item.img;
            return prompt;
          })
        }, 500);

        // 功能按钮区域预设
        chat.leftButtons = [
          { // 提示 当角色配置预设提示词时 显示
           title:"话题灵感", // 按钮标题
           showTitle:true, // 是否显示标题文字
           icon:"color-wand-outline", // 标题icon图标
           onClick:()=>{ // 按钮点击事件
               chat.isPromptModalOpen = true
           },
           show:()=>{ // 按钮显示条件
             return chat?.promptList?.length // 存在话题提示词时显示
           }
         },
      ]

      },
      onMessage:(chat:FmodeChat,message:FmodeChatMessage)=>{
        console.log("onMessage",message)
        let content:any = message?.content
        if(typeof content == "string"){
          // 根据阶段标记判断下一步处理过程
          if (content.includes('[导诊完成]')) {
            // 进入问诊环节
            console.log('进入问诊环节');
          } else if (content.includes('[问诊完成]')) {
            // 进入检查环节
            console.log('进入检查环节');
          } else if (content.includes('[检查完成]')) {
            // 进入诊断与处方环节
            console.log('进入诊断与处方环节');
          } else if (content.includes('[处方完成]')) {
            // 结束会话或其他逻辑
            console.log('结束会话');
          }
        }
      },
      onChatSaved:(chat:FmodeChat)=>{
        // chat?.chatSession?.id 本次会话的 chatId
        console.log("onChatSaved",chat,chat?.chatSession,chat?.chatSession?.id)
      }
    }
    openChatPanelModal(this.modalCtrl,options)
  }
}
