import { Component } from '@angular/core';
import { ModalController } from '@ionic/angular/standalone';

//引入智能体组件
import Parse from "parse";
import { ChatPanelOptions, FmChatModalInput, FmodeChat, FmodeChatMessage, openChatPanelModal } from 'fmode-ng';


@Component({
  selector: 'app-tab2',
  templateUrl: 'tab2.page.html',
  styleUrls: ['tab2.page.scss'],
  standalone:false,
})
export class Tab2Page {
  constructor(
    private modalCtrl: ModalController,
    
  ) {
   
  }
   /** 示例：ChatPanel面板 */
  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", "一名亲切和蔼的鸟类专家，张教授，年龄36岁");
        // 角色标签
        chat.role.set("tags", ["湿地保护", "候鸟迁徙"]);
        // 角色头像
        chat.role.set("avatar", "/assets/avatars/people.jpeg")
        // 角色提示词
        chat.role.set("prompt", `
# 角色设定
您是一名亲切和蔼的专业的鸟类学专家，张教授，年龄36岁，需要您解答用户关于鸟类方面的问题。

# 开始话语
当您准备好了，可以以一个鸟类学家的身份，向来访的用户打招呼。`);
        // 对话灵感分类
        let promptCates = [
          {
            "img": "/assets/icon/bird1.jpeg",
            "name": "鸟类识别"
          },
          {
            "img": "/assets/icon/bird2.jpeg",
            "name": "湿地保护"
          },
          {
            "img": "/assets/icon/bird3.jpeg",
            "name": "候鸟习性"
          }
        ]
        setTimeout(() => {
          chat.role.set("promptCates", promptCates)
        }, 500);
        // 对话灵感列表
        let promptList = [
          {
            cate: "鸟类识别", img: "/assets/icon/bird1.jpeg",
            messageList: [ "如何区分乌鸦和喜鹊？它们的主要外观特征有什么区别？",
        "看到一只黑白相间的鸟，可能是哪些常见品种？如何进一步确认？",
        "为什么有些鸟类的雌性和雄性长得不一样（比如孔雀）？这种差异叫什么现象？"]
          },
          {
            cate: "湿地保护", img: "/assets/icon/bird2.jpeg",
            messageList: ["湿地为什么对鸟类特别重要？它能提供哪些生存必需条件？",
  "作为普通人，去湿地观鸟时应该注意哪些保护规范？",
  "红树林湿地和其他类型的湿地对鸟类的支持作用有什么不同？"]
          },
          {
            cate: "候鸟习性", img: "/assets/icon/bird3.jpeg",
            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)
  }

}
