Compare commits
2 Commits
95ae2c864a
...
69390fd080
| Author | SHA1 | Date | |
|---|---|---|---|
| 69390fd080 | |||
| be3af8cf51 |
@@ -344,7 +344,8 @@ class API:
|
||||
"is_start_trigger": data.get('is_start_trigger', True),
|
||||
}
|
||||
)
|
||||
print(payload)
|
||||
# print(payload)
|
||||
|
||||
|
||||
data_get = None
|
||||
retries = 0
|
||||
|
||||
@@ -19,6 +19,7 @@ error_task_logger = configure_error_task_logger()
|
||||
output_dir = "output" # 设置输出目录
|
||||
os.makedirs(output_dir, exist_ok=True)
|
||||
|
||||
|
||||
class NewExceptionTask:
|
||||
"""
|
||||
SaaS异常回访
|
||||
@@ -175,7 +176,9 @@ class NewExceptionTask:
|
||||
# print("NGV获取后的类型:", type(self.NGV_data_list))
|
||||
|
||||
# 获取异常服务待办(添加过滤进行中的订单)
|
||||
payload = {"api_key": "675b900991ad2491c69389ca", "entry_id": "68340de79f116c0b66b6b0cc","filter":{"rel":"and","cond":[{ "field": "flowState", "type":"flowstate", "method":"eq","value":[0] }]}}
|
||||
payload = {"api_key": "675b900991ad2491c69389ca", "entry_id": "68340de79f116c0b66b6b0cc",
|
||||
"filter": {"rel": "and",
|
||||
"cond": [{"field": "flowState", "type": "flowstate", "method": "eq", "value": [0]}]}}
|
||||
self.exception_service_todo = api_instance.entry_data_list(payload).get("data", [])
|
||||
# print(self.exception_service_todo)
|
||||
|
||||
@@ -225,7 +228,7 @@ class NewExceptionTask:
|
||||
|
||||
task_start_time = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
|
||||
|
||||
all_data =[]
|
||||
all_data = []
|
||||
try:
|
||||
self.load_all_data()
|
||||
|
||||
@@ -240,6 +243,7 @@ class NewExceptionTask:
|
||||
return
|
||||
|
||||
data_yichang = self.data_yichang_S.copy()
|
||||
|
||||
# data_yichang.to_csv(os.path.join(output_dir,"data_yichang.csv"), index=False)
|
||||
|
||||
def replace_values(series):
|
||||
@@ -248,7 +252,7 @@ class NewExceptionTask:
|
||||
|
||||
# 对整个DataFrame的所有列应用替换函数
|
||||
data_yichang = data_yichang.apply(replace_values)
|
||||
error_data= []
|
||||
error_data = []
|
||||
for index_num, row in data_yichang.iterrows(): # 对过滤后的每一条进行派发
|
||||
try:
|
||||
# 每次循环前清空省市区变量
|
||||
@@ -257,7 +261,7 @@ class NewExceptionTask:
|
||||
area_name = None
|
||||
|
||||
is_pass = False
|
||||
for exception_service in self.exception_service_todo :
|
||||
for exception_service in self.exception_service_todo:
|
||||
# 通过查询筛选进行中的逻辑
|
||||
if exception_service['_widget_1748241895842'] == row['org_code']:
|
||||
is_pass = True
|
||||
@@ -297,35 +301,36 @@ class NewExceptionTask:
|
||||
|
||||
NGV_data_id = None
|
||||
reason = None
|
||||
create_exception =None
|
||||
create_date = None
|
||||
|
||||
create_exception = None
|
||||
create_date = None
|
||||
|
||||
# 优先从 data_yichang_S 获取省市区信息
|
||||
province_name = row.get('province_name')
|
||||
city_name = row.get('city_name')
|
||||
area_name = row.get('area_name') if 'area_name' in row else row.get('district_name')
|
||||
|
||||
|
||||
# 检查省市区是否完整(省市区是一体的,任意一个缺失就需要从NGV获取)
|
||||
use_ngv_location = False
|
||||
if (not province_name or province_name in ['', 'None', 'NA'] or
|
||||
not city_name or city_name in ['', 'None', 'NA'] or
|
||||
not area_name or area_name in ['', 'None', 'NA']):
|
||||
not city_name or city_name in ['', 'None', 'NA'] or
|
||||
not area_name or area_name in ['', 'None', 'NA']):
|
||||
use_ngv_location = True
|
||||
logger.info(f"门店 {row['org_code']} 的省市区信息不完整,将从NGV_data_list获取")
|
||||
|
||||
stop_date = None
|
||||
# 获取关联数据
|
||||
for NGV_Data in self.NGV_data_list:
|
||||
# NGV_Data = NGV_Data.get("data")
|
||||
if row["org_code"] == NGV_Data.get("_widget_1734062123071"): # 门店编码
|
||||
NGV_data_id = NGV_Data.get("_id")
|
||||
|
||||
|
||||
# 如果需要从 NGV_data_list 获取省市区信息
|
||||
if use_ngv_location:
|
||||
province_name = NGV_Data.get("_widget_1734062123090")
|
||||
city_name = NGV_Data.get("_widget_1734062123092")
|
||||
area_name = NGV_Data.get("_widget_1734062123094")
|
||||
logger.info(f"【从NGV获取省市区】门店 {row['org_code']}: {province_name}, {city_name}, {area_name}")
|
||||
|
||||
logger.info(
|
||||
f"【从NGV获取省市区】门店 {row['org_code']}: {province_name}, {city_name}, {area_name}")
|
||||
|
||||
# 门店原因
|
||||
reason = NGV_Data.get("_widget_1758617393828")
|
||||
logger.info(f"获取关联数据成功:{NGV_data_id}, {province_name}, {city_name}, {area_name}")
|
||||
@@ -333,8 +338,40 @@ class NewExceptionTask:
|
||||
create_exception = NGV_Data.get("_widget_1758769279995")
|
||||
# 获取上线日期(文本)# 202512.3改为开户日
|
||||
create_date = NGV_Data.get("_widget_1734062123081")
|
||||
# 获取暂停派发日期
|
||||
stop_date = NGV_Data.get("_widget_1772610343227", None)
|
||||
break # 找到匹配的数据后退出循环
|
||||
|
||||
# 定义可能的日期格式(灵活应对不同格式)
|
||||
date_formats = [
|
||||
"%Y-%m-%d %H:%M:%S", # 含时间
|
||||
"%Y-%m-%d", # 仅日期
|
||||
"%Y/%m/%d",
|
||||
"%Y/%m/%d %H:%M:%S"
|
||||
]
|
||||
|
||||
if stop_date:
|
||||
# 解析暂停派发日期
|
||||
parsed_stop_date = None
|
||||
for fmt in date_formats:
|
||||
try:
|
||||
parsed_stop_date = datetime.datetime.strptime(stop_date.strip(), fmt)
|
||||
logger.debug(f"使用格式 {fmt} 成功解析暂停派发日期: {parsed_stop_date}")
|
||||
break
|
||||
except ValueError:
|
||||
continue
|
||||
|
||||
if parsed_stop_date:
|
||||
# 获取当前UTC时间
|
||||
current_utc_time = datetime.datetime.utcnow()
|
||||
logger.debug(f"当前UTC时间: {current_utc_time}")
|
||||
logger.debug(f"暂停派发日期: {parsed_stop_date}")
|
||||
|
||||
# 比较时间
|
||||
if current_utc_time < parsed_stop_date:
|
||||
logger.info(f"当前UTC时间低于暂停派发日期,跳过派发")
|
||||
continue
|
||||
|
||||
# 判断门店原因
|
||||
# if reason in ["门店倒闭", "门店转让", "加盟其他连锁","切换竞品","虚拟门店","重新开户","已退款","二套系统"]:
|
||||
# continue
|
||||
@@ -347,14 +384,6 @@ class NewExceptionTask:
|
||||
logger.warning("上线日期为空,跳过该记录")
|
||||
continue
|
||||
|
||||
# 定义可能的日期格式(灵活应对不同格式)
|
||||
date_formats = [
|
||||
"%Y-%m-%d %H:%M:%S", # 含时间
|
||||
"%Y-%m-%d", # 仅日期
|
||||
"%Y/%m/%d",
|
||||
"%Y/%m/%d %H:%M:%S"
|
||||
]
|
||||
|
||||
parsed_date = None
|
||||
for fmt in date_formats:
|
||||
try:
|
||||
@@ -380,15 +409,14 @@ class NewExceptionTask:
|
||||
logger.info(f"上线日期 {parsed_date} 在30天内,跳过处理")
|
||||
continue
|
||||
|
||||
|
||||
if not NGV_data_id:
|
||||
logger.warning(f"未找到关联数据,请检查门店编码: {row['org_code']}")
|
||||
|
||||
# 根据省市区派发给异常回访客服
|
||||
# 检查省市区是否都有值,如果有任何一个为空,则客服为空
|
||||
if (not province_name or province_name in ['', 'None', 'NA'] or
|
||||
not city_name or city_name in ['', 'None', 'NA'] or
|
||||
not area_name or area_name in ['', 'None', 'NA']):
|
||||
not city_name or city_name in ['', 'None', 'NA'] or
|
||||
not area_name or area_name in ['', 'None', 'NA']):
|
||||
customer_service = None
|
||||
logger.warning(f"【省市区信息缺失】门店 {row['org_code']} 省市区信息不完整,异常回访客服设置为空")
|
||||
logger.warning(f"省: {province_name}, 市: {city_name}, 区: {area_name}")
|
||||
@@ -457,6 +485,8 @@ class NewExceptionTask:
|
||||
|
||||
"_widget_1748512176655": {"value": "未处理"}, # 跟进状态
|
||||
|
||||
"_widget_1772761760440":{"value": "客服跟进节点"}, # 当前跟进节点
|
||||
|
||||
})
|
||||
|
||||
routine_follow_up_payload = {
|
||||
@@ -478,7 +508,9 @@ class NewExceptionTask:
|
||||
if error_data:
|
||||
error_df = pd.DataFrame(error_data)
|
||||
error_df.to_csv(os.path.join(output_dir, "异常派发错误数据.csv"))
|
||||
common_module.send_task_error(task_start_time = task_start_time,task_name= "异常服务待办派发",error_message="详情见失败文件", df = error_df)
|
||||
common_module.send_task_error(task_start_time=task_start_time, task_name="异常服务待办派发",
|
||||
error_message="失败文件中省市区匹配不到,需要通过门店编码在客户资料表中查询正确的省市区,并更新到省市区人员关系表中",
|
||||
df=error_df)
|
||||
# ndf = pd.DataFrame(all_data)
|
||||
# ndf.to_csv(os.path.join(output_dir, "异常派发.csv"))
|
||||
common_module.send_task_status(task_start_time, "异常服务待办派发")
|
||||
|
||||
@@ -23,6 +23,7 @@ api_instance = API()
|
||||
|
||||
|
||||
class ProvinceCityPersonRelationToBI:
|
||||
'''省市区人员关系表转BI'''
|
||||
def __init__(self):
|
||||
self.pvc_data = None
|
||||
self.field_mapping = {
|
||||
|
||||
@@ -351,6 +351,9 @@ class RenewalToDo:
|
||||
data_NGV['120天是否跟进'] = "主动"
|
||||
data_NGV['60天是否跟进']= "主动"
|
||||
data_NGV['30天是否跟进']= "主动"
|
||||
|
||||
# 新增当前所处节点默认值
|
||||
data_NGV['当前所处节点'] = "120天节点"
|
||||
# 格式化为字符串(去掉时区)
|
||||
for col in ['过期日', '120天自动流转时间', '60天自动流转时间', '30天自动流转时间', '0天自动流转时间']:
|
||||
data_NGV[col] = data_NGV[col].dt.strftime('%Y-%m-%d %H:%M:%S')
|
||||
|
||||
@@ -622,7 +622,10 @@ class NewServicesRevisit:
|
||||
continue
|
||||
|
||||
if not Billing:
|
||||
logger.warning(f"权限表请求失败或者权限表无对应关系,权限唯一值是:{NGV_store_level_key}")
|
||||
logger.warning(f"权限表请求失败或者权限表无对应关系,权限唯一值是:{NGV_store_level_key},跳过该条派发")
|
||||
error_msg = f"门店编码:{row['org_code']},权限唯一值:{NGV_store_level_key}"
|
||||
common_module.send_task_error(task_start_time, "新签客户回访-权限表无匹配", error_msg)
|
||||
continue
|
||||
|
||||
if row["active_status_fmt"] == "活跃": # 开单 是否使用
|
||||
payload_dict.update({"_widget_1735004315765": {"value": "是"}})
|
||||
@@ -635,7 +638,7 @@ class NewServicesRevisit:
|
||||
payload_dict.update({"_widget_1735106258036": {"value": "否"}})
|
||||
except Exception as e:
|
||||
error_task_logger.error(f"会员卡拥有识别:Error finding customer service: {e}")
|
||||
common_module.send_task_error(task_start_time, "手动添加日常回访-会员卡拥有识别", str(e))
|
||||
common_module.send_task_error(task_start_time, "新签客户回访-会员卡拥有识别", str(e))
|
||||
try:
|
||||
if row["card_bill_day_count_last_30_day"] != "0": # 会员卡 是否使用
|
||||
payload_dict.update({"_widget_1735106258038": {"value": "是"}})
|
||||
@@ -643,7 +646,7 @@ class NewServicesRevisit:
|
||||
payload_dict.update({"_widget_1735106258038": {"value": "否"}})
|
||||
except Exception as e:
|
||||
error_task_logger.error(f"会员卡使用识别:Error finding customer service: {e}")
|
||||
common_module.send_task_error(task_start_time, "手动添加日常回访-会员卡使用识别", str(e))
|
||||
common_module.send_task_error(task_start_time, "新签客户回访-会员卡使用识别", str(e))
|
||||
# print(self.service_remind.get("_widget_1735112637045"))
|
||||
payload_dict["_widget_1735106258018"] = {"value": "否"}
|
||||
|
||||
@@ -675,11 +678,13 @@ class NewServicesRevisit:
|
||||
# 近30天业务单量=0 则其它所有模块均不推荐
|
||||
try:
|
||||
for feature_module, feature_value in feature_dict.items(): # 模块
|
||||
if row["bill_count_last_30_day"] == '0' and payload_dict[feature_value]["value"] == '△':
|
||||
if feature_value not in payload_dict:
|
||||
continue
|
||||
if row["bill_count_last_30_day"] == '0' and payload_dict[feature_value].get("value") == '△':
|
||||
payload_dict.update({f"{feature_value}": {"value": "×"}})
|
||||
except Exception as e:
|
||||
error_task_logger.error(f"不开单识别:Error finding customer service: {e}")
|
||||
common_module.send_task_error(task_start_time, "手动添加日常回访-不开单识别", str(e))
|
||||
common_module.send_task_error(task_start_time, "新签客户回访-不开单识别", str(e))
|
||||
|
||||
# 保单识别:从系统中抽取目标门店,针对门店抽取修改是否推荐
|
||||
try:
|
||||
@@ -687,7 +692,7 @@ class NewServicesRevisit:
|
||||
payload_dict.update({'_widget_1735004315746': {"value": "△"}})
|
||||
except Exception as e:
|
||||
error_task_logger.error(f"保单识别:Error finding customer service: {e}")
|
||||
common_module.send_task_error(task_start_time, "手动添加日常回访-保单识别", str(e))
|
||||
common_module.send_task_error(task_start_time, "新签客户回访-保单识别", str(e))
|
||||
# 私域小程序:根据是否开通微信小程序判断是否使用,旗舰版及以上算拥有
|
||||
try:
|
||||
for item in self.private_domain:
|
||||
@@ -700,7 +705,7 @@ class NewServicesRevisit:
|
||||
break
|
||||
except Exception as e:
|
||||
error_task_logger.error(f"小程序识别:Error finding customer service: {e}")
|
||||
common_module.send_task_error(task_start_time, "手动添加日常回访-小程序识别", str(e))
|
||||
common_module.send_task_error(task_start_time, "新签客户回访-小程序识别", str(e))
|
||||
try:
|
||||
high_version = ['皇冠版', '至尊版', '尊享版', '旗舰版']
|
||||
if row["saas_edition_fmt"] in high_version:
|
||||
@@ -709,7 +714,7 @@ class NewServicesRevisit:
|
||||
payload_dict.update({'_widget_1735106258141': {"value": "否"}}) # SYXCX:是否拥有
|
||||
except Exception as e:
|
||||
error_task_logger.error(f"私域小程序:Error finding customer service: {e}")
|
||||
common_module.send_task_error(task_start_time, "手动添加日常回访-私域小程序", str(e))
|
||||
common_module.send_task_error(task_start_time, "新签客户回访-私域小程序", str(e))
|
||||
|
||||
# 公域小程序:根据是否开通微信小程序判断是否使用,旗舰版及以上算拥有
|
||||
try:
|
||||
@@ -723,7 +728,7 @@ class NewServicesRevisit:
|
||||
break
|
||||
except Exception as e:
|
||||
error_task_logger.error(f"公域小程序:Error finding customer service: {e}")
|
||||
common_module.send_task_error(task_start_time, "手动添加日常回访-公域小程序", str(e))
|
||||
common_module.send_task_error(task_start_time, "新签客户回访-公域小程序", str(e))
|
||||
|
||||
try:
|
||||
if row["id_own_org"] in self.public_domain_list:
|
||||
@@ -732,7 +737,7 @@ class NewServicesRevisit:
|
||||
payload_dict.update({'_widget_1735106258112': {"value": "否"}}) # GYXCX:是否拥有
|
||||
except Exception as e:
|
||||
error_task_logger.error(f"公域小程序:Error finding customer service: {e}")
|
||||
common_module.send_task_error(task_start_time, "手动添加日常回访-公域小程序", str(e))
|
||||
common_module.send_task_error(task_start_time, "新签客户回访-公域小程序", str(e))
|
||||
|
||||
# 异业合作:根据是否存在判断是否拥有,过滤条件 商品名称包含异业两个字
|
||||
try:
|
||||
@@ -742,7 +747,7 @@ class NewServicesRevisit:
|
||||
payload_dict.update({'_widget_1735107355618': {"value": "否"}}) # YYHZ:是否拥有
|
||||
except Exception as e:
|
||||
error_task_logger.error(f"异业合作:Error finding customer service: {e}")
|
||||
common_module.send_task_error(task_start_time, "手动添加日常回访-异业合作", str(e))
|
||||
common_module.send_task_error(task_start_time, "新签客户回访-异业合作", str(e))
|
||||
|
||||
# 短信:根据是否启动短信功能判断是否拥有,根据
|
||||
try:
|
||||
@@ -756,7 +761,7 @@ class NewServicesRevisit:
|
||||
break
|
||||
except Exception as e:
|
||||
error_task_logger.error(f"短信是否使用:Error finding customer service: {e}")
|
||||
common_module.send_task_error(task_start_time, "手动添加日常回访-短信是否使用", str(e))
|
||||
common_module.send_task_error(task_start_time, "新签客户回访-短信是否使用", str(e))
|
||||
|
||||
try:
|
||||
for item in self.groupnotification:
|
||||
@@ -769,7 +774,7 @@ class NewServicesRevisit:
|
||||
break
|
||||
except Exception as e:
|
||||
error_task_logger.error(f"短信是否使用:Error finding customer service: {e}")
|
||||
common_module.send_task_error(task_start_time, "手动添加日常回访-短信是否使用", str(e))
|
||||
common_module.send_task_error(task_start_time, "新签客户回访-短信是否使用", str(e))
|
||||
|
||||
NGV_data_id = None
|
||||
# 获取关联数据
|
||||
|
||||
@@ -736,7 +736,10 @@ class RenewServicesRevisit:
|
||||
continue
|
||||
|
||||
if not Billing:
|
||||
logger.warning(f"权限表请求失败或者权限表无对应关系,权限唯一值是:{NGV_store_level_key}")
|
||||
logger.warning(f"权限表请求失败或者权限表无对应关系,权限唯一值是:{NGV_store_level_key},跳过该条派发")
|
||||
error_msg = f"门店编码:{row['org_code']},权限唯一值:{NGV_store_level_key}"
|
||||
common_module.send_task_error(task_start_time, "续约客户回访-权限表无匹配", error_msg)
|
||||
continue # 无权限匹配时 payload_dict 缺少 _widget_1734073342350 等字段,后续会 KeyError,直接跳过
|
||||
|
||||
if row["active_status_fmt"] == "活跃": # 开单 是否使用
|
||||
payload_dict.update({"_widget_1735004315765": {"value": "是"}})
|
||||
@@ -750,7 +753,7 @@ class RenewServicesRevisit:
|
||||
payload_dict.update({"_widget_1735106258036": {"value": "否"}})
|
||||
except Exception as e:
|
||||
error_task_logger.error(f"会员卡拥有识别:Error finding customer service: {e}")
|
||||
common_module.send_task_error(task_start_time, "手动添加日常回访-会员卡拥有识别", str(e))
|
||||
common_module.send_task_error(task_start_time, "续约客户回访-会员卡拥有识别", str(e))
|
||||
|
||||
try:
|
||||
if row["card_bill_day_count_last_30_day"] != "0": # 会员卡 是否使用
|
||||
@@ -759,7 +762,7 @@ class RenewServicesRevisit:
|
||||
payload_dict.update({"_widget_1735106258038": {"value": "否"}})
|
||||
except Exception as e:
|
||||
error_task_logger.error(f"会员卡使用识别:Error finding customer service: {e}")
|
||||
common_module.send_task_error(task_start_time, "手动添加日常回访-会员卡使用识别", str(e))
|
||||
common_module.send_task_error(task_start_time, "续约客户回访-会员卡使用识别", str(e))
|
||||
|
||||
# print(self.service_remind.get("_widget_1735112637045"))
|
||||
payload_dict["_widget_1735106258018"] = {"value": "否"}
|
||||
@@ -792,11 +795,13 @@ class RenewServicesRevisit:
|
||||
# 近30天业务单量=0 则其它所有模块均不推荐
|
||||
try:
|
||||
for feature_module, feature_value in feature_dict.items(): # 模块
|
||||
if row["bill_count_last_30_day"] == '0' and payload_dict[feature_value]["value"] == '△':
|
||||
if feature_value not in payload_dict:
|
||||
continue # 权限未匹配时该 key 不存在,避免 KeyError
|
||||
if row["bill_count_last_30_day"] == '0' and payload_dict[feature_value].get("value") == '△':
|
||||
payload_dict.update({f"{feature_value}": {"value": "×"}})
|
||||
except Exception as e:
|
||||
error_task_logger.error(f"不开单识别:Error finding customer service: {e}")
|
||||
common_module.send_task_error(task_start_time, "手动添加日常回访-不开单识别", str(e))
|
||||
common_module.send_task_error(task_start_time, "续约客户回访-不开单识别", str(e))
|
||||
|
||||
# 保单识别:从系统中抽取目标门店,针对门店抽取修改是否推荐
|
||||
try:
|
||||
@@ -804,7 +809,7 @@ class RenewServicesRevisit:
|
||||
payload_dict.update({'_widget_1735004315746': {"value": "△"}})
|
||||
except Exception as e:
|
||||
error_task_logger.error(f"保单识别:Error finding customer service: {e}")
|
||||
common_module.send_task_error(task_start_time, "手动添加日常回访-保单识别", str(e))
|
||||
common_module.send_task_error(task_start_time, "续约客户回访-保单识别", str(e))
|
||||
|
||||
# 私域小程序:根据是否开通微信小程序判断是否使用,旗舰版及以上算拥有
|
||||
try:
|
||||
@@ -818,7 +823,7 @@ class RenewServicesRevisit:
|
||||
break
|
||||
except Exception as e:
|
||||
error_task_logger.error(f"小程序识别:Error finding customer service: {e}")
|
||||
common_module.send_task_error(task_start_time, "手动添加日常回访-小程序识别", str(e))
|
||||
common_module.send_task_error(task_start_time, "续约客户回访-小程序识别", str(e))
|
||||
|
||||
try:
|
||||
high_version = ['皇冠版', '至尊版', '尊享版', '旗舰版']
|
||||
@@ -828,7 +833,7 @@ class RenewServicesRevisit:
|
||||
payload_dict.update({'_widget_1735106258141': {"value": "否"}}) # SYXCX:是否拥有
|
||||
except Exception as e:
|
||||
error_task_logger.error(f"私域小程序:Error finding customer service: {e}")
|
||||
common_module.send_task_error(task_start_time, "手动添加日常回访-私域小程序", str(e))
|
||||
common_module.send_task_error(task_start_time, "续约客户回访-私域小程序", str(e))
|
||||
|
||||
# 公域小程序:根据是否开通微信小程序判断是否使用,旗舰版及以上算拥有
|
||||
try:
|
||||
@@ -842,7 +847,7 @@ class RenewServicesRevisit:
|
||||
break
|
||||
except Exception as e:
|
||||
error_task_logger.error(f"公域小程序:Error finding customer service: {e}")
|
||||
common_module.send_task_error(task_start_time, "手动添加日常回访-公域小程序", str(e))
|
||||
common_module.send_task_error(task_start_time, "续约客户回访-公域小程序", str(e))
|
||||
|
||||
try:
|
||||
if row["id_own_org"] in self.public_domain_list:
|
||||
@@ -851,7 +856,7 @@ class RenewServicesRevisit:
|
||||
payload_dict.update({'_widget_1735106258112': {"value": "否"}}) # GYXCX:是否拥有
|
||||
except Exception as e:
|
||||
error_task_logger.error(f"公域小程序:Error finding customer service: {e}")
|
||||
common_module.send_task_error(task_start_time, "手动添加日常回访-公域小程序", str(e))
|
||||
common_module.send_task_error(task_start_time, "续约客户回访-公域小程序", str(e))
|
||||
|
||||
# 异业合作:根据是否存在判断是否拥有,过滤条件 商品名称包含异业两个字
|
||||
try:
|
||||
@@ -861,7 +866,7 @@ class RenewServicesRevisit:
|
||||
payload_dict.update({'_widget_1735107355618': {"value": "否"}}) # YYHZ:是否拥有
|
||||
except Exception as e:
|
||||
error_task_logger.error(f"异业合作:Error finding customer service: {e}")
|
||||
common_module.send_task_error(task_start_time, "手动添加日常回访-异业合作", str(e))
|
||||
common_module.send_task_error(task_start_time, "续约客户回访-异业合作", str(e))
|
||||
|
||||
# 短信:根据是否启动短信功能判断是否拥有,根据
|
||||
try:
|
||||
@@ -875,7 +880,7 @@ class RenewServicesRevisit:
|
||||
break
|
||||
except Exception as e:
|
||||
error_task_logger.error(f"短信是否使用:Error finding customer service: {e}")
|
||||
common_module.send_task_error(task_start_time, "手动添加日常回访-短信是否使用", str(e))
|
||||
common_module.send_task_error(task_start_time, "续约客户回访-短信是否使用", str(e))
|
||||
|
||||
try:
|
||||
for item in self.groupnotification:
|
||||
@@ -888,7 +893,7 @@ class RenewServicesRevisit:
|
||||
break
|
||||
except Exception as e:
|
||||
error_task_logger.error(f"短信是否使用:Error finding customer service: {e}")
|
||||
common_module.send_task_error(task_start_time, "手动添加日常回访-短信是否使用", str(e))
|
||||
common_module.send_task_error(task_start_time, "续约客户回访-短信是否使用", str(e))
|
||||
|
||||
NGV_data_id = None
|
||||
# 获取关联数据
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 125 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 369 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 154 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 154 KiB |
-61166
File diff suppressed because one or more lines are too long
+4
-4
@@ -421,8 +421,8 @@
|
||||
{
|
||||
"metadata": {
|
||||
"ExecuteTime": {
|
||||
"end_time": "2026-02-04T06:48:00.613387900Z",
|
||||
"start_time": "2026-02-04T06:47:59.999330900Z"
|
||||
"end_time": "2026-03-05T06:03:19.996979900Z",
|
||||
"start_time": "2026-03-05T06:03:19.335172700Z"
|
||||
}
|
||||
},
|
||||
"cell_type": "code",
|
||||
@@ -454,7 +454,7 @@
|
||||
"\n",
|
||||
" # 使用DELETE删除ID大于等于127821的数据\n",
|
||||
" # cursor.execute(f\"DELETE FROM {table_name} WHERE id >= {min_id_to_delete}\")\n",
|
||||
" cursor.execute(f\"DELETE FROM GP_monthly_renewal_rate_new WHERE 月分区(仅用于存储每月最后一天截至数据) = '202601';\")\n",
|
||||
" cursor.execute(f\"DELETE FROM GP_annual_renewal_rate_new WHERE 月分区(仅用于存储每月最后一天截至数据) = '202602';\")\n",
|
||||
"\n",
|
||||
" connection.commit()\n",
|
||||
"\n",
|
||||
@@ -478,7 +478,7 @@
|
||||
]
|
||||
}
|
||||
],
|
||||
"execution_count": 4
|
||||
"execution_count": 2
|
||||
},
|
||||
{
|
||||
"metadata": {},
|
||||
|
||||
@@ -22,8 +22,8 @@ def save_data_yichang_to_csv():
|
||||
print("开始获取异常明细数据...")
|
||||
|
||||
# 获取前一天的异常数据
|
||||
data_yichang_S = common_module.get_yichang_details(days_back=1)
|
||||
# data_yichang_S = common_module.get_ngv_details(days_back=1) # ngv
|
||||
# data_yichang_S = common_module.get_yichang_details(days_back=1)
|
||||
data_yichang_S = common_module.get_ngv_details(days_back=1) # ngv
|
||||
|
||||
|
||||
if data_yichang_S is None or data_yichang_S.empty:
|
||||
@@ -35,7 +35,7 @@ def save_data_yichang_to_csv():
|
||||
|
||||
# 生成文件名(包含日期)
|
||||
current_date = datetime.datetime.now().strftime("%Y%m%d")
|
||||
filename = f"data_yichang_{current_date}.csv"
|
||||
filename = f"data_NGV_{current_date}.csv"
|
||||
filepath = os.path.join(output_dir, filename)
|
||||
|
||||
# 保存到CSV
|
||||
|
||||
File diff suppressed because one or more lines are too long
+26
-764
@@ -12,8 +12,8 @@
|
||||
"metadata": {
|
||||
"collapsed": true,
|
||||
"ExecuteTime": {
|
||||
"end_time": "2025-07-17T08:03:51.919981Z",
|
||||
"start_time": "2025-07-17T08:03:39.331174Z"
|
||||
"end_time": "2026-02-25T05:45:52.998049100Z",
|
||||
"start_time": "2026-02-25T05:45:49.628616100Z"
|
||||
}
|
||||
},
|
||||
"source": [
|
||||
@@ -21,7 +21,7 @@
|
||||
"from api import API\n",
|
||||
"\n",
|
||||
"api_instance = API()\n",
|
||||
"df = pd.read_excel(r\"C:\\Users\\Administrator.DESKTOP-7IC2USJ\\Downloads\\客户资料_20250801111301.xlsx\",sheet_name=\"id为空\")\n",
|
||||
"df = pd.read_excel(r\"C:\\Users\\hp_z66\\Downloads\\客户资料_20260225113103.xlsx\",sheet_name=\"Sheet7\")\n",
|
||||
"for index, row in df.iterrows():\n",
|
||||
" data_id = row[\"data_id\"]\n",
|
||||
" payload = {\n",
|
||||
@@ -33,37 +33,25 @@
|
||||
],
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n"
|
||||
"ename": "KeyboardInterrupt",
|
||||
"evalue": "",
|
||||
"output_type": "error",
|
||||
"traceback": [
|
||||
"\u001B[31m---------------------------------------------------------------------------\u001B[39m",
|
||||
"\u001B[31mKeyboardInterrupt\u001B[39m Traceback (most recent call last)",
|
||||
"\u001B[36mCell\u001B[39m\u001B[36m \u001B[39m\u001B[32mIn[1]\u001B[39m\u001B[32m, line 5\u001B[39m\n\u001B[32m 2\u001B[39m \u001B[38;5;28;01mfrom\u001B[39;00m\u001B[38;5;250m \u001B[39m\u001B[34;01mapi\u001B[39;00m\u001B[38;5;250m \u001B[39m\u001B[38;5;28;01mimport\u001B[39;00m API\n\u001B[32m 4\u001B[39m api_instance = API()\n\u001B[32m----> \u001B[39m\u001B[32m5\u001B[39m df = \u001B[43mpd\u001B[49m\u001B[43m.\u001B[49m\u001B[43mread_excel\u001B[49m\u001B[43m(\u001B[49m\u001B[33;43mr\u001B[39;49m\u001B[33;43m\"\u001B[39;49m\u001B[33;43mC:\u001B[39;49m\u001B[33;43m\\\u001B[39;49m\u001B[33;43mUsers\u001B[39;49m\u001B[33;43m\\\u001B[39;49m\u001B[33;43mhp_z66\u001B[39;49m\u001B[33;43m\\\u001B[39;49m\u001B[33;43mDownloads\u001B[39;49m\u001B[33;43m\\\u001B[39;49m\u001B[33;43m客户资料_20260225113103.xlsx\u001B[39;49m\u001B[33;43m\"\u001B[39;49m\u001B[43m,\u001B[49m\u001B[43msheet_name\u001B[49m\u001B[43m=\u001B[49m\u001B[33;43m\"\u001B[39;49m\u001B[33;43mSheet7\u001B[39;49m\u001B[33;43m\"\u001B[39;49m\u001B[43m)\u001B[49m\n\u001B[32m 6\u001B[39m \u001B[38;5;28;01mfor\u001B[39;00m index, row \u001B[38;5;129;01min\u001B[39;00m df.iterrows():\n\u001B[32m 7\u001B[39m data_id = row[\u001B[33m\"\u001B[39m\u001B[33mdata_id\u001B[39m\u001B[33m\"\u001B[39m]\n",
|
||||
"\u001B[36mFile \u001B[39m\u001B[32mD:\\Program Files\\anaconda3\\envs\\SaaS\\Lib\\site-packages\\pandas\\io\\excel\\_base.py:495\u001B[39m, in \u001B[36mread_excel\u001B[39m\u001B[34m(io, sheet_name, header, names, index_col, usecols, dtype, engine, converters, true_values, false_values, skiprows, nrows, na_values, keep_default_na, na_filter, verbose, parse_dates, date_parser, date_format, thousands, decimal, comment, skipfooter, storage_options, dtype_backend, engine_kwargs)\u001B[39m\n\u001B[32m 493\u001B[39m \u001B[38;5;28;01mif\u001B[39;00m \u001B[38;5;129;01mnot\u001B[39;00m \u001B[38;5;28misinstance\u001B[39m(io, ExcelFile):\n\u001B[32m 494\u001B[39m should_close = \u001B[38;5;28;01mTrue\u001B[39;00m\n\u001B[32m--> \u001B[39m\u001B[32m495\u001B[39m io = \u001B[43mExcelFile\u001B[49m\u001B[43m(\u001B[49m\n\u001B[32m 496\u001B[39m \u001B[43m \u001B[49m\u001B[43mio\u001B[49m\u001B[43m,\u001B[49m\n\u001B[32m 497\u001B[39m \u001B[43m \u001B[49m\u001B[43mstorage_options\u001B[49m\u001B[43m=\u001B[49m\u001B[43mstorage_options\u001B[49m\u001B[43m,\u001B[49m\n\u001B[32m 498\u001B[39m \u001B[43m \u001B[49m\u001B[43mengine\u001B[49m\u001B[43m=\u001B[49m\u001B[43mengine\u001B[49m\u001B[43m,\u001B[49m\n\u001B[32m 499\u001B[39m \u001B[43m \u001B[49m\u001B[43mengine_kwargs\u001B[49m\u001B[43m=\u001B[49m\u001B[43mengine_kwargs\u001B[49m\u001B[43m,\u001B[49m\n\u001B[32m 500\u001B[39m \u001B[43m \u001B[49m\u001B[43m)\u001B[49m\n\u001B[32m 501\u001B[39m \u001B[38;5;28;01melif\u001B[39;00m engine \u001B[38;5;129;01mand\u001B[39;00m engine != io.engine:\n\u001B[32m 502\u001B[39m \u001B[38;5;28;01mraise\u001B[39;00m \u001B[38;5;167;01mValueError\u001B[39;00m(\n\u001B[32m 503\u001B[39m \u001B[33m\"\u001B[39m\u001B[33mEngine should not be specified when passing \u001B[39m\u001B[33m\"\u001B[39m\n\u001B[32m 504\u001B[39m \u001B[33m\"\u001B[39m\u001B[33man ExcelFile - ExcelFile already has the engine set\u001B[39m\u001B[33m\"\u001B[39m\n\u001B[32m 505\u001B[39m )\n",
|
||||
"\u001B[36mFile \u001B[39m\u001B[32mD:\\Program Files\\anaconda3\\envs\\SaaS\\Lib\\site-packages\\pandas\\io\\excel\\_base.py:1567\u001B[39m, in \u001B[36mExcelFile.__init__\u001B[39m\u001B[34m(self, path_or_buffer, engine, storage_options, engine_kwargs)\u001B[39m\n\u001B[32m 1564\u001B[39m \u001B[38;5;28mself\u001B[39m.engine = engine\n\u001B[32m 1565\u001B[39m \u001B[38;5;28mself\u001B[39m.storage_options = storage_options\n\u001B[32m-> \u001B[39m\u001B[32m1567\u001B[39m \u001B[38;5;28mself\u001B[39m._reader = \u001B[38;5;28;43mself\u001B[39;49m\u001B[43m.\u001B[49m\u001B[43m_engines\u001B[49m\u001B[43m[\u001B[49m\u001B[43mengine\u001B[49m\u001B[43m]\u001B[49m\u001B[43m(\u001B[49m\n\u001B[32m 1568\u001B[39m \u001B[43m \u001B[49m\u001B[38;5;28;43mself\u001B[39;49m\u001B[43m.\u001B[49m\u001B[43m_io\u001B[49m\u001B[43m,\u001B[49m\n\u001B[32m 1569\u001B[39m \u001B[43m \u001B[49m\u001B[43mstorage_options\u001B[49m\u001B[43m=\u001B[49m\u001B[43mstorage_options\u001B[49m\u001B[43m,\u001B[49m\n\u001B[32m 1570\u001B[39m \u001B[43m \u001B[49m\u001B[43mengine_kwargs\u001B[49m\u001B[43m=\u001B[49m\u001B[43mengine_kwargs\u001B[49m\u001B[43m,\u001B[49m\n\u001B[32m 1571\u001B[39m \u001B[43m\u001B[49m\u001B[43m)\u001B[49m\n",
|
||||
"\u001B[36mFile \u001B[39m\u001B[32mD:\\Program Files\\anaconda3\\envs\\SaaS\\Lib\\site-packages\\pandas\\io\\excel\\_openpyxl.py:553\u001B[39m, in \u001B[36mOpenpyxlReader.__init__\u001B[39m\u001B[34m(self, filepath_or_buffer, storage_options, engine_kwargs)\u001B[39m\n\u001B[32m 541\u001B[39m \u001B[38;5;250m\u001B[39m\u001B[33;03m\"\"\"\u001B[39;00m\n\u001B[32m 542\u001B[39m \u001B[33;03mReader using openpyxl engine.\u001B[39;00m\n\u001B[32m 543\u001B[39m \n\u001B[32m (...)\u001B[39m\u001B[32m 550\u001B[39m \u001B[33;03m Arbitrary keyword arguments passed to excel engine.\u001B[39;00m\n\u001B[32m 551\u001B[39m \u001B[33;03m\"\"\"\u001B[39;00m\n\u001B[32m 552\u001B[39m import_optional_dependency(\u001B[33m\"\u001B[39m\u001B[33mopenpyxl\u001B[39m\u001B[33m\"\u001B[39m)\n\u001B[32m--> \u001B[39m\u001B[32m553\u001B[39m \u001B[38;5;28;43msuper\u001B[39;49m\u001B[43m(\u001B[49m\u001B[43m)\u001B[49m\u001B[43m.\u001B[49m\u001B[34;43m__init__\u001B[39;49m\u001B[43m(\u001B[49m\n\u001B[32m 554\u001B[39m \u001B[43m \u001B[49m\u001B[43mfilepath_or_buffer\u001B[49m\u001B[43m,\u001B[49m\n\u001B[32m 555\u001B[39m \u001B[43m \u001B[49m\u001B[43mstorage_options\u001B[49m\u001B[43m=\u001B[49m\u001B[43mstorage_options\u001B[49m\u001B[43m,\u001B[49m\n\u001B[32m 556\u001B[39m \u001B[43m \u001B[49m\u001B[43mengine_kwargs\u001B[49m\u001B[43m=\u001B[49m\u001B[43mengine_kwargs\u001B[49m\u001B[43m,\u001B[49m\n\u001B[32m 557\u001B[39m \u001B[43m\u001B[49m\u001B[43m)\u001B[49m\n",
|
||||
"\u001B[36mFile \u001B[39m\u001B[32mD:\\Program Files\\anaconda3\\envs\\SaaS\\Lib\\site-packages\\pandas\\io\\excel\\_base.py:573\u001B[39m, in \u001B[36mBaseExcelReader.__init__\u001B[39m\u001B[34m(self, filepath_or_buffer, storage_options, engine_kwargs)\u001B[39m\n\u001B[32m 571\u001B[39m \u001B[38;5;28mself\u001B[39m.handles.handle.seek(\u001B[32m0\u001B[39m)\n\u001B[32m 572\u001B[39m \u001B[38;5;28;01mtry\u001B[39;00m:\n\u001B[32m--> \u001B[39m\u001B[32m573\u001B[39m \u001B[38;5;28mself\u001B[39m.book = \u001B[38;5;28;43mself\u001B[39;49m\u001B[43m.\u001B[49m\u001B[43mload_workbook\u001B[49m\u001B[43m(\u001B[49m\u001B[38;5;28;43mself\u001B[39;49m\u001B[43m.\u001B[49m\u001B[43mhandles\u001B[49m\u001B[43m.\u001B[49m\u001B[43mhandle\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43mengine_kwargs\u001B[49m\u001B[43m)\u001B[49m\n\u001B[32m 574\u001B[39m \u001B[38;5;28;01mexcept\u001B[39;00m \u001B[38;5;167;01mException\u001B[39;00m:\n\u001B[32m 575\u001B[39m \u001B[38;5;28mself\u001B[39m.close()\n",
|
||||
"\u001B[36mFile \u001B[39m\u001B[32mD:\\Program Files\\anaconda3\\envs\\SaaS\\Lib\\site-packages\\pandas\\io\\excel\\_openpyxl.py:572\u001B[39m, in \u001B[36mOpenpyxlReader.load_workbook\u001B[39m\u001B[34m(self, filepath_or_buffer, engine_kwargs)\u001B[39m\n\u001B[32m 568\u001B[39m \u001B[38;5;28;01mfrom\u001B[39;00m\u001B[38;5;250m \u001B[39m\u001B[34;01mopenpyxl\u001B[39;00m\u001B[38;5;250m \u001B[39m\u001B[38;5;28;01mimport\u001B[39;00m load_workbook\n\u001B[32m 570\u001B[39m default_kwargs = {\u001B[33m\"\u001B[39m\u001B[33mread_only\u001B[39m\u001B[33m\"\u001B[39m: \u001B[38;5;28;01mTrue\u001B[39;00m, \u001B[33m\"\u001B[39m\u001B[33mdata_only\u001B[39m\u001B[33m\"\u001B[39m: \u001B[38;5;28;01mTrue\u001B[39;00m, \u001B[33m\"\u001B[39m\u001B[33mkeep_links\u001B[39m\u001B[33m\"\u001B[39m: \u001B[38;5;28;01mFalse\u001B[39;00m}\n\u001B[32m--> \u001B[39m\u001B[32m572\u001B[39m \u001B[38;5;28;01mreturn\u001B[39;00m \u001B[43mload_workbook\u001B[49m\u001B[43m(\u001B[49m\n\u001B[32m 573\u001B[39m \u001B[43m \u001B[49m\u001B[43mfilepath_or_buffer\u001B[49m\u001B[43m,\u001B[49m\n\u001B[32m 574\u001B[39m \u001B[43m \u001B[49m\u001B[43m*\u001B[49m\u001B[43m*\u001B[49m\u001B[43m(\u001B[49m\u001B[43mdefault_kwargs\u001B[49m\u001B[43m \u001B[49m\u001B[43m|\u001B[49m\u001B[43m \u001B[49m\u001B[43mengine_kwargs\u001B[49m\u001B[43m)\u001B[49m\u001B[43m,\u001B[49m\n\u001B[32m 575\u001B[39m \u001B[43m\u001B[49m\u001B[43m)\u001B[49m\n",
|
||||
"\u001B[36mFile \u001B[39m\u001B[32mD:\\Program Files\\anaconda3\\envs\\SaaS\\Lib\\site-packages\\openpyxl\\reader\\excel.py:348\u001B[39m, in \u001B[36mload_workbook\u001B[39m\u001B[34m(filename, read_only, keep_vba, data_only, keep_links, rich_text)\u001B[39m\n\u001B[32m 318\u001B[39m \u001B[38;5;250m\u001B[39m\u001B[33;03m\"\"\"Open the given filename and return the workbook\u001B[39;00m\n\u001B[32m 319\u001B[39m \n\u001B[32m 320\u001B[39m \u001B[33;03m:param filename: the path to open or a file-like object\u001B[39;00m\n\u001B[32m (...)\u001B[39m\u001B[32m 344\u001B[39m \n\u001B[32m 345\u001B[39m \u001B[33;03m\"\"\"\u001B[39;00m\n\u001B[32m 346\u001B[39m reader = ExcelReader(filename, read_only, keep_vba,\n\u001B[32m 347\u001B[39m data_only, keep_links, rich_text)\n\u001B[32m--> \u001B[39m\u001B[32m348\u001B[39m \u001B[43mreader\u001B[49m\u001B[43m.\u001B[49m\u001B[43mread\u001B[49m\u001B[43m(\u001B[49m\u001B[43m)\u001B[49m\n\u001B[32m 349\u001B[39m \u001B[38;5;28;01mreturn\u001B[39;00m reader.wb\n",
|
||||
"\u001B[36mFile \u001B[39m\u001B[32mD:\\Program Files\\anaconda3\\envs\\SaaS\\Lib\\site-packages\\openpyxl\\reader\\excel.py:291\u001B[39m, in \u001B[36mExcelReader.read\u001B[39m\u001B[34m(self)\u001B[39m\n\u001B[32m 289\u001B[39m \u001B[38;5;28mself\u001B[39m.read_manifest()\n\u001B[32m 290\u001B[39m action = \u001B[33m\"\u001B[39m\u001B[33mread strings\u001B[39m\u001B[33m\"\u001B[39m\n\u001B[32m--> \u001B[39m\u001B[32m291\u001B[39m \u001B[38;5;28;43mself\u001B[39;49m\u001B[43m.\u001B[49m\u001B[43mread_strings\u001B[49m\u001B[43m(\u001B[49m\u001B[43m)\u001B[49m\n\u001B[32m 292\u001B[39m action = \u001B[33m\"\u001B[39m\u001B[33mread workbook\u001B[39m\u001B[33m\"\u001B[39m\n\u001B[32m 293\u001B[39m \u001B[38;5;28mself\u001B[39m.read_workbook()\n",
|
||||
"\u001B[36mFile \u001B[39m\u001B[32mD:\\Program Files\\anaconda3\\envs\\SaaS\\Lib\\site-packages\\openpyxl\\reader\\excel.py:147\u001B[39m, in \u001B[36mExcelReader.read_strings\u001B[39m\u001B[34m(self)\u001B[39m\n\u001B[32m 145\u001B[39m strings_path = ct.PartName[\u001B[32m1\u001B[39m:]\n\u001B[32m 146\u001B[39m \u001B[38;5;28;01mwith\u001B[39;00m \u001B[38;5;28mself\u001B[39m.archive.open(strings_path,) \u001B[38;5;28;01mas\u001B[39;00m src:\n\u001B[32m--> \u001B[39m\u001B[32m147\u001B[39m \u001B[38;5;28mself\u001B[39m.shared_strings = \u001B[43mreader\u001B[49m\u001B[43m(\u001B[49m\u001B[43msrc\u001B[49m\u001B[43m)\u001B[49m\n",
|
||||
"\u001B[36mFile \u001B[39m\u001B[32mD:\\Program Files\\anaconda3\\envs\\SaaS\\Lib\\site-packages\\openpyxl\\reader\\strings.py:18\u001B[39m, in \u001B[36mread_string_table\u001B[39m\u001B[34m(xml_source)\u001B[39m\n\u001B[32m 16\u001B[39m \u001B[38;5;28;01mfor\u001B[39;00m _, node \u001B[38;5;129;01min\u001B[39;00m iterparse(xml_source):\n\u001B[32m 17\u001B[39m \u001B[38;5;28;01mif\u001B[39;00m node.tag == STRING_TAG:\n\u001B[32m---> \u001B[39m\u001B[32m18\u001B[39m text = \u001B[43mText\u001B[49m\u001B[43m.\u001B[49m\u001B[43mfrom_tree\u001B[49m\u001B[43m(\u001B[49m\u001B[43mnode\u001B[49m\u001B[43m)\u001B[49m.content\n\u001B[32m 19\u001B[39m text = text.replace(\u001B[33m'\u001B[39m\u001B[33mx005F_\u001B[39m\u001B[33m'\u001B[39m, \u001B[33m'\u001B[39m\u001B[33m'\u001B[39m)\n\u001B[32m 20\u001B[39m node.clear()\n",
|
||||
"\u001B[36mFile \u001B[39m\u001B[32mD:\\Program Files\\anaconda3\\envs\\SaaS\\Lib\\site-packages\\openpyxl\\descriptors\\serialisable.py:74\u001B[39m, in \u001B[36mSerialisable.from_tree\u001B[39m\u001B[34m(cls, node)\u001B[39m\n\u001B[32m 71\u001B[39m attrib[\u001B[33m\"\u001B[39m\u001B[33mattr_text\u001B[39m\u001B[33m\"\u001B[39m] = node.text\n\u001B[32m 73\u001B[39m \u001B[38;5;28;01mfor\u001B[39;00m el \u001B[38;5;129;01min\u001B[39;00m node:\n\u001B[32m---> \u001B[39m\u001B[32m74\u001B[39m tag = \u001B[43mlocalname\u001B[49m\u001B[43m(\u001B[49m\u001B[43mel\u001B[49m\u001B[43m)\u001B[49m\n\u001B[32m 75\u001B[39m \u001B[38;5;28;01mif\u001B[39;00m tag \u001B[38;5;129;01min\u001B[39;00m KEYWORDS:\n\u001B[32m 76\u001B[39m tag = \u001B[33m\"\u001B[39m\u001B[33m_\u001B[39m\u001B[33m\"\u001B[39m + tag\n",
|
||||
"\u001B[36mFile \u001B[39m\u001B[32mD:\\Program Files\\anaconda3\\envs\\SaaS\\Lib\\site-packages\\openpyxl\\xml\\functions.py:81\u001B[39m, in \u001B[36mlocalname\u001B[39m\u001B[34m(node)\u001B[39m\n\u001B[32m 79\u001B[39m \u001B[38;5;28;01mreturn\u001B[39;00m \u001B[33m\"\u001B[39m\u001B[33mcomment\u001B[39m\u001B[33m\"\u001B[39m\n\u001B[32m 80\u001B[39m m = NS_REGEX.match(node.tag)\n\u001B[32m---> \u001B[39m\u001B[32m81\u001B[39m \u001B[38;5;28;01mreturn\u001B[39;00m \u001B[43mm\u001B[49m\u001B[43m.\u001B[49m\u001B[43mgroup\u001B[49m\u001B[43m(\u001B[49m\u001B[33;43m'\u001B[39;49m\u001B[33;43mlocalname\u001B[39;49m\u001B[33;43m'\u001B[39;49m\u001B[43m)\u001B[49m\n",
|
||||
"\u001B[31mKeyboardInterrupt\u001B[39m: "
|
||||
]
|
||||
}
|
||||
],
|
||||
@@ -1528,8 +1516,8 @@
|
||||
{
|
||||
"metadata": {
|
||||
"ExecuteTime": {
|
||||
"end_time": "2025-08-01T08:12:57.996465Z",
|
||||
"start_time": "2025-08-01T08:10:21.860850Z"
|
||||
"end_time": "2026-02-26T02:48:25.972319100Z",
|
||||
"start_time": "2026-02-26T02:34:28.428344700Z"
|
||||
}
|
||||
},
|
||||
"cell_type": "code",
|
||||
@@ -1538,7 +1526,7 @@
|
||||
"from api import API\n",
|
||||
"\n",
|
||||
"api_instance = API()\n",
|
||||
"df = pd.read_excel(r\"C:\\Users\\Administrator.DESKTOP-7IC2USJ\\Downloads\\客户资料_20250801111301.xlsx\",sheet_name=\"id为空\")\n",
|
||||
"df = pd.read_excel(r\"C:\\Users\\hp_z66\\Downloads\\客户资料_20260226092528.xlsx\",sheet_name=\"Sheet3\")\n",
|
||||
"for index, row in df.iterrows():\n",
|
||||
" data_id = row[\"data_id\"]\n",
|
||||
" payload = {\n",
|
||||
@@ -1549,733 +1537,7 @@
|
||||
" api_instance.entry_data_delete(payload)"
|
||||
],
|
||||
"id": "8a06c19850c522b3",
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n",
|
||||
"返回结果: {'status': 'success'}\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"outputs": [],
|
||||
"execution_count": 1
|
||||
},
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user