2 Commits fd52ca3669 ... 12d2b49093

Author SHA1 Message Date
  15179169528 12d2b49093 解决合并冲突并更新文件 7 months ago
  15179169528 a463ba3890 fix:14th 7 months ago

+ 7 - 0
angular.json

@@ -126,7 +126,14 @@
     }
   },
   "cli": {
+<<<<<<< HEAD
+    "schematicCollections": [
+      "@ionic/angular-toolkit"
+    ],
+    "analytics": false
+=======
     "schematicCollections": ["@ionic/angular-toolkit"]
+>>>>>>> fd52ca36698bd0c3fe861eed14ed929d420a4aa7
   },
   "schematics": {
     "@ionic/angular-toolkit:component": {

File diff suppressed because it is too large
+ 684 - 0
package-lock.json


+ 4 - 0
package.json

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

+ 38 - 1
src/app/app.module.ts

@@ -1,6 +1,42 @@
 import { NgModule } from '@angular/core';
 import { BrowserModule } from '@angular/platform-browser';
 import { RouteReuseStrategy } from '@angular/router';
+<<<<<<< HEAD
+
+import { IonicModule, IonicRouteStrategy } from '@ionic/angular';
+
+import { routes } from './app.routes';
+import { AppComponent } from './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:d086cc6a338d83f7b79d4d9d602a91ac')
+
+
+@NgModule({
+  declarations: [AppComponent],
+  imports: [BrowserModule, IonicModule.forRoot(), routes],
+  providers: [
+     // 添加HttpClient供应器
+     provideHttpClient(),
+     // 添加Diagnostic
+     Diagnostic,
+    { provide: RouteReuseStrategy, useClass: IonicRouteStrategy }
+  ],
+  bootstrap: [AppComponent],
+})
+export class AppModule {}
+=======
 import { IonicModule, IonicRouteStrategy } from '@ionic/angular';
 import { CommonModule } from '@angular/common';
 
@@ -16,4 +52,5 @@ import { AppComponent } from './app.component';
   providers: [{ provide: RouteReuseStrategy, useClass: IonicRouteStrategy }],
   bootstrap: [AppComponent],
 })
-export class AppModule {} 
+export class AppModule {} 
+>>>>>>> fd52ca36698bd0c3fe861eed14ed929d420a4aa7

+ 16 - 0
src/app/tab1/qna/qna.page.html

@@ -9,10 +9,26 @@
   </ion-toolbar>
 </ion-header>
 
+<<<<<<< HEAD
+<ion-content>
+  <!-- 文本域:生成提示词 -->
+  <h1>输入问题</h1>
+  <ion-textarea [value]="userPrompt" (ionInput)="promptInput($event)" placeholder="文本提示词" autoGrow="true"></ion-textarea>
+  
+  <!-- 按钮:执行消息生成函数 -->
+  <ion-button (click)="sendMessage()" expand="block">提交问题</ion-button>
+  
+  <!-- 展示:返回消息内容 -->
+  <div *ngIf="!isComplete">{{responseMsg}}</div>
+  
+  <!-- 消息传输完成后,实时预览Markdown格式 -->
+  <fm-markdown-preview *ngIf="isComplete" class="content-style" [content]="responseMsg"></fm-markdown-preview>
+=======
 <ion-content [fullscreen]="true">
   <ion-header collapse="condense">
     <ion-toolbar>
       <ion-title size="large">问答</ion-title>
     </ion-toolbar>
   </ion-header>
+>>>>>>> fd52ca36698bd0c3fe861eed14ed929d420a4aa7
 </ion-content>

+ 71 - 0
src/app/tab1/qna/qna.page.ts

@@ -1,12 +1,27 @@
+<<<<<<< HEAD
+import { Component, OnInit } from '@angular/core';
+import { 
+  IonTextarea,
+  IonInput,
+=======
 import { Component } from '@angular/core';
 import { 
+>>>>>>> fd52ca36698bd0c3fe861eed14ed929d420a4aa7
   IonHeader, 
   IonToolbar, 
   IonTitle, 
   IonContent,
   IonBackButton,
+<<<<<<< HEAD
+  IonButtons,
+  IonButton
+} from '@ionic/angular/standalone';
+import { CommonModule } from '@angular/common'; // 导入 CommonModule
+import { FmodeChatCompletion, MarkdownPreviewModule } from 'fmode-ng';
+=======
   IonButtons
 } from '@ionic/angular/standalone';
+>>>>>>> fd52ca36698bd0c3fe861eed14ed929d420a4aa7
 
 @Component({
   selector: 'app-qna',
@@ -14,14 +29,70 @@ import {
   styleUrls: ['./qna.page.scss'],
   standalone: true,
   imports: [
+<<<<<<< HEAD
+    CommonModule, // 添加 CommonModule
+    MarkdownPreviewModule, // 确保导入 MarkdownPreviewModule
+    IonTextarea,
+    IonInput,
+=======
+>>>>>>> fd52ca36698bd0c3fe861eed14ed929d420a4aa7
     IonHeader,
     IonToolbar,
     IonTitle,
     IonContent,
     IonBackButton,
+<<<<<<< HEAD
+    IonButtons,
+    IonButton
+  ]
+})
+export class QnaPage implements OnInit {
+  constructor() {}
+
+  ngOnInit() {}
+
+  // 用户输入提示词
+  userPrompt: string = "请输入你的问题:";   
+  
+  promptInput(ev: any) {
+    this.userPrompt = ev.detail.value;
+  }
+
+  // 属性:组件内用于展示消息内容的变量
+  responseMsg: any = "";
+  isComplete: boolean = false; // 定义完成状态属性,用来标记是否补全完成
+
+  sendMessage() {
+    console.log("create");
+
+    let PromptTemplate = `
+    您作为一名专业的虚拟教师,请您根据用户的问题${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;
+      }
+    });
+
+    // 重置状态以允许再次提问
+    this.isComplete = false; // 允许再次提问
+    this.userPrompt = ""; // 清空输入框
+  }
+=======
     IonButtons
   ]
 })
 export class QnaPage {
   constructor() {}
+>>>>>>> fd52ca36698bd0c3fe861eed14ed929d420a4aa7
 }

+ 8 - 0
src/app/tab1/tab1.page.html

@@ -33,7 +33,11 @@
           </ion-card-header>
           <ion-card-content>
             <ion-icon name="create" slot="start"></ion-icon>
+<<<<<<< HEAD
+            点击进入测试页面
+=======
             点击进入计划页面
+>>>>>>> fd52ca36698bd0c3fe861eed14ed929d420a4aa7
           </ion-card-content>
         </ion-card>
       </ion-col>
@@ -46,7 +50,11 @@
           </ion-card-header>
           <ion-card-content>
             <ion-icon name="calendar" slot="start"></ion-icon>
+<<<<<<< HEAD
+            点击进入计划页面
+=======
             点击进入学习页面
+>>>>>>> fd52ca36698bd0c3fe861eed14ed929d420a4aa7
           </ion-card-content>
         </ion-card>
       </ion-col>

+ 4 - 0
tsconfig.json

@@ -2,6 +2,10 @@
 {
   "compileOnSave": false,
   "compilerOptions": {
+<<<<<<< HEAD
+    "allowSyntheticDefaultImports":true,
+=======
+>>>>>>> fd52ca36698bd0c3fe861eed14ed929d420a4aa7
     "baseUrl": "./",
     "outDir": "./dist/out-tsc",
     "forceConsistentCasingInFileNames": true,

Some files were not shown because too many files changed in this diff