15179588180 6 сар өмнө
parent
commit
9157a30e5a

+ 18 - 17
seeking-app/src/app/tab2/tab2.page.html

@@ -6,58 +6,59 @@
   </ion-toolbar>
 </ion-header>
 
-<ion-content>
+<ion-content class="ion-padding">
   <!-- 用户输入饮食目标 -->
   <ion-item>
     <ion-label position="floating">饮食目标</ion-label>
-    <ion-input [(ngModel)]="dietGoal" placeholder="例如:减脂、增肌等"></ion-input>
+    <ion-input [(ngModel)]="dietGoal"></ion-input>
   </ion-item>
 
   <!-- 用户输入食物忌口 -->
   <ion-item>
     <ion-label position="floating">食物忌口</ion-label>
-    <ion-input [(ngModel)]="foodRestrictions" placeholder="例如:不吃海鲜、不吃辣等"></ion-input>
+    <ion-input [(ngModel)]="foodRestrictions"></ion-input>
   </ion-item>
 
   <!-- 用户输入详细需求 -->
   <ion-item>
     <ion-label position="floating">详细需求</ion-label>
-    <ion-textarea [(ngModel)]="detailedRequirements" placeholder="例如:每天至少摄入 100 克蛋白质"></ion-textarea>
+    <ion-textarea [(ngModel)]="detailedRequirements" autoGrow="true"></ion-textarea>
   </ion-item>
 
   <!-- 用户输入饮食偏好 -->
   <ion-item>
     <ion-label position="floating">饮食偏好</ion-label>
-    <ion-input [(ngModel)]="dietPreference" placeholder="例如:高蛋白、低碳水"></ion-input>
+    <ion-input [(ngModel)]="dietPreference"></ion-input>
   </ion-item>
 
   <!-- 用户输入饮食计划时长 -->
   <ion-item>
     <ion-label position="floating">饮食计划时长</ion-label>
-    <ion-input [(ngModel)]="dietDuration" type="number" placeholder="例如:7、14、30 天"></ion-input>
+    <ion-input [(ngModel)]="dietDuration" type="number"></ion-input>
   </ion-item>
 
   <!-- 用户输入需求 -->
   <ion-textarea 
     [value]="userPrompt" 
     (ionInput)="promptInput($event)" 
-    placeholder="输入你的饮食需求,如:高蛋白饮食,低糖饮食等" 
     autoGrow="true"
+    class="user-input-textarea"
   ></ion-textarea>
 
-  <!-- 按钮:触发饮食计划生成 -->
-  <ion-button (click)="sendMessage()" expand="block">生成饮食计划</ion-button>
-  
+  <!-- 按钮:生成饮食计划 -->
+  <ion-button expand="block" (click)="sendMessage()" class="generate-button">
+    生成饮食计划
+  </ion-button>
+
   <!-- 显示生成的饮食计划 -->
   <div *ngIf="responseMsg" class="response-container">
-    <h2>生成的饮食计划</h2>
-    <p><strong>饮食目标:</strong> {{ responseMsg.goal }}</p>
-    <p><strong>饮食偏好:</strong> {{ responseMsg.preference }}</p>
-    <p><strong>饮食计划时长:</strong> {{ responseMsg.duration }} 天</p>
-    <p><strong>食物忌口:</strong> {{ responseMsg.foodRestrictions }}</p>
-    <p><strong>详细需求:</strong> {{ responseMsg.detailedRequirements }}</p>
+    <h2>饮食计划</h2>
+    <p><strong>目标:</strong>{{ responseMsg.goal }}</p>
+    <p><strong>偏好:</strong>{{ responseMsg.preference }}</p>
+    <p><strong>时长:</strong>{{ responseMsg.duration }} 天</p>
+    <p><strong>忌口:</strong>{{ responseMsg.foodRestrictions }}</p>
+    <p><strong>需求:</strong>{{ responseMsg.detailedRequirements }}</p>
 
-    
     <!-- 遍历每个餐食并展示 -->
     <div class="meal-plan" *ngFor="let meal of responseMsg.meals">
       <h3>{{ meal.type }}</h3>

+ 25 - 41
seeking-app/src/app/tab2/tab2.page.scss

@@ -1,66 +1,50 @@
-/* 增加页面内的间距 */
-.content {
-  padding: 20px;
+ion-item {
+  --padding-start: 16px;
+  --padding-end: 16px;
 }
 
-/* 为每个输入框设置底部间距 */
-.input-item {
-  margin-bottom: 20px;
+ion-label {
+  font-size: 16px;
+  color: var(--ion-text-color);
 }
 
-/* 设置每个输入框的高度和间距,避免与标签重叠 */
 ion-input, ion-textarea {
-  padding-top: 16px;  /* 增加输入框顶部间距 */
-  padding-bottom: 16px;  /* 增加输入框底部间距 */
-  font-size: 16px;  /* 设置输入框的字体大小 */
+  font-size: 16px;
+  padding-top: 10px;  /* 确保有足够的空间 */
 }
 
-/* 设置浮动标签的字体大小和颜色 */
-ion-label {
-  font-size: 16px;
-  color: var(--ion-text-color);
+ion-item .ion-label {
+  margin-bottom: 4px;  /* 增加标签与输入框之间的间距 */
 }
 
-/* 增加浮动标签的间距 */
-ion-label.floating {
-  margin-top: 12px;
+.user-input-textarea {
+  margin-top: 10px;
 }
 
-/* 设置生成按钮的间距 */
 .generate-button {
   margin-top: 20px;
-  padding: 12px 0;
 }
 
-/* 设置生成饮食计划标题的间距 */
-.response-title {
-  margin-top: 20px;
-  font-size: 24px;
-  font-weight: bold;
+.response-container h2 {
+  font-size: 1.5em;
+  margin-bottom: 15px;
+  color: #3880ff;
 }
 
-/* 增加生成饮食计划文本的间距 */
 .response-container p {
-  margin-bottom: 15px;
+  margin: 5px 0;
+  font-size: 1em;
 }
 
-/* 调整餐食列表的间距 */
 .meal-plan {
-  margin-top: 20px;
+  margin-top: 10px;
+  padding: 10px;
+  background: #f9f9f9;
+  border-radius: 8px;
 }
 
 .meal-plan h3 {
-  font-size: 20px;
-  font-weight: bold;
-  margin-bottom: 10px;
-}
-
-.meal-plan ul {
-  margin-left: 20px;
-  list-style-type: none;
-  padding: 0;
-}
-
-.meal-plan li {
-  margin-bottom: 10px;
+  margin-top: 0;
+  font-size: 1.2em;
+  color: #3880ff;
 }

+ 1 - 1
seeking-app/src/app/tab2/tab2.page.ts

@@ -14,7 +14,7 @@ import { DietPlan } from '../models/diet-plan.model';  // 导入定义好的数
   imports: [IonicModule, CommonModule, FormsModule, ExploreContainerComponent]  // 添加 CommonModule 和 FormsModule
 })
 export class Tab2Page {
-  userPrompt: string = "高蛋白饮食,低糖饮食";
+  userPrompt: string = "";
   responseMsg: DietPlan | null = null;
   isLoading: boolean = false;  // 用于控制加载指示器
 

+ 174 - 0
seeking-prod/seeking.puml

@@ -0,0 +1,174 @@
+
+
+```plantuml 
+
+@startuml
+actor "个人用户" as IndividualUser
+actor "商家用户" as BusinessUser
+actor "第三方机构" as ThirdParty
+
+' 个人用户用例
+usecase "登录 / 注册" as UC1
+usecase "AI 食谱分析" as UC2
+usecase "饮食计划生成" as UC3
+usecase "食材查询" as UC4
+usecase "订阅会员服务" as UC5
+usecase "购买增值服务" as UC6
+usecase "通过平台购买食材或餐饮产品" as UC7
+usecase "查看个人饮食数据报告" as UC8
+
+' 商家用户用例
+usecase "注册商家账号并订阅服务" as UC9
+usecase "管理顾客饮食需求" as UC10
+usecase "与平台合作分成" as UC11
+
+' 第三方机构用例
+usecase "申请数据服务" as UC12
+usecase "接收并使用用户饮食数据" as UC13
+
+' 个人用户用例关系
+UC5 --> UC6 : 包含
+UC3 --> UC1 : 包含
+UC3 --> UC4 : 包含
+UC2 --> UC1 : 包含
+UC2 --> UC4 : 扩展
+UC2 --> "使用 OCR 技术优化图片识别" : 扩展
+
+' 商家用户用例关系
+UC9 --> UC11 : 包含
+UC10 --> UC9 : 包含
+
+' 第三方机构用例关系
+UC12 --> UC13 : 包含
+
+' 用例与参与者的关系
+IndividualUser --> UC1
+IndividualUser --> UC2
+IndividualUser --> UC3
+IndividualUser --> UC4
+IndividualUser --> UC5
+IndividualUser --> UC6
+IndividualUser --> UC7
+IndividualUser --> UC8
+
+BusinessUser --> UC9
+BusinessUser --> UC10
+BusinessUser --> UC11
+
+ThirdParty --> UC12
+ThirdParty --> UC13
+
+@enduml@startuml
+actor "个人用户" as IndividualUser
+actor "商家用户" as BusinessUser
+actor "第三方机构" as ThirdParty
+
+' 个人用户用例
+usecase "登录 / 注册" as UC1
+usecase "AI 食谱分析" as UC2
+usecase "饮食计划生成" as UC3
+usecase "食材查询" as UC4
+usecase "订阅会员服务" as UC5
+usecase "购买增值服务" as UC6
+usecase "通过平台购买食材或餐饮产品" as UC7
+usecase "查看个人饮食数据报告" as UC8
+
+' 商家用户用例
+usecase "注册商家账号并订阅服务" as UC9
+usecase "管理顾客饮食需求" as UC10
+usecase "与平台合作分成" as UC11
+
+' 第三方机构用例
+usecase "申请数据服务" as UC12
+usecase "接收并使用用户饮食数据" as UC13
+
+' 个人用户用例关系
+UC5 --> UC6 : 包含
+UC3 --> UC1 : 包含
+UC3 --> UC4 : 包含
+UC2 --> UC1 : 包含
+UC2 --> UC4 : 扩展
+UC2 --> "使用 OCR 技术优化图片识别" : 扩展
+
+' 商家用户用例关系
+UC9 --> UC11 : 包含
+UC10 --> UC9 : 包含
+
+' 第三方机构用例关系
+UC12 --> UC13 : 包含
+
+' 用例与参与者的关系
+IndividualUser --> UC1
+IndividualUser --> UC2
+IndividualUser --> UC3
+IndividualUser --> UC4
+IndividualUser --> UC5
+IndividualUser --> UC6
+IndividualUser --> UC7
+IndividualUser --> UC8
+
+BusinessUser --> UC9
+BusinessUser --> UC10
+BusinessUser --> UC11
+
+ThirdParty --> UC12
+ThirdParty --> UC13
+
+@enduml@startuml
+actor "个人用户" as IndividualUser
+actor "商家用户" as BusinessUser
+actor "第三方机构" as ThirdParty
+
+' 个人用户用例
+usecase "登录 / 注册" as UC1
+usecase "AI 食谱分析" as UC2
+usecase "饮食计划生成" as UC3
+usecase "食材查询" as UC4
+usecase "订阅会员服务" as UC5
+usecase "购买增值服务" as UC6
+usecase "通过平台购买食材或餐饮产品" as UC7
+usecase "查看个人饮食数据报告" as UC8
+
+' 商家用户用例
+usecase "注册商家账号并订阅服务" as UC9
+usecase "管理顾客饮食需求" as UC10
+usecase "与平台合作分成" as UC11
+
+' 第三方机构用例
+usecase "申请数据服务" as UC12
+usecase "接收并使用用户饮食数据" as UC13
+
+' 个人用户用例关系
+UC5 --> UC6 : 包含
+UC3 --> UC1 : 包含
+UC3 --> UC4 : 包含
+UC2 --> UC1 : 包含
+UC2 --> UC4 : 扩展
+UC2 --> "使用 OCR 技术优化图片识别" : 扩展
+
+' 商家用户用例关系
+UC9 --> UC11 : 包含
+UC10 --> UC9 : 包含
+
+' 第三方机构用例关系
+UC12 --> UC13 : 包含
+
+' 用例与参与者的关系
+IndividualUser --> UC1
+IndividualUser --> UC2
+IndividualUser --> UC3
+IndividualUser --> UC4
+IndividualUser --> UC5
+IndividualUser --> UC6
+IndividualUser --> UC7
+IndividualUser --> UC8
+
+BusinessUser --> UC9
+BusinessUser --> UC10
+BusinessUser --> UC11
+
+ThirdParty --> UC12
+ThirdParty --> UC13
+
+@enduml
+```

+ 3 - 0
seeking-prod/setting.json

@@ -0,0 +1,3 @@
+{
+    "plantuml.server": "https://www.plantuml.com/plantuml"
+}