|
@@ -1,11 +1,14 @@
|
|
|
import { CommonModule } from '@angular/common';
|
|
|
import { Component, OnInit } from '@angular/core';
|
|
|
import { Router } from '@angular/router';
|
|
|
-import { IonicModule, NavController } from '@ionic/angular';
|
|
|
+import { IonicModule, NavController, ModalController } from '@ionic/angular';
|
|
|
import { addIcons } from 'ionicons';
|
|
|
-import { arrowBackOutline } from 'ionicons/icons';
|
|
|
+import { arrowBackOutline, checkmarkCircleOutline, closeCircleOutline, radioButtonOffOutline, reload, reloadOutline } from 'ionicons/icons';
|
|
|
import { FormsModule } from '@angular/forms';
|
|
|
-addIcons({ 'arrow-back-outline': arrowBackOutline });
|
|
|
+import { AgentTaskStep } from 'src/agent/agent.task';
|
|
|
+import { TaskGenerateUserValiate } from 'src/agent/tasks/generate/generate-user-valiate';
|
|
|
+import { TaskExecutor } from 'src/agent/agent.start';
|
|
|
+addIcons({ 'arrow-back-outline': arrowBackOutline, radioButtonOffOutline, closeCircleOutline, checkmarkCircleOutline, reloadOutline });
|
|
|
@Component({
|
|
|
selector: 'app-generate-option',
|
|
|
templateUrl: './generate-option.component.html',
|
|
@@ -18,10 +21,12 @@ export class GenerateOptionComponent implements OnInit {
|
|
|
* @构造和初始化
|
|
|
*/
|
|
|
//构造器
|
|
|
- constructor(private router: Router, private navCtrl: NavController) { }
|
|
|
+ constructor(private modalCtrl: ModalController, private router: Router, private navCtrl: NavController) { }
|
|
|
//初始化
|
|
|
ngOnInit() { }
|
|
|
- //返回按钮事件
|
|
|
+ /**
|
|
|
+ * @返回按钮事件
|
|
|
+ */
|
|
|
goBack() {
|
|
|
this.navCtrl.back();
|
|
|
}
|
|
@@ -35,6 +40,7 @@ export class GenerateOptionComponent implements OnInit {
|
|
|
height: '不限制',
|
|
|
weight: '不限制',
|
|
|
season: '不限制',
|
|
|
+ customDesc: '',
|
|
|
regStyle: '不限制',
|
|
|
sceFunction: '不限制',
|
|
|
dsgPhilosophy: '不限制',
|
|
@@ -76,6 +82,9 @@ export class GenerateOptionComponent implements OnInit {
|
|
|
'秋季': false,
|
|
|
'冬季': false
|
|
|
};
|
|
|
+ //自定义描述输入框定义变量
|
|
|
+
|
|
|
+
|
|
|
/**
|
|
|
* @切换选项卡
|
|
|
* 1.option:字典对象
|
|
@@ -179,11 +188,42 @@ export class GenerateOptionComponent implements OnInit {
|
|
|
},
|
|
|
];
|
|
|
|
|
|
+ /**
|
|
|
+ * @其他变量定义
|
|
|
+ */
|
|
|
+
|
|
|
+ taskList: AgentTaskStep[] = [];//任务列表
|
|
|
+ shareData: any = {};//共享数据
|
|
|
+ /**
|
|
|
+ * @任务链设计
|
|
|
+ */
|
|
|
+ //
|
|
|
+ wait(duration: number = 1000) {
|
|
|
+ return new Promise((resolve) => {
|
|
|
+ setTimeout(() => {
|
|
|
+ resolve(true);
|
|
|
+ }, duration);
|
|
|
+ });
|
|
|
+ }
|
|
|
+ /**
|
|
|
+ * 任务:
|
|
|
+ * 1.验证必填资料
|
|
|
+ * 2.验证话题是否相关
|
|
|
+ * 3.生成服装提示词
|
|
|
+ * 4.生成图片
|
|
|
+ */
|
|
|
+ doGenerateTask() {
|
|
|
+ console.log(this.userProfile);
|
|
|
+ this.shareData.userProfile = this.userProfile;
|
|
|
+ let task1 = TaskGenerateUserValiate({ shareData: this.shareData, modalCtrl: this.modalCtrl })
|
|
|
+ //定义任务集
|
|
|
+ let GenerateTaskList = [task1]
|
|
|
+ this.taskList = GenerateTaskList;
|
|
|
+ TaskExecutor(GenerateTaskList)
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
|
|
|
- //补充说明
|
|
|
- styleDesc: string = '';
|
|
|
- //用户提示词
|
|
|
- userPrompt: string = '';
|
|
|
|
|
|
//点击选项卡事件
|
|
|
toggleChip(cardId: string, chipId: number): void {
|
|
@@ -220,51 +260,15 @@ export class GenerateOptionComponent implements OnInit {
|
|
|
})
|
|
|
};
|
|
|
|
|
|
- //生成传递提示词事件
|
|
|
- sendMsg() {
|
|
|
- this.userPrompt = "请生成一个穿搭照片绘画提示词:模板如下:\n" +
|
|
|
- "穿搭主题:夏季通勤风格\n" +
|
|
|
- "性别:男性\n" +
|
|
|
- "体重:70kg\n" +
|
|
|
- "年龄:约40-45岁\n" +
|
|
|
- "整体风格:简约、舒适、专业\n" +
|
|
|
- "上装:\n" +
|
|
|
- "衬衫:选择一款轻薄透气的短袖衬衫,颜色可以是浅蓝色或淡灰色,搭配细条纹或小格纹图案,以增加层次感。衬衫的剪裁要稍微宽松,以便于活动,适合办公室环境。\n" +
|
|
|
- "外套(可选):如果需要在空调环境中,搭配一件轻便的深色西装外套,面料应为透气的棉麻混纺,能够增添正式感。\n" +
|
|
|
- "下装:\n" +
|
|
|
- "裤子:选择一条修身但不紧身的深色休闲裤(如海军蓝或深灰色),采用轻便的面料,保持通勤的舒适性。裤子长度适中,裤脚可微微收口,展现干练的形象。\n" +
|
|
|
- "鞋子:\n" +
|
|
|
- "鞋款:搭配一双经典的休闲皮鞋或轻便的商务休闲鞋,颜色可以选择黑色或深棕色,鞋面光滑,适合正式场合,同时也提供舒适的步行体验。\n" +
|
|
|
- "配饰:" +
|
|
|
- "腰带:搭配一条与鞋子颜色一致的皮质腰带,简约设计,增加整体协调感。\n" +
|
|
|
- "手表:佩戴一款简约风格的手表,金属表带或皮表带均可,展现成熟稳重的气质。\n" +
|
|
|
- "公文包:选择一款深色的公文包,材质为皮革或优质帆布,既实用又具有商务气息。\n" +
|
|
|
- "场景功能:适合在办公室、商务会议、午餐约会等场合穿着,整体搭配既显得专业又不失时尚感,适合夏季通勤的需求。\n" +
|
|
|
- "以上模板仅供参考,可以写的更详细一些,但不要过于繁琐和冗长。\n" +
|
|
|
- "以下内容为用户需求:\n" +
|
|
|
- "性别:" + this.userProfile.gender + "\n" +
|
|
|
- "年龄:" + this.userProfile.age + "\n" +
|
|
|
- "身高:" + this.userProfile.height + "\n" +
|
|
|
- "体重:" + this.userProfile.weight + "\n" +
|
|
|
- "季节:" + this.userProfile.season + "\n" +
|
|
|
- "区域风格:" + this.userProfile.regStyle + "\n" +
|
|
|
- "场景功能:" + this.userProfile.sceFunction + "\n" +
|
|
|
- "设计理念:" + this.userProfile.dsgPhilosophy + "\n" +
|
|
|
- "艺术风格:" + this.userProfile.artStyle + "\n" +
|
|
|
- "色彩搭配:" + this.userProfile.color + "\n" +
|
|
|
- "补充说明:" + this.styleDesc + "\n";
|
|
|
- console.log(this.userPrompt)
|
|
|
- }
|
|
|
-
|
|
|
/**
|
|
|
* @跳转到聊天面板
|
|
|
* 调用路由跳转到chatPanel页面,并传递用户需求信息
|
|
|
*/
|
|
|
- goChatPanel() {
|
|
|
+ /*goChatPanel() {
|
|
|
this.router.navigate(['/chatPanel'], {
|
|
|
queryParams: { userPrompt: this.userPrompt }
|
|
|
});
|
|
|
- }
|
|
|
+ }*/
|
|
|
/**
|
|
|
* @风格描述下的帮助文本点击事件
|
|
|
* 1. 将可选提示词展示或隐藏
|
|
@@ -294,20 +298,20 @@ export class GenerateOptionComponent implements OnInit {
|
|
|
*/
|
|
|
submitJudge() {
|
|
|
let element = document.getElementById('container');
|
|
|
- if (element) {
|
|
|
- // 直接切换元素的显示状态
|
|
|
- element.style.display = 'block';
|
|
|
- }
|
|
|
+ if (element) {
|
|
|
+ // 直接切换元素的显示状态
|
|
|
+ element.style.display = 'block';
|
|
|
+ }
|
|
|
}
|
|
|
/**
|
|
|
* @提交生成终止返回
|
|
|
*/
|
|
|
hidePopover() {
|
|
|
let element = document.getElementById('container');
|
|
|
- if (element) {
|
|
|
- // 直接切换元素的显示状态
|
|
|
- element.style.display = 'none';
|
|
|
- }
|
|
|
+ if (element) {
|
|
|
+ // 直接切换元素的显示状态
|
|
|
+ element.style.display = 'none';
|
|
|
+ }
|
|
|
}
|
|
|
/**
|
|
|
* @发送提示词到下一个页面并跳转到生成结果页面
|
|
@@ -316,7 +320,7 @@ export class GenerateOptionComponent implements OnInit {
|
|
|
*/
|
|
|
sendMsgAndGoGenerateResult() {
|
|
|
this.submitJudge();
|
|
|
- this.sendMsg();
|
|
|
+ this.doGenerateTask();
|
|
|
//this.goChatPanel();
|
|
|
}
|
|
|
}
|
|
@@ -330,6 +334,7 @@ type UserProfile = {
|
|
|
height: string;
|
|
|
weight: string;
|
|
|
season: string;
|
|
|
+ customDesc: string;
|
|
|
regStyle: string;
|
|
|
sceFunction: string;
|
|
|
dsgPhilosophy: string;
|