import pandas as pd
import re
import json  # Add this line at the top of your script
from AgentProxy import AgentProxy


# Read the Excel file
df = pd.read_excel('analysis_result_top200.xlsx')
statistic = {}

# Iterate through the "example" column
for index, row in df.iterrows():
    text = row['销售动作分析']
    # Extract text enclosed by '**', by using regular expression
    print(index)
    stage = row['Sales stage']
    if stage not in statistic:
        statistic[stage] = {}
        statistic[stage]['total'] = 0
    statistic[stage]['total'] += 1
  
    matches = re.findall(r'\*\*(.*?)\*\*', text)
    for match in matches:
        print(f"{match}")  # Print as markdown title        # iterate all the matches
        if match not in statistic[stage]:
            statistic[stage][match] = 0
        statistic[stage][match] += 1
    if len(matches) > 0:
        df.at[index, '销售动作'] = ','.join(matches)
    else:
        df.at[index, '销售动作'] = ''

df.to_excel('analysis_result_top200.xlsx', index=False)

print(statistic)

action_dict = {}
# Calculate the percentage distribution of each action within each stage
for stage, actions in statistic.items():
    total = actions.pop('total')
    print(f"Stage: {stage}")
    for action, count in actions.items():
        percentage = (count / total) * 100
        print(f"  {action}: {percentage:.2f}%")
        action_dict[action] = action

print(len(action_dict.keys()))
prompt_abstract_actions = f"以下是销售动作的文字描述，{','.join(action_dict.keys())} 请根据这些结果，总结出抽象的销售动作，以便于将上述销售动作归纳到抽象的销售动作中"
api_key = '25bda2c39c0f8ca0' 
api_secret = 'e0008b9b9727cb8ceea5a132dbe62495' 
assistant_id = "66bb09a84673b57506fe7bbd" 
agent = AgentProxy(assistant_id, api_key, api_secret)
# res = agent.send_message(prompt_abstract_actions)
# print(res)



abstract_actions = [
    "客户接触与需求识别",
    "产品演示与方案提供",
    "商务谈判与合同准备",
    "项目支持与优化",
    "市场分析与策略调整",
    "内部协调与支持",
    "合同审查与订单处理",
    "客户关系维护",
    "后续跟进与机会挖掘"
]

full_mapping = []
for i in range(0, len(action_dict.keys()), 20):
    group = list(action_dict.keys())[i:i+20]
    prompt_abstract_actions = f"以下是销售动作的文字描述，{','.join(group)}; 以下是抽象销售动作, {','.join(abstract_actions)}; 请根据上述信息，将销售动作归纳到抽象的销售动作中并给出映射关系， 用json数组返回,销售动作字段为action, 抽象销售动作字段为abstract_action"
    res = agent.send_message(prompt_abstract_actions)

    try:
        json_match = re.search(r'```json\s*(.*?)\s*```', res, re.DOTALL)

        if json_match:
            json_data = json_match.group(1)
            mapping = json.loads(json_data)
        else:
            mapping = []
    except Exception as e:
        print(f"Error parsing response: {e}")
        mapping = []
    print(res)
    print(mapping)
    full_mapping.extend(mapping)
    print(full_mapping)
