cpy пре 5 месеци
родитељ
комит
2b2f8fa75e
1 измењених фајлова са 69 додато и 57 уклоњено
  1. 69 57
      sport-app/src/app/tab2/tab2.page.ts

+ 69 - 57
sport-app/src/app/tab2/tab2.page.ts

@@ -1,49 +1,8 @@
-// import { Component } from '@angular/core';
-// import { IonHeader, IonToolbar, IonTitle, IonContent } from '@ionic/angular/standalone';
-// import { ExploreContainerComponent } from '../explore-container/explore-container.component';
-// import { FmodeChatCompletion } from 'fmode-ng';
-// import { IonButton, IonInput, IonTextarea } from '@ionic/angular';
-
-// @Component({
-//   selector: 'app-tab2',
-//   templateUrl: 'tab2.page.html',
-//   styleUrls: ['tab2.page.scss'],
-//   standalone: true,
-//   imports: [IonHeader, IonToolbar, IonTitle, IonContent, ExploreContainerComponent, IonButton,
-//     IonTextarea,IonInput]
-// })
-// export class Tab2Page {
-
-//   constructor() {}
-//   // 用户输入提示词
-//    userPrompt:string = "飞码产品LOGO,独角兽头部形象,极简风格,棱角分明,线条勾勒,蓝色紫色搭配。"
-//   promptInput(ev:any){
-//     this.userPrompt = ev.detail.value;
-//   }
-//   // 属性:组件内用于展示消息内容的变量
-//   responseMsg:any = ""
-//   // 方法:实例化completion对象,传入消息数组,并订阅生成的可观察对象。
-//   sendMessage(){
-//     console.log("create")
-//     let completion = new FmodeChatCompletion([
-//       {role:"system",content:""},
-//       {role:"user",content:this.userPrompt}
-//     ])
-//     completion.sendCompletion().subscribe((message:any)=>{
-//       // 打印消息体
-//       console.log(message.content)
-//       // 赋值消息内容给组件内属性
-//       this.responseMsg = message.content
-//     })
-//   }
-
-// }
-
-
 import { Component } from '@angular/core';
-import { IonicModule } from '@ionic/angular';  // 导入 IonicModule
+import { IonButton, IonContent, IonHeader, IonicModule, IonInput, IonTextarea } from '@ionic/angular';  // 引入 IonicModule
 import { ExploreContainerComponent } from '../explore-container/explore-container.component';
-import { FmodeChatCompletion } from 'fmode-ng';
+import { FmodeChatCompletion } from 'fmode-ng';  // 用来生成AI消息
+import { IonCardHeader, IonTitle, IonToolbar } from '@ionic/angular/standalone';
 
 @Component({
   selector: 'app-tab2',
@@ -56,31 +15,84 @@ import { FmodeChatCompletion } from 'fmode-ng';
   ]
 })
 export class Tab2Page {
-
+  promptInput(event: any): void {
+    this.userPrompt = event.detail.value;  // 获取输入框的值并更新 userPrompt
+    console.log('Updated Prompt:', this.userPrompt);
+  }
   constructor() {}
-  
+
   // 用户输入提示词
-  userPrompt: string = "为运动爱好者、健身教练、运动员提供AI助手,帮助他们制定个性化的运动计划、实时监测运动数据、分析训练效果,从而提升运动表现和健康水平。"
+  userPrompt: string = "为运动爱好者、健身教练、运动员提供AI助手,帮助他们制定个性化的运动计划、实时监测运动数据、分析训练效果,从而提升运动表现和健康水平。";
   
-  promptInput(ev: any) {
-    this.userPrompt = ev.detail.value;
-  }
+  // 模拟的运动数据
+  exerciseData = {
+    steps: 0,            // 步数
+    caloriesBurned: 0,   // 消耗的卡路里
+    distance: 0          // 运动距离
+  };
   
   // 属性:组件内用于展示消息内容的变量
-  responseMsg: any = ""
+  responseMsg: any = "";
+  exerciseFeedback: string = "";  // 用于存储AI反馈的训练效果分析
   
   // 方法:实例化completion对象,传入消息数组,并订阅生成的可观察对象。
   sendMessage() {
-    console.log("create")
+    console.log("Creating personalized exercise plan...");
+    
     let completion = new FmodeChatCompletion([
-      { role: "system", content: "" },
+      { role: "system", content: "你是一个运动和健康专家,帮助用户制定个性化的运动计划,监控运动数据并提供反馈。" },
       { role: "user", content: this.userPrompt }
-    ])
+    ]);
+    
     completion.sendCompletion().subscribe((message: any) => {
       // 打印消息体
-      console.log(message.content)
+      console.log("AI Response:", message.content);
       // 赋值消息内容给组件内属性
-      this.responseMsg = message.content
-    })
+      this.responseMsg = message.content;
+
+      // 在此,我们可以通过AI返回的数据或分析来生成反馈
+      this.analyzeExerciseData();
+    });
+  }
+
+  // 分析运动数据,并生成反馈
+  analyzeExerciseData() {
+    // 假设我们有某些标准目标,比如10000步,消耗500卡路里等
+    const targetSteps = 10000;
+    const targetCalories = 500;
+    const targetDistance = 5;  // 5公里
+
+    // 进行简单的训练效果分析
+    if (this.exerciseData.steps < targetSteps) {
+      this.exerciseFeedback = `你的步数还差${targetSteps - this.exerciseData.steps}步,继续加油!`;
+    } else {
+      this.exerciseFeedback = `步数目标已完成!保持良好的状态!`;
+    }
+
+    if (this.exerciseData.caloriesBurned < targetCalories) {
+      this.exerciseFeedback += ` 你还差${targetCalories - this.exerciseData.caloriesBurned}卡路里,加油燃烧!`;
+    } else {
+      this.exerciseFeedback += ` 卡路里目标已达成,做得很好!`;
+    }
+
+    if (this.exerciseData.distance < targetDistance) {
+      this.exerciseFeedback += ` 距离目标还差${(targetDistance - this.exerciseData.distance).toFixed(2)}公里。`;
+    } else {
+      this.exerciseFeedback += ` 距离目标已达成,继续保持!`;
+    }
+
+    console.log("Exercise Feedback:", this.exerciseFeedback);
+  }
+
+  // 模拟更新运动数据
+  updateExerciseData() {
+    // 这个方法可以用来模拟运动数据的更新
+    // 你可以通过外部设备集成来更新这些数据,或者使用硬编码的测试数据
+    this.exerciseData = {
+      steps: Math.floor(Math.random() * 15000),  // 随机步数
+      caloriesBurned: Math.floor(Math.random() * 700),  // 随机卡路里消耗
+      distance: Math.random() * 10  // 直接使用数字类型的距离
+    };
+    console.log("Updated Exercise Data:", this.exerciseData);
   }
 }