八、护理与造型小贴士
+ - 日常护理:黄二白肤色易显发质枯黄,每周 1 次深层护发(发膜 + 热毛巾敷 5 分钟);吹发用圆梳向内扣发尾,维持直线轮廓;
+ - 快速造型:直板夹 160℃夹直刘海 / 发尾(3 分钟搞定),顶蓬用蓬松喷雾(距发根 10cm 喷洒);
+ - 季节适配:冬季用滋润洗发水 + 护发精油防干燥,夏季选控油洗发水避免塌软。
+
+
九、总结:核心发型逻辑与风格统一
核心逻辑:以直线条力量感为基底,通过「顶部蓬松 + 结构化层次 +
+ 纵向延伸」三大设计点,平衡方形脸硬朗感与中大量感气质,同步实现显高需求。关键细节(侧分长刘海、冷调深色系)强化冷冬型风格统一,整体造型需保持「利落轮廓
+ + 适度蓬松 + 垂坠质感」,与穿搭、场景协同最大化个人魅力。
+
+ }
+ `;
+};
+
+
+
+export const shengxiaoText = (checkTime, gender, work) => {
+ return `用户生日是阳历${checkTime},性别:${gender},职业: ${work}, 计算这个生日对应的年柱、月柱、日柱的五行属性个数,不计算时柱,不计算藏干。以v-html格式生成,只能以div、p、ul、li、ol、span标签,输出适合颜色报告,需要提到五行的个数。 报告结构严格按照以下内容:一.五行主属性分析(需要提到五行的个数) 二、五行命理与易学幸运色推导 三、场景化搭配建议 四、动态调整建议",最后以字符串格式返回。返回一个名称为arr的数组,第一个参数“属相”,用用户年龄推算,参数有鼠、牛、虎、兔、龙、蛇、马、羊、猴、鸡、狗、猪),第2到第6个数为用“年柱”, “月柱”,“日柱”,“年柱属性”, “月柱属性”,“日柱属性”,等属性推算出的五行个数,最后以数组的形式返回[“属相”, ”金属性个数“,木属性个数“,”水属性个数”,“火属性个数”,”土属性个数“]的形式返回
+ 特别注意:
+ 生成一个如下结构的对象
+ content:{
+ text: 颜色报告内容,
+ arr: 属相数组,以["属相",金的个数, 木的个数, 水的个数, 火的个数, 土的个数]的格式返回
+ }
+ `;
+};
+
+
+export const shengxiaoSystem_prompt = `五行八卦中年柱、月柱、日柱的计算规则详解
+
+在五行八卦的命理学体系中,年柱、月柱、日柱与每个人息息相关,它们共同构成了八字,被认为能够揭示一个人的命运轨迹和性格特点。下面,让我们一起来深入了解它们的计算规则。
+
+一、年柱的计算规则
+
+年柱代表出生年份的天干地支组合,它是八字的第一柱,确定了一个人出生年份的基本信息,在命理学中被视为根基,对人生运势有着深远影响。
+
+ • 天干的确定:
+
+ ◦ 尾数对应法:最为简便的方法是根据公历年的尾数来确定。具体对应关系如下:尾数为4,对应天干甲;尾数为5,对应天干乙;尾数为6,对应天干丙;尾数为7,对应天干丁;尾数为8,对应天干戊;尾数为9,对应天干己;尾数为0,对应天干庚;尾数为1,对应天干辛;尾数为2,对应天干壬;尾数为3,对应天干癸 。例如,2025年,尾数是5,所以年干为乙。
+
+ ◦ 公式计算法:公式为(公历年数 - 3)÷10的余数(整除时按余数为0计),对应天干顺序。如2025年,(2025 - 3)÷10 = 202余2,对应天干乙。
+
+ • 地支的确定:
+
+ ◦ 生肖对应法:可依据生肖来确定地支。生肖与地支的对应关系为:子鼠、丑牛、寅虎、卯兔、辰龙、巳蛇、午马、未羊、申猴、酉鸡、戌狗、亥猪。比如,2025年是蛇年,对应的地支就是巳。
+
+ ◦ 公式计算法:公式为(公历年数 - 3)÷12的余数(整除时按余数为0计),对应地支顺序。对于2025年,(2025 - 3)÷12 = 168余6,对应地支巳。
+需要特别注意的是,年柱的分界是以每年的立春为界线,立春前出生的人,年柱按上一年计算;立春后出生的人,年柱按下一年计算 。
+
+二、月柱的计算规则
+
+月柱由月干和月支组成,代表出生月份的天干地支组合,它反映了一个人在成长过程中的阶段性运势和内在特质,在命理学中被视为成长和发展的重要标志。
+
+ • 月支的确定:月支是固定不变的,以二十四节气为划分依据。从立春开始,正月为寅月(立春当天到惊蛰前一天);二月为卯月(惊蛰当天到清明前一天);三月为辰月(清明当天到立夏前一天);四月为巳月(立夏当天到芒种前一天);五月为午月(芒种当天到小暑前一天);六月为未月(小暑当天到立秋前一天);七月为申月(立秋当天到白露前一天);八月为酉月(白露当天到寒露前一天);九月为戌月(寒露当天到立冬前一天);十月为亥月(立冬当天到大雪前一天);十一月为子月(大雪当天到小寒前一天);十二月为丑月(小寒当天到立春前一天)。
+
+ • 月干的确定:需要根据年干来推算,可借助口诀“甲己之年丙作首,乙庚之年戊为头,丙辛之岁寻庚上,丁壬壬寅顺水流,若问戊癸何处起,甲寅之上好追求” 。意思是,当年干为甲或己时,正月月干为丙;年干为乙或庚时,正月月干为戊;年干为丙或辛时,正月月干为庚;年干为丁或壬时,正月月干为壬;年干为戊或癸时,正月月干为甲。其余月份天干依次顺推。例如,2025年是乙巳年,年干为乙,根据口诀“乙庚之年戊为头”,正月月干为戊,月支为寅,所以2025年正月月柱为戊寅,二月为己卯,三月为庚辰,依此类推。
+
+三、日柱的计算规则
+
+日柱代表出生日的天干地支组合,是八字的核心部分,被认为能体现一个人的核心性格和命运的关键走向,在命理学中占据着举足轻重的地位。日柱的计算方法较为复杂,以下介绍一种常用的公历计算法:
+
+ • 计算步骤:
+
+ ◦ 先计算(公历年数 - 1)×5 + (公历年数 - 1)÷4 + 当年日期在当年的天数序号,得到一个总和(这里的除法只取商数,余数忽略不计)。其中,当年日期在当年的天数序号,即从1月1日到出生日期的天数,例如,3月15日出生,当年是平年,1月31天,2月28天,3月15天,天数序号就是31 + 28 + 15 = 74 。
+
+ ◦ 将总和除以60,得到一个余数。
+
+ ◦ 这个余数就是出生日期的天干地支序数。其中,余数除以10的余数为天干序数(整除时按余数为0计,对应天干癸),余数除以12的余数为地支序数(整除时按余数为0计,对应地支亥)。
+
+ • 举例说明:以2025年5月20日为例,计算过程如下:
+
+ ◦ (2025 - 1)×5 + (2025 - 1)÷4 + (31 + 28 + 31 + 30 + 20)
+= 2024×5 + 2024÷4 + 140
+= 10120 + 506 + 140
+= 10766
+
+ ◦ 10766÷60 = 179余26
+
+ ◦ 26÷10 = 2余6,对应天干己;26÷12 = 2余2,对应地支丑 。所以2025年5月20日的日柱为己丑。
+
+ • 注意闰年:需要注意的是,如果出生年份是闰年,2月有29天,在计算天数序号时要相应调整。闰年的判断方法是:能被4整除但不能被100整除的年份为闰年,此外能被400整除的年份也是闰年 。例如,2024年是闰年,计算当年天数序号时,2月按29天计算。
+
+年柱、月柱和日柱的计算规则虽然复杂,但它们蕴含着古人对时间和命运的深刻理解,是五行八卦命理学的重要基础 。`;
+
+
+export const statureText = (
+ customKey,
+ straight_total_score_t,
+ total_sense_of_quantity_t,
+ dynamic_static_t,
+) => {
+ return `你是个人形象美学顾问,你擅长通过客户身材特征分析出用户的身材类型
+ 具体的包裹:轮廓类型、量感类型、动静类型、体型类型
+
+ ${customKey}
+
+ 要求:
+ 1:你只能分析出的轮廓类型只能是:${straight_total_score_t},别的类型一概不允许
+ 2:你只能分析出的量感类型只能是:${total_sense_of_quantity_t},别的类型一概不允许
+ 3:你只能分析出的动静类型只能是:${dynamic_static_t},别的类型一概不允许
+
+ 特别注意:
+ 你要根据客户特征给出详细的分析结果和分析结果详情,每一中类型的分析结果详情要在200字以内
+ 你要返回给我的结果只能是json格式,不能是其它格式
+ 除了我要求的格式内容外,不要有额外多余的任何不相干的文字
+
+ 正确格式案例如下:
+ {
+ sensory:{
+ value: '曲线型',
+ desc: '面部五官线条(眉眼、嘴唇等)没有特别强烈的曲线感或直线硬朗感,面部轮廓、发型线条以及穿着的服装(V 领、简洁款式 )也呈现出既非极端曲线柔和,也非极端直线利落的状态,是较为平衡的直曲适中风格 。'
+ },
+ mass: {
+ value: '中量感',
+ desc: '从面部看,五官分布、大小以及整体比例较为均衡,没有特别小巧精致(小量感)或夸张大气(大量感)的特征,身材穿着也呈现出适中的视觉分量,所以是中量感'
+ },
+ movement: {
+ value: '静态型',
+ desc: '面部神态平和,发型简洁规整,服装款式简约、颜色沉稳,整体传递出安静、内敛的气质,没有明显的活泼、动感元素,因此判定为静态型 。'
+ }
+ }
+ `;
+};
+
+
+
+export const styleText = (customKey) => {
+ return `你是个人形象美学顾问,你擅长通过客户身材特征分析出用户的风格诊断报告。
+ ${customKey}
+
+ 特别注意:
+ 1:你要根据客户特征给出详细的风格诊断报告
+ 2:以v-html格式输出,只能以div、p、ul、li、ol、span、
+ 3:你要返回给我的结果只能是json格式,不能是其它格式
+ 4:除了我要求的格式内容外,不要有额外多余的任何不相干的文字
+
+ 风格诊断报告格式如下:
+ 一:个人风格合心诊断
+ 1:个人风格密码解析
+ 2:主导心理风格和基因风格关系
+ 二、 身材分析与穿搭指南
+ 三、 配饰规划
+ 四、 总结与建议
+ 1:最重要的强化优势
+ 2:规避要点
+
+ 正确格式案例如下:
+ {
+ html: '
一、 个人风格核心诊断
+
1. 个人风格密码解析
+
基于您的面部特征与量感直曲分析,个人风格密码为「中大量感+偏直风格+适中对比度」:
+
+ - 量感维度:大量感得分6、小量感得分4,量感总分2,属于中大量感,面部立体度7(高立体度)、直鼻高立体度,整体呈现舒展大气的视觉张力,避免过度小巧精致的服饰元素
+
+ - 直曲维度:直得分7、曲得分3,直曲总分4,偏直风格显著,平直眉、细长单眼皮、直鼻等线条利落,适合简约、几何、结构化的服饰剪裁,减少柔媚蕾丝、荷叶边等过度曲线元素
+
+ - 对比度:适中对比度,黄一白肤色搭配深瞳色,色彩搭配可兼顾清爽和谐与适度层次,避免高饱和撞色或过于寡淡的同色系
+
+
+
2. 主导心理风格和基因风格关系
+
+ 您的基因风格(外在特征决定)为「利落直感型」,心理风格(偏好夏季季型配色)偏向「清新活力型」,二者可形成「清爽利落」的融合风格——以夏季季型的柔和色调(浅蓝、薄荷绿、粉紫、奶白等)为基础,结合偏直的简约剪裁,既符合基因风格的线条需求,又满足心理偏好的清爽氛围。
+
二、 身材分析与穿搭指南
+
身材特征:A型身材(上窄下宽),身高160cm、体重53kg,腰部粗、腿粗,核心需求为「勾勒腰线+修饰下半身」
+
+
1. 上衣选择
+
+ - 版型:选「上宽下收」设计,如微泡泡袖、荷叶边袖口(增加上半身量感平衡下半身),腰部做收腰剪裁(如系带、褶皱收腰),直接勾勒腰线
+
+ - 领型:V领、方领、一字领,拉长颈部线条同时转移视觉焦点至锁骨/面部,分散腰部注意力
+
+ - 图案/色彩:夏季季型配色优先,上半身可尝试小碎花、条纹等图案(增加上半身丰富度),色彩选浅蓝、粉紫等亮色(提亮上身,平衡下半身重量感)
+
+
+
2. 下装选择
+
+ - 裤装:高腰阔腿裤(垂感面料,长度及脚踝)、直筒裤(避免紧身牛仔裤),裤型从腰部向下自然散开,修饰腿粗,腰部搭配细腰带强调腰线
+
+ - 裙装:高腰A字裙(长度过膝5-10cm)、伞裙,裙摆自然展开遮挡臀部及大腿赘肉,腰部做掐褶或同色系腰带收腰
+
+ - 色彩:选夏季季型中的低饱和深色(如灰蓝、豆沙紫)或同色系顺色(上下装同色调不同明度),视觉收缩下半身
+
+
+
3. 连衣裙推荐
+
+ -
+ 首选「收腰A字连衣裙」,腰部收紧+裙摆散开,直接解决腰线与腿粗问题,领口选V领/方领,面料选轻薄雪纺、棉麻(符合夏季清爽感)
+
+ - 避免:紧身包臀裙、无腰线直筒裙(暴露腰部赘肉,显下半身臃肿)
+
+
三、 配饰规划
+
1. 腰带:核心配饰!选细款金属腰带(银色/金色,呼应夏季清爽)或同色系皮质腰带,系于高腰位置(肚脐上2cm),明确分割腰线,材质避免过宽过厚(否则显腰粗)
+
+
2. 耳饰:瓜子脸+细长单眼皮,适合「几何短款耳坠」(如方形、水滴形,长度3-5cm)或简约耳钉,修饰脸型同时不抢面部焦点;避免夸张大耳环(增加下半身视觉重量)
+
+
3. 项链:人中偏短+薄唇,选「Y型项链」或「锁骨链」(长度40-45cm,吊坠小巧精致),延长面部纵向线条,避免短款choker(靠近唇部显局促)
+
+
4. 手链/手表:简约细链条手链或方形表盘手表(金属表带),呼应偏直风格,数量控制1-2件,避免繁复堆砌
+
+
五、 总结与建议
+
1. 最重要的强化优势和规避
+
+ - 强化优势:① 利用夏季季型配色(浅蓝、薄荷绿等)提亮黄一白肤色,凸显清爽气质;②
+ 突出高立体度面部(直鼻、瓜子脸),通过V领/方领服饰+简约耳饰转移视觉焦点;③ 用细腰带强制勾勒腰线,强化身材比例
+
+ - 规避要点:① 避免下半身紧身/膨胀设计(如紧身裤、蓬蓬裙),选A字/阔腿版型修饰腿粗;②
+ 腰部避免无剪裁、松紧带设计,用收腰剪裁+腰带遮挡赘肉;③ 配饰忌过多过杂,保持「少而精」,符合偏直风格的利落感
+
+
+
'
+ }
+
+
+
+ `;
+}
\ No newline at end of file
diff --git a/pages/report/api.js b/pages/report/api.js
index 8bfce90..167e75e 100644
--- a/pages/report/api.js
+++ b/pages/report/api.js
@@ -1,8 +1,19 @@
import { request } from "../../http/index.js";
+
let baseUrl = "https://llshop.zglvling.com/soapi/";
// let baseUrl = "https://test.zglvling.com/soapi/";
-const praiseTextApi = (params) =>
- request.post(baseUrl + "ai/praiseTexttwo", params);
+// const praiseTextApi = (params) =>
+// request.post(baseUrl + "ai/praiseTexttwo", params);
+
+
+const praiseTextApi = (params) => {
+ console.log('params: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx', params);
+
+ return request.post('https://ark.cn-beijing.volces.com/api/v3/chat/completions', params);
+}
+
+
+
const userFaceInoApi = (params) =>
request.post(baseUrl + "userinfo/get_user_face_info", params);
const hairstyleListApi = (params) =>
diff --git a/pages/report/component/FirstStyleType/SkinColor.vue b/pages/report/component/FirstStyleType/SkinColor.vue
index 566bae0..ac830b5 100644
--- a/pages/report/component/FirstStyleType/SkinColor.vue
+++ b/pages/report/component/FirstStyleType/SkinColor.vue
@@ -8,6 +8,7 @@ const props = defineProps({
default: '黄一白',
},
});
+
const json = ref( [
{
type: '0',
@@ -34,25 +35,25 @@ const json = ref( [
value: '黄黑皮'
},
])
+
+
watch(
() => props.skinColor,
(newVal) => {
- // console.log(json.value.find(item => item.value === newVal), '22');
- if(!json.value.find(item => item.value === newVal)) {
- // alert(`当前接口返回肤色与UI不一致${newVal}`)
- }
+
json.value = json.value.map(item => ({...item, checked: item.value === newVal}));
+ // console.log('json.value: ', json.value);
},
{deep: true, immediate: true}
);
+
+
肤色:
-
- {{ item.value }}
-
+ {{ item.value }}
diff --git a/pages/report/component/FirstStyleType/geneticStyle.vue b/pages/report/component/FirstStyleType/geneticStyle.vue
index 73a3fe3..0af2b9b 100644
--- a/pages/report/component/FirstStyleType/geneticStyle.vue
+++ b/pages/report/component/FirstStyleType/geneticStyle.vue
@@ -18,6 +18,8 @@ const props = defineProps({
},
});
+console.log('geneticStyle -------------------------------------', props.gender)
+
const styleTypeDesc = ref("");
const styleTypeJson = ref();
const showPreview = ref(false);
@@ -63,21 +65,21 @@ const closePreview = (e) => {
-
-
+
-
{{ userFaceInfo.sex }}
- | {{ userFaceInfo.createTime }}
+ | {{ userFaceInfo.birthday }}
{{ userFaceInfo.feature }},
@@ -63,17 +63,12 @@ const props = defineProps({
},
});
-
-// console.log('9999999999999999999999999', props.userFaceInfo)
-
-
-
const userFaceInfo = ref({});
watch(
() => props.userFaceInfo,
(newVal) => {
- console.log('newVal: xxxxxxxx', newVal);
+ // console.log('newVal: xxxxxxxx', newVal);
userFaceInfo.value = newVal;
},
{ deep: true, immediate: true }
diff --git a/pages/report/index.vue b/pages/report/index.vue
index 1494f3f..14edf4a 100644
--- a/pages/report/index.vue
+++ b/pages/report/index.vue
@@ -23,32 +23,49 @@
paddingTop: (classFixed === '' ? 0 : 60) + 'px',
overflowY: 'hidden',
}"
+ v-if="collect"
>
+
+
-
+
+
+
-
+
+
+
+
+
-
- -->
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
@@ -392,7 +414,7 @@