cainiao-hue 3 сар өмнө
parent
commit
9b35c64a29

+ 3 - 2
.vscode/settings.json

@@ -1,3 +1,4 @@
 {
-  "typescript.preferences.autoImportFileExcludePatterns": ["@ionic/angular/common", "@ionic/angular/standalone"]
-}
+  "typescript.preferences.autoImportFileExcludePatterns": ["@ionic/angular/common", "@ionic/angular/standalone"],
+  "plantuml.server":"http://www.plantuml.com/plantuml"
+}

+ 53 - 0
docs-prod/schema.md

@@ -0,0 +1,53 @@
+```plantuml
+' 聊天项目类图
+@startuml
+' 智能陪聊
+' 存储用户的基本信息
+class User { 
+    +objectId: String
+    +createdAt: Date
+    +username: String
+    +password: String
+    +email: String
+    +profilePicture: String
+    +bio: String
+}
+'  存储专业陪聊师的信息
+class Chatbot {
+    +objectId: String
+    +createdAt: Date
+    +name: String
+    +specialization: String
+    +rating: Float
+    +availability: Boolean
+    +profilePicture: String
+    +bio: String
+}
+' 记录用户与陪聊师的聊天记录
+class ChatRecord {
+    +objectId: String
+    +createdAt: Date
+    +message: String
+    +timestamp: Date
+    +user: Pointer
+    +chatbot: Pointer
+}
+
+User "1" --> "*" ChatRecord
+Chatbot "1" --> "*" ChatRecord
+' 普通聊天
+'  存储普通陪聊师的信息
+class RegularChatbot {
+    +objectId: String
+    +createdAt: Date
+    +name: String
+    +description: String
+    +version: String
+    +availability: Boolean
+    +profilePicture: String
+}
+
+RegularChatbot "1" --> "*" ChatRecord
+
+@enduml
+```

+ 39 - 38
soul-app/src/app/tab2/README.md

@@ -1,38 +1,39 @@
-Tab2 页面结构
-1. 智能匹配区
-组件: 智能匹配
-元素:
-匹配说明文本
-匹配类型选择(下拉菜单或单选按钮)
-匹配按钮
-匹配结果展示区域
-示例内容:
-说明文本: “根据您的需求,智能匹配合适的心理咨询师。”
-按钮: “开始匹配”
-匹配结果: “为您推荐的心理咨询师是:张医生,擅长焦虑和抑郁。”
-2. 陪聊服务区
-组件: 陪聊服务
-元素:
-服务介绍文本
-开始陪聊按钮
-陪聊服务流程说明
-示例内容:
-介绍文本: “我们的陪聊服务旨在为您提供情感支持和倾诉的机会。”
-按钮: “开始陪聊”
-流程说明:
-步骤一: “选择陪聊时间”
-步骤二: “与陪聊师匹配”
-步骤三: “开始聊天”
-3. 普通心理问题的专业性建议区
-组件: 心理问题建议
-元素:
-问题列表(可展开)
-建议内容展示
-示例内容:
-问题一: “如何应对焦虑?”
-建议: “尝试深呼吸和正念冥想,保持规律的作息。”
-问题二: “如何提高自信心?”
-建议: “设定小目标并逐步实现,进行积极自我对话。”
-问题三: “如何改善人际关系?”
-建议: “多与他人沟通,倾听对方的感受。”
-请您作为一名专业的Ionic前端工程师,帮我运用ionic v7 或v8及以上的angular版本standalone模式编写,选择合适的ionic组件来重构以上产品页面的各个区域和内容,如果涉及到图形效果请用ion-icon。并给出整个页面的tab2.page.html代码还有tab2.page.ts代码
+# Tab2 页面结构
+## 1. 智能匹配区
+### 组件: 智能陪聊
+- 元素:
+    - 匹配说明文本
+    - 匹配类型选择(下拉菜单或单选按钮)
+    - 匹配按钮
+    - 匹配结果展示区域
+- 示例内容:
+    - 说明文本: “根据您的需求,智能匹配合适的心理咨询师。”
+    - 按钮: “开始匹配”
+    - 匹配结果: “为您推荐的心理咨询师是:张医生,擅长焦虑和抑郁。”
+## 2. 普通聊天区
+### 组件: 陪聊服务
+- 元素:
+    - 服务介绍文本
+    - 开始陪聊按钮
+    - 陪聊服务流程说明
+- 示例内容:
+    - 介绍文本: “我们的陪聊服务旨在为您提供情感支持和倾诉的机会。”
+    - 按钮: “开始陪聊”
+    - 流程说明:
+        - 步骤一: “选择陪聊时间”
+        - 步骤二: “与陪聊师匹配”
+        - 步骤三: “开始聊天”
+## 3. 普通心理问题的专业性建议区
+### 组件: 心理问题建议
+- 元素:
+    - 问题列表(可展开)
+    - 建议内容展示
+- 示例内容:
+    - 问题一: “如何应对焦虑?”
+        - 建议: “尝试深呼吸和正念冥想,保持规律的作息。”
+    - 问题二: “如何提高自信心?”
+        - 建议: “设定小目标并逐步实现,进行积极自我对话。”
+    - 问题三: “如何改善人际关系?”
+        - 建议: “多与他人沟通,倾听对方的感受。”
+##### 请您作为一名专业的Ionic前端工程师,帮我运用ionic v7 或v8及以上的angular版本standalone模式编写,选择合适的ionic组件来重构以上产品页面的各个区域和内容,如果涉及到图形效果请用ion-icon。并给出整个页面的tab2.page.html代码还有tab2.page.ts代码
+# Tab2 页面数据库建表

+ 20 - 26
soul-app/src/app/tab2/tab2.page.html

@@ -5,27 +5,26 @@
 </ion-header>
 
 <ion-content>
-  <!-- 智能匹配区 -->
+  <!-- 智能陪聊区 -->
   <section>
     <ion-card>
       <ion-card-header>
-        <ion-card-title>智能匹配</ion-card-title>
+        <ion-card-title>智能陪聊</ion-card-title>
       </ion-card-header>
       <ion-card-content>
-        <p>根据您与陪聊机器人的问答情况,分析你的心理问题类型,再为您智能匹配合适的心理陪聊师。</p>
-        <!--<ion-item>
-          <ion-label>选择心理问题类型</ion-label>
-          <ion-select [(ngModel)]="selectedIssue">
-            <ion-select-option value="anxiety">焦虑</ion-select-option>
-            <ion-select-option value="depression">抑郁</ion-select-option>
-            <ion-select-option value="relationship">人际关系</ion-select-option>
-          </ion-select>
-        </ion-item>
-      -->
-        <ion-button expand="full" (click)="matchCounselor()">开始匹配</ion-button>
-        <div *ngIf="matchedCounselor" class="match-result">
-          <p>为您推荐的心理咨询师是:{{ matchedCounselor.name }},擅长{{ matchedCounselor.specialty }}。</p>
-        </div>
+        <p>以下是一些专业性的的智能心理陪聊师:</p>
+        <ion-list>
+          <ion-item *ngFor="let consultant of consultants">
+            <ion-avatar slot="start">
+              <img [src]="consultant.avatar" alt="{{ consultant.name }}"/>
+            </ion-avatar>
+            <ion-label>
+              <h2>{{ consultant.name }}</h2>
+              <p>{{ consultant.fields.join(', ') }}</p>
+            </ion-label>
+            <ion-button slot="end" (click)="clickToConsult()">开始陪聊</ion-button>
+          </ion-item>
+        </ion-list>
       </ion-card-content>
     </ion-card>
   </section>
@@ -34,25 +33,20 @@
   <section>
     <ion-card>
       <ion-card-header>
-        <ion-card-title>陪聊服务</ion-card-title>
+        <ion-card-title>普通聊天</ion-card-title>
       </ion-card-header>
       <ion-card-content>
         <p>在这里,我们的陪聊服务宗旨是为您提供情感支持和倾诉的机会,无论是生活上的开心,还是工作上的糟糕,你都可以跟我分享,这里是属于你一个人的空间,你可以大胆放心的使用。</p>
-        <ion-button expand="full" (click)="goChat()">开始陪聊</ion-button>
-        <!--<ol>
-          <li>选择陪聊时间</li>
-          <li>与陪聊师匹配</li>
-          <li>开始聊天</li>
-        </ol>-->
+        <ion-button expand="full" (click)="goChat()">开始聊天</ion-button>
       </ion-card-content>
     </ion-card>
   </section>
 
-  <!-- 普通心理问题的专业性建议区 -->
+  <!-- 普通心理问题的专业性建议区
   <section>
     <ion-card>
       <ion-card-header>
-        <ion-card-title>心理问题建议</ion-card-title>
+        <ion-card-title>专业建议</ion-card-title>
       </ion-card-header>
       <ion-card-content>
         <ion-list>
@@ -67,5 +61,5 @@
         </ion-list>
       </ion-card-content>
     </ion-card>
-  </section>
+  </section>-->
 </ion-content>

+ 14 - 0
soul-app/src/app/tab2/tab2.page.scss

@@ -0,0 +1,14 @@
+ion-avatar {
+    width: 50px; /* 或者你需要的任何尺寸 */
+    height: 50px; /* 保持宽高一致,避免变形 */
+  }
+   
+  ion-avatar img {
+    width: 100%; /* 让图片填满avatar */
+    height: auto; /* 保持图片比例 */
+  }
+  .header-image {
+    width: 100%;
+    height: auto; /* 保持图片比例 */
+    border-radius: 50%; /* 可选:将图片设置为圆形 */
+  }

+ 40 - 28
soul-app/src/app/tab2/tab2.page.ts

@@ -22,43 +22,55 @@ import { Router } from '@angular/router';
 })
 export class Tab2Page {
 
-  constructor(
-    private router:Router,
-    ) {
-
+  constructor(private router: Router) {
+    // 其他构造函数代码
   }
-  //selectedIssue:string='';
-  matchedCounselor: { name: string; specialty: string } | null = null;
-
-  questions = [
+  consultants = [
     {
-      title: '如何应对焦虑?',
-      advice: '尝试深呼吸和正念冥想,保持规律的作息。',
-      expanded: false,
+      name: '智能心理陪聊师',
+      avatar: '/assets/img/2.png',
+      fields: ['专业领域:焦虑']
     },
     {
-      title: '如何提高自信心?',
-      advice: '设定小目标并逐步实现,进行积极自我对话。',
-      expanded: false,
+      name: '智能心理陪聊师',
+      avatar: '/assets/img/4.png',
+      fields: ['专业领域:抑郁']
     },
     {
-      title: '如何改善人际关系?',
-      advice: '多与他人沟通,倾听对方的感受。',
-      expanded: false,
-    },
+      name: '智能心理陪聊师',
+      avatar: '/assets/img/5.png',
+      fields: ['专业领域:压力']
+    }
   ];
+  
+  clickToConsult() {
+    // 开始咨询
+    //this.router.navigate(['tabs/page-consult'])
+    this.router.navigateByUrl("/chat/session/role/2DXJkRsjXK")
+  }
+
+  //selectedIssue:string='';
+  matchedCounselor: { name: string; specialty: string } | null = null;
+
+  //questions = [
+    //{
+      //title: '如何应对焦虑?',
+      //advice: '尝试深呼吸和正念冥想,保持规律的作息。',
+      //expanded: false,
+    //},
+    //{
+      //title: '如何提高自信心?',
+      //advice: '设定小目标并逐步实现,进行积极自我对话。',
+      //expanded: false,
+    //},
+    //{
+      //title: '如何改善人际关系?',
+      //advice: '多与他人沟通,倾听对方的感受。',
+      //expanded: false,
+    //},
+  //];
 
   matchCounselor() {
-    // 这里可以根据selectedIssue进行匹配逻辑
-    //if (this.selectedIssue === 'anxiety') {
-      //this.matchedCounselor = { name: '张医生', specialty: '焦虑' };
-    //} else if (this.selectedIssue === 'depression') {
-      //this.matchedCounselor = { name: '李医生', specialty: '抑郁' };
-    //} else if (this.selectedIssue === 'relationship') {
-      //this.matchedCounselor = { name: '王医生', specialty: '人际关系' };
-    //} else {
-      //this.matchedCounselor = null;
-    //}
   }
   goChat(){
       this.router.navigateByUrl("/chat/session/role/2DXJkRsjXK")