feat(CustomerDetail): 添加对客户扩展字段的处理逻辑

支持处理两种不同格式的表单数据:基础信息+additional_info格式和customerExpandFieldMap格式。当表单数据包含customerExpandFieldMap时,会解析其中的扩展字段并根据不同类型(单选、多选、文本等)提取答案,组合到最终的分析文本中。
This commit is contained in:
2025-08-25 11:23:37 +08:00
parent f1fe585fc4
commit 0347da9cdc

View File

@@ -190,6 +190,11 @@ const startBasicAnalysis = async () => {
let formInfoText = '暂无表单信息';
if (Object.keys(formData).length > 0) {
console.log(888888,formData);
const allInfo = [];
// 处理第一种格式基础信息和additional_info
if (formData.name || formData.mobile || formData.additional_info) {
const basicInfo = [];
const additionalInfo = [];
@@ -220,16 +225,58 @@ const startBasicAnalysis = async () => {
});
}
// 组合所有信息
const allInfo = [];
// 添加基础信息
if (basicInfo.length > 0) {
allInfo.push('=== 基础信息 ===');
allInfo.push(...basicInfo);
}
// 添加问卷信息
if (additionalInfo.length > 0) {
allInfo.push('\n=== 问卷信息 ===');
allInfo.push(...additionalInfo);
}
}
// 处理第二种格式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);
}
}
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,