refactor(CustomerDetail): 重构基础信息分析逻辑为调用API

将原有的本地处理表单、聊天记录和通话记录的逻辑替换为直接调用后端API获取客户基础信息
This commit is contained in:
2025-12-19 11:48:00 +08:00
parent 9f19b8fb66
commit a4c0aca1c2

View File

@@ -186,87 +186,100 @@ watch(() => props.selectedContact, (newContact) => {
}, { immediate: true }); }, { immediate: true });
// 基础信息分析 // 基础信息分析
const startBasicAnalysis = async () => { // const startBasicAnalysis = async () => {
if (!props.selectedContact) return; // if (!props.selectedContact) return;
isBasicAnalysisLoading.value = true; // isBasicAnalysisLoading.value = true;
basicAnalysisResult.value = ''; // basicAnalysisResult.value = '';
// 构建表单信息 // // 构建表单信息
const formData = props.formInfo || []; // const formData = props.formInfo || [];
let formInfoText = '暂无表单信息'; // let formInfoText = '暂无表单信息';
// ** 适配新的 formInfo 数组格式 ** // // ** 适配新的 formInfo 数组格式 **
if (Array.isArray(formData) && formData.length > 0) { // if (Array.isArray(formData) && formData.length > 0) {
const allInfo = []; // const allInfo = [];
// 遍历新格式: [{ question_label: "...", answer: "..." }, ...] // // 遍历新格式: [{ question_label: "...", answer: "..." }, ...]
formData.forEach(item => { // formData.forEach(item => {
// 检查字段是否存在且答案有效 // // 检查字段是否存在且答案有效
if ( // if (
item.question_label && // item.question_label &&
item.answer && // item.answer &&
item.answer !== '暂无' && // item.answer !== '暂无' &&
item.answer !== '' // item.answer !== ''
) { // ) {
// 格式化为 "问题标签: 答案" // // 格式化为 "问题标签: 答案"
allInfo.push(`${item.question_label.trim()}: ${item.answer.trim()}`); // allInfo.push(`${item.question_label.trim()}: ${item.answer.trim()}`);
} // }
}); // });
// 格式化表单信息文本 // // 格式化表单信息文本
formInfoText = allInfo.length > 0 // formInfoText = allInfo.length > 0
? `=== 问卷/表单信息 ===\n${allInfo.join('\n')}` // ? `=== 问卷/表单信息 ===\n${allInfo.join('\n')}`
: '暂无有效问卷/表单信息'; // : '暂无有效问卷/表单信息';
} // }
// ** 适配结束 ** // // ** 适配结束 **
// 构建聊天记录信息 // // 构建聊天记录信息
const chatData = props.chatRecords || []; // const chatData = props.chatRecords || [];
const chatInfoText = chatData.messages && chatData.messages.length > 0 ? // const chatInfoText = chatData.messages && chatData.messages.length > 0 ?
`聊天记录数量: ${chatData.messages.length}\n最近聊天内容: ${JSON.stringify(chatData.messages.slice(-3), null, 2)}` : // `聊天记录数量: ${chatData.messages.length}条\n最近聊天内容: ${JSON.stringify(chatData.messages.slice(-3), null, 2)}` :
'暂无聊天记录'; // '暂无聊天记录';
// 构建通话记录信息 // // 构建通话记录信息
const callData = props.callRecords || []; // const callData = props.callRecords || [];
const callInfoText = callData.length > 0 ? // const callInfoText = callData.length > 0 ?
`通话记录数量: ${callData.length}\n通话记录详情: ${JSON.stringify(callData, null, 2)}` : // `通话记录数量: ${callData.length}次\n通话记录详情: ${JSON.stringify(callData, null, 2)}` :
'暂无通话记录'; // '暂无通话记录';
const query = `请对客户进行基础信息分析: // const query = `请对客户进行基础信息分析:
客户姓名:${props.selectedContact.name} // 客户姓名:${props.selectedContact.name}
联系电话:${props.selectedContact.phone || '未提供'} // 联系电话:${props.selectedContact.phone || '未提供'}
销售阶段:${props.selectedContact.salesStage || '未知'} // 销售阶段:${props.selectedContact.salesStage || '未知'}
=== 表单信息 === // === 表单信息 ===
${formInfoText} // ${formInfoText}
=== 聊天记录 === // === 聊天记录 ===
${chatInfoText} // ${chatInfoText}
=== 通话记录 === // === 通话记录 ===
${callData.length > 0 && callData[0].record_context ? callData[0].record_context : callInfoText} // ${callData.length > 0 && callData[0].record_context ? callData[0].record_context : callInfoText}
请基于以上客户的表单信息、聊天记录和通话记录,分析客户的基本情况、背景信息和初步画像。`; // 请基于以上客户的表单信息、聊天记录和通话记录,分析客户的基本情况、背景信息和初步画像。`;
try { // try {
await chatService_01.sendMessage( // await chatService_01.sendMessage(
query, // query,
(update) => { // (update) => {
basicAnalysisResult.value = update.content; // basicAnalysisResult.value = update.content;
}, // },
() => { // () => {
isBasicAnalysisLoading.value = false; // isBasicAnalysisLoading.value = false;
console.log('基础信息分析完成'); // console.log('基础信息分析完成');
} // }
); // );
} catch (error) { // } catch (error) {
console.error('基础信息分析失败:', error); // console.error('基础信息分析失败:', error);
basicAnalysisResult.value = `分析失败: ${error.message}`; // basicAnalysisResult.value = `分析失败: ${error.message}`;
isBasicAnalysisLoading.value = false; // isBasicAnalysisLoading.value = false;
// }
// };
const startBasicAnalysis=async ()=>{
console.log("客户基础信息:", props.selectedContact);
const res=await https.post('api/v1/sales_timeline/get_customer_basic_info',{
user_name:props.selectedContact.name,
phone:props.selectedContact.phone
})
if(res.data){
basicAnalysisResult.value = res.data;
console.log("客户基础信息分析结果:", res);
}else{
basicAnalysisResult.value = '基础信息暂无数据'
} }
};
}
// SOP通话分析 // SOP通话分析
const startSopAnalysis = async () => { const startSopAnalysis = async () => {
if (!props.selectedContact) return; if (!props.selectedContact) return;