续约待办派发
This commit is contained in:
@@ -0,0 +1,33 @@
|
|||||||
|
from datetime import datetime
|
||||||
|
import os
|
||||||
|
from config import Config
|
||||||
|
import pandas as pd
|
||||||
|
from back_ground_module import CommonModule
|
||||||
|
from api import API
|
||||||
|
from log_config import configure_task_logger, configure_error_task_logger
|
||||||
|
|
||||||
|
logger = configure_task_logger()
|
||||||
|
error_task_logger = configure_error_task_logger()
|
||||||
|
output_dir = "output" # 设置输出目录
|
||||||
|
os.makedirs(output_dir, exist_ok=True)
|
||||||
|
common_module = CommonModule()
|
||||||
|
api_instance = API()
|
||||||
|
|
||||||
|
|
||||||
|
class YdToJDYRenewalToDo:
|
||||||
|
def __init__(self):
|
||||||
|
pass
|
||||||
|
|
||||||
|
def load_all_data(self):
|
||||||
|
"""
|
||||||
|
从各类来源加载数据上加载数据
|
||||||
|
:return:
|
||||||
|
"""
|
||||||
|
|
||||||
|
def main(self):
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
yd_to_jd_renewal_to_do = YdToJDYRenewalToDo()
|
||||||
|
yd_to_jd_renewal_to_do.main()
|
||||||
|
|||||||
+8
-24
@@ -1,24 +1,6 @@
|
|||||||
# 标准库
|
|
||||||
import os
|
import os
|
||||||
import time
|
from datetime import datetime
|
||||||
import random
|
|
||||||
import json
|
|
||||||
import binascii
|
|
||||||
from datetime import date, timedelta, datetime
|
|
||||||
from urllib.parse import quote
|
|
||||||
from pathlib import Path
|
|
||||||
|
|
||||||
# 第三方库
|
|
||||||
import numpy as np
|
|
||||||
import pandas as pd
|
import pandas as pd
|
||||||
import requests
|
|
||||||
from pyDes import des, CBC, PAD_PKCS5
|
|
||||||
import mysql.connector
|
|
||||||
from mysql.connector import Error
|
|
||||||
import psycopg2
|
|
||||||
|
|
||||||
# 自定义模块
|
|
||||||
from config import Config
|
|
||||||
from api import API
|
from api import API
|
||||||
from back_ground_module import CommonModule
|
from back_ground_module import CommonModule
|
||||||
from log_config import configure_task_logger, configure_error_task_logger
|
from log_config import configure_task_logger, configure_error_task_logger
|
||||||
@@ -33,6 +15,7 @@ os.makedirs(output_dir, exist_ok=True)
|
|||||||
|
|
||||||
class RenewalToDo:
|
class RenewalToDo:
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
|
self.province_staff_id_list = None
|
||||||
self.json_list = None
|
self.json_list = None
|
||||||
self.data_NGV = None
|
self.data_NGV = None
|
||||||
self.staff_id_list = None
|
self.staff_id_list = None
|
||||||
@@ -131,10 +114,10 @@ class RenewalToDo:
|
|||||||
payload = {"api_key": "675b900991ad2491c69389ca", "entry_id": "676512ac3e54dc3159460c0a"}
|
payload = {"api_key": "675b900991ad2491c69389ca", "entry_id": "676512ac3e54dc3159460c0a"}
|
||||||
json_dict = api_instance.entry_data_list(payload)
|
json_dict = api_instance.entry_data_list(payload)
|
||||||
if json_dict and "data" in json_dict:
|
if json_dict and "data" in json_dict:
|
||||||
self.staff_id_list = json_dict.get("data")
|
self.province_staff_id_list = json_dict.get("data")
|
||||||
else:
|
else:
|
||||||
print("加载省市区人员关系表失败")
|
print("加载省市区人员关系表失败")
|
||||||
self.staff_id_list = []
|
self.province_staff_id_list = []
|
||||||
|
|
||||||
# 数据库获取续约回访数据
|
# 数据库获取续约回访数据
|
||||||
self.data_NGV = common_module.get_renewal_details()
|
self.data_NGV = common_module.get_renewal_details()
|
||||||
@@ -144,6 +127,7 @@ class RenewalToDo:
|
|||||||
"""
|
"""
|
||||||
将 DataFrame 中多个姓名列替换为对应的员工ID。
|
将 DataFrame 中多个姓名列替换为对应的员工ID。
|
||||||
|
|
||||||
|
:param staff_id_list: 简道云获取到员工id
|
||||||
:param df: pandas.DataFrame
|
:param df: pandas.DataFrame
|
||||||
:param name_columns: list[str],需要替换的姓名列名列表,例如 ["col1", "col2"]
|
:param name_columns: list[str],需要替换的姓名列名列表,例如 ["col1", "col2"]
|
||||||
:return: 修改后的 DataFrame(原列被替换)
|
:return: 修改后的 DataFrame(原列被替换)
|
||||||
@@ -228,7 +212,7 @@ class RenewalToDo:
|
|||||||
staff_info = item.get('_widget_1734677164869', {}) # 续约回访客服
|
staff_info = item.get('_widget_1734677164869', {}) # 续约回访客服
|
||||||
username = staff_info.get('username')
|
username = staff_info.get('username')
|
||||||
return username if username else "数据缺失: 客服用户名为空"
|
return username if username else "数据缺失: 客服用户名为空"
|
||||||
except Exception:
|
except Exception :
|
||||||
continue # 跳过格式异常的记录
|
continue # 跳过格式异常的记录
|
||||||
|
|
||||||
return "数据缺失: 未找到对应的续约回访客服"
|
return "数据缺失: 未找到对应的续约回访客服"
|
||||||
@@ -286,7 +270,7 @@ class RenewalToDo:
|
|||||||
for NGV_Data in self.NGV_data_list:
|
for NGV_Data in self.NGV_data_list:
|
||||||
# NGV_Data = NGV_Data.get("data")
|
# NGV_Data = NGV_Data.get("data")
|
||||||
if row["org_code"] == NGV_Data.get("_widget_1734062123071"): # 门店编码
|
if row["org_code"] == NGV_Data.get("_widget_1734062123071"): # 门店编码
|
||||||
NGV_data_id = NGV_Data.get("_id") # 数据id
|
NGV_data_id = NGV_Data.get("_id") # 数据id
|
||||||
|
|
||||||
# 如果需要从 NGV_data_list 获取省市区信息
|
# 如果需要从 NGV_data_list 获取省市区信息
|
||||||
if use_ngv_location:
|
if use_ngv_location:
|
||||||
@@ -307,7 +291,7 @@ class RenewalToDo:
|
|||||||
logger.warning(f"省: {province_name}, 市: {city_name}, 区: {area_name}")
|
logger.warning(f"省: {province_name}, 市: {city_name}, 区: {area_name}")
|
||||||
else:
|
else:
|
||||||
customer_service = self.get_customer_service_by_location(province_name, city_name, area_name,
|
customer_service = self.get_customer_service_by_location(province_name, city_name, area_name,
|
||||||
self.staff_id_list)
|
self.province_staff_id_list)
|
||||||
logger.info(f"【派发客服】门店 {row['org_code']} 派发给客服: {customer_service}")
|
logger.info(f"【派发客服】门店 {row['org_code']} 派发给客服: {customer_service}")
|
||||||
|
|
||||||
# step4:非NGV字段添加到row中
|
# step4:非NGV字段添加到row中
|
||||||
|
|||||||
Reference in New Issue
Block a user