Ver Fonte

feat: new inquery page with aigc

haitao há 3 meses atrás
pai
commit
ce67947eca

Diff do ficheiro suprimidas por serem muito extensas
+ 641 - 14
wisdom-app/package-lock.json


+ 1 - 0
wisdom-app/package.json

@@ -27,6 +27,7 @@
     "@capacitor/keyboard": "6.0.3",
     "@capacitor/status-bar": "6.0.2",
     "@ionic/angular": "^8.0.0",
+    "fmode-ng": "^0.0.62",
     "ionicons": "^7.2.1",
     "rxjs": "~7.8.0",
     "tslib": "^2.3.0",

+ 17 - 0
wisdom-app/src/app/page-inquiry/page-inquiry.component.html

@@ -0,0 +1,17 @@
+
+<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>
+  
+  <!-- 展示:返回消息内容 -->
+  <div>{{responseMsg}}</div>
+  
+</ion-content>

+ 0 - 0
wisdom-app/src/app/page-inquiry/page-inquiry.component.scss


+ 22 - 0
wisdom-app/src/app/page-inquiry/page-inquiry.component.spec.ts

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

+ 48 - 0
wisdom-app/src/app/page-inquiry/page-inquiry.component.ts

@@ -0,0 +1,48 @@
+import { Component, OnInit } from '@angular/core';
+import { IonHeader, IonToolbar, IonTitle, IonContent, IonButton, IonTextarea, IonInput } from '@ionic/angular/standalone';
+/** 引用:从fmode-ng库引用FmodeChatCompletion类 */
+import { FmodeChatCompletion } from 'fmode-ng';
+
+@Component({
+  selector: 'app-page-inquiry',
+  templateUrl: './page-inquiry.component.html',
+  styleUrls: ['./page-inquiry.component.scss'],
+  standalone: true,
+  imports: [IonHeader, IonToolbar, IonTitle, IonContent, IonButton,IonTextarea,IonInput],
+})
+export class PageInquiryComponent  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对象,传入消息数组,并订阅生成的可观察对象。
+  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
+    })
+  }
+}

+ 1 - 1
wisdom-app/src/app/tab1/tab1.page.ts

@@ -27,7 +27,7 @@ export class Tab1Page {
    * Go to the ai page
    */
   goToPage1(){
-    this.router.navigate(['/tabs/page-test'])
+    this.router.navigate(['/tabs/inquiry'])
   }
 
   /**

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

@@ -26,6 +26,11 @@ export const routes: Routes = [
         loadComponent: () =>
           import('../tab4/tab4.page').then((m) => m.Tab4Page),
       },
+      {
+        path: 'inquiry',
+        loadComponent: () =>
+          import('../page-inquiry/page-inquiry.component').then((m) => m.PageInquiryComponent),
+      },
       {
         path: 'page-test',
         loadComponent: () =>

+ 18 - 0
wisdom-app/src/main.ts

@@ -5,10 +5,28 @@ 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:6841da061563b22339ea0799f94c3475')
+
 bootstrapApplication(AppComponent, {
   providers: [
     { provide: RouteReuseStrategy, useClass: IonicRouteStrategy },
     provideIonicAngular(),
     provideRouter(routes, withPreloading(PreloadAllModules)),
+     // 添加HttpClient供应器
+     provideHttpClient(),
+     // 添加Diagnostic
+     Diagnostic,
   ],
 });

+ 1 - 0
wisdom-app/tsconfig.json

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

Alguns ficheiros não foram mostrados porque muitos ficheiros mudaram neste diff