diff --git a/analysis_pipeline.py b/analysis_pipeline.py index 40a0a86..293a087 100644 --- a/analysis_pipeline.py +++ b/analysis_pipeline.py @@ -23,21 +23,23 @@ print(prompt) sales_stage_definition = ''' -1. **Prospecting(潜在客户开发)**:这一阶段涉及识别和开发潜在客户。销售人员通过各种渠道(如电话、电子邮件、社交媒体等)寻找潜在买家。 +1. **Prospecting(潜在客户开发)**:这一阶段涉及识别和开发潜在客户。销售人员通过各种渠道(如电话、电子邮件、社交媒体等)寻找潜在买家。-阶段转化标准:①客户有需求 ②有明确的项目联系人; -2. **Evaluation(评估)**:在评估阶段,销售团队会评估潜在客户的需求,确定他们是否与公司的产品或服务相匹配。同时,潜在客户也在评估不同的供应商。 +2. **Evaluation(评估)**:在评估阶段,销售团队会评估潜在客户的需求,确定他们是否与公司的产品或服务相匹配。同时,潜在客户也在评估不同的供应商。-阶段转化标准:①客户有预算 ②有明确的项目时间 ③有预期的产品和数量 -3. **Qualification(资格认定)**:这一阶段的目标是确定潜在客户是否具有成为合格销售机会的潜力。这通常涉及对客户的预算、需求、决策过程和时间线等进行评估。 +3. **Qualification(资格认定)**:这一阶段的目标是确定潜在客户是否具有成为合格销售机会的潜力。这通常涉及对客户的预算、需求、决策过程和时间线等进行评估。-阶段转化标准:①项目预算批准、项目已立项 ②有确定产品和数量;或③完成场景应用/技术适用性验证,客户确定平凯入围(完成poc) -4. **Bidding / Negotiating(投标/谈判)**:在这个阶段,销售人员会向客户提交正式的报价或提案,并进行必要的谈判,以达成最终的销售协议。 +4. **Bidding / Negotiating(投标/谈判)**:在这个阶段,销售人员会向客户提交正式的报价或提案,并进行必要的谈判,以达成最终的销售协议。-阶段转化标准:①完成可交付评审;②报价单通过审批;③投标结果确认赢标或完成商务谈判,确定价格和SOW,客户启动合同流程 -5. **Contract Review(合同审查)**:一旦谈判完成,双方将审查合同条款,确保所有细节都得到妥善处理,并准备好签署。 +5. **Contract Review(合同审查)**:一旦谈判完成,双方将审查合同条款,确保所有细节都得到妥善处理,并准备好签署。-阶段转化标准:完成飞书合同协商审批,确认合同条款(包括付款条件、服务开通时间等) -6. **Closed Won(成功关闭)**:这是销售流程的最终目标,表示交易已经成功完成,客户已经购买了产品或服务。 +6. **Closed Won(成功关闭)**:这是销售流程的最终目标,表示交易已经成功完成,客户已经购买了产品或服务。-阶段转化标准:完成合同签署,合同归档 -7. **Cancel(取消)**:在某些情况下,交易可能会在过程的任何阶段取消。这可能是因为客户改变了主意,或者发现产品或服务不再符合他们的需求。 +7. **Cancel(取消)**:在某些情况下,交易可能会在过程的任何阶段取消。这可能是因为客户改变了主意,或者发现产品或服务不再符合他们的需求。-阶段标准:①客户明确回复项目取消 ②客户明确表示没有预算 ③内部立项未通过 -8. **Closed Lost(失败关闭)**:如果销售机会没有成功,它将被标记为“失败关闭”。这可能是因为竞争、价格问题或客户需求的改变等原因。''' +8. **Closed Lost(失败关闭)**:如果销售机会没有成功,它将被标记为“失败关闭”。这可能是因为竞争、价格问题或客户需求的改变等原因。-阶段转化标准:①投标确认结果未赢标 ②客户明确表示选择友商 ③poc结果客户确认平凯未入围/未通过 ④商务谈判失败 ⑤其他如商务关系没有竞争机会 +上述每个阶段的阶段转化标准是准出标准,只有在满足该准出标准,才可以进入到下一个阶段 +''' # Read the Excel file df = pd.read_excel('output_top20.xlsx') @@ -45,17 +47,36 @@ df = pd.read_excel('output_top20.xlsx') # Iterate over each row in the DataFrame for index, row in df.iterrows(): # Extract the information from the column "当前详细状态及Close节奏" + if index > 3: + break try: detailed_status = row['当前详细状态及Close节奏'] print(f"Processing row {index}") detailed_current_stage = row['Sales stage'] - prompt = f"某公司当前销售定义为 {sales_stage_definition}, 当前销售阶段为 {detailed_current_stage}, 销售人员填写的销售动作日志为: {detailed_status} , 请分析当前销售阶段以及销售动作日志,判断其销售动作是否支持将销售阶段转化到当前阶段{detailed_current_stage},给出判断结果及销售阶段分析报告" + prompt = (f"某公司当前销售定义为 {sales_stage_definition}, " + f"当前销售阶段为 {detailed_current_stage}, " + f"销售人员填写的销售动作日志为: {detailed_status} , " + f"请分析当前销售阶段以及销售动作日志,判断其销售动作是否完成了前一阶段的准出标准,以及是否支持将销售阶段转化到当前阶段{detailed_current_stage},按照如下要点给出分析:" + f"1. **销售阶段分析**" + f"2. **销售动作日志分析**" + f"3. **销售动作与销售阶段的关系**" + f"4. **判断结果**" + f"5. **销售阶段分析报告**") analysis_result = agent.send_message(prompt) print(analysis_result) df.at[index, '分析结果'] = analysis_result # Directly update the DataFrame + + prompt_sales_action_analysis = (f"某公司当前销售定义为 {sales_stage_definition}, " + f"当前销售阶段为 {detailed_current_stage}, " + f"销售人员填写的销售动作日志为: {detailed_status} , " + f"请分析当前销售阶段以及销售动作日志,分析、总结、提炼出销售动作,给出一个概括的销售动作列表,比如拜访客户,需求讨论这种形式的动作描述") + sales_action_analysis_result = agent.send_message(prompt_sales_action_analysis) + print(sales_action_analysis_result) + df.at[index, '销售动作分析'] = sales_action_analysis_result # Directly update the DataFrame except Exception as e: print(f"Error processing row {index}: {e}") df.at[index, '分析结果'] = f"Error: {e}" # Log the error in the DataFrame + df.at[index, '销售动作分析'] = f"Error: {e}" # Log the error in the DataFrame df.to_excel('analysis_result.xlsx', index=False) diff --git a/analysis_result.xlsx b/analysis_result.xlsx index 23902a8..c831e88 100644 Binary files a/analysis_result.xlsx and b/analysis_result.xlsx differ diff --git a/analysis_result_v1.xlsx b/analysis_result_v1.xlsx new file mode 100644 index 0000000..23902a8 Binary files /dev/null and b/analysis_result_v1.xlsx differ diff --git a/filter_pipeline.py b/filter_pipeline.py index 75e512c..00d9fa7 100644 --- a/filter_pipeline.py +++ b/filter_pipeline.py @@ -7,11 +7,11 @@ df = pd.read_excel('pingcap_pipeline.xlsx') df['字数'] = df['当前详细状态及Close节奏'].apply(lambda x: len(str(x))) # 按字数排序并取TOP20 -top20_df = df.sort_values(by='字数', ascending=False).head(20) +top20_df = df.sort_values(by='字数', ascending=False).head(200) # 删除添加的字数列 top20_df = top20_df.drop(columns=['字数']) # 输出到新的Excel文件 -top20_df.to_excel('output_top20.xlsx', index=False) +top20_df.to_excel('output_top200.xlsx', index=False) diff --git a/output_top200.xlsx b/output_top200.xlsx new file mode 100644 index 0000000..8bad498 Binary files /dev/null and b/output_top200.xlsx differ