refactor(CustomerDetail): 重构基础信息分析逻辑为调用API
将原有的本地处理表单、聊天记录和通话记录的逻辑替换为直接调用后端API获取客户基础信息
This commit is contained in:
@@ -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
|
||||||
|
// ? `=== 问卷/表单信息 ===\n${allInfo.join('\n')}`
|
||||||
|
// : '暂无有效问卷/表单信息';
|
||||||
|
// }
|
||||||
|
// // ** 适配结束 **
|
||||||
|
|
||||||
|
// // 构建聊天记录信息
|
||||||
|
// const chatData = props.chatRecords || [];
|
||||||
|
// const chatInfoText = chatData.messages && chatData.messages.length > 0 ?
|
||||||
|
// `聊天记录数量: ${chatData.messages.length}条\n最近聊天内容: ${JSON.stringify(chatData.messages.slice(-3), null, 2)}` :
|
||||||
|
// '暂无聊天记录';
|
||||||
|
|
||||||
|
// // 构建通话记录信息
|
||||||
|
// const callData = props.callRecords || [];
|
||||||
|
// const callInfoText = callData.length > 0 ?
|
||||||
|
// `通话记录数量: ${callData.length}次\n通话记录详情: ${JSON.stringify(callData, null, 2)}` :
|
||||||
|
// '暂无通话记录';
|
||||||
|
|
||||||
|
// const query = `请对客户进行基础信息分析:
|
||||||
|
// 客户姓名:${props.selectedContact.name}
|
||||||
|
// 联系电话:${props.selectedContact.phone || '未提供'}
|
||||||
|
// 销售阶段:${props.selectedContact.salesStage || '未知'}
|
||||||
|
|
||||||
|
// === 表单信息 ===
|
||||||
|
// ${formInfoText}
|
||||||
|
|
||||||
|
// === 聊天记录 ===
|
||||||
|
// ${chatInfoText}
|
||||||
|
|
||||||
|
// === 通话记录 ===
|
||||||
|
// ${callData.length > 0 && callData[0].record_context ? callData[0].record_context : callInfoText}
|
||||||
|
|
||||||
|
// 请基于以上客户的表单信息、聊天记录和通话记录,分析客户的基本情况、背景信息和初步画像。`;
|
||||||
|
|
||||||
|
// try {
|
||||||
|
// await chatService_01.sendMessage(
|
||||||
|
// query,
|
||||||
|
// (update) => {
|
||||||
|
// basicAnalysisResult.value = update.content;
|
||||||
|
// },
|
||||||
|
// () => {
|
||||||
|
// isBasicAnalysisLoading.value = false;
|
||||||
|
// console.log('基础信息分析完成');
|
||||||
|
// }
|
||||||
|
// );
|
||||||
|
// } catch (error) {
|
||||||
|
// console.error('基础信息分析失败:', error);
|
||||||
|
// basicAnalysisResult.value = `分析失败: ${error.message}`;
|
||||||
|
// 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 = '基础信息暂无数据'
|
||||||
}
|
}
|
||||||
});
|
|
||||||
|
|
||||||
// 格式化表单信息文本
|
|
||||||
formInfoText = allInfo.length > 0
|
|
||||||
? `=== 问卷/表单信息 ===\n${allInfo.join('\n')}`
|
|
||||||
: '暂无有效问卷/表单信息';
|
|
||||||
}
|
|
||||||
// ** 适配结束 **
|
|
||||||
|
|
||||||
// 构建聊天记录信息
|
|
||||||
const chatData = props.chatRecords || [];
|
|
||||||
const chatInfoText = chatData.messages && chatData.messages.length > 0 ?
|
|
||||||
`聊天记录数量: ${chatData.messages.length}条\n最近聊天内容: ${JSON.stringify(chatData.messages.slice(-3), null, 2)}` :
|
|
||||||
'暂无聊天记录';
|
|
||||||
|
|
||||||
// 构建通话记录信息
|
|
||||||
const callData = props.callRecords || [];
|
|
||||||
const callInfoText = callData.length > 0 ?
|
|
||||||
`通话记录数量: ${callData.length}次\n通话记录详情: ${JSON.stringify(callData, null, 2)}` :
|
|
||||||
'暂无通话记录';
|
|
||||||
|
|
||||||
const query = `请对客户进行基础信息分析:
|
|
||||||
客户姓名:${props.selectedContact.name}
|
|
||||||
联系电话:${props.selectedContact.phone || '未提供'}
|
|
||||||
销售阶段:${props.selectedContact.salesStage || '未知'}
|
|
||||||
|
|
||||||
=== 表单信息 ===
|
|
||||||
${formInfoText}
|
|
||||||
|
|
||||||
=== 聊天记录 ===
|
|
||||||
${chatInfoText}
|
|
||||||
|
|
||||||
=== 通话记录 ===
|
|
||||||
${callData.length > 0 && callData[0].record_context ? callData[0].record_context : callInfoText}
|
|
||||||
|
|
||||||
请基于以上客户的表单信息、聊天记录和通话记录,分析客户的基本情况、背景信息和初步画像。`;
|
|
||||||
|
|
||||||
try {
|
|
||||||
await chatService_01.sendMessage(
|
|
||||||
query,
|
|
||||||
(update) => {
|
|
||||||
basicAnalysisResult.value = update.content;
|
|
||||||
},
|
|
||||||
() => {
|
|
||||||
isBasicAnalysisLoading.value = false;
|
|
||||||
console.log('基础信息分析完成');
|
|
||||||
}
|
|
||||||
);
|
|
||||||
} catch (error) {
|
|
||||||
console.error('基础信息分析失败:', error);
|
|
||||||
basicAnalysisResult.value = `分析失败: ${error.message}`;
|
|
||||||
isBasicAnalysisLoading.value = false;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
|
}
|
||||||
// SOP通话分析
|
// SOP通话分析
|
||||||
const startSopAnalysis = async () => {
|
const startSopAnalysis = async () => {
|
||||||
if (!props.selectedContact) return;
|
if (!props.selectedContact) return;
|
||||||
|
|||||||
Reference in New Issue
Block a user