import { Component } from '@angular/core';
import { IonicModule, LoadingController } from '@ionic/angular';  // 导入 IonicModule
import { CommonModule } from '@angular/common';  // 导入 CommonModule
import { FormsModule } from '@angular/forms';  // 导入 FormsModule
import { ExploreContainerComponent } from '../explore-container/explore-container.component';
import { FmodeChatCompletion } from 'fmode-ng';  // 假设你在使用 Fmode API 来生成消息
import { DietPlan } from '../models/diet-plan.model';  // 导入定义好的数据结构

@Component({
  selector: 'app-tab2',
  templateUrl: 'tab2.page.html',
  styleUrls: ['tab2.page.scss'],
  standalone: true,
  imports: [IonicModule, CommonModule, FormsModule, ExploreContainerComponent]  // 添加 CommonModule 和 FormsModule
})
export class Tab2Page {
  userPrompt: string = "";
  responseMsg: DietPlan | null = null;
  isLoading: boolean = false;  // 用于控制加载指示器

  // 用户输入的饮食信息
  dietGoal: string = '';
  foodRestrictions: string = '';  // 用户输入的食物忌口
  detailedRequirements: string = '';  // 用户输入的详细需求
  dietPreference: string = '';  // 用户输入的饮食偏好
  dietDuration: number | null = null;  // 用户输入的饮食时长（天数）

  constructor(private loadingController: LoadingController) {}

  // 输入事件处理方法
  promptInput(ev: any) {
    this.userPrompt = ev.detail.value;
  }

  // 发送请求并获取响应
  async sendMessage() {
    console.log("生成饮食计划");

    // 显示加载指示器
    this.isLoading = true;
    const loading = await this.loadingController.create({
      message: '生成饮食计划中...',
      duration: 10000  // 最大等待 10 秒
    });
    await loading.present();

    // 创建 AI 提示词
    const aiPrompt = `
      请根据以下需求生成饮食计划：
      目标：${this.dietGoal || '无目标'}
      食物忌口：${this.foodRestrictions || '无'}
      详细需求：${this.detailedRequirements || '无详细需求'}
      偏好：${this.dietPreference || '无'}
      时长：${this.dietDuration ? this.dietDuration + '天' : '未指定'}
    `;

    // 构建请求体
    let completion = new FmodeChatCompletion([
      { role: "system", content: "你是一个营养师，帮助用户生成饮食计划。" },
      { role: "user", content: aiPrompt }
    ]);

    // 获取 AI 响应并更新状态
    completion.sendCompletion().subscribe(
      (message: any) => {
        this.responseMsg = this.formatDietPlan(message.content);  // 格式化并更新饮食计划
        this.isLoading = false;
        loading.dismiss();  // 关闭加载指示器
      },
      (error) => {
        console.error("生成饮食计划失败", error);
        this.isLoading = false;
        loading.dismiss();  // 关闭加载指示器
      }
    );
  }

  // 格式化返回的饮食计划
  formatDietPlan(message: string): DietPlan | null {
    try {
      const dietPlan: DietPlan = JSON.parse(message);

      // 确保返回的饮食计划包含 foodRestrictions 和 detailedRequirements 字段
      return {
        ...dietPlan,
        foodRestrictions: dietPlan.foodRestrictions || '无',  // 默认值
        detailedRequirements: dietPlan.detailedRequirements || '无'  // 默认值
      };
    } catch (error) {
      console.error("饮食计划解析失败", error);
      return null;
    }
  }
}
