From 0347da9cdcd8372771d2b42fd61a91cb308558af Mon Sep 17 00:00:00 2001 From: lbw_9527443 <780139497@qq.com> Date: Mon, 25 Aug 2025 11:23:37 +0800 Subject: [PATCH] =?UTF-8?q?feat(CustomerDetail):=20=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E5=AF=B9=E5=AE=A2=E6=88=B7=E6=89=A9=E5=B1=95=E5=AD=97=E6=AE=B5?= =?UTF-8?q?=E7=9A=84=E5=A4=84=E7=90=86=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 支持处理两种不同格式的表单数据:基础信息+additional_info格式和customerExpandFieldMap格式。当表单数据包含customerExpandFieldMap时,会解析其中的扩展字段并根据不同类型(单选、多选、文本等)提取答案,组合到最终的分析文本中。 --- .../person/components/CustomerDetail.vue | 121 ++++++++++++------ 1 file changed, 85 insertions(+), 36 deletions(-) diff --git a/my-vue-app/src/views/person/components/CustomerDetail.vue b/my-vue-app/src/views/person/components/CustomerDetail.vue index af38017..6786fdb 100644 --- a/my-vue-app/src/views/person/components/CustomerDetail.vue +++ b/my-vue-app/src/views/person/components/CustomerDetail.vue @@ -190,47 +190,94 @@ const startBasicAnalysis = async () => { let formInfoText = '暂无表单信息'; if (Object.keys(formData).length > 0) { - const basicInfo = []; - const additionalInfo = []; - - // 处理基础信息字段 - const basicFields = { - name: '姓名', - mobile: '手机号', - occupation: '职业', - territory: '地区', - child_name: '孩子姓名', - child_gender: '孩子性别', - child_education: '孩子教育阶段', - child_relation: '与孩子关系' - }; - - Object.entries(basicFields).forEach(([key, label]) => { - if (formData[key] && formData[key] !== '暂无' && formData[key] !== '') { - basicInfo.push(`${label}: ${formData[key]}`); - } - }); - - // 处理 additional_info 数组 - if (formData.additional_info && Array.isArray(formData.additional_info)) { - formData.additional_info.forEach(item => { - if (item.topic && item.answer) { - additionalInfo.push(`${item.topic}\n答案: ${item.answer}`); + console.log(888888,formData); + const allInfo = []; + + // 处理第一种格式:基础信息和additional_info + if (formData.name || formData.mobile || formData.additional_info) { + const basicInfo = []; + const additionalInfo = []; + + // 处理基础信息字段 + const basicFields = { + name: '姓名', + mobile: '手机号', + occupation: '职业', + territory: '地区', + child_name: '孩子姓名', + child_gender: '孩子性别', + child_education: '孩子教育阶段', + child_relation: '与孩子关系' + }; + + Object.entries(basicFields).forEach(([key, label]) => { + if (formData[key] && formData[key] !== '暂无' && formData[key] !== '') { + basicInfo.push(`${label}: ${formData[key]}`); } }); + + // 处理 additional_info 数组 + if (formData.additional_info && Array.isArray(formData.additional_info)) { + formData.additional_info.forEach(item => { + if (item.topic && item.answer) { + additionalInfo.push(`${item.topic}\n答案: ${item.answer}`); + } + }); + } + + // 添加基础信息 + if (basicInfo.length > 0) { + allInfo.push('=== 基础信息 ==='); + allInfo.push(...basicInfo); + } + + // 添加问卷信息 + if (additionalInfo.length > 0) { + allInfo.push('\n=== 问卷信息 ==='); + allInfo.push(...additionalInfo); + } } - // 组合所有信息 - const allInfo = []; - if (basicInfo.length > 0) { - allInfo.push('=== 基础信息 ==='); - allInfo.push(...basicInfo); + // 处理第二种格式:customerExpandFieldMap + if (formData.customerExpandFieldMap) { + const expandInfo = []; + const map = formData.customerExpandFieldMap; + + // 处理所有expand字段 + Object.entries(map).forEach(([key, value]) => { + // 跳过原型链上的属性 + if (!map.hasOwnProperty(key)) return; + + // 如果是对象类型(包含key和typeCode的字段) + if (value && typeof value === 'object' && value.key) { + const question = value.key; + let answer = ''; + + // 根据不同的类型处理答案 + if (value.typeCode === 'SINGLE_SELECT' || value.typeCode === 'MULTIPLE_SELECT') { + if (value.expandValueList && value.expandValueList.length > 0) { + answer = value.expandValueList.map(item => item.itemName).join('、'); + } + } else if (value.typeCode === 'TEXT' || value.typeCode === 'TEXTAREA' || value.typeCode === 'NUMBER') { + // 直接从formData中获取对应的expand值 + answer = formData[key] || ''; + } + + // 只添加有答案的问题 + if (answer && answer !== '暂无' && answer !== '') { + expandInfo.push(`${question}\n答案: ${answer}`); + } + } + }); + + // 添加扩展信息 + if (expandInfo.length > 0) { + if (allInfo.length > 0) allInfo.push('\n'); // 如果已有其他信息,添加分隔行 + allInfo.push('=== 问卷详细信息 ==='); + allInfo.push(...expandInfo); + } } - if (additionalInfo.length > 0) { - allInfo.push('\n=== 问卷信息 ==='); - allInfo.push(...additionalInfo); - } - + formInfoText = allInfo.length > 0 ? allInfo.join('\n') : '暂无表单信息'; } @@ -261,6 +308,8 @@ ${chatInfoText} ${callData.length > 0 && callData[0].record_context ? callData[0].record_context : callInfoText} 请基于以上客户的表单信息、聊天记录和通话记录,分析客户的基本情况、背景信息和初步画像。`; + +console.log(888888,formInfoText); try { await chatService_01.sendMessage( query,