import { ChangeDetectorRef, Component, OnInit } from '@angular/core';
import { IonButton, IonContent, IonFooter, IonHeader, IonInput, IonItem, IonTitle, IonToolbar, ModalController } from '@ionic/angular/standalone';
import { ChatPanelOptions, FmodeChat, FmodeChatCompletion,FmodeChatMessage,MarkdownPreviewModule, openChatPanelModal  } from 'fmode-ng';
import { CommonModule } from '@angular/common';
import { FormsModule,} from '@angular/forms'; // 导入 FormsModule
import { Router } from '@angular/router';
// 引用设计的对象类和查询类
import { CloudObject, CloudQuery } from 'src/lib/ncloud';


@Component({
  selector: 'app-page-ai-chat',
  templateUrl: './page-ai-chat.component.html',
  styleUrls: ['./page-ai-chat.component.scss'],
  standalone: true,
  imports:[IonButton,IonHeader,IonToolbar,IonTitle,IonContent,IonFooter,IonInput,CommonModule,FormsModule,MarkdownPreviewModule,IonItem ]
})
export class PageAiChatComponent  implements OnInit {
  
  constructor(private modalCtrl:ModalController,
    private router:Router, private cdRef:ChangeDetectorRef) { }

    ngOnInit() {
      // 生命周期：页面加载后，运行用户列表加载函数
      this.loadUserProfileList()
    }
  chatId:any= null;
  //AI聊天
openFashionChat(){
  localStorage.setItem("company","E4KpGvTEto")
  let consult = new CloudObject("AIChat")
    let now = new Date();
    let chatStr = `${now.getFullYear()}-${now.getMonth()+1}-${now.getDate()}`
    consult.set({
      title:`运动咨询记录${chatStr}}`,
      
    })
  let options:ChatPanelOptions = {
    roleId:"2DXJkRsjXK",
    onChatInit:(chat:FmodeChat)=>{
      console.log("onChatInit");
            console.log("预设角色",chat.role);
            chat.role.set("name","Neon");
            chat.role.set("title","运动教练");
            chat.role.set("desc","一名亲切和蔼的运动教练，Neon，年龄24岁");
            chat.role.set("tags",["运动","健康"]);
            chat.role.set("avatar","https://nova-cloud.obs.cn-south-1.myhuaweicloud.com/storage/aigc/imagine/qz3QJnQqfb-0.png")
            chat.role.set("prompt",`
#角色设定
您是一名专业的运动教练，名叫Neon，年龄24岁，热爱运动，对自己的能力充满信心，总是努力保持克制。与家人有着牢固而密切的联系。有强烈的服务意识。非常关心她的朋友。擅长根据用户的需求和个性推荐运动方案。您的风格亲切、活泼，自信旨在帮助用户找到最适合他们的运动方案。


#对话环节
0破冰,跟用户打招呼，并引导用户聊运动或健康的话题，可以慢慢引导，不要太突兀，比如：
“今天的心情怎么样？”
1拓展话题
“你平时喜欢什么样的运动类型呢？有没有特别喜欢的运动项目比如篮球，跑步？”
“如果有一个运动目标，你希望我给出哪方面的运动建议，比如运动目标，运动频率或运动强度你会选择哪个呢？”
“你觉得在运动过程中，最让你困扰的是什么？是运动技巧还是运动强度呢？”
“有没有什么运动是你一直想尝试但还没有机会的？我们可以一起聊聊！”
2根据用户的详细描述给出运动方案,
3引导收尾
“今天聊得很开心呢！如果你还有其他问题或者想法，随时可以告诉我哦。”
“如果你觉得今天的聊天已经足够了，我也很乐意下次再和你聊更多强身健体的话题！”
“希望你能找到自己喜欢的运动风格，期待下次再见！”
# 开始话语
当您准备好了，可以以一个运动教练的身份，向来访的用户打招呼。`);
    },
    onMessage:(chat:FmodeChat,message:FmodeChatMessage)=>{
      console.log("onMessage",message)
      let content:any = message?.content
      if(typeof content == "string"){

        if(content?.indexOf("[运动方案完成]")>-1){
          console.log("运动方案已完成")
          consult.set({
            content:content 
          })
          consult.save();
        }
      }
    },
    onChatSaved:(chat:FmodeChat)=>{
      // chat?.chatSession?.id 本次会话的 chatId
      console.log("onChatSaved",chat,chat?.chatSession,chat?.chatSession?.id)
      this.chatId = chat?.chatSession?.id
    }
  }
  openChatPanelModal(this.modalCtrl,options)
}

 /**
   * 开始聊天
   */
 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)
}

// 创建用于数据列表存储的属性
UserProfileList:Array<CloudObject> = []
// 查询并加载用户列表的函数
async loadUserProfileList(){
  let query = new CloudQuery("UserProfile");
  this.UserProfileList = await query.find();
  console.log("UserProfileList",this.UserProfileList)
}


//跳转到自己写的AI聊天页面
goaichat(){
  this.router.navigate(['/tabs/chat'])
}
}
