202226701033 1 год назад
Родитель
Сommit
f0e2547202

+ 0 - 0
foodbalance-app/serve


+ 24 - 0
foodbalance-app/src/app/eatadvice/eatadvice.component.html

@@ -0,0 +1,24 @@
+
+<ion-content>
+
+  <h1>最近饮食</h1>
+  <ion-input  [value]="keshi" (ionInput)="keshiInput($event)"></ion-input>
+
+  <!-- 文本域:生成提示词 -->
+  <h1>饮食描述</h1>
+  <ion-textarea [value]="userPrompt" (ionInput)="promptInput($event)" placeholder="文本提示词" autoGrow="true"></ion-textarea>
+  
+  <!-- 按钮:执行消息生成函数 -->
+  <ion-button (click)="sendMessage()" expand="block">饮食分析</ion-button>
+  
+  <!-- 展示:返回消息内容 -->
+  <!-- 消息传输过程中,实时预览 -->
+  @if(!isComplete){
+    <div>{{responseMsg}}</div>
+  }
+  <!-- 消息传输完成后,实时预览Markdown格式 -->
+  @if(isComplete){
+    <fm-markdown-preview class="content-style" [content]="responseMsg"></fm-markdown-preview>
+  }
+  
+</ion-content>

+ 0 - 0
foodbalance-app/src/app/eatadvice/eatadvice.component.scss


+ 22 - 0
foodbalance-app/src/app/eatadvice/eatadvice.component.spec.ts

@@ -0,0 +1,22 @@
+import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing';
+
+import { EatadviceComponent } from './eatadvice.component';
+
+describe('EatadviceComponent', () => {
+  let component: EatadviceComponent;
+  let fixture: ComponentFixture<EatadviceComponent>;
+
+  beforeEach(waitForAsync(() => {
+    TestBed.configureTestingModule({
+      imports: [EatadviceComponent],
+    }).compileComponents();
+
+    fixture = TestBed.createComponent(EatadviceComponent);
+    component = fixture.componentInstance;
+    fixture.detectChanges();
+  }));
+
+  it('should create', () => {
+    expect(component).toBeTruthy();
+  });
+});

+ 55 - 0
foodbalance-app/src/app/eatadvice/eatadvice.component.ts

@@ -0,0 +1,55 @@
+import { Component, OnInit } from '@angular/core';
+import { IonHeader, IonToolbar, IonTitle, IonContent, IonButton, IonTextarea, IonInput } from '@ionic/angular/standalone';
+/** 引用:从fmode-ng库引用FmodeChatCompletion类 */
+import { FmodeChatCompletion,MarkdownPreviewModule } from 'fmode-ng';
+@Component({
+  selector: 'app-eatadvice',
+  templateUrl: './eatadvice.component.html',
+  styleUrls: ['./eatadvice.component.scss'],
+  standalone: true,
+  imports: [IonHeader, IonToolbar, IonTitle, IonContent, IonButton,IonTextarea,IonInput,
+    // 引入fm-markdown-preview组件模块
+    MarkdownPreviewModule
+  ],
+})
+export class EatadviceComponent  implements OnInit {
+
+  constructor() {}
+  ngOnInit(){}
+  // 用户输入提示词
+  keshi:string = "填写食物"
+  keshiInput(ev:any){
+    this.keshi = ev.detail.value;
+  }
+  // 用户输入提示词
+  userPrompt:string = "请描述您最近一周的饮食以及自身状态"
+  promptInput(ev:any){
+    this.userPrompt = ev.detail.value;
+  }
+  // 属性:组件内用于展示消息内容的变量
+  responseMsg:any = ""
+  // 方法:实例化completion对象,传入消息数组,并订阅生成的可观察对象。
+  isComplete:boolean = false; // 定义完成状态属性,用来标记是否补全完成
+  sendMessage(){
+    console.log("create")
+
+    let PromptTemplate = `
+    您作为一名专业的营养师,以下是我最近所吃的食物:${this.keshi},请您根据我的饮食描述,给出初步的分析,并给出一些建议。
+    以下是用户的口述:${this.userPrompt}
+    `
+
+    let completion = new FmodeChatCompletion([
+      {role:"system",content:""},
+      {role:"user",content:PromptTemplate}
+    ])
+    completion.sendCompletion().subscribe((message:any)=>{
+      // 打印消息体
+      console.log(message.content)
+      // 赋值消息内容给组件内属性
+      this.responseMsg = message.content
+      if(message?.complete){ // 判断message为完成状态,则设置isComplete为完成
+        this.isComplete = true
+      }
+    })
+  }
+}

+ 5 - 0
foodbalance-app/src/app/tabs/tabs.routes.ts

@@ -21,6 +21,11 @@ export const routes: Routes = [
         loadComponent: () =>
           import('../tab3/tab3.page').then((m) => m.Tab3Page),
       },
+      {
+        path: 'eatadvice',
+        loadComponent: () =>
+          import('../eatadvice/eatadvice.component').then((m) => m.EatadviceComponent),
+      },
       {
         path: '',
         redirectTo: '/tabs/tab1',

+ 15 - 0
foodbalance-app/src/main.ts

@@ -4,11 +4,26 @@ import { IonicRouteStrategy, provideIonicAngular } from '@ionic/angular/standalo
 
 import { routes } from './app/app.routes';
 import { AppComponent } from './app/app.component';
+// 引用HttpClient方法
+import { provideHttpClient } from '@angular/common/http';
+// 引用移动端授权检测供应器
+import { Diagnostic } from '@awesome-cordova-plugins/diagnostic/ngx';
+// 设置Parse服务属性
+import Parse from "parse";
+Parse.initialize("ncloudmaster");
+Parse.serverURL = "https://server.fmode.cn/parse";
+localStorage.setItem("NOVA_APIG_SERVER", 'aHR0cHMlM0ElMkYlMkZzZXJ2ZXIuZm1vZGUuY24lMkZhcGklMkZhcGlnJTJG')
 
+// 注意:替换Token 根据Token设置Parse服务帐套权限
+Parse.User.become("r:54599dda11c8ac08c39cdfa3a33a13f2")
 bootstrapApplication(AppComponent, {
   providers: [
     { provide: RouteReuseStrategy, useClass: IonicRouteStrategy },
     provideIonicAngular(),
     provideRouter(routes, withPreloading(PreloadAllModules)),
+    // 添加HttpClient供应器
+    provideHttpClient(),
+    // 添加Diagnostic
+    Diagnostic,
   ],
 });

+ 1 - 0
foodbalance-app/tsconfig.json

@@ -2,6 +2,7 @@
 {
   "compileOnSave": false,
   "compilerOptions": {
+    "allowSyntheticDefaultImports":true,
     "baseUrl": "./",
     "outDir": "./dist/out-tsc",
     "forceConsistentCasingInFileNames": true,

+ 33 - 0
foodbalance-prod/README.md

@@ -2,6 +2,9 @@
 
 - foodbalance-app 前端代码
 - foodbalance-prod 产品文档
+- 202226701033
+- 22大数据班
+- 邹敏轩
 
 # 项目设想
 01*
@@ -140,6 +143,36 @@
 根据用户反馈和市场趋势,定期更新和推出新功能(如营养小知识、在线咨询等)和内容,以保持用户的兴趣和吸引力。
 
 
+# 核心功能
+
+悦食app的核心功能应集中在用户健康饮食和营养管理的关键需求上,以下是一些主要的核心功能模块:
+
+- 1. 个性化饮食计划
+个性化饮食建议:根据用户的健康目标(如减肥、增肌、维持体重等)、饮食偏好和健康状况(如过敏、特殊饮食需求)生成个性化的饮食计划。
+- 2. 食物摄入记录
+食物日志:用户可以方便地记录每日的食物摄入,包括食物种类、数量和时间,支持手动输入和条形码扫描功能。
+- 3. 营养成分分析
+营养追踪:对用户记录的食物进行营养成分分析,提供卡路里、蛋白质、脂肪、碳水化合物、维生素和矿物质等的详细信息,帮助用户了解自己的营养摄入情况。
+- 4. 健康指标监测
+身体数据记录:用户可以记录体重、BMI、体脂率、血糖等健康指标,并提供趋势分析,帮助用户监测自身健康变化。
+- 5. 食谱推荐
+健康食谱库:提供丰富的健康食谱,用户可以根据自己的饮食计划和偏好进行搜索和浏览,帮助用户轻松找到适合自己的菜肴。
+- 6. 社区互动
+用户社区:建立一个用户互动平台,用户可以分享饮食经验、成功案例、食谱和参加健康挑战,增强用户之间的联系和支持。
+- 7. 数据分析与反馈
+饮食习惯分析:根据用户的饮食记录,生成饮食习惯分析报告,帮助用户识别自己的饮食模式和潜在问题。
+健康趋势报告:定期生成用户的健康报告,展示饮食和健康方面的进展和变化,提供改进建议。
+- 8. 目标设定与跟踪
+健康目标管理:用户可以设定短期和长期的健康目标(如减重目标、营养摄入目标等),并跟踪目标达成情况,提供提醒和激励。
+- 9. 设置与隐私管理
+个人信息管理:用户可以随时更新个人信息和健康档案,确保饮食建议的准确性。
+隐私设置:用户可以管理数据隐私设置,选择是否分享个人数据和使用情况。
+- 10. 推送通知与提醒
+智能提醒:根据用户的饮食计划和目标,发送饮食提醒、摄入建议和激励通知,帮助用户保持良好的饮食习惯。
+通过这些核心功能,悦食app能够为用户提供全面、个性化的饮食和营养管理服务,帮助他们实现健康目标并养成良好的饮食习惯。
+
+
+
 # 经济趋势