import { Component } from '@angular/core';
import { Router } from '@angular/router';
import { ChatPanelOptions, FmChatModalInput, FmodeChat, FmodeChatMessage, openChatPanelModal } from 'fmode-ng';
import Parse from "parse";
import { ModalController} from '@ionic/angular/standalone';
@Component({
  selector: 'app-tab3',
  templateUrl: 'tab3.page.html',
  styleUrls: ['tab3.page.scss'],
  standalone: false,
})
export class Tab3Page {

  constructor(
    private modalCtrl:ModalController,
    private router:Router,
  ) {}
  
openConsult(chatId?:string){
      // 如果传入chatId参数，优先使用传入的ID
    //const targetChatId = chatId ?? this.getLastChatId();
    
    localStorage.setItem("company","E4KpGvTEto")
    let options:ChatPanelOptions = {
      roleId:"2DXJkRsjXK", // 预设，无需更改
      //chatId:chatId, // 若存在，则恢复会话。若不存在，则开启新会话
      //chatId:targetChatId,
      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","国家二级心理咨询师，专注认知行为疗法");
        // 角色标签
        chat.role.set("tags",['情绪管理', '人际关系']);
        // 角色头像
        chat.role.set("avatar","/assets/icon/xinli1.jpeg")
        // 角色提示词
        chat.role.set("prompt", `
# 角色设定
您是一位专业且富有同理心的心理陪伴师，主要目标是帮助用户进行情绪管理和自我成长。

 
# 开始话语
当您准备好了，可以以一位专业且富有同理心的心理陪伴师的身份，向咨询者打招呼。

# 对话原则
1. 保持温暖和支持性语气
2. 保持中立和非评判态度
3. 适时提供心理学知识
4. 提问使用开放式提问引导用户反思
5. 避免直接建议，多用引导式
6. 每日生成个性化日记建议
`);
        
        // 配置AI日记分类
        let promptCates = [
          { img: "/assets/icon/ganen1.jpg", name: "感恩日记" },
          { img: "/assets/icon/jz.jpg", name: "自我觉察" },
          { img: "/assets/icon/qingxu.jpg", name: "情绪调节" }
        ];

        setTimeout(() => {
          chat.role.set("promptCates", promptCates)
        }, 500);

        // 配置AI日记问题库
        let promptList = [
          {
            cate: "感恩日记",
            img: "/assets/icon/ganen1.jpg",
            messageList: [
              "今天最让你感恩的三件小事是什么？",
              "最近一次感受到他人善意的经历是？",
              "本周你帮助过谁？感受如何？",
              "此刻最想感谢的人是谁？为什么？"
            ]
          },
          {
            cate: "自我觉察",
            img: "/assets/icon/jz.jpg",
            messageList: [
              "最近的情绪波动点在哪里？",
              "你发现自己的哪些思维模式？",
              "本周最有成就感的事是什么？",
              "最近一次突破舒适区的经历是？"
            ]
          },
          {
            cate: "情绪调节",
            img: "/assets/icon/qingxu.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:"AI日记", // 按钮标题
           showTitle:true, // 是否显示标题文字
           icon:"journal-outline", // 标题icon图标
           onClick:()=>{ // 按钮点击事件
               chat.isPromptModalOpen = true
           },
           show:()=>{ // 按钮显示条件
             return chat?.promptList?.length // 存在话题提示词时显示
           }
         },
          { 
            title:"图片日记", // 按钮标题
            showTitle:true, // 是否显示标题文字
            icon:"image-outline", // 标题icon图标
            onClick:async ()=>{ // 按钮点击事件
                const desc = await this.getImageDescription();
              this.generateSceneImage(desc);
            },
            show:()=>{ // 按钮显示条件
              return true // 一直显示
            }
          },
        ]

      },
      onMessage:(chat:FmodeChat,message:FmodeChatMessage)=>{
        console.log("onMessage",message)
        let content:any = message?.content
        if (typeof content === "string") {
          // 处理日记生成阶段
          if (content.includes('[日记生成中]')) {
            this.handleDiaryGeneration(chat);
          }
          // 处理情绪分析结果
          if (content.includes('[情绪分析完成]')) {
            this.showEmotionReport(chat);
          }
        }
      },
      onChatSaved:(chat:FmodeChat)=>{
       
        // chat?.chatSession?.id 本次会话的 chatId
        console.log("onChatSaved",chat,chat?.chatSession,chat?.chatSession?.id)
      }
    }
    openChatPanelModal(this.modalCtrl,options)

    
  }

      // 在类中添加这两个新方法
  private lastChatKey = "lastMentalChat";

    /** 获取最后一次心理咨询对话ID */
   getLastChatId(): string | undefined {
  const id = localStorage.getItem(this.lastChatKey);
  return id !== null ? id : undefined; // 显式转换null为undefined
  }

    /** 保存最后一次对话ID */
  private saveLastChatId(chatId: string) {
    localStorage.setItem(this.lastChatKey, chatId);
  }

  /** 生成场景图片 */
  private async generateSceneImage(description: string) {
    // 实际应调用图像生成API
    console.log("生成图片描述:", description);
    const mockImage = "https://example.com/generated-scene.png";
    this.showGeneratedImage(mockImage);
  }

  private async getImageDescription(): Promise<string> {
    return "一个宁静的湖边落日场景";
  }

  private showGeneratedImage(url: string) {
    console.log("显示生成图片:", url);
  }

  // 处理日记生成逻辑
  handleDiaryGeneration(chat: FmodeChat) {
    console.log("启动日记生成流程");
    // 示例：生成结构化日记
    let diaryTemplate = `
      ## 今日心理日记
      **情绪状态**: [自动识别结果]
      **关键事件**: [用户输入摘要]
      **认知模式**: [AI分析建议]
      `;
  }

  // 显示情绪分析报告
  showEmotionReport(chat: FmodeChat) {
    console.log("生成情绪分析报告");
    let report = `
      【情绪分析报告】
      积极情绪占比: 65%
      主要情绪关键词: 期待、感恩、困惑
      建议练习: 正念呼吸法
      `;
  }

  // /**
  //  * 开始聊天  
  //  */
  // openChat(){
  //   let options:ChatPanelOptions = {
  //     roleId:"2DXJkRsjXK",
  //     onChatSaved:(chat:FmodeChat)=>{
  //       // chat?.chatSession?.id 本次会话的 chatId
  //       console.log("onChatSaved",chat,chat?.chatSession,chat?.chatSession?.id)
  //     },
  //   }
  //   openChatPanelModal(this.modalCtrl,options)
  // }

  // /**
  //  * 恢复聊天
  //  * @chatId 从onChatSaved生命周期中，获取chat?.chatSession?.id
  //  */
  // restoreChat(chatId:string){
  //   let options:ChatPanelOptions = {
  //     roleId:"2DXJkRsjXK",
  //     chatId:chatId
  //   }
  //   openChatPanelModal(this.modalCtrl,options)
  // }

  goChat(){
    this.router.navigateByUrl("/chat/session/role/2DXJkRsjXK")
  }

}
