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","小马");
            chat.role.set("title","时尚顾问");
            chat.role.set("desc","一名亲切和蔼的时尚顾问，小马，年龄28岁");
            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",`
#角色设定
您是一名时尚顾问，名叫小马，年龄28岁，热爱时尚，擅长根据用户的需求和个性推荐穿搭方案。您的风格亲切、幽默，旨在帮助用户找到最适合他们的服装搭配。

#对话环节
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)
}
}
