3900 lines
237 KiB
Plaintext
3900 lines
237 KiB
Plaintext
{
|
||
"cells": [
|
||
{
|
||
"metadata": {},
|
||
"cell_type": "markdown",
|
||
"source": "## 删除",
|
||
"id": "c7303c5dd84188ab"
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"id": "initial_id",
|
||
"metadata": {
|
||
"collapsed": true,
|
||
"ExecuteTime": {
|
||
"end_time": "2025-06-03T03:53:43.061901Z",
|
||
"start_time": "2025-06-03T03:53:12.897231Z"
|
||
}
|
||
},
|
||
"source": [
|
||
"import pandas as pd\n",
|
||
"import datetime\n",
|
||
"import os\n",
|
||
"import time\n",
|
||
"import requests\n",
|
||
"from api import API\n",
|
||
"import re\n",
|
||
"from back_ground_module import CommonModule\n",
|
||
"from log_config import configure_task_logger, configure_error_task_logger\n",
|
||
"\n",
|
||
"api_instance = API()\n",
|
||
"df = pd.read_excel(r\"C:\\Users\\ADMINI~1.DES\\AppData\\Local\\Temp\\7zOCE0E044D\\日常回访表_20250603114854.xlsx\",sheet_name=\"Sheet1\")\n",
|
||
"for index, row in df.iterrows():\n",
|
||
" data_id = row[\"data_id\"]\n",
|
||
" payload = {\n",
|
||
" \"api_key\": \"675b900991ad2491c69389ca\",\n",
|
||
" \"entry_id\": \"675b9c63925cd404038a6b86\",\n",
|
||
" \"data_id\": data_id,\n",
|
||
"\n",
|
||
" }\n",
|
||
" api_instance.entry_data_delete(payload)\n",
|
||
" "
|
||
],
|
||
"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"
|
||
]
|
||
}
|
||
],
|
||
"execution_count": 3
|
||
},
|
||
{
|
||
"metadata": {},
|
||
"cell_type": "markdown",
|
||
"source": "## 派发\n",
|
||
"id": "f7683c6f1c3d5ec3"
|
||
},
|
||
{
|
||
"metadata": {
|
||
"ExecuteTime": {
|
||
"end_time": "2025-04-16T05:59:36.298115Z",
|
||
"start_time": "2025-04-16T05:59:35.413539Z"
|
||
}
|
||
},
|
||
"cell_type": "code",
|
||
"source": [
|
||
"import pandas as pd\n",
|
||
"import datetime\n",
|
||
"import os\n",
|
||
"import time\n",
|
||
"import requests\n",
|
||
"from api import API\n",
|
||
"import re\n",
|
||
"from back_ground_module import CommonModule\n",
|
||
"from log_config import configure_task_logger, configure_error_task_logger\n",
|
||
"import json\n",
|
||
"import ast\n",
|
||
"\n",
|
||
"api_instance = API()\n",
|
||
"df = pd.read_excel(r\"C:\\Users\\Administrator.DESKTOP-7IC2USJ\\Desktop\\派发1.xlsx\", sheet_name=\"Sheet2\")\n",
|
||
"df['_widget_1734590278288'] = df['_widget_1734590278288'].astype(str)\n",
|
||
"df['_widget_1734590278289'] = df['_widget_1734590278289'].astype(str)\n",
|
||
"df['_widget_1734590278290'] = df['_widget_1734590278290'].astype(str)\n",
|
||
"df['_widget_1734590278291'] = df['_widget_1734590278291'].astype(str)\n",
|
||
"df['_widget_1735290738545'] = df['_widget_1735290738545'].astype(str)\n",
|
||
"df.fillna(value=\"\", inplace=True)\n",
|
||
"data_dict = df.to_dict(orient='list')\n",
|
||
"row_dict = df.to_dict(orient='records')\n",
|
||
"\n",
|
||
"def filter_empty_values(data):\n",
|
||
" \"\"\"过滤空值,并将每个值包装在 {'value': ...} 结构中\"\"\"\n",
|
||
" return {key: {\"value\": value} for key, value in data.items() if value not in [None, \"\"]}\n",
|
||
"\n",
|
||
"for row in row_dict:\n",
|
||
" # 1. 过滤空值并包装值\n",
|
||
" filtered_row = filter_empty_values(row)\n",
|
||
" if not filtered_row:\n",
|
||
" continue\n",
|
||
"\n",
|
||
" # 3. 构建payload\n",
|
||
" payload = {\n",
|
||
" \"api_key\": \"675b900991ad2491c69389ca\",\n",
|
||
" \"entry_id\": \"675b9c63925cd404038a6b86\",\n",
|
||
" \"is_start_workflow\": \"true\",\n",
|
||
" \"data\": filtered_row,\n",
|
||
" }\n",
|
||
"\n",
|
||
" # 4. 打印和发送请求\n",
|
||
" print(json.dumps(payload, indent=2, ensure_ascii=False))\n",
|
||
" result = api_instance.data_batch_create(payload)\n",
|
||
" print(result)"
|
||
],
|
||
"id": "c826e6fd80ad7658",
|
||
"outputs": [
|
||
{
|
||
"name": "stderr",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"C:\\Users\\Administrator.DESKTOP-7IC2USJ\\AppData\\Local\\Temp\\ipykernel_19920\\4269952668.py:20: FutureWarning: Setting an item of incompatible dtype is deprecated and will raise an error in a future version of pandas. Value '' has dtype incompatible with float64, please explicitly cast to a compatible dtype first.\n",
|
||
" df.fillna(value=\"\", inplace=True)\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"{\n",
|
||
" \"api_key\": \"675b900991ad2491c69389ca\",\n",
|
||
" \"entry_id\": \"675b9c63925cd404038a6b86\",\n",
|
||
" \"is_start_workflow\": \"true\",\n",
|
||
" \"data\": {\n",
|
||
" \"_widget_1734590278288\": {\n",
|
||
" \"value\": \"2480455276729100000\"\n",
|
||
" },\n",
|
||
" \"_widget_1734590278289\": {\n",
|
||
" \"value\": \"1143206052848260\"\n",
|
||
" },\n",
|
||
" \"_widget_1734590278290\": {\n",
|
||
" \"value\": \"311003461041349\"\n",
|
||
" },\n",
|
||
" \"_widget_1734590278291\": {\n",
|
||
" \"value\": \"110740004537832000\"\n",
|
||
" },\n",
|
||
" \"_widget_1735290738545\": {\n",
|
||
" \"value\": \"1143206052848260\"\n",
|
||
" },\n",
|
||
" \"_widget_1734073342350\": {\n",
|
||
" \"value\": \"√\"\n",
|
||
" },\n",
|
||
" \"_widget_1735004315757\": {\n",
|
||
" \"value\": \"√\"\n",
|
||
" },\n",
|
||
" \"_widget_1735004315756\": {\n",
|
||
" \"value\": \"√\"\n",
|
||
" },\n",
|
||
" \"_widget_1735004315755\": {\n",
|
||
" \"value\": \"√\"\n",
|
||
" },\n",
|
||
" \"_widget_1735004315754\": {\n",
|
||
" \"value\": \"△\"\n",
|
||
" },\n",
|
||
" \"_widget_1735004315753\": {\n",
|
||
" \"value\": \"×\"\n",
|
||
" },\n",
|
||
" \"_widget_1735004315752\": {\n",
|
||
" \"value\": \"△\"\n",
|
||
" },\n",
|
||
" \"_widget_1735004315751\": {\n",
|
||
" \"value\": \"×\"\n",
|
||
" },\n",
|
||
" \"_widget_1735004315750\": {\n",
|
||
" \"value\": \"△\"\n",
|
||
" },\n",
|
||
" \"_widget_1735004315749\": {\n",
|
||
" \"value\": \"×\"\n",
|
||
" },\n",
|
||
" \"_widget_1735004315748\": {\n",
|
||
" \"value\": \"×\"\n",
|
||
" },\n",
|
||
" \"_widget_1735004315747\": {\n",
|
||
" \"value\": \"△\"\n",
|
||
" },\n",
|
||
" \"_widget_1735004315746\": {\n",
|
||
" \"value\": \"×\"\n",
|
||
" },\n",
|
||
" \"_widget_1735004315745\": {\n",
|
||
" \"value\": \"×\"\n",
|
||
" },\n",
|
||
" \"_widget_1735004315744\": {\n",
|
||
" \"value\": \"×\"\n",
|
||
" },\n",
|
||
" \"_widget_1735004315743\": {\n",
|
||
" \"value\": \"×\"\n",
|
||
" },\n",
|
||
" \"_widget_1735004315742\": {\n",
|
||
" \"value\": \"×\"\n",
|
||
" },\n",
|
||
" \"_widget_1735004315741\": {\n",
|
||
" \"value\": \"△\"\n",
|
||
" },\n",
|
||
" \"_widget_1734073342352\": {\n",
|
||
" \"value\": \"△\"\n",
|
||
" },\n",
|
||
" \"_widget_1735004315763\": {\n",
|
||
" \"value\": \"是\"\n",
|
||
" },\n",
|
||
" \"_widget_1735106258016\": {\n",
|
||
" \"value\": \"是\"\n",
|
||
" },\n",
|
||
" \"_widget_1735106258036\": {\n",
|
||
" \"value\": \"是\"\n",
|
||
" },\n",
|
||
" \"_widget_1735106258086\": {\n",
|
||
" \"value\": \"是\"\n",
|
||
" },\n",
|
||
" \"_widget_1735106258112\": {\n",
|
||
" \"value\": \"否\"\n",
|
||
" },\n",
|
||
" \"_widget_1735004315765\": {\n",
|
||
" \"value\": \"是\"\n",
|
||
" },\n",
|
||
" \"_widget_1735106258038\": {\n",
|
||
" \"value\": \"否\"\n",
|
||
" },\n",
|
||
" \"_widget_1735106258018\": {\n",
|
||
" \"value\": \"是\"\n",
|
||
" },\n",
|
||
" \"_widget_1735107354650\": {\n",
|
||
" \"value\": \"否\"\n",
|
||
" },\n",
|
||
" \"_widget_1735106258141\": {\n",
|
||
" \"value\": \"否\"\n",
|
||
" },\n",
|
||
" \"_widget_1735107355618\": {\n",
|
||
" \"value\": \"否\"\n",
|
||
" },\n",
|
||
" \"_widget_1735106258088\": {\n",
|
||
" \"value\": \"是\"\n",
|
||
" },\n",
|
||
" \"_widget_1734590278279\": {\n",
|
||
" \"value\": \"泰州市泰和汽车修理厂\"\n",
|
||
" },\n",
|
||
" \"_widget_1735112931760\": {\n",
|
||
" \"value\": 168822842966671008\n",
|
||
" },\n",
|
||
" \"_widget_1735112931761\": {\n",
|
||
" \"value\": 24320717914899300\n",
|
||
" },\n",
|
||
" \"_widget_1734590278281\": {\n",
|
||
" \"value\": \"泰州市泰和汽车修理厂\"\n",
|
||
" },\n",
|
||
" \"_widget_1734590278292\": {\n",
|
||
" \"value\": \"续约后90天回访\"\n",
|
||
" },\n",
|
||
" \"_widget_1734321349021\": {\n",
|
||
" \"value\": \"67ebe3c068c8051b724a0e0c\"\n",
|
||
" },\n",
|
||
" \"_widget_1742548684369\": {\n",
|
||
" \"value\": \"关怀使用情况,促进更多功能使用,提升系统使用深度。\"\n",
|
||
" },\n",
|
||
" \"_widget_1734590278266\": {\n",
|
||
" \"value\": \"华东区域\"\n",
|
||
" },\n",
|
||
" \"_widget_1734590278285\": {\n",
|
||
" \"value\": \"华东1区\"\n",
|
||
" },\n",
|
||
" \"_widget_1734590278284\": {\n",
|
||
" \"value\": \"江苏省\"\n",
|
||
" },\n",
|
||
" \"_widget_1734590278283\": {\n",
|
||
" \"value\": \"泰州市\"\n",
|
||
" },\n",
|
||
" \"_widget_1734590278282\": {\n",
|
||
" \"value\": \"海陵区\"\n",
|
||
" },\n",
|
||
" \"_widget_1734590278278\": {\n",
|
||
" \"value\": \"D\"\n",
|
||
" },\n",
|
||
" \"_widget_1734590278277\": {\n",
|
||
" \"value\": \"重要客户(SVIP)\"\n",
|
||
" },\n",
|
||
" \"_widget_1734590278276\": {\n",
|
||
" \"value\": \"5账号\"\n",
|
||
" },\n",
|
||
" \"_widget_1734590278275\": {\n",
|
||
" \"value\": \"单账号\"\n",
|
||
" },\n",
|
||
" \"_widget_1734590278274\": {\n",
|
||
" \"value\": \"E.S(旧)\"\n",
|
||
" },\n",
|
||
" \"_widget_1734590278273\": {\n",
|
||
" \"value\": \"第10年\"\n",
|
||
" },\n",
|
||
" \"_widget_1734590278272\": {\n",
|
||
" \"value\": \"成熟\"\n",
|
||
" },\n",
|
||
" \"_widget_1734590278271\": {\n",
|
||
" \"value\": \"单店\"\n",
|
||
" },\n",
|
||
" \"_widget_1734590278267\": {\n",
|
||
" \"value\": \"薛玉俊\"\n",
|
||
" },\n",
|
||
" \"_widget_1734590278287\": {\n",
|
||
" \"value\": 18052619366\n",
|
||
" },\n",
|
||
" \"_widget_1734590278286\": {\n",
|
||
" \"value\": \"进阶版\"\n",
|
||
" },\n",
|
||
" \"_widget_1734590278280\": {\n",
|
||
" \"value\": \"CHS201512110264\"\n",
|
||
" },\n",
|
||
" \"_widget_1735096489244\": {\n",
|
||
" \"value\": \"2025-04-15T08:45:55.907Z\"\n",
|
||
" },\n",
|
||
" \"_widget_1742895342914\": {\n",
|
||
" \"value\": \"保养,洗车,维修,轮胎,钣喷\"\n",
|
||
" },\n",
|
||
" \"_widget_1742895342915\": {\n",
|
||
" \"value\": 6\n",
|
||
" }\n",
|
||
" }\n",
|
||
"}\n",
|
||
"返回结果: {'data': {'creator': {'name': 'F6汽车科技', 'username': '#admin', 'status': 1, 'type': 0}, 'updater': {'name': 'F6汽车科技', 'username': '#admin', 'status': 1, 'type': 0}, 'deleter': None, 'createTime': '2025-04-16T05:59:34.505Z', 'updateTime': '2025-04-16T05:59:34.506Z', 'deleteTime': None, 'flowState': 0, '_widget_1734590278281': '泰州市泰和汽车修理厂', '_widget_1734590278277': '重要客户(SVIP)', '_widget_1734590278286': '进阶版', '_widget_1734590278278': 'D', '_widget_1734590278279': '泰州市泰和汽车修理厂', '_widget_1734590278288': None, '_widget_1735096489244': '2025-04-15T08:45:55.907Z', '_widget_1734590278292': '续约后90天回访', '_widget_1734321349021': '67ebe3c068c8051b724a0e0c', '_widget_1742548684369': '关怀使用情况,促进更多功能使用,提升系统使用深度。', '_widget_1742895342914': '保养,洗车,维修,轮胎,钣喷', '_widget_1742895342915': '6', '_widget_1742895342916': [], '_widget_1744596110482': '', '_widget_1744681425824': '', '_widget_1744681425822': '', '_widget_1744681426080': '', '_widget_1735004315763': '是', '_widget_1735004315765': '是', '_widget_1734591440478': '', '_widget_1735526457050': '', '_widget_1736414756201': '', '_widget_1734592065745': '', '_widget_1744593781029': '', '_widget_1735004315768': '', '_widget_1735004315769': '', '_widget_1744622070539': '', '_widget_1735004315767': '', '_widget_1735106258016': '是', '_widget_1735106258018': '是', '_widget_1735106258020': '', '_widget_1735526457110': '', '_widget_1736414756203': '', '_widget_1735106258022': '', '_widget_1744593781128': '', '_widget_1735106258023': '', '_widget_1735106258024': '', '_widget_1744596110993': '', '_widget_1735106258025': '', '_widget_1735107354648': '', '_widget_1735107354650': '否', '_widget_1735107354652': '', '_widget_1735526457120': '', '_widget_1736414756213': '', '_widget_1735107354654': '', '_widget_1744622070527': '', '_widget_1735107354655': '', '_widget_1744685581305': '', '_widget_1735107354656': '', '_widget_1744622070529': '', '_widget_1735107354657': '', '_widget_1735106258086': '是', '_widget_1735106258088': '是', '_widget_1735106258090': '', '_widget_1735526457114': '', '_widget_1736414756207': '', '_widget_1735106258092': '', '_widget_1744622070531': '', '_widget_1735106258093': '', '_widget_1744685581307': '', '_widget_1735106258094': '', '_widget_1744622070533': '', '_widget_1735106258095': '', '_widget_1735107355740': '', '_widget_1735107355742': '', '_widget_1735107355744': '', '_widget_1735526457144': '', '_widget_1736414756237': '', '_widget_1735107355746': '', '_widget_1744622070535': '', '_widget_1735107355747': '', '_widget_1744685581693': '', '_widget_1735107355748': '', '_widget_1744622070537': '', '_widget_1735107355749': '', '_widget_1735107354811': '', '_widget_1735107354813': '', '_widget_1735107354815': '', '_widget_1735526457124': '', '_widget_1736414756217': '', '_widget_1735107354817': '', '_widget_1744622070649': '', '_widget_1735107354818': '', '_widget_1744622070651': '', '_widget_1735107354819': '', '_widget_1744685581695': '', '_widget_1735107354820': '', '_widget_1735106258036': '是', '_widget_1735106258038': '否', '_widget_1735106258040': '', '_widget_1735526457112': '', '_widget_1736414756205': '', '_widget_1735106258042': '', '_widget_1744622070763': '', '_widget_1735106258043': '', '_widget_1744685581827': '', '_widget_1735106258044': '', '_widget_1744622070765': '', '_widget_1735106258045': '', '_widget_1735106258112': '否', '_widget_1735106258114': '', '_widget_1735106258116': '', '_widget_1735526457116': '', '_widget_1736414756209': '', '_widget_1735106258118': '', '_widget_1744622070767': '', '_widget_1735106258119': '', '_widget_1744622070769': '', '_widget_1735106258120': '', '_widget_1744685581960': '', '_widget_1735106258121': '', '_widget_1735106258141': '否', '_widget_1735106258143': '', '_widget_1735106258145': '', '_widget_1735526457118': '', '_widget_1736414756211': '', '_widget_1735106258147': '', '_widget_1744622070885': '', '_widget_1735106258148': '', '_widget_1744622070887': '', '_widget_1735106258149': '', '_widget_1744685582094': '', '_widget_1735106258150': '', '_widget_1735107355093': '', '_widget_1735107355095': '', '_widget_1735107355097': '', '_widget_1735526457130': '', '_widget_1736414756223': '', '_widget_1735107355099': '', '_widget_1744622071005': '', '_widget_1735107355100': '', '_widget_1744622071007': '', '_widget_1735107355101': '', '_widget_1744685582096': '', '_widget_1735107355102': '', '_widget_1735107355618': '否', '_widget_1735107355620': '', '_widget_1735107355622': '', '_widget_1735526457142': '', '_widget_1736414756235': '', '_widget_1735107355624': '', '_widget_1744622071127': '', '_widget_1735107355625': '', '_widget_1744622071129': '', '_widget_1735107355626': '', '_widget_1744685582098': '', '_widget_1735107355627': '', '_widget_1735107355143': '', '_widget_1735107355145': '', '_widget_1735107355147': '', '_widget_1735526457132': '', '_widget_1736414756225': '', '_widget_1735107355149': '', '_widget_1744622071131': '', '_widget_1735107355150': '', '_widget_1744622071133': '', '_widget_1735107355151': '', '_widget_1744685582100': '', '_widget_1735107355152': '', '_widget_1735107355333': '', '_widget_1735107355335': '', '_widget_1735107355337': '', '_widget_1735526457136': '', '_widget_1736414756229': '', '_widget_1735107355339': '', '_widget_1744622071135': '', '_widget_1735107355340': '', '_widget_1744622071137': '', '_widget_1735107355341': '', '_widget_1744685582238': '', '_widget_1735107355342': '', '_widget_1735107354980': '', '_widget_1735107354982': '', '_widget_1735107354984': '', '_widget_1735526457128': '', '_widget_1736414756221': '', '_widget_1735107354986': '', '_widget_1744622071263': '', '_widget_1735107354987': '', '_widget_1744622071265': '', '_widget_1735107354988': '', '_widget_1744685582240': '', '_widget_1735107354989': '', '_widget_1734590278274': 'E.S(旧)', '_widget_1734590278267': '薛玉俊', '_widget_1734590278287': '18052619366', '_widget_1734590278271': '单店', '_widget_1734590278276': '5账号', '_widget_1734590278275': '单账号', '_widget_1734590278273': '第10年', '_widget_1734590278272': '成熟', '_widget_1734590278280': 'CHS201512110264', '_widget_1734590278289': None, '_widget_1734590278290': {'name': '肖军', 'username': '311003461041349', 'status': 1, 'type': 0, 'departments': [122314630, 122323520], 'integrate_id': '311003461041349'}, '_widget_1734590278291': None, '_widget_1735290738545': None, '_widget_1734590278266': '华东区域', '_widget_1734590278285': '华东1区', '_widget_1734590278284': '江苏省', '_widget_1734590278283': '泰州市', '_widget_1734590278282': '海陵区', '_widget_1735112931760': '168822842966671000', '_widget_1735112931761': '24320717914899300', '_widget_1735107354725': '', '_widget_1735107354727': '', '_widget_1735107354729': '', '_widget_1735526457122': '', '_widget_1736414756215': '', '_widget_1735107354731': '', '_widget_1735107354732': '', '_widget_1735107354733': '', '_widget_1735107354734': '', '_widget_1735107354906': '', '_widget_1735107354908': '', '_widget_1735107354910': '', '_widget_1735526457126': '', '_widget_1736414756219': '', '_widget_1735107354912': '', '_widget_1735107354913': '', '_widget_1735107354914': '', '_widget_1735107354915': '', '_widget_1735107355235': '', '_widget_1735107355237': '', '_widget_1735107355239': '', '_widget_1735526457134': '', '_widget_1736414756227': '', '_widget_1735107355241': '', '_widget_1735107355242': '', '_widget_1735107355243': '', '_widget_1735107355244': '', '_widget_1735107355392': '', '_widget_1735107355394': '', '_widget_1735107355396': '', '_widget_1735526457138': '', '_widget_1736414756231': '', '_widget_1735107355398': '', '_widget_1735107355399': '', '_widget_1735107355400': '', '_widget_1735107355401': '', '_widget_1735107355502': '', '_widget_1735107355504': '', '_widget_1735107355506': '', '_widget_1735526457140': '', '_widget_1736414756233': '', '_widget_1735107355508': '', '_widget_1735107355509': '', '_widget_1735107355510': '', '_widget_1735107355511': '', '_widget_1734073342350': '√', '_widget_1735004315757': '√', '_widget_1735004315756': '√', '_widget_1735004315755': '√', '_widget_1735004315754': '△', '_widget_1735004315753': '×', '_widget_1735004315752': '△', '_widget_1735004315751': '×', '_widget_1735004315750': '△', '_widget_1735004315749': '×', '_widget_1735004315748': '×', '_widget_1735004315747': '△', '_widget_1735004315746': '×', '_widget_1735004315745': '×', '_widget_1735004315744': '×', '_widget_1735004315743': '×', '_widget_1735004315742': '×', '_widget_1735004315741': '△', '_widget_1734073342352': '△', '_widget_1735544637578': '', '_widget_1742204915356': '', '_widget_1742204915358': '', '_id': '67ff47466091a6e9fbb38c6a', 'appId': '675b900991ad2491c69389ca', 'entryId': '675b9c63925cd404038a6b86'}}\n",
|
||
"{'data': {'creator': {'name': 'F6汽车科技', 'username': '#admin', 'status': 1, 'type': 0}, 'updater': {'name': 'F6汽车科技', 'username': '#admin', 'status': 1, 'type': 0}, 'deleter': None, 'createTime': '2025-04-16T05:59:34.505Z', 'updateTime': '2025-04-16T05:59:34.506Z', 'deleteTime': None, 'flowState': 0, '_widget_1734590278281': '泰州市泰和汽车修理厂', '_widget_1734590278277': '重要客户(SVIP)', '_widget_1734590278286': '进阶版', '_widget_1734590278278': 'D', '_widget_1734590278279': '泰州市泰和汽车修理厂', '_widget_1734590278288': None, '_widget_1735096489244': '2025-04-15T08:45:55.907Z', '_widget_1734590278292': '续约后90天回访', '_widget_1734321349021': '67ebe3c068c8051b724a0e0c', '_widget_1742548684369': '关怀使用情况,促进更多功能使用,提升系统使用深度。', '_widget_1742895342914': '保养,洗车,维修,轮胎,钣喷', '_widget_1742895342915': '6', '_widget_1742895342916': [], '_widget_1744596110482': '', '_widget_1744681425824': '', '_widget_1744681425822': '', '_widget_1744681426080': '', '_widget_1735004315763': '是', '_widget_1735004315765': '是', '_widget_1734591440478': '', '_widget_1735526457050': '', '_widget_1736414756201': '', '_widget_1734592065745': '', '_widget_1744593781029': '', '_widget_1735004315768': '', '_widget_1735004315769': '', '_widget_1744622070539': '', '_widget_1735004315767': '', '_widget_1735106258016': '是', '_widget_1735106258018': '是', '_widget_1735106258020': '', '_widget_1735526457110': '', '_widget_1736414756203': '', '_widget_1735106258022': '', '_widget_1744593781128': '', '_widget_1735106258023': '', '_widget_1735106258024': '', '_widget_1744596110993': '', '_widget_1735106258025': '', '_widget_1735107354648': '', '_widget_1735107354650': '否', '_widget_1735107354652': '', '_widget_1735526457120': '', '_widget_1736414756213': '', '_widget_1735107354654': '', '_widget_1744622070527': '', '_widget_1735107354655': '', '_widget_1744685581305': '', '_widget_1735107354656': '', '_widget_1744622070529': '', '_widget_1735107354657': '', '_widget_1735106258086': '是', '_widget_1735106258088': '是', '_widget_1735106258090': '', '_widget_1735526457114': '', '_widget_1736414756207': '', '_widget_1735106258092': '', '_widget_1744622070531': '', '_widget_1735106258093': '', '_widget_1744685581307': '', '_widget_1735106258094': '', '_widget_1744622070533': '', '_widget_1735106258095': '', '_widget_1735107355740': '', '_widget_1735107355742': '', '_widget_1735107355744': '', '_widget_1735526457144': '', '_widget_1736414756237': '', '_widget_1735107355746': '', '_widget_1744622070535': '', '_widget_1735107355747': '', '_widget_1744685581693': '', '_widget_1735107355748': '', '_widget_1744622070537': '', '_widget_1735107355749': '', '_widget_1735107354811': '', '_widget_1735107354813': '', '_widget_1735107354815': '', '_widget_1735526457124': '', '_widget_1736414756217': '', '_widget_1735107354817': '', '_widget_1744622070649': '', '_widget_1735107354818': '', '_widget_1744622070651': '', '_widget_1735107354819': '', '_widget_1744685581695': '', '_widget_1735107354820': '', '_widget_1735106258036': '是', '_widget_1735106258038': '否', '_widget_1735106258040': '', '_widget_1735526457112': '', '_widget_1736414756205': '', '_widget_1735106258042': '', '_widget_1744622070763': '', '_widget_1735106258043': '', '_widget_1744685581827': '', '_widget_1735106258044': '', '_widget_1744622070765': '', '_widget_1735106258045': '', '_widget_1735106258112': '否', '_widget_1735106258114': '', '_widget_1735106258116': '', '_widget_1735526457116': '', '_widget_1736414756209': '', '_widget_1735106258118': '', '_widget_1744622070767': '', '_widget_1735106258119': '', '_widget_1744622070769': '', '_widget_1735106258120': '', '_widget_1744685581960': '', '_widget_1735106258121': '', '_widget_1735106258141': '否', '_widget_1735106258143': '', '_widget_1735106258145': '', '_widget_1735526457118': '', '_widget_1736414756211': '', '_widget_1735106258147': '', '_widget_1744622070885': '', '_widget_1735106258148': '', '_widget_1744622070887': '', '_widget_1735106258149': '', '_widget_1744685582094': '', '_widget_1735106258150': '', '_widget_1735107355093': '', '_widget_1735107355095': '', '_widget_1735107355097': '', '_widget_1735526457130': '', '_widget_1736414756223': '', '_widget_1735107355099': '', '_widget_1744622071005': '', '_widget_1735107355100': '', '_widget_1744622071007': '', '_widget_1735107355101': '', '_widget_1744685582096': '', '_widget_1735107355102': '', '_widget_1735107355618': '否', '_widget_1735107355620': '', '_widget_1735107355622': '', '_widget_1735526457142': '', '_widget_1736414756235': '', '_widget_1735107355624': '', '_widget_1744622071127': '', '_widget_1735107355625': '', '_widget_1744622071129': '', '_widget_1735107355626': '', '_widget_1744685582098': '', '_widget_1735107355627': '', '_widget_1735107355143': '', '_widget_1735107355145': '', '_widget_1735107355147': '', '_widget_1735526457132': '', '_widget_1736414756225': '', '_widget_1735107355149': '', '_widget_1744622071131': '', '_widget_1735107355150': '', '_widget_1744622071133': '', '_widget_1735107355151': '', '_widget_1744685582100': '', '_widget_1735107355152': '', '_widget_1735107355333': '', '_widget_1735107355335': '', '_widget_1735107355337': '', '_widget_1735526457136': '', '_widget_1736414756229': '', '_widget_1735107355339': '', '_widget_1744622071135': '', '_widget_1735107355340': '', '_widget_1744622071137': '', '_widget_1735107355341': '', '_widget_1744685582238': '', '_widget_1735107355342': '', '_widget_1735107354980': '', '_widget_1735107354982': '', '_widget_1735107354984': '', '_widget_1735526457128': '', '_widget_1736414756221': '', '_widget_1735107354986': '', '_widget_1744622071263': '', '_widget_1735107354987': '', '_widget_1744622071265': '', '_widget_1735107354988': '', '_widget_1744685582240': '', '_widget_1735107354989': '', '_widget_1734590278274': 'E.S(旧)', '_widget_1734590278267': '薛玉俊', '_widget_1734590278287': '18052619366', '_widget_1734590278271': '单店', '_widget_1734590278276': '5账号', '_widget_1734590278275': '单账号', '_widget_1734590278273': '第10年', '_widget_1734590278272': '成熟', '_widget_1734590278280': 'CHS201512110264', '_widget_1734590278289': None, '_widget_1734590278290': {'name': '肖军', 'username': '311003461041349', 'status': 1, 'type': 0, 'departments': [122314630, 122323520], 'integrate_id': '311003461041349'}, '_widget_1734590278291': None, '_widget_1735290738545': None, '_widget_1734590278266': '华东区域', '_widget_1734590278285': '华东1区', '_widget_1734590278284': '江苏省', '_widget_1734590278283': '泰州市', '_widget_1734590278282': '海陵区', '_widget_1735112931760': '168822842966671000', '_widget_1735112931761': '24320717914899300', '_widget_1735107354725': '', '_widget_1735107354727': '', '_widget_1735107354729': '', '_widget_1735526457122': '', '_widget_1736414756215': '', '_widget_1735107354731': '', '_widget_1735107354732': '', '_widget_1735107354733': '', '_widget_1735107354734': '', '_widget_1735107354906': '', '_widget_1735107354908': '', '_widget_1735107354910': '', '_widget_1735526457126': '', '_widget_1736414756219': '', '_widget_1735107354912': '', '_widget_1735107354913': '', '_widget_1735107354914': '', '_widget_1735107354915': '', '_widget_1735107355235': '', '_widget_1735107355237': '', '_widget_1735107355239': '', '_widget_1735526457134': '', '_widget_1736414756227': '', '_widget_1735107355241': '', '_widget_1735107355242': '', '_widget_1735107355243': '', '_widget_1735107355244': '', '_widget_1735107355392': '', '_widget_1735107355394': '', '_widget_1735107355396': '', '_widget_1735526457138': '', '_widget_1736414756231': '', '_widget_1735107355398': '', '_widget_1735107355399': '', '_widget_1735107355400': '', '_widget_1735107355401': '', '_widget_1735107355502': '', '_widget_1735107355504': '', '_widget_1735107355506': '', '_widget_1735526457140': '', '_widget_1736414756233': '', '_widget_1735107355508': '', '_widget_1735107355509': '', '_widget_1735107355510': '', '_widget_1735107355511': '', '_widget_1734073342350': '√', '_widget_1735004315757': '√', '_widget_1735004315756': '√', '_widget_1735004315755': '√', '_widget_1735004315754': '△', '_widget_1735004315753': '×', '_widget_1735004315752': '△', '_widget_1735004315751': '×', '_widget_1735004315750': '△', '_widget_1735004315749': '×', '_widget_1735004315748': '×', '_widget_1735004315747': '△', '_widget_1735004315746': '×', '_widget_1735004315745': '×', '_widget_1735004315744': '×', '_widget_1735004315743': '×', '_widget_1735004315742': '×', '_widget_1735004315741': '△', '_widget_1734073342352': '△', '_widget_1735544637578': '', '_widget_1742204915356': '', '_widget_1742204915358': '', '_id': '67ff47466091a6e9fbb38c6a', 'appId': '675b900991ad2491c69389ca', 'entryId': '675b9c63925cd404038a6b86'}}\n",
|
||
"{\n",
|
||
" \"api_key\": \"675b900991ad2491c69389ca\",\n",
|
||
" \"entry_id\": \"675b9c63925cd404038a6b86\",\n",
|
||
" \"is_start_workflow\": \"true\",\n",
|
||
" \"data\": {\n",
|
||
" \"_widget_1734590278288\": {\n",
|
||
" \"value\": \"1824444134779520\"\n",
|
||
" },\n",
|
||
" \"_widget_1734590278289\": {\n",
|
||
" \"value\": \"3051357221235920\"\n",
|
||
" },\n",
|
||
" \"_widget_1734590278290\": {\n",
|
||
" \"value\": \"25366033037741900\"\n",
|
||
" },\n",
|
||
" \"_widget_1734590278291\": {\n",
|
||
" \"value\": \"52909055823302000\"\n",
|
||
" },\n",
|
||
" \"_widget_1735290738545\": {\n",
|
||
" \"value\": \"3051357221235920\"\n",
|
||
" },\n",
|
||
" \"_widget_1734073342350\": {\n",
|
||
" \"value\": \"√\"\n",
|
||
" },\n",
|
||
" \"_widget_1735004315757\": {\n",
|
||
" \"value\": \"√\"\n",
|
||
" },\n",
|
||
" \"_widget_1735004315756\": {\n",
|
||
" \"value\": \"△\"\n",
|
||
" },\n",
|
||
" \"_widget_1735004315755\": {\n",
|
||
" \"value\": \"√\"\n",
|
||
" },\n",
|
||
" \"_widget_1735004315754\": {\n",
|
||
" \"value\": \"△\"\n",
|
||
" },\n",
|
||
" \"_widget_1735004315753\": {\n",
|
||
" \"value\": \"×\"\n",
|
||
" },\n",
|
||
" \"_widget_1735004315752\": {\n",
|
||
" \"value\": \"△\"\n",
|
||
" },\n",
|
||
" \"_widget_1735004315751\": {\n",
|
||
" \"value\": \"×\"\n",
|
||
" },\n",
|
||
" \"_widget_1735004315750\": {\n",
|
||
" \"value\": \"△\"\n",
|
||
" },\n",
|
||
" \"_widget_1735004315749\": {\n",
|
||
" \"value\": \"×\"\n",
|
||
" },\n",
|
||
" \"_widget_1735004315748\": {\n",
|
||
" \"value\": \"×\"\n",
|
||
" },\n",
|
||
" \"_widget_1735004315747\": {\n",
|
||
" \"value\": \"△\"\n",
|
||
" },\n",
|
||
" \"_widget_1735004315746\": {\n",
|
||
" \"value\": \"×\"\n",
|
||
" },\n",
|
||
" \"_widget_1735004315745\": {\n",
|
||
" \"value\": \"×\"\n",
|
||
" },\n",
|
||
" \"_widget_1735004315744\": {\n",
|
||
" \"value\": \"×\"\n",
|
||
" },\n",
|
||
" \"_widget_1735004315743\": {\n",
|
||
" \"value\": \"×\"\n",
|
||
" },\n",
|
||
" \"_widget_1735004315742\": {\n",
|
||
" \"value\": \"×\"\n",
|
||
" },\n",
|
||
" \"_widget_1735004315741\": {\n",
|
||
" \"value\": \"×\"\n",
|
||
" },\n",
|
||
" \"_widget_1734073342352\": {\n",
|
||
" \"value\": \"△\"\n",
|
||
" },\n",
|
||
" \"_widget_1735004315763\": {\n",
|
||
" \"value\": \"是\"\n",
|
||
" },\n",
|
||
" \"_widget_1735106258016\": {\n",
|
||
" \"value\": \"是\"\n",
|
||
" },\n",
|
||
" \"_widget_1735106258036\": {\n",
|
||
" \"value\": \"否\"\n",
|
||
" },\n",
|
||
" \"_widget_1735106258086\": {\n",
|
||
" \"value\": \"是\"\n",
|
||
" },\n",
|
||
" \"_widget_1735106258112\": {\n",
|
||
" \"value\": \"否\"\n",
|
||
" },\n",
|
||
" \"_widget_1735004315765\": {\n",
|
||
" \"value\": \"是\"\n",
|
||
" },\n",
|
||
" \"_widget_1735106258038\": {\n",
|
||
" \"value\": \"否\"\n",
|
||
" },\n",
|
||
" \"_widget_1735106258018\": {\n",
|
||
" \"value\": \"是\"\n",
|
||
" },\n",
|
||
" \"_widget_1735107354650\": {\n",
|
||
" \"value\": \"否\"\n",
|
||
" },\n",
|
||
" \"_widget_1735106258141\": {\n",
|
||
" \"value\": \"否\"\n",
|
||
" },\n",
|
||
" \"_widget_1735107355618\": {\n",
|
||
" \"value\": \"否\"\n",
|
||
" },\n",
|
||
" \"_widget_1735106258088\": {\n",
|
||
" \"value\": \"否\"\n",
|
||
" },\n",
|
||
" \"_widget_1734590278279\": {\n",
|
||
" \"value\": \"沈阳市铁西区路奔汽车服务中心一店\"\n",
|
||
" },\n",
|
||
" \"_widget_1735112931760\": {\n",
|
||
" \"value\": 10545724654287599616\n",
|
||
" },\n",
|
||
" \"_widget_1735112931761\": {\n",
|
||
" \"value\": 10545724654287599616\n",
|
||
" },\n",
|
||
" \"_widget_1734590278281\": {\n",
|
||
" \"value\": \"沈阳市铁西区路奔汽车服务中心\"\n",
|
||
" },\n",
|
||
" \"_widget_1734590278292\": {\n",
|
||
" \"value\": \"续约后90天回访\"\n",
|
||
" },\n",
|
||
" \"_widget_1734321349021\": {\n",
|
||
" \"value\": \"67ebe3d074e070c607aacc97\"\n",
|
||
" },\n",
|
||
" \"_widget_1742548684369\": {\n",
|
||
" \"value\": \"关怀使用情况,促进更多功能使用,提升系统使用深度。\"\n",
|
||
" },\n",
|
||
" \"_widget_1734590278266\": {\n",
|
||
" \"value\": \"东北区域\"\n",
|
||
" },\n",
|
||
" \"_widget_1734590278285\": {\n",
|
||
" \"value\": \"东北1区\"\n",
|
||
" },\n",
|
||
" \"_widget_1734590278284\": {\n",
|
||
" \"value\": \"辽宁省\"\n",
|
||
" },\n",
|
||
" \"_widget_1734590278283\": {\n",
|
||
" \"value\": \"沈阳市\"\n",
|
||
" },\n",
|
||
" \"_widget_1734590278282\": {\n",
|
||
" \"value\": \"铁西区\"\n",
|
||
" },\n",
|
||
" \"_widget_1734590278278\": {\n",
|
||
" \"value\": \"C\"\n",
|
||
" },\n",
|
||
" \"_widget_1734590278277\": {\n",
|
||
" \"value\": \"重要客户(SVIP)\"\n",
|
||
" },\n",
|
||
" \"_widget_1734590278276\": {\n",
|
||
" \"value\": \"5账号\"\n",
|
||
" },\n",
|
||
" \"_widget_1734590278275\": {\n",
|
||
" \"value\": \"5账号\"\n",
|
||
" },\n",
|
||
" \"_widget_1734590278274\": {\n",
|
||
" \"value\": \"E.S(旧)\"\n",
|
||
" },\n",
|
||
" \"_widget_1734590278273\": {\n",
|
||
" \"value\": \"第8年\"\n",
|
||
" },\n",
|
||
" \"_widget_1734590278272\": {\n",
|
||
" \"value\": \"成熟\"\n",
|
||
" },\n",
|
||
" \"_widget_1734590278271\": {\n",
|
||
" \"value\": \"连锁\"\n",
|
||
" },\n",
|
||
" \"_widget_1734590278267\": {\n",
|
||
" \"value\": \"吴海艳\"\n",
|
||
" },\n",
|
||
" \"_widget_1734590278287\": {\n",
|
||
" \"value\": 15940528133\n",
|
||
" },\n",
|
||
" \"_widget_1734590278286\": {\n",
|
||
" \"value\": \"基础版\"\n",
|
||
" },\n",
|
||
" \"_widget_1734590278280\": {\n",
|
||
" \"value\": \"CHS201803122373\"\n",
|
||
" },\n",
|
||
" \"_widget_1735096489244\": {\n",
|
||
" \"value\": \"2025-04-15T08:45:56.082Z\"\n",
|
||
" },\n",
|
||
" \"_widget_1742895342914\": {\n",
|
||
" \"value\": \"保养,维修,轮胎\"\n",
|
||
" },\n",
|
||
" \"_widget_1742895342915\": {\n",
|
||
" \"value\": 3\n",
|
||
" }\n",
|
||
" }\n",
|
||
"}\n",
|
||
"返回结果: {'data': {'creator': {'name': 'F6汽车科技', 'username': '#admin', 'status': 1, 'type': 0}, 'updater': {'name': 'F6汽车科技', 'username': '#admin', 'status': 1, 'type': 0}, 'deleter': None, 'createTime': '2025-04-16T05:59:34.827Z', 'updateTime': '2025-04-16T05:59:34.828Z', 'deleteTime': None, 'flowState': 0, '_widget_1734590278281': '沈阳市铁西区路奔汽车服务中心', '_widget_1734590278277': '重要客户(SVIP)', '_widget_1734590278286': '基础版', '_widget_1734590278278': 'C', '_widget_1734590278279': '沈阳市铁西区路奔汽车服务中心一店', '_widget_1734590278288': None, '_widget_1735096489244': '2025-04-15T08:45:56.082Z', '_widget_1734590278292': '续约后90天回访', '_widget_1734321349021': '67ebe3d074e070c607aacc97', '_widget_1742548684369': '关怀使用情况,促进更多功能使用,提升系统使用深度。', '_widget_1742895342914': '保养,维修,轮胎', '_widget_1742895342915': '3', '_widget_1742895342916': [], '_widget_1744596110482': '', '_widget_1744681425824': '', '_widget_1744681425822': '', '_widget_1744681426080': '', '_widget_1735004315763': '是', '_widget_1735004315765': '是', '_widget_1734591440478': '', '_widget_1735526457050': '', '_widget_1736414756201': '', '_widget_1734592065745': '', '_widget_1744593781029': '', '_widget_1735004315768': '', '_widget_1735004315769': '', '_widget_1744622070539': '', '_widget_1735004315767': '', '_widget_1735106258016': '是', '_widget_1735106258018': '是', '_widget_1735106258020': '', '_widget_1735526457110': '', '_widget_1736414756203': '', '_widget_1735106258022': '', '_widget_1744593781128': '', '_widget_1735106258023': '', '_widget_1735106258024': '', '_widget_1744596110993': '', '_widget_1735106258025': '', '_widget_1735107354648': '', '_widget_1735107354650': '否', '_widget_1735107354652': '', '_widget_1735526457120': '', '_widget_1736414756213': '', '_widget_1735107354654': '', '_widget_1744622070527': '', '_widget_1735107354655': '', '_widget_1744685581305': '', '_widget_1735107354656': '', '_widget_1744622070529': '', '_widget_1735107354657': '', '_widget_1735106258086': '是', '_widget_1735106258088': '否', '_widget_1735106258090': '', '_widget_1735526457114': '', '_widget_1736414756207': '', '_widget_1735106258092': '', '_widget_1744622070531': '', '_widget_1735106258093': '', '_widget_1744685581307': '', '_widget_1735106258094': '', '_widget_1744622070533': '', '_widget_1735106258095': '', '_widget_1735107355740': '', '_widget_1735107355742': '', '_widget_1735107355744': '', '_widget_1735526457144': '', '_widget_1736414756237': '', '_widget_1735107355746': '', '_widget_1744622070535': '', '_widget_1735107355747': '', '_widget_1744685581693': '', '_widget_1735107355748': '', '_widget_1744622070537': '', '_widget_1735107355749': '', '_widget_1735107354811': '', '_widget_1735107354813': '', '_widget_1735107354815': '', '_widget_1735526457124': '', '_widget_1736414756217': '', '_widget_1735107354817': '', '_widget_1744622070649': '', '_widget_1735107354818': '', '_widget_1744622070651': '', '_widget_1735107354819': '', '_widget_1744685581695': '', '_widget_1735107354820': '', '_widget_1735106258036': '否', '_widget_1735106258038': '否', '_widget_1735106258040': '', '_widget_1735526457112': '', '_widget_1736414756205': '', '_widget_1735106258042': '', '_widget_1744622070763': '', '_widget_1735106258043': '', '_widget_1744685581827': '', '_widget_1735106258044': '', '_widget_1744622070765': '', '_widget_1735106258045': '', '_widget_1735106258112': '否', '_widget_1735106258114': '', '_widget_1735106258116': '', '_widget_1735526457116': '', '_widget_1736414756209': '', '_widget_1735106258118': '', '_widget_1744622070767': '', '_widget_1735106258119': '', '_widget_1744622070769': '', '_widget_1735106258120': '', '_widget_1744685581960': '', '_widget_1735106258121': '', '_widget_1735106258141': '否', '_widget_1735106258143': '', '_widget_1735106258145': '', '_widget_1735526457118': '', '_widget_1736414756211': '', '_widget_1735106258147': '', '_widget_1744622070885': '', '_widget_1735106258148': '', '_widget_1744622070887': '', '_widget_1735106258149': '', '_widget_1744685582094': '', '_widget_1735106258150': '', '_widget_1735107355093': '', '_widget_1735107355095': '', '_widget_1735107355097': '', '_widget_1735526457130': '', '_widget_1736414756223': '', '_widget_1735107355099': '', '_widget_1744622071005': '', '_widget_1735107355100': '', '_widget_1744622071007': '', '_widget_1735107355101': '', '_widget_1744685582096': '', '_widget_1735107355102': '', '_widget_1735107355618': '否', '_widget_1735107355620': '', '_widget_1735107355622': '', '_widget_1735526457142': '', '_widget_1736414756235': '', '_widget_1735107355624': '', '_widget_1744622071127': '', '_widget_1735107355625': '', '_widget_1744622071129': '', '_widget_1735107355626': '', '_widget_1744685582098': '', '_widget_1735107355627': '', '_widget_1735107355143': '', '_widget_1735107355145': '', '_widget_1735107355147': '', '_widget_1735526457132': '', '_widget_1736414756225': '', '_widget_1735107355149': '', '_widget_1744622071131': '', '_widget_1735107355150': '', '_widget_1744622071133': '', '_widget_1735107355151': '', '_widget_1744685582100': '', '_widget_1735107355152': '', '_widget_1735107355333': '', '_widget_1735107355335': '', '_widget_1735107355337': '', '_widget_1735526457136': '', '_widget_1736414756229': '', '_widget_1735107355339': '', '_widget_1744622071135': '', '_widget_1735107355340': '', '_widget_1744622071137': '', '_widget_1735107355341': '', '_widget_1744685582238': '', '_widget_1735107355342': '', '_widget_1735107354980': '', '_widget_1735107354982': '', '_widget_1735107354984': '', '_widget_1735526457128': '', '_widget_1736414756221': '', '_widget_1735107354986': '', '_widget_1744622071263': '', '_widget_1735107354987': '', '_widget_1744622071265': '', '_widget_1735107354988': '', '_widget_1744685582240': '', '_widget_1735107354989': '', '_widget_1734590278274': 'E.S(旧)', '_widget_1734590278267': '吴海艳', '_widget_1734590278287': '15940528133', '_widget_1734590278271': '连锁', '_widget_1734590278276': '5账号', '_widget_1734590278275': '5账号', '_widget_1734590278273': '第8年', '_widget_1734590278272': '成熟', '_widget_1734590278280': 'CHS201803122373', '_widget_1734590278289': None, '_widget_1734590278290': None, '_widget_1734590278291': None, '_widget_1735290738545': None, '_widget_1734590278266': '东北区域', '_widget_1734590278285': '东北1区', '_widget_1734590278284': '辽宁省', '_widget_1734590278283': '沈阳市', '_widget_1734590278282': '铁西区', '_widget_1735112931760': '10545724654287600000', '_widget_1735112931761': '10545724654287600000', '_widget_1735107354725': '', '_widget_1735107354727': '', '_widget_1735107354729': '', '_widget_1735526457122': '', '_widget_1736414756215': '', '_widget_1735107354731': '', '_widget_1735107354732': '', '_widget_1735107354733': '', '_widget_1735107354734': '', '_widget_1735107354906': '', '_widget_1735107354908': '', '_widget_1735107354910': '', '_widget_1735526457126': '', '_widget_1736414756219': '', '_widget_1735107354912': '', '_widget_1735107354913': '', '_widget_1735107354914': '', '_widget_1735107354915': '', '_widget_1735107355235': '', '_widget_1735107355237': '', '_widget_1735107355239': '', '_widget_1735526457134': '', '_widget_1736414756227': '', '_widget_1735107355241': '', '_widget_1735107355242': '', '_widget_1735107355243': '', '_widget_1735107355244': '', '_widget_1735107355392': '', '_widget_1735107355394': '', '_widget_1735107355396': '', '_widget_1735526457138': '', '_widget_1736414756231': '', '_widget_1735107355398': '', '_widget_1735107355399': '', '_widget_1735107355400': '', '_widget_1735107355401': '', '_widget_1735107355502': '', '_widget_1735107355504': '', '_widget_1735107355506': '', '_widget_1735526457140': '', '_widget_1736414756233': '', '_widget_1735107355508': '', '_widget_1735107355509': '', '_widget_1735107355510': '', '_widget_1735107355511': '', '_widget_1734073342350': '√', '_widget_1735004315757': '√', '_widget_1735004315756': '△', '_widget_1735004315755': '√', '_widget_1735004315754': '△', '_widget_1735004315753': '×', '_widget_1735004315752': '△', '_widget_1735004315751': '×', '_widget_1735004315750': '△', '_widget_1735004315749': '×', '_widget_1735004315748': '×', '_widget_1735004315747': '△', '_widget_1735004315746': '×', '_widget_1735004315745': '×', '_widget_1735004315744': '×', '_widget_1735004315743': '×', '_widget_1735004315742': '×', '_widget_1735004315741': '×', '_widget_1734073342352': '△', '_widget_1735544637578': '', '_widget_1742204915356': '', '_widget_1742204915358': '', '_id': '67ff47462baaeba275b44199', 'appId': '675b900991ad2491c69389ca', 'entryId': '675b9c63925cd404038a6b86'}}\n",
|
||
"{'data': {'creator': {'name': 'F6汽车科技', 'username': '#admin', 'status': 1, 'type': 0}, 'updater': {'name': 'F6汽车科技', 'username': '#admin', 'status': 1, 'type': 0}, 'deleter': None, 'createTime': '2025-04-16T05:59:34.827Z', 'updateTime': '2025-04-16T05:59:34.828Z', 'deleteTime': None, 'flowState': 0, '_widget_1734590278281': '沈阳市铁西区路奔汽车服务中心', '_widget_1734590278277': '重要客户(SVIP)', '_widget_1734590278286': '基础版', '_widget_1734590278278': 'C', '_widget_1734590278279': '沈阳市铁西区路奔汽车服务中心一店', '_widget_1734590278288': None, '_widget_1735096489244': '2025-04-15T08:45:56.082Z', '_widget_1734590278292': '续约后90天回访', '_widget_1734321349021': '67ebe3d074e070c607aacc97', '_widget_1742548684369': '关怀使用情况,促进更多功能使用,提升系统使用深度。', '_widget_1742895342914': '保养,维修,轮胎', '_widget_1742895342915': '3', '_widget_1742895342916': [], '_widget_1744596110482': '', '_widget_1744681425824': '', '_widget_1744681425822': '', '_widget_1744681426080': '', '_widget_1735004315763': '是', '_widget_1735004315765': '是', '_widget_1734591440478': '', '_widget_1735526457050': '', '_widget_1736414756201': '', '_widget_1734592065745': '', '_widget_1744593781029': '', '_widget_1735004315768': '', '_widget_1735004315769': '', '_widget_1744622070539': '', '_widget_1735004315767': '', '_widget_1735106258016': '是', '_widget_1735106258018': '是', '_widget_1735106258020': '', '_widget_1735526457110': '', '_widget_1736414756203': '', '_widget_1735106258022': '', '_widget_1744593781128': '', '_widget_1735106258023': '', '_widget_1735106258024': '', '_widget_1744596110993': '', '_widget_1735106258025': '', '_widget_1735107354648': '', '_widget_1735107354650': '否', '_widget_1735107354652': '', '_widget_1735526457120': '', '_widget_1736414756213': '', '_widget_1735107354654': '', '_widget_1744622070527': '', '_widget_1735107354655': '', '_widget_1744685581305': '', '_widget_1735107354656': '', '_widget_1744622070529': '', '_widget_1735107354657': '', '_widget_1735106258086': '是', '_widget_1735106258088': '否', '_widget_1735106258090': '', '_widget_1735526457114': '', '_widget_1736414756207': '', '_widget_1735106258092': '', '_widget_1744622070531': '', '_widget_1735106258093': '', '_widget_1744685581307': '', '_widget_1735106258094': '', '_widget_1744622070533': '', '_widget_1735106258095': '', '_widget_1735107355740': '', '_widget_1735107355742': '', '_widget_1735107355744': '', '_widget_1735526457144': '', '_widget_1736414756237': '', '_widget_1735107355746': '', '_widget_1744622070535': '', '_widget_1735107355747': '', '_widget_1744685581693': '', '_widget_1735107355748': '', '_widget_1744622070537': '', '_widget_1735107355749': '', '_widget_1735107354811': '', '_widget_1735107354813': '', '_widget_1735107354815': '', '_widget_1735526457124': '', '_widget_1736414756217': '', '_widget_1735107354817': '', '_widget_1744622070649': '', '_widget_1735107354818': '', '_widget_1744622070651': '', '_widget_1735107354819': '', '_widget_1744685581695': '', '_widget_1735107354820': '', '_widget_1735106258036': '否', '_widget_1735106258038': '否', '_widget_1735106258040': '', '_widget_1735526457112': '', '_widget_1736414756205': '', '_widget_1735106258042': '', '_widget_1744622070763': '', '_widget_1735106258043': '', '_widget_1744685581827': '', '_widget_1735106258044': '', '_widget_1744622070765': '', '_widget_1735106258045': '', '_widget_1735106258112': '否', '_widget_1735106258114': '', '_widget_1735106258116': '', '_widget_1735526457116': '', '_widget_1736414756209': '', '_widget_1735106258118': '', '_widget_1744622070767': '', '_widget_1735106258119': '', '_widget_1744622070769': '', '_widget_1735106258120': '', '_widget_1744685581960': '', '_widget_1735106258121': '', '_widget_1735106258141': '否', '_widget_1735106258143': '', '_widget_1735106258145': '', '_widget_1735526457118': '', '_widget_1736414756211': '', '_widget_1735106258147': '', '_widget_1744622070885': '', '_widget_1735106258148': '', '_widget_1744622070887': '', '_widget_1735106258149': '', '_widget_1744685582094': '', '_widget_1735106258150': '', '_widget_1735107355093': '', '_widget_1735107355095': '', '_widget_1735107355097': '', '_widget_1735526457130': '', '_widget_1736414756223': '', '_widget_1735107355099': '', '_widget_1744622071005': '', '_widget_1735107355100': '', '_widget_1744622071007': '', '_widget_1735107355101': '', '_widget_1744685582096': '', '_widget_1735107355102': '', '_widget_1735107355618': '否', '_widget_1735107355620': '', '_widget_1735107355622': '', '_widget_1735526457142': '', '_widget_1736414756235': '', '_widget_1735107355624': '', '_widget_1744622071127': '', '_widget_1735107355625': '', '_widget_1744622071129': '', '_widget_1735107355626': '', '_widget_1744685582098': '', '_widget_1735107355627': '', '_widget_1735107355143': '', '_widget_1735107355145': '', '_widget_1735107355147': '', '_widget_1735526457132': '', '_widget_1736414756225': '', '_widget_1735107355149': '', '_widget_1744622071131': '', '_widget_1735107355150': '', '_widget_1744622071133': '', '_widget_1735107355151': '', '_widget_1744685582100': '', '_widget_1735107355152': '', '_widget_1735107355333': '', '_widget_1735107355335': '', '_widget_1735107355337': '', '_widget_1735526457136': '', '_widget_1736414756229': '', '_widget_1735107355339': '', '_widget_1744622071135': '', '_widget_1735107355340': '', '_widget_1744622071137': '', '_widget_1735107355341': '', '_widget_1744685582238': '', '_widget_1735107355342': '', '_widget_1735107354980': '', '_widget_1735107354982': '', '_widget_1735107354984': '', '_widget_1735526457128': '', '_widget_1736414756221': '', '_widget_1735107354986': '', '_widget_1744622071263': '', '_widget_1735107354987': '', '_widget_1744622071265': '', '_widget_1735107354988': '', '_widget_1744685582240': '', '_widget_1735107354989': '', '_widget_1734590278274': 'E.S(旧)', '_widget_1734590278267': '吴海艳', '_widget_1734590278287': '15940528133', '_widget_1734590278271': '连锁', '_widget_1734590278276': '5账号', '_widget_1734590278275': '5账号', '_widget_1734590278273': '第8年', '_widget_1734590278272': '成熟', '_widget_1734590278280': 'CHS201803122373', '_widget_1734590278289': None, '_widget_1734590278290': None, '_widget_1734590278291': None, '_widget_1735290738545': None, '_widget_1734590278266': '东北区域', '_widget_1734590278285': '东北1区', '_widget_1734590278284': '辽宁省', '_widget_1734590278283': '沈阳市', '_widget_1734590278282': '铁西区', '_widget_1735112931760': '10545724654287600000', '_widget_1735112931761': '10545724654287600000', '_widget_1735107354725': '', '_widget_1735107354727': '', '_widget_1735107354729': '', '_widget_1735526457122': '', '_widget_1736414756215': '', '_widget_1735107354731': '', '_widget_1735107354732': '', '_widget_1735107354733': '', '_widget_1735107354734': '', '_widget_1735107354906': '', '_widget_1735107354908': '', '_widget_1735107354910': '', '_widget_1735526457126': '', '_widget_1736414756219': '', '_widget_1735107354912': '', '_widget_1735107354913': '', '_widget_1735107354914': '', '_widget_1735107354915': '', '_widget_1735107355235': '', '_widget_1735107355237': '', '_widget_1735107355239': '', '_widget_1735526457134': '', '_widget_1736414756227': '', '_widget_1735107355241': '', '_widget_1735107355242': '', '_widget_1735107355243': '', '_widget_1735107355244': '', '_widget_1735107355392': '', '_widget_1735107355394': '', '_widget_1735107355396': '', '_widget_1735526457138': '', '_widget_1736414756231': '', '_widget_1735107355398': '', '_widget_1735107355399': '', '_widget_1735107355400': '', '_widget_1735107355401': '', '_widget_1735107355502': '', '_widget_1735107355504': '', '_widget_1735107355506': '', '_widget_1735526457140': '', '_widget_1736414756233': '', '_widget_1735107355508': '', '_widget_1735107355509': '', '_widget_1735107355510': '', '_widget_1735107355511': '', '_widget_1734073342350': '√', '_widget_1735004315757': '√', '_widget_1735004315756': '△', '_widget_1735004315755': '√', '_widget_1735004315754': '△', '_widget_1735004315753': '×', '_widget_1735004315752': '△', '_widget_1735004315751': '×', '_widget_1735004315750': '△', '_widget_1735004315749': '×', '_widget_1735004315748': '×', '_widget_1735004315747': '△', '_widget_1735004315746': '×', '_widget_1735004315745': '×', '_widget_1735004315744': '×', '_widget_1735004315743': '×', '_widget_1735004315742': '×', '_widget_1735004315741': '×', '_widget_1734073342352': '△', '_widget_1735544637578': '', '_widget_1742204915356': '', '_widget_1742204915358': '', '_id': '67ff47462baaeba275b44199', 'appId': '675b900991ad2491c69389ca', 'entryId': '675b9c63925cd404038a6b86'}}\n"
|
||
]
|
||
}
|
||
],
|
||
"execution_count": 26
|
||
},
|
||
{
|
||
"metadata": {},
|
||
"cell_type": "markdown",
|
||
"source": "## 新签手动替换",
|
||
"id": "b337701ceaab5253"
|
||
},
|
||
{
|
||
"metadata": {
|
||
"ExecuteTime": {
|
||
"end_time": "2025-04-16T06:08:38.123412Z",
|
||
"start_time": "2025-04-16T06:08:22.519801Z"
|
||
}
|
||
},
|
||
"cell_type": "code",
|
||
"source": [
|
||
"import datetime\n",
|
||
"import os\n",
|
||
"import time\n",
|
||
"\n",
|
||
"import requests\n",
|
||
"\n",
|
||
"from api import API\n",
|
||
"import re\n",
|
||
"from back_ground_module import CommonModule\n",
|
||
"import pandas as pd\n",
|
||
"from log_config import configure_task_logger, configure_error_task_logger\n",
|
||
"\n",
|
||
"api_instance = API()\n",
|
||
"common_module = CommonModule()\n",
|
||
"# start_time = datetime.datetime.now()\n",
|
||
"\n",
|
||
"# 获取已经配置好的常规日志记录器\n",
|
||
"logger = configure_task_logger()\n",
|
||
"\n",
|
||
"# 获取已经配置好的错误任务日志记录器\n",
|
||
"error_task_logger = configure_error_task_logger()\n",
|
||
"\n",
|
||
"\n",
|
||
"class NewServicesRevisit:\n",
|
||
" \"\"\"\n",
|
||
" 用于处理新签服务回访的类。\n",
|
||
" \"\"\"\n",
|
||
"\n",
|
||
" def __init__(self):\n",
|
||
" self.get_feature_usage = None\n",
|
||
" self.saas_create_time = None\n",
|
||
" self.index = None\n",
|
||
" self.date_one = None\n",
|
||
" self.data_NGV_S = None\n",
|
||
" self.date_list = None\n",
|
||
" self.Smart_detection = None\n",
|
||
" self.service_remind = None\n",
|
||
" self.NGV_data_list = None\n",
|
||
" self.permissions_table = None\n",
|
||
" self.staff_id_list = None\n",
|
||
" self.json_list = []\n",
|
||
" self.policy_recognition = None\n",
|
||
" self.widget_list = None\n",
|
||
" self.private_domain = None\n",
|
||
" self.public_domain = None\n",
|
||
" self.public_domain_list = None\n",
|
||
" self.different_industries = None\n",
|
||
" self.different_industries_list = None\n",
|
||
" self.groupnotification = None\n",
|
||
"\n",
|
||
" def calculate_date_one(self, start_offset=0):\n",
|
||
" \"\"\"\n",
|
||
" 计算从当前日期(或指定偏移量的日期)开始,往前遍历遇到date_list中日期的次数。\n",
|
||
"\n",
|
||
" 参数:\n",
|
||
" - start_offset: 从当前日期起始的天数偏移量,默认为0(即今天)。负数表示过去,正数表示未来。\n",
|
||
"\n",
|
||
" 返回:\n",
|
||
" - date_one: 遍历到date_list中日期的次数。\n",
|
||
" \"\"\"\n",
|
||
" jdy_date = datetime.datetime.now().strftime(\"%Y-%m-%d\")\n",
|
||
" jdy_start_time = datetime.datetime.now().strftime(\"%Y-%m-%d \")\n",
|
||
" # 设置起始日期\n",
|
||
" now_time = datetime.datetime.now() + datetime.timedelta(days=start_offset)\n",
|
||
"\n",
|
||
" # 初始化计数器\n",
|
||
" date_one = 1\n",
|
||
"\n",
|
||
" # 检查起始日期是否在date_list中\n",
|
||
" if now_time.strftime(\"%Y-%m-%d\") in self.date_list:\n",
|
||
" date_one = 0\n",
|
||
" print(\"开始次数:\", date_one)\n",
|
||
"\n",
|
||
" print(\"当前日期:\", now_time.strftime(\"%Y-%m-%d\"))\n",
|
||
"\n",
|
||
" # 遍历日期\n",
|
||
" for i in range(1, 10):\n",
|
||
" new_date = now_time + datetime.timedelta(days=-i)\n",
|
||
" new_date_str = new_date.strftime(\"%Y-%m-%d\")\n",
|
||
" print(\"遍历日期:\", new_date_str)\n",
|
||
" if new_date_str in self.date_list:\n",
|
||
" date_one += 1\n",
|
||
" print(\"节假日期:\", new_date_str)\n",
|
||
" else:\n",
|
||
" break\n",
|
||
"\n",
|
||
" print(\"遍历次数:\", date_one)\n",
|
||
" return date_one\n",
|
||
"\n",
|
||
" @staticmethod\n",
|
||
" def download_url_content(url, save_path):\n",
|
||
" \"\"\"\n",
|
||
" 下载指定 URL 的内容并保存到本地文件。\n",
|
||
"\n",
|
||
" :param url: 要下载内容的 URL\n",
|
||
" :param save_path: 保存文件的路径\n",
|
||
" \"\"\"\n",
|
||
" try:\n",
|
||
" # 发送 GET 请求以获取内容\n",
|
||
" response = requests.get(url, stream=True)\n",
|
||
" response.raise_for_status() # 如果响应状态码不是 200,抛出异常\n",
|
||
"\n",
|
||
" # 确保保存目录存在\n",
|
||
" os.makedirs(os.path.dirname(save_path), exist_ok=True)\n",
|
||
"\n",
|
||
" # 将内容写入文件\n",
|
||
" with open(save_path, 'wb') as file:\n",
|
||
" for chunk in response.iter_content(chunk_size=8192): # 分块写入,避免占用过多内存\n",
|
||
" if chunk: # 过滤掉空块\n",
|
||
" file.write(chunk)\n",
|
||
"\n",
|
||
" print(f\"文件已成功保存到 {save_path}\")\n",
|
||
"\n",
|
||
" except requests.exceptions.RequestException as e:\n",
|
||
" print(f\"下载失败: {e}\")\n",
|
||
" except Exception as e:\n",
|
||
" print(f\"发生错误: {e}\")\n",
|
||
"\n",
|
||
" def load_all_data(self):\n",
|
||
" \"\"\"加载所有必要的数据表\"\"\"\n",
|
||
" # 省市区人员关系表\n",
|
||
" payload = {\"api_key\": \"675b900991ad2491c69389ca\", \"entry_id\": \"676512ac3e54dc3159460c0a\"}\n",
|
||
" json_dict = api_instance.entry_data_list(payload)\n",
|
||
" self.json_list = json_dict.get(\"data\")\n",
|
||
"\n",
|
||
" # 获取简道云员工id\n",
|
||
" payload = {\"api_key\": \"6694d3c4fcb69ca9a111a6c4\",\n",
|
||
" \"entry_id\": \"6769204a1902c9341340a1bc\",\n",
|
||
" }\n",
|
||
" staff_id = api_instance.entry_data_list(payload)\n",
|
||
" self.staff_id_list = staff_id.get(\"data\") # api请求格式,将数据封装在data字典里\n",
|
||
"\n",
|
||
" # 获取权限表信息\n",
|
||
" payload = {\"api_key\": \"675b900991ad2491c69389ca\", \"entry_id\": \"675b96c14e839f90fef1647c\"}\n",
|
||
" self.permissions_table = api_instance.entry_data_list(payload).get(\"data\", [])\n",
|
||
"\n",
|
||
" # 获取NGV数据\n",
|
||
" payload = {\"api_key\": \"675b900991ad2491c69389ca\", \"entry_id\": \"675bb02bd2d53c2034c665e4\"}\n",
|
||
" self.NGV_data_list = api_instance.entry_data_list(payload).get(\"data\", [])\n",
|
||
" # print(\"NGV获取后的类型:\", type(self.NGV_data_list))\n",
|
||
"\n",
|
||
" # 获取服务提醒-数据支持表单数据\n",
|
||
" payload = {\"api_key\": \"675b900991ad2491c69389ca\", \"entry_id\": \"676bb7bda3029720f1083e99\"}\n",
|
||
" self.service_remind = api_instance.entry_data_list(payload).get(\"data\", [])\n",
|
||
"\n",
|
||
" # 获取智能检测-数据支持表单数据\n",
|
||
" payload = {\"api_key\": \"675b900991ad2491c69389ca\", \"entry_id\": \"676bb99649ab3ac975af6e39\"}\n",
|
||
" self.Smart_detection = api_instance.entry_data_list(payload).get(\"data\", [])\n",
|
||
"\n",
|
||
" # 获取功能使用情况表\n",
|
||
" payload = {\"api_key\": \"675b900991ad2491c69389ca\", \"entry_id\": \"6763bbf657bd8fb76fcb41b2\"}\n",
|
||
" self.get_feature_usage = api_instance.entry_data_list(payload).get(\"data\", [])\n",
|
||
"\n",
|
||
" # 获取保单识别表\n",
|
||
" payload = {\"api_key\": \"675b900991ad2491c69389ca\", \"entry_id\": \"6773a60d30ed87ff9f68d3c5\"}\n",
|
||
" self.policy_recognition = api_instance.entry_data_list(payload).get(\"data\")\n",
|
||
" # 提取 _widget_1735632397600 的值并存储在列表中\n",
|
||
" self.widget_list = [item['_widget_1735632397600'] for item in self.policy_recognition]\n",
|
||
"\n",
|
||
" # 获取私域小程序-数据支持表单数据\n",
|
||
" payload = {\"api_key\": \"675b900991ad2491c69389ca\", \"entry_id\": \"67e0f0fae622896749ba5087\"}\n",
|
||
" self.private_domain = api_instance.entry_data_list(payload).get(\"data\", [])\n",
|
||
" # 提取 _widget_1742795002375 的值并存储在列表中\n",
|
||
" # self.private_domain = [item['_widget_1742795002375'] for item in self.private_domain]\n",
|
||
"\n",
|
||
" # 获取公域小程序-数据支持表单数据\n",
|
||
" payload = {\"api_key\": \"675b900991ad2491c69389ca\", \"entry_id\": \"67e0c702c8f603b997980999\"}\n",
|
||
" self.public_domain = api_instance.entry_data_list(payload).get(\"data\", [])\n",
|
||
" # 提取 _widget_1742784257506 的值并存储在列表中\n",
|
||
" self.public_domain_list = [item['_widget_1742784257506'] for item in self.public_domain]\n",
|
||
"\n",
|
||
" # 获取异业合作-数据支持表单数据\n",
|
||
" payload = {\"api_key\": \"675b900991ad2491c69389ca\", \"entry_id\": \"67e24fdd8dfcfa918e17c30b\"}\n",
|
||
" self.different_industries = api_instance.entry_data_list(payload).get(\"data\", [])\n",
|
||
" # 提取 _widget_1742784257506 的值并存储在列表中\n",
|
||
" self.different_industries_list = [item['_widget_1742884829007'] for item in self.different_industries]\n",
|
||
"\n",
|
||
" # 获取短信-数据支持表单数据\n",
|
||
" payload = {\"api_key\": \"675b900991ad2491c69389ca\", \"entry_id\": \"67e5107198ba1b20d5df3974\"}\n",
|
||
" self.groupnotification = api_instance.entry_data_list(payload).get(\"data\", [])\n",
|
||
"\n",
|
||
" @staticmethod\n",
|
||
" def build_index(json_list):\n",
|
||
" index = {}\n",
|
||
" # print(json_list)\n",
|
||
" for json_item in json_list:\n",
|
||
" # json_item = json_item.get(\"data\")\n",
|
||
" # print(json_item)\n",
|
||
" try:\n",
|
||
" key = (json_item['_widget_1734677164861'], json_item['_widget_1734677164862'],\n",
|
||
" json_item['_widget_1734677164863']) # 省市区\n",
|
||
" if '_widget_1734677164871' not in json_item: # 日常回访客服\n",
|
||
" raise KeyError(\"缺少 '日常回访客服' 键\")\n",
|
||
" index[key] = json_item\n",
|
||
" except KeyError as e:\n",
|
||
" print(f\"警告:{e},跳过该条记录: {json_item}\")\n",
|
||
" continue\n",
|
||
" return index\n",
|
||
"\n",
|
||
" @staticmethod\n",
|
||
" def find_customer_service(province_name, city_name, area_name, index):\n",
|
||
" key = (province_name, city_name, area_name)\n",
|
||
" # print(index)\n",
|
||
" if key not in index:\n",
|
||
" return \"数据缺失: 未找到对应的日常回访客服\"\n",
|
||
"\n",
|
||
" return index[key]\n",
|
||
"\n",
|
||
" @staticmethod\n",
|
||
" def remove_parentheses(text: str) -> str:\n",
|
||
" # 使用正则表达式匹配并去除括号及其内容\n",
|
||
" # \\s* 表示匹配零个或多个空白字符(处理括号前后可能存在的空格)\n",
|
||
" # $ 和 $ 分别表示匹配左括号和右括号\n",
|
||
" # 中间的 .*? 表示非贪婪地匹配任意数量的字符(包括没有字符的情况)\n",
|
||
" cleaned_text = re.sub(r'\\s*$.*?$\\s*', '', text)\n",
|
||
" # 为了确保同时处理中文括号,再进行一次替换\n",
|
||
" cleaned_text = re.sub(r'\\s*(.*?)\\s*', '', cleaned_text)\n",
|
||
" return cleaned_text.strip() # 去除两端多余的空白字符\n",
|
||
"\n",
|
||
" @staticmethod\n",
|
||
" def get_staff_id(row_item, name):\n",
|
||
" \"\"\"辅助函数,用于获取员工ID\"\"\"\n",
|
||
" if str(row_item[\"_widget_1734942794144\"]) == str(name): # 检查姓名是否匹配\n",
|
||
" return row_item[\"_widget_1734942794145\"] # 返回员工ID\n",
|
||
" return None\n",
|
||
"\n",
|
||
" def assign_customer_service(self, province_name, city_name, area_name, index):\n",
|
||
" \"\"\"根据省市区派发给日常回访客服\"\"\"\n",
|
||
" try:\n",
|
||
" customer_service_info = self.find_customer_service(province_name, city_name, area_name, index)\n",
|
||
" relationship_manager = customer_service_info.get('_widget_1734677164864', {}).get('username') # 运营顾问\n",
|
||
" customer_service = customer_service_info.get('_widget_1734677164871', {}).get('username') # 日常回访客服\n",
|
||
" technician = customer_service_info.get('_widget_1734677164866', {}).get('username')\n",
|
||
" area_manager = customer_service_info.get('_widget_1734677164865', {}).get('username')\n",
|
||
" return relationship_manager, customer_service, technician, area_manager\n",
|
||
" except Exception as e:\n",
|
||
" print(f\"Error finding customer service: {e}\")\n",
|
||
" return \"分配失败,请检查\", \"分配失败,请检查\", \"分配失败,请检查\"\n",
|
||
"\n",
|
||
" @staticmethod\n",
|
||
" def up_JDY_status(up_jdy_date, up_jdy_start_time):\n",
|
||
" up_jdy_end_time = datetime.datetime.now().strftime(\"%Y-%m-%d %H:%M:%S\")\n",
|
||
"\n",
|
||
"\n",
|
||
"\n",
|
||
" def main(self):\n",
|
||
" up_jdy_date = datetime.datetime.now().strftime(\"%Y-%m-%d\")\n",
|
||
" up_jdy_start_time = datetime.datetime.now().strftime(\"%Y-%m-%d %H:%M:%S\")\n",
|
||
"\n",
|
||
" global png_url, key, upload_key\n",
|
||
" # self.load_all_data()\n",
|
||
"\n",
|
||
" self.date_list = common_module.get_holiday_list()\n",
|
||
" self.data_NGV_S = common_module.get_ngv_details(days_back=1).astype(str) # 获取data_NGV 并转为str\n",
|
||
" self.date_one = self.calculate_date_one(start_offset=0)\n",
|
||
" self.index = self.build_index(self.json_list)\n",
|
||
" self.saas_create_time_180 = 173 # 新签日期\n",
|
||
" self.saas_create_time_90 = 83 # 新签日期\n",
|
||
"\n",
|
||
" print(\"开始运行main\")\n",
|
||
" print(self.date_one)\n",
|
||
" for i in range(0, self.date_one): # 从NGV总表过滤\n",
|
||
" # now_time = datetime.datetime.now() + datetime.timedelta(days=-76)\n",
|
||
" # now_time = now_time + datetime.timedelta(days=-i)\n",
|
||
" now_time = datetime.datetime.now() + datetime.timedelta(days=-i)\n",
|
||
" today = now_time + datetime.timedelta(days=-self.saas_create_time_180)\n",
|
||
" formatted_today_180 = today.strftime(\"%Y-%m-%d\")\n",
|
||
" today = now_time + datetime.timedelta(days=-self.saas_create_time_90)\n",
|
||
" formatted_today_90 = today.strftime(\"%Y-%m-%d\")\n",
|
||
" print(\"SaaS开户回访日期:\", formatted_today_180, formatted_today_90)\n",
|
||
"\n",
|
||
" data_NGV = self.data_NGV_S.copy()\n",
|
||
"\n",
|
||
" def replace_values(series):\n",
|
||
" # 使用条件判断来进行替换\n",
|
||
" return series.apply(lambda x: '' if pd.isna(x) or x in ['NA', 'None', ''] else x)\n",
|
||
"\n",
|
||
" # 对整个DataFrame的所有列应用替换函数\n",
|
||
" data_NGV = data_NGV.apply(replace_values)\n",
|
||
" # data_NGV.to_csv(\"dayinNGV.csv\")\n",
|
||
"\n",
|
||
" # 定义优先级顺序\n",
|
||
" edition_order = ['皇冠版', '至尊版', '尊享版', '旗舰版', '标准版', '进阶版', '基础版', '入门版']\n",
|
||
" customer_type_order = [\"F\", \"E\", \"D\", \"C\", \"B\", \"A\"] # 索引越小优先级越高\n",
|
||
" group_grade_order = ['全国KA(FMVP)', '区域KA(MVP)', '重要客户(SVIP)', '普通客户(VIP)']\n",
|
||
"\n",
|
||
" # 创建映射字典,并为不在列表中的值设置默认值\n",
|
||
" edition_map = {edition: idx for idx, edition in enumerate(edition_order)}\n",
|
||
" customer_type_map = {ctype: idx for idx, ctype in enumerate(customer_type_order)}\n",
|
||
" group_grade_map = {grade: idx for idx, grade in enumerate(group_grade_order)}\n",
|
||
"\n",
|
||
" # 添加用于排序的新列,并处理不在映射字典中的值\n",
|
||
" data_NGV['edition_rank'] = data_NGV['saas_edition_fmt'].map(edition_map).fillna(0).astype(\n",
|
||
" int) # 缺失值用最高优先级填充\n",
|
||
" data_NGV['customer_type_rank'] = data_NGV['saas_customer_type'].map(customer_type_map).fillna(0).astype(int)\n",
|
||
" data_NGV['group_grade_rank'] = data_NGV['group_grade'].map(group_grade_map).fillna(0).astype(int)\n",
|
||
" # data_NGV.to_csv(\"88855.csv\")\n",
|
||
"\n",
|
||
" # 找到每组中 edition_rank 最小值对应的行\n",
|
||
" best_edition_idx = data_NGV.groupby('id_own_group')['edition_rank'].idxmin()\n",
|
||
" best_edition_rows = data_NGV.loc[best_edition_idx]\n",
|
||
" best_edition_rows['max_saas_edition'] = best_edition_rows['saas_edition_fmt']\n",
|
||
"\n",
|
||
" # 找到每组中 customer_type_rank 最小值对应的行\n",
|
||
" best_customer_type_idx = data_NGV.groupby('id_own_group')['customer_type_rank'].idxmin()\n",
|
||
" best_customer_type_rows = data_NGV.loc[best_customer_type_idx]\n",
|
||
" best_customer_type_rows['max_saas_customer_type'] = best_customer_type_rows['customer_type_rank'].apply(\n",
|
||
" lambda x: customer_type_order[x])\n",
|
||
"\n",
|
||
" # 找到每组中 group_grade_rank 最小值对应的行\n",
|
||
" best_group_grade_idx = data_NGV.groupby('id_own_group')['group_grade_rank'].idxmin()\n",
|
||
" best_group_grade_rows = data_NGV.loc[best_group_grade_idx]\n",
|
||
" best_group_grade_rows['max_group_grade'] = best_group_grade_rows['group_grade']\n",
|
||
"\n",
|
||
" # 合并最佳值回到原数据集\n",
|
||
" best_values = (\n",
|
||
" best_edition_rows[['id_own_group', 'max_saas_edition']]\n",
|
||
" .merge(best_customer_type_rows[['id_own_group', 'max_saas_customer_type']], on='id_own_group',\n",
|
||
" how='outer')\n",
|
||
" .merge(best_group_grade_rows[['id_own_group', 'max_group_grade']], on='id_own_group', how='outer')\n",
|
||
" )\n",
|
||
"\n",
|
||
" # 将最佳值合并回原数据集\n",
|
||
" data_NGV = data_NGV.merge(best_values, on='id_own_group', how='left')\n",
|
||
"\n",
|
||
" condition = (data_NGV['is_main_org'] == 1) & (data_NGV['org_status'] == '过期') # 步骤2: 过滤条件\n",
|
||
"\n",
|
||
" ngvv2 = data_NGV[condition]\n",
|
||
" # ngvv2.to_excel(r\"C:\\Users\\Administrator.DESKTOP-7IC2USJ\\Desktop\\NGVV2.xlsx\")\n",
|
||
"\n",
|
||
" data_NGV_V2 = data_NGV.copy() # 步骤3: 检查id_own_group是否存在于ngvv2中\n",
|
||
" data_NGV_V2['条件'] = (data_NGV_V2['org_type'] == \"一般\") & (data_NGV_V2['org_status'] == '留存') & (\n",
|
||
" data_NGV_V2['area_manager'] != '殷昊') & (\n",
|
||
" data_NGV_V2['area_manager'] != '孙玉蕾') & (\n",
|
||
" data_NGV_V2['is_main_org'] != 1)\n",
|
||
" data_NGV_V2 = data_NGV_V2.loc[data_NGV_V2[\"条件\"]]\n",
|
||
" # 步骤4: 过滤存在的记录\n",
|
||
" data_NGV_V2['exists_in_ngvv2'] = data_NGV_V2['id_own_group'].isin(ngvv2['id_own_group'])\n",
|
||
" filtered_data = data_NGV_V2[data_NGV_V2['exists_in_ngvv2']]\n",
|
||
"\n",
|
||
" fixed_order = ['皇冠版', '至尊版', '尊享版', '旗舰版', '标准版', '进阶版', '基础版', '入门版']\n",
|
||
" # sorted_items = sorted(filtered_data, key=lambda x: fixed_order.index(x))\n",
|
||
"\n",
|
||
" fixed_order_map = {edition: index for index, edition in enumerate(fixed_order)}\n",
|
||
" filtered_data['sort_key'] = filtered_data['saas_edition_fmt'].map(fixed_order_map)\n",
|
||
" filtered_data = filtered_data.sort_values(by='sort_key').drop('sort_key', axis=1)\n",
|
||
"\n",
|
||
" result = filtered_data.drop_duplicates(subset='id_own_group', keep='first')\n",
|
||
"\n",
|
||
" data_NGV['条件'] = (data_NGV['org_type'] == \"一般\") & (data_NGV['org_status'] == '留存') & (\n",
|
||
" data_NGV['area_manager'] != '殷昊') & (\n",
|
||
" data_NGV['area_manager'] != '孙玉蕾') & (\n",
|
||
" (data_NGV['saas_create_time'] == formatted_today_180) | (\n",
|
||
" data_NGV['saas_create_time'] == formatted_today_90)) & (\n",
|
||
" data_NGV['is_main_org'] == \"1\")\n",
|
||
"\n",
|
||
" data_NGV = data_NGV.loc[data_NGV[\"条件\"]]\n",
|
||
"\n",
|
||
" data_NGV = pd.concat([data_NGV, result], axis=0)\n",
|
||
" print(len(data_NGV), \"20250325\")\n",
|
||
"\n",
|
||
" # 定义一个函数,根据 saas_create_time 字段的值设置阶段列和主要目的列的值\n",
|
||
" def set_columns(row):\n",
|
||
" if row['saas_create_time'] == formatted_today_180:\n",
|
||
" row['跟进阶段'] = '新签后180天'\n",
|
||
" row['主要目的'] = '关怀使用情况,邀约转介绍,跟进增购商机,识别首年续约风险,及时跟进提报。'\n",
|
||
" elif row['saas_create_time'] == formatted_today_90:\n",
|
||
" row['跟进阶段'] = '新签后90天'\n",
|
||
" row['主要目的'] = '关怀使用情况,解答使用问题,强化培训,挖掘增购商机。'\n",
|
||
" else:\n",
|
||
" row['跟进阶段'] = \"派发异常请联系数据组!\" # 返回其他默认值\n",
|
||
" row['主要目的'] = \"派发异常请联系数据组!\" # 返回其他默认值\n",
|
||
" return row\n",
|
||
"\n",
|
||
" # 使用 apply 方法将函数应用到每一行\n",
|
||
" data_NGV = data_NGV.apply(set_columns, axis=1)\n",
|
||
"\n",
|
||
" print(\"SaaS开户回访人数:\", len(data_NGV))\n",
|
||
" print(data_NGV)\n",
|
||
"\n",
|
||
" # 重置索引\n",
|
||
" data_NGV = data_NGV.reset_index(drop=True)\n",
|
||
"\n",
|
||
" data_NGV = pd.read_excel(r\"C:\\Users\\Administrator.DESKTOP-7IC2USJ\\Desktop\\派发1.xlsx\", sheet_name=\"Sheet5\")\n",
|
||
"\n",
|
||
" for index_num, row in data_NGV.iterrows(): # 对过滤后的每一条进行派发\n",
|
||
" try:\n",
|
||
" # print(row[\"org_code\"]) # 数据验证\n",
|
||
" # print(row[\"service_impl_principal\"])\n",
|
||
" # print(row[\"area_manager\"])\n",
|
||
" # print(row[\"technician\"])\n",
|
||
" payload_dict = {}\n",
|
||
" saas_use_year = re.findall(r'第([0-9]+)年', row[\"saas_use_year\"])[0]\n",
|
||
"\n",
|
||
" NGV_roles = {\n",
|
||
" 'relationship_manager': row['service_impl_principal'], # 运营负责人\n",
|
||
" # 'relationship_manager': \"张阳\", # 运营负责人\n",
|
||
" 'area_manager': row['area_manager'], # 区域经理\n",
|
||
" 'technician': row['technician'], # 技术专家\n",
|
||
" 'salesmen': row['salesmen'], # 销售负责人\n",
|
||
" }\n",
|
||
"\n",
|
||
" for role, name in NGV_roles.items(): # 寻找对应的员工ID\n",
|
||
" for row_item in self.staff_id_list:\n",
|
||
" staff_id = self.get_staff_id(row_item, name)\n",
|
||
" if staff_id:\n",
|
||
" NGV_roles[role] = staff_id\n",
|
||
" break # 找到后退出循环\n",
|
||
" else:\n",
|
||
" NGV_roles[role] = None # 如果没有找到对应的员工ID\n",
|
||
"\n",
|
||
" # 回访人员: 需确认 四年以下 technician\n",
|
||
" if int(saas_use_year) < 4:\n",
|
||
"\n",
|
||
" relationship_manager, area_manager, technician, salesmen = [NGV_roles[role] for role in\n",
|
||
" ['relationship_manager', 'area_manager',\n",
|
||
" 'technician', 'salesmen']]\n",
|
||
"\n",
|
||
" # 如果未找到运营负责人,则根据省市区派发给日常回访客服\n",
|
||
" if not relationship_manager:\n",
|
||
" relationship_manager = self.assign_customer_service(\n",
|
||
" row['province_name'], row['city_name'], row['area_name'], self.index\n",
|
||
" )[0]\n",
|
||
" if not technician:\n",
|
||
" technician = self.assign_customer_service(\n",
|
||
" row['province_name'], row['city_name'], row['area_name'], self.index\n",
|
||
" )[2]\n",
|
||
" payload_dict.update({\n",
|
||
" \"_widget_1734590278288\": {\"value\": relationship_manager}, # 跟进人是运营负责人\n",
|
||
" })\n",
|
||
"\n",
|
||
" else:\n",
|
||
" salesmen = [NGV_roles[role] for role in\n",
|
||
" ['salesmen']]\n",
|
||
" # 直接根据省市区派发给日常回访客服\n",
|
||
" relationship_manager, customer_service, technician, area_manager = self.assign_customer_service(\n",
|
||
" row['province_name'], row['city_name'], row['area_name'], self.index\n",
|
||
" )\n",
|
||
" payload_dict.update({\n",
|
||
" \"_widget_1734590278288\": {\"value\": customer_service} # 跟进人是日常回访客服\n",
|
||
" })\n",
|
||
"\n",
|
||
" payload_dict.update({\n",
|
||
" # \"_widget_1734590278288\": {\"value\": relationship_manager}, # 跟进人是运营负责人\n",
|
||
" \"_widget_1734590278289\": {\"value\": relationship_manager}, # 运营负责人\n",
|
||
" \"_widget_1734590278290\": {\"value\": area_manager}, # 区域经理\n",
|
||
" \"_widget_1734590278291\": {\"value\": technician}, # 技术专家\n",
|
||
" \"_widget_1735290738545\": {\"value\": salesmen} # 销售负责人\n",
|
||
" })\n",
|
||
"\n",
|
||
" # 输出结果\n",
|
||
" print(\"SaaS开户回访人员:\", relationship_manager or \"未分配\")\n",
|
||
" print(\"SaaS技术专家:\", technician or \"未分配\")\n",
|
||
" print(\"SaaS区域经理:\", area_manager or \"未分配\")\n",
|
||
"\n",
|
||
" # 判断权限唯一值\n",
|
||
" # pattern = r'([\\u4e00-\\u9fa5]+)\\('\n",
|
||
" # match = re.search(pattern, row['max_group_grade'])\n",
|
||
" # group_grade = match.group(1)\n",
|
||
" group_grade = re.sub(r'([^)]*)', '', row['max_group_grade'])\n",
|
||
"\n",
|
||
" if not row['saas_customer_type'] or row['saas_customer_type'] == 'NA' or row[\n",
|
||
" 'saas_customer_type'] == 'None':\n",
|
||
" row['saas_customer_type'] = \"F\"\n",
|
||
"\n",
|
||
" NGV_store_level_key = group_grade + row['max_saas_edition'] + row['max_saas_customer_type']\n",
|
||
" print(\"权限唯一值:\", NGV_store_level_key)\n",
|
||
"\n",
|
||
" Billing = None\n",
|
||
" for item in self.permissions_table:\n",
|
||
" if NGV_store_level_key == item.get(\"_widget_1734056507963\"): # 合并(等级-类型-分层)\n",
|
||
" print(\"该门店开单的权限是:\", item.get(item.get(\"_widget_1734055617039\")))\n",
|
||
" Billing = item.get(\"_widget_1734055617039\") # 开单\n",
|
||
" Service_Alerts = item.get(\"_widget_1734055617040\") # 服务提醒\n",
|
||
" membership = item.get(\"_widget_1734055617041\") # 会员卡\n",
|
||
" SMS = item.get(\"_widget_1734055617042\") # 短信\n",
|
||
" Public_domain_applets = item.get(\"_widget_1734055617043\") # 公域小程序\n",
|
||
" Private_domain_applets = item.get(\"_widget_1734055617044\") # 私域小程序\n",
|
||
" Test_sheet = item.get(\"_widget_1734055617045\") # 检测单\n",
|
||
" AI_poster = item.get(\"_widget_1734055617046\") # AI海报\n",
|
||
" Business_wallets = item.get(\"_widget_1734055617047\") # 企业钱包\n",
|
||
" Precision_marketing = item.get(\"_widget_1734055617049\") # 精准营销\n",
|
||
" Paid_memberships = item.get(\"_widget_1734055617051\") # 付费会员\n",
|
||
" business_WeCom = item.get(\"_widget_1734055617052\") # 企业微信\n",
|
||
" Insurance_policy_identification = item.get(\"_widget_1734055617053\") # 保险单识别\n",
|
||
" Insurance_bots = item.get(\"_widget_1734055617054\") # 保险机器人\n",
|
||
" Camera_pick_up = item.get(\"_widget_1734055617055\") # 摄像头接车\n",
|
||
" Camera_billing = item.get(\"_widget_1734055617056\") # 摄像头开单\n",
|
||
" Transparent_workshop = item.get(\"_widget_1734055617057\") # 透明车间\n",
|
||
" Cross_industry_cooperation = item.get(\"_widget_1734055617058\") # 异业合作\n",
|
||
" BI_Insights = item.get(\"_widget_1734055617059\") # BI洞察\n",
|
||
"\n",
|
||
" payload_dict.update(\n",
|
||
" {\n",
|
||
" \"_widget_1734073342350\": {\"value\": Billing},\n",
|
||
" \"_widget_1735004315757\": {\"value\": Service_Alerts},\n",
|
||
" \"_widget_1735004315756\": {\"value\": membership},\n",
|
||
" \"_widget_1735004315755\": {\"value\": SMS},\n",
|
||
" \"_widget_1735004315754\": {\"value\": Public_domain_applets},\n",
|
||
" \"_widget_1735004315753\": {\"value\": Private_domain_applets},\n",
|
||
" \"_widget_1735004315752\": {\"value\": Test_sheet},\n",
|
||
" \"_widget_1735004315751\": {\"value\": AI_poster},\n",
|
||
" \"_widget_1735004315750\": {\"value\": Business_wallets},\n",
|
||
" \"_widget_1735004315749\": {\"value\": Precision_marketing},\n",
|
||
" \"_widget_1735004315748\": {\"value\": Paid_memberships},\n",
|
||
" \"_widget_1735004315747\": {\"value\": business_WeCom},\n",
|
||
" \"_widget_1735004315746\": {\"value\": Insurance_policy_identification},\n",
|
||
" \"_widget_1735004315745\": {\"value\": Insurance_bots},\n",
|
||
" \"_widget_1735004315744\": {\"value\": Camera_pick_up},\n",
|
||
" \"_widget_1735004315743\": {\"value\": Camera_billing},\n",
|
||
" \"_widget_1735004315742\": {\"value\": Transparent_workshop},\n",
|
||
" \"_widget_1735004315741\": {\"value\": Cross_industry_cooperation},\n",
|
||
" \"_widget_1734073342352\": {\"value\": BI_Insights},\n",
|
||
"\n",
|
||
" }\n",
|
||
" )\n",
|
||
"\n",
|
||
" feature_dict = {\n",
|
||
" \"开单\": \"_widget_1734073342350\",\n",
|
||
" \"服务提醒\": \"_widget_1735004315757\",\n",
|
||
" \"会员卡\": \"_widget_1735004315756\",\n",
|
||
" \"短信\": \"_widget_1735004315755\",\n",
|
||
" \"公域小程序\": \"_widget_1735004315754\",\n",
|
||
" \"私域小程序\": \"_widget_1735004315753\",\n",
|
||
" \"检测单\": \"_widget_1735004315752\",\n",
|
||
" \"AI海报\": \"_widget_1735004315751\",\n",
|
||
" \"企业钱包\": \"_widget_1735004315750\",\n",
|
||
" \"精准营销\": \"_widget_1735004315749\",\n",
|
||
" \"付费会员\": \"_widget_1735004315748\",\n",
|
||
" \"企业微信\": \"_widget_1735004315747\",\n",
|
||
" \"保险单识别\": \"_widget_1735004315746\",\n",
|
||
" \"保险机器人\": \"_widget_1735004315745\",\n",
|
||
" \"摄像头接车\": \"_widget_1735004315744\",\n",
|
||
" \"摄像头开单\": \"_widget_1735004315743\",\n",
|
||
" \"透明车间\": \"_widget_1735004315742\",\n",
|
||
" \"异业合作\": \"_widget_1735004315741\",\n",
|
||
" \"BI洞察\": \"_widget_1734073342352\",\n",
|
||
"\n",
|
||
" }\n",
|
||
" # _widget_1735527329557 下次是否推荐\n",
|
||
" for new_item in self.get_feature_usage:\n",
|
||
" for feature_module, feature_value in feature_dict.items(): # 模块\n",
|
||
" if new_item.get(\"_widget_1735268263079\") == feature_module and new_item.get(\n",
|
||
" \"_widget_1735527329557\") == \"否\" and new_item.get(\"_widget_1735280720550\") == \\\n",
|
||
" row[\"id_own_org\"]: # 下次是否推荐 功能使用情况表\n",
|
||
" print(f\"{feature_value}进行了更改\")\n",
|
||
" payload_dict.update({f\"{feature_value}\": {\"value\": \"×\"}})\n",
|
||
"\n",
|
||
" if new_item.get(\"_widget_1735268263079\") == feature_module and new_item.get(\n",
|
||
" \"_widget_1736414617462\") == \"否\" and new_item.get(\"_widget_1735280720550\") == \\\n",
|
||
" row[\"id_own_org\"]: # 下次是否跟进\n",
|
||
" print(f\"{feature_value}进行了更改\")\n",
|
||
" payload_dict.update({f\"{feature_value}\": {\"value\": \"×\"}})\n",
|
||
"\n",
|
||
" fields_to_check = {\n",
|
||
" \"_widget_1735004315763\": Billing, # 开单\n",
|
||
" \"_widget_1735106258016\": Service_Alerts, # 服务提醒\n",
|
||
" \"_widget_1735106258036\": membership, # 会员卡\n",
|
||
" \"_widget_1735106258086\": SMS, # 短信\n",
|
||
" \"_widget_1735106258112\": Public_domain_applets, # 公域小程序\n",
|
||
" \"_widget_1735106258141\": Private_domain_applets, # 私域小程序\n",
|
||
" \"_widget_1735107354648\": Test_sheet, # 检测单\n",
|
||
" \"_widget_1735107354725\": AI_poster, # AI海报\n",
|
||
" \"_widget_1735107354811\": Business_wallets, # 企业钱包\n",
|
||
" \"_widget_1735107354906\": Precision_marketing, # 精准营销\n",
|
||
" \"_widget_1735107354980\": Paid_memberships, # 付费会员\n",
|
||
" \"_widget_1735107355093\": business_WeCom, # 企业微信\n",
|
||
" \"_widget_1735107355143\": Insurance_policy_identification, # 保险单识别\n",
|
||
" \"_widget_1735107355235\": Insurance_bots, # 保险机器人\n",
|
||
" \"_widget_1735107355333\": Camera_pick_up, # 摄像头接车\n",
|
||
" \"_widget_1735107355392\": Camera_billing, # 摄像头开单\n",
|
||
" \"_widget_1735107355502\": Transparent_workshop, # 透明车间\n",
|
||
" \"_widget_1735107355618\": Cross_industry_cooperation, # 异业合作\n",
|
||
" \"_widget_1735107355740\": BI_Insights # BI洞察\n",
|
||
" }\n",
|
||
"\n",
|
||
" # 遍历每个字段,检查其值并更新payload_dict\n",
|
||
" for widget_id, field_name in fields_to_check.items():\n",
|
||
" if field_name == \"√\":\n",
|
||
" payload_dict.update({widget_id: {\"value\": \"是\"}})\n",
|
||
"\n",
|
||
" break\n",
|
||
"\n",
|
||
" if not Billing:\n",
|
||
" print(f\"权限表请求失败或者权限表无对应关系,权限唯一值是:{NGV_store_level_key}\")\n",
|
||
"\n",
|
||
" if row[\"active_status_fmt\"] == \"活跃\": # 开单 是否使用\n",
|
||
" payload_dict.update({\"_widget_1735004315765\": {\"value\": \"是\"}})\n",
|
||
" else:\n",
|
||
" payload_dict.update({\"_widget_1735004315765\": {\"value\": \"否\"}})\n",
|
||
" try:\n",
|
||
" if row[\"saas_edition_fmt\"] not in [\"基础版\", \"入门版\"]: # 会员卡 是否拥有\n",
|
||
" payload_dict.update({\"_widget_1735106258036\": {\"value\": \"是\"}})\n",
|
||
" else:\n",
|
||
" payload_dict.update({\"_widget_1735106258036\": {\"value\": \"否\"}})\n",
|
||
" except Exception as e:\n",
|
||
" print(f\"会员卡识别:Error finding customer service: {e}\")\n",
|
||
" try:\n",
|
||
" if row[\"card_bill_day_count_last_30_day\"] != \"0\": # 会员卡 是否使用\n",
|
||
" payload_dict.update({\"_widget_1735106258038\": {\"value\": \"是\"}})\n",
|
||
" else:\n",
|
||
" payload_dict.update({\"_widget_1735106258038\": {\"value\": \"否\"}})\n",
|
||
" except Exception as e:\n",
|
||
" print(f\"会员卡识别:Error finding customer service: {e}\")\n",
|
||
" # print(self.service_remind.get(\"_widget_1735112637045\"))\n",
|
||
" payload_dict[\"_widget_1735106258018\"] = {\"value\": \"否\"}\n",
|
||
"\n",
|
||
" for item in self.service_remind:\n",
|
||
" if row[\"id_own_group\"] == item.get(\"_widget_1735112637043\"):\n",
|
||
" if int(item.get(\"_widget_1735112637045\")) < 180 and int(\n",
|
||
" item.get(\"_widget_1735112637046\")) == 1: # 服务提醒 是否使用\n",
|
||
" payload_dict.update({\"_widget_1735106258018\": {\"value\": \"是\"}})\n",
|
||
" break\n",
|
||
" elif int(item.get(\"_widget_1735112637048\")) > 0:\n",
|
||
" payload_dict.update({\"_widget_1735106258018\": {\"value\": \"是\"}})\n",
|
||
" break\n",
|
||
"\n",
|
||
" keys_to_check = [\n",
|
||
" \"_widget_1735113110155\"\n",
|
||
" ] # 智能检测 是否使用\n",
|
||
"\n",
|
||
" # 初始化默认值为\"否\"\n",
|
||
" payload_dict[\"_widget_1735107354650\"] = {\"value\": \"否\"}\n",
|
||
"\n",
|
||
" # 检查每个键,如果有一个大于0,则更新为\"是\"并停止检查\n",
|
||
" for key in keys_to_check:\n",
|
||
" for item in self.Smart_detection:\n",
|
||
" if row[\"id_own_org\"] == item.get(\"_widget_1735113110147\"):\n",
|
||
" if int(item.get(key, 0)) > 0: # 使用get方法并提供默认值0防止键不存在的情况\n",
|
||
" payload_dict[\"_widget_1735107354650\"][\"value\"] = \"是\"\n",
|
||
" break\n",
|
||
"\n",
|
||
" # 近30天业务单量=0 则其它所有模块均不推荐\n",
|
||
" try:\n",
|
||
" for feature_module, feature_value in feature_dict.items(): # 模块\n",
|
||
" if row[\"bill_count_last_30_day\"] == '0' and payload_dict[feature_value][\"value\"] == '△':\n",
|
||
" payload_dict.update({f\"{feature_value}\": {\"value\": \"×\"}})\n",
|
||
" except Exception as e:\n",
|
||
" print(f\"不开单识别:Error finding customer service: {e}\")\n",
|
||
" # 保单识别:从系统中抽取目标门店,针对门店抽取修改是否推荐\n",
|
||
" try:\n",
|
||
" if row[\"org_code\"] in self.widget_list:\n",
|
||
" payload_dict.update({'_widget_1735004315746': {\"value\": \"△\"}})\n",
|
||
" except Exception as e:\n",
|
||
" print(f\"保单识别:Error finding customer service: {e}\")\n",
|
||
" # 私域小程序:根据是否开通微信小程序判断是否使用,旗舰版及以上算拥有\n",
|
||
" try:\n",
|
||
" for item in self.private_domain:\n",
|
||
" if row[\"id_own_group\"] == item.get(\"_widget_1742795002375\"): # 公司id\n",
|
||
" if int(item.get(\"_widget_1742795002379\")) > 0 : # 上架商品数\n",
|
||
" payload_dict.update({\"_widget_1735106258143\": {\"value\": \"是\"}}) # DX:是否拥有\n",
|
||
" break\n",
|
||
" else:\n",
|
||
" payload_dict.update({\"_widget_1735106258143\": {\"value\": \"否\"}}) # DX:是否拥有\n",
|
||
" break\n",
|
||
" except Exception as e:\n",
|
||
" print(f\"私域小程序:Error finding customer service: {e}\")\n",
|
||
" try:\n",
|
||
" high_version = ['皇冠版', '至尊版', '尊享版', '旗舰版']\n",
|
||
" if row[\"saas_edition_fmt\"] in high_version:\n",
|
||
" payload_dict.update({'_widget_1735106258141': {\"value\": \"是\"}}) # SYXCX:是否拥有\n",
|
||
" else:\n",
|
||
" payload_dict.update({'_widget_1735106258141': {\"value\": \"否\"}}) # SYXCX:是否拥有\n",
|
||
" except Exception as e:\n",
|
||
" print(f\"私域小程序:Error finding customer service: {e}\")\n",
|
||
"\n",
|
||
" # 公域小程序:根据是否开通微信小程序判断是否使用,旗舰版及以上算拥有\n",
|
||
" try:\n",
|
||
" for item in self.public_domain:\n",
|
||
" if row[\"id_own_org\"] == item.get(\"_widget_1742784257506\"): # 门店id\n",
|
||
" if int(item.get(\"_widget_1742784257509\")) == 1: # 发布商品数量\n",
|
||
" payload_dict.update({\"_widget_1735106258114\": {\"value\": \"是\"}}) # GYXCX:是否使用\n",
|
||
" break\n",
|
||
" else:\n",
|
||
" payload_dict.update({\"_widget_1735106258114\": {\"value\": \"否\"}}) # GYXCX:是否使用\n",
|
||
" break\n",
|
||
" except Exception as e:\n",
|
||
" print(f\"公域小程序:Error finding customer service: {e}\")\n",
|
||
" try:\n",
|
||
" if row[\"id_own_org\"] in self.public_domain_list:\n",
|
||
" payload_dict.update({'_widget_1735106258112': {\"value\": \"是\"}}) # GYXCX:是否拥有\n",
|
||
" else:\n",
|
||
" payload_dict.update({'_widget_1735106258112': {\"value\": \"否\"}}) # GYXCX:是否拥有\n",
|
||
" except Exception as e:\n",
|
||
" print(f\"公域小程序:Error finding customer service: {e}\")\n",
|
||
" # 异业合作:根据是否存在判断是否拥有,过滤条件 商品名称包含异业两个字\n",
|
||
" try:\n",
|
||
" if row[\"id_own_org\"] in self.different_industries_list:\n",
|
||
" payload_dict.update({'_widget_1735107355618': {\"value\": \"是\"}}) # YYHZ:是否拥有\n",
|
||
" else:\n",
|
||
" payload_dict.update({'_widget_1735107355618': {\"value\": \"否\"}}) # YYHZ:是否拥有\n",
|
||
" except Exception as e:\n",
|
||
" print(f\"异业合作:Error finding customer service: {e}\")\n",
|
||
"\n",
|
||
" # 短信:根据是否启动短信功能判断是否拥有,根据\n",
|
||
" try:\n",
|
||
" for item in self.groupnotification:\n",
|
||
" if row[\"id_own_group\"] == item.get(\"_widget_1743065201885\"): # 公司id\n",
|
||
" if int(item.get(\"_widget_1743065201886\")) == 1: # 是否启动短信功能\n",
|
||
" payload_dict.update({\"_widget_1735106258086\": {\"value\": \"是\"}}) # DX:是否拥有\n",
|
||
" break\n",
|
||
" else:\n",
|
||
" payload_dict.update({\"_widget_1735106258086\": {\"value\": \"否\"}}) # DX:是否拥有\n",
|
||
" break\n",
|
||
" except Exception as e:\n",
|
||
" print(f\"短信:Error finding customer service: {e}\")\n",
|
||
" try:\n",
|
||
" for item in self.groupnotification:\n",
|
||
" if row[\"id_own_group\"] == item.get(\"_widget_1743065201885\"): # 公司id\n",
|
||
" if int(item.get(\"_widget_1743065201889\")) > 0: # 累计发送成功总人数\n",
|
||
" payload_dict.update({\"_widget_1735106258088\": {\"value\": \"是\"}}) # DX:是否使用\n",
|
||
" break\n",
|
||
" else:\n",
|
||
" payload_dict.update({\"_widget_1735106258088\": {\"value\": \"否\"}}) # DX:是否使用\n",
|
||
" break\n",
|
||
" except Exception as e:\n",
|
||
" print(f\"短信:Error finding customer service: {e}\")\n",
|
||
"\n",
|
||
" NGV_data_id = None\n",
|
||
" # 获取关联数据\n",
|
||
" for NGV_Data in self.NGV_data_list:\n",
|
||
" # NGV_Data = NGV_Data.get(\"data\")\n",
|
||
" if row[\"org_code\"] == NGV_Data.get(\"_widget_1734062123071\"): # 门店编码\n",
|
||
" NGV_data_id = NGV_Data.get(\"_id\")\n",
|
||
" print(NGV_data_id)\n",
|
||
" try:\n",
|
||
" png_url = NGV_Data.get('_widget_1742890765211', {})[0].get('url', \"\")\n",
|
||
" except:\n",
|
||
" png_url = \"\"\n",
|
||
" print(png_url)\n",
|
||
" if not NGV_data_id:\n",
|
||
" print(\"未找到数据ID\")\n",
|
||
"\n",
|
||
" distribution_date = datetime.datetime.now(datetime.timezone.utc)\n",
|
||
" distribution_date = distribution_date.strftime('%Y-%m-%dT%H:%M:%S.%f')[:-3] + 'Z'\n",
|
||
"\n",
|
||
" upload_key = None\n",
|
||
" UUid = time.strftime(\"%Y%m%d%H%M%S\", time.localtime())\n",
|
||
" if png_url:\n",
|
||
" save_dir = \"sampleCloud\" # 设置输出目录\n",
|
||
"\n",
|
||
" # 创建输出目录(如果不存在)\n",
|
||
" import os\n",
|
||
"\n",
|
||
" os.makedirs(save_dir, exist_ok=True)\n",
|
||
"\n",
|
||
" save_path = fr'{save_dir}\\png\\{time.strftime(\"%Y%m%d%H%M%S\", time.localtime())}.png'\n",
|
||
"\n",
|
||
"\n",
|
||
"\n",
|
||
" NewServicesRevisit.download_url_content(png_url, save_path)\n",
|
||
"\n",
|
||
" up_data = api_instance.get_upload_token(\n",
|
||
" {\"api_key\": \"675b900991ad2491c69389ca\", \"entry_id\": \"675b9c63925cd404038a6b86\",\n",
|
||
" \"transaction_id\": UUid})\n",
|
||
"\n",
|
||
" upload_url=up_data.get(\"upload_url\")\n",
|
||
" upload_token=up_data.get(\"upload_token\")\n",
|
||
"\n",
|
||
" upload_result = api_instance.upload_file(\n",
|
||
" {\"upload_url\": upload_url, \"upload_token\": upload_token, \"file_path\": save_path})\n",
|
||
" upload_key = upload_result.get(\"key\")\n",
|
||
" # print(\"已上传文件\")\n",
|
||
" # print(upload_result)\n",
|
||
"\n",
|
||
" # print(upload_key)\n",
|
||
"\n",
|
||
" payload_dict.update({\n",
|
||
" \"_widget_1734590278279\": {\"value\": row[\"group_name\"]}, # 公司名称\n",
|
||
" \"_widget_1735112931760\": {\"value\": row[\"id_own_group\"]}, # 公司id\n",
|
||
" \"_widget_1735112931761\": {\"value\": row[\"id_own_org\"]}, # 门店id\n",
|
||
" \"_widget_1734590278281\": {\"value\": row['org_name']}, # 门店名称\n",
|
||
" \"_widget_1734590278292\": {\"value\": row[\"跟进阶段\"]}, # 跟进阶段\n",
|
||
" \"_widget_1734321349021\": {\"value\": NGV_data_id}, # 关data_get联数据\n",
|
||
" \"_widget_1742548684369\": {\"value\": row['主要目的']}, # 主要目的\n",
|
||
" \"_widget_1734590278266\": {\"value\": row['region_name']}, # 大区\n",
|
||
" \"_widget_1734590278285\": {\"value\": row['branch_name']}, # 小区\n",
|
||
" \"_widget_1734590278284\": {\"value\": row['province_name']}, # 省\n",
|
||
" \"_widget_1734590278283\": {\"value\": row['city_name']}, # 市\n",
|
||
" \"_widget_1734590278282\": {\"value\": row['area_name']}, # 区\n",
|
||
" \"_widget_1734590278278\": {\"value\": row['saas_customer_type']}, # 门店分层\n",
|
||
" \"_widget_1734590278277\": {\"value\": row['group_grade']}, # 公司等级\n",
|
||
" \"_widget_1734590278276\": {\"value\": row['limit_user_type']}, # 限制账户类型\n",
|
||
" \"_widget_1734590278275\": {\"value\": row['active_user_type']}, # 有效账户类型\n",
|
||
" \"_widget_1734590278274\": {\"value\": row['saas_version']}, # ERP操作模式\n",
|
||
" \"_widget_1734590278273\": {\"value\": row['saas_use_year']}, # 使用时长\n",
|
||
" \"_widget_1734590278272\": {\"value\": row['org_stage']}, # 门店阶段\n",
|
||
" \"_widget_1734590278271\": {\"value\": row['manage_model']}, # 经营模式\n",
|
||
" \"_widget_1734590278267\": {\"value\": row['contacts']}, # 联系人\n",
|
||
" \"_widget_1734590278287\": {\"value\": row['contact_mobile']}, # 联系手机号\n",
|
||
" \"_widget_1734590278286\": {\"value\": row['saas_edition_fmt']}, # SaaS版本\n",
|
||
" \"_widget_1734590278280\": {\"value\": row['org_code']}, # 门店编码\n",
|
||
" \"_widget_1735096489244\": {\"value\": distribution_date}, # 派发时间\n",
|
||
" \"_widget_1742895342914\": {\"value\": row['business_scope_fmt']}, # 经营范围\n",
|
||
" \"_widget_1742895342915\": {\"value\": row['station_number']}, # 工位数\n",
|
||
" \"_widget_1742895342916\": {\"value\": [upload_key]} # 门头照片\n",
|
||
" })\n",
|
||
"\n",
|
||
" routine_follow_up_payload = {\n",
|
||
" \"api_key\": \"675b900991ad2491c69389ca\",\n",
|
||
" \"entry_id\": \"675b9c63925cd404038a6b86\",\n",
|
||
" \"is_start_workflow\": \"true\",\n",
|
||
" \"data\": payload_dict,\n",
|
||
" \"transaction_id\": UUid\n",
|
||
" }\n",
|
||
"\n",
|
||
" print(routine_follow_up_payload)\n",
|
||
"\n",
|
||
" # res = api_instance.data_batch_create(routine_follow_up_payload)\n",
|
||
" # logger.info(f\"创建结果:{res}\")\n",
|
||
" except:\n",
|
||
" pass\n",
|
||
" self.up_JDY_status(up_jdy_date,up_jdy_start_time)\n",
|
||
"\n",
|
||
"\n",
|
||
"if __name__ == '__main__':\n",
|
||
" start = NewServicesRevisit()\n",
|
||
" start.main()\n"
|
||
],
|
||
"id": "423d41450c64cdfa",
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"当前日期: 2025-04-16\n",
|
||
"遍历日期: 2025-04-15\n",
|
||
"遍历次数: 1\n",
|
||
"开始运行main\n",
|
||
"1\n",
|
||
"SaaS开户回访日期: 2024-10-25 2025-01-23\n",
|
||
"18 20250325\n",
|
||
"SaaS开户回访人数: 18\n",
|
||
" date_id date_fmt id_own_group group_name \\\n",
|
||
"1436 20250415 2025-04-15 11240984669918283550 桐乡市志勇汽车维修有限公司 \n",
|
||
"1545 20250415 2025-04-15 11240984669918282040 中石化南昌分公司 \n",
|
||
"1546 20250415 2025-04-15 11240984669918281045 鹏洋商贸 \n",
|
||
"1658 20250415 2025-04-15 11240984669918283549 阿克苏市浩创车品汽车用品经营中心 \n",
|
||
"1666 20250415 2025-04-15 11240984669918282042 霍城县诚峰鲸鲨养车服务部 \n",
|
||
"9211 20250415 2025-04-15 10546172455191817876 脉博汽车生活馆(紫萱路店) \n",
|
||
"18856 20250415 2025-04-15 11240984669917372028 奥驰汽车服务中心(白云区大朗店) \n",
|
||
"39649 20250415 2025-04-15 11240984669918180516 汽帜汽车服务中心 \n",
|
||
"39675 20250415 2025-04-15 11240984669918180020 平舆县舆强汽车服务有限公司 \n",
|
||
"39694 20250415 2025-04-15 11240984669918182517 亳州铂之驰汽车服务有限公司 \n",
|
||
"39697 20250415 2025-04-15 11240984669918182019 西宁市城西区轩德汽车维修中心 \n",
|
||
"39722 20250415 2025-04-15 11240984669918182017 华豪汽修 \n",
|
||
"39733 20250415 2025-04-15 11240984669918181521 宜章县玖昌成汽车销售服务有限公司 \n",
|
||
"39737 20250415 2025-04-15 11240984669918182018 临清市车轰轰汽修店(个体工商户) \n",
|
||
"39747 20250415 2025-04-15 11240984669918180024 西宁市城中区金良汽车修理厂 \n",
|
||
"39751 20250415 2025-04-15 11240984669918181017 湖南华洋车管家科技服务有限公司 \n",
|
||
"39788 20250415 2025-04-15 11240984669918184018 武汉捷弛汽车服务有限公司潜江分公司 \n",
|
||
"39832 20250415 2025-04-15 11240984669918185516 慈利美鸿汽车服务中心 \n",
|
||
"\n",
|
||
" id_own_org org_name org_code group_grade \\\n",
|
||
"1436 11240984669918289552 桐乡市维卡特汽车维修有限公司 CHS202501230290145 重要客户(SVIP) \n",
|
||
"1545 11240984669918288040 中石化南昌分公司 CHS202501230290135 区域KA(MVP) \n",
|
||
"1546 11240984669918287047 鹏洋商贸 CHS202501230290134 普通客户(VIP) \n",
|
||
"1658 11240984669918289551 胜牌润滑油三滤电瓶 CHS202501230290143 普通客户(VIP) \n",
|
||
"1666 11240984669918288044 诚峰鲸鲨养车 CHS202501230290147 普通客户(VIP) \n",
|
||
"9211 10546172455191817697 杭州脉博汽车服务有限公司 CHS201812240004974 普通客户(VIP) \n",
|
||
"18856 11240984669917379028 奥驰汽车服务中心(白云区大朗店) CHS202205190180002 普通客户(VIP) \n",
|
||
"39649 11240984669918189016 汽帜汽车服务中心 CHS202410250284130 重要客户(SVIP) \n",
|
||
"39675 11240984669918188520 舆强汽车服务中心 CHS202410250284136 普通客户(VIP) \n",
|
||
"39694 11240984669918190518 亳州铂之驰汽车服务有限公司 CHS202410250284143 普通客户(VIP) \n",
|
||
"39697 11240984669918191019 老任修车 CHS202410250284150 普通客户(VIP) \n",
|
||
"39722 11240984669918191017 华豪汽修 CHS202410250284140 普通客户(VIP) \n",
|
||
"39733 11240984669918190021 宜章县玖昌成汽车销售服务有限公司 CHS202410250284173 普通客户(VIP) \n",
|
||
"39737 11240984669918191018 临清车轰轰 CHS202410250284148 重要客户(SVIP) \n",
|
||
"39747 11240984669918188524 西宁市城中区金良汽车修理厂 CHS202410250284156 重要客户(SVIP) \n",
|
||
"39751 11240984669918189517 华洋车生活(青山店) CHS202410250284141 普通客户(VIP) \n",
|
||
"39788 11240984669918192518 潜江捷弛汽车服务 CHS202410250284180 重要客户(SVIP) \n",
|
||
"39832 11240984669918194016 美鸿汽车电子科技 CHS202410250284202 普通客户(VIP) \n",
|
||
"\n",
|
||
" org_type org_status ... edition_rank customer_type_rank \\\n",
|
||
"1436 一般 留存 ... 4 1 \n",
|
||
"1545 一般 留存 ... 3 3 \n",
|
||
"1546 一般 留存 ... 7 3 \n",
|
||
"1658 一般 留存 ... 7 3 \n",
|
||
"1666 一般 留存 ... 7 3 \n",
|
||
"9211 一般 留存 ... 5 2 \n",
|
||
"18856 一般 留存 ... 7 3 \n",
|
||
"39649 一般 留存 ... 6 1 \n",
|
||
"39675 一般 留存 ... 6 3 \n",
|
||
"39694 一般 留存 ... 5 3 \n",
|
||
"39697 一般 留存 ... 5 3 \n",
|
||
"39722 一般 留存 ... 7 5 \n",
|
||
"39733 一般 留存 ... 5 3 \n",
|
||
"39737 一般 留存 ... 6 1 \n",
|
||
"39747 一般 留存 ... 6 1 \n",
|
||
"39751 一般 留存 ... 4 3 \n",
|
||
"39788 一般 留存 ... 5 0 \n",
|
||
"39832 一般 留存 ... 7 4 \n",
|
||
"\n",
|
||
" group_grade_rank max_saas_edition max_saas_customer_type \\\n",
|
||
"1436 2 标准版 E \n",
|
||
"1545 1 旗舰版 C \n",
|
||
"1546 3 入门版 C \n",
|
||
"1658 3 入门版 C \n",
|
||
"1666 3 入门版 C \n",
|
||
"9211 3 进阶版 D \n",
|
||
"18856 3 入门版 C \n",
|
||
"39649 2 基础版 E \n",
|
||
"39675 3 基础版 C \n",
|
||
"39694 3 进阶版 C \n",
|
||
"39697 3 进阶版 C \n",
|
||
"39722 3 入门版 A \n",
|
||
"39733 3 进阶版 C \n",
|
||
"39737 2 基础版 E \n",
|
||
"39747 2 基础版 E \n",
|
||
"39751 3 标准版 C \n",
|
||
"39788 2 进阶版 F \n",
|
||
"39832 3 入门版 B \n",
|
||
"\n",
|
||
" max_group_grade 条件 exists_in_ngvv2 跟进阶段 \\\n",
|
||
"1436 重要客户(SVIP) True NaN 新签后90天 \n",
|
||
"1545 区域KA(MVP) True NaN 新签后90天 \n",
|
||
"1546 普通客户(VIP) True NaN 新签后90天 \n",
|
||
"1658 普通客户(VIP) True NaN 新签后90天 \n",
|
||
"1666 普通客户(VIP) True NaN 新签后90天 \n",
|
||
"9211 普通客户(VIP) True NaN 新签后180天 \n",
|
||
"18856 普通客户(VIP) True NaN 新签后180天 \n",
|
||
"39649 重要客户(SVIP) True NaN 新签后180天 \n",
|
||
"39675 普通客户(VIP) True NaN 新签后180天 \n",
|
||
"39694 普通客户(VIP) True NaN 新签后180天 \n",
|
||
"39697 普通客户(VIP) True NaN 新签后180天 \n",
|
||
"39722 普通客户(VIP) True NaN 新签后180天 \n",
|
||
"39733 普通客户(VIP) True NaN 新签后180天 \n",
|
||
"39737 重要客户(SVIP) True NaN 新签后180天 \n",
|
||
"39747 重要客户(SVIP) True NaN 新签后180天 \n",
|
||
"39751 普通客户(VIP) True NaN 新签后180天 \n",
|
||
"39788 重要客户(SVIP) True NaN 新签后180天 \n",
|
||
"39832 普通客户(VIP) True NaN 新签后180天 \n",
|
||
"\n",
|
||
" 主要目的 \n",
|
||
"1436 关怀使用情况,解答使用问题,强化培训,挖掘增购商机。 \n",
|
||
"1545 关怀使用情况,解答使用问题,强化培训,挖掘增购商机。 \n",
|
||
"1546 关怀使用情况,解答使用问题,强化培训,挖掘增购商机。 \n",
|
||
"1658 关怀使用情况,解答使用问题,强化培训,挖掘增购商机。 \n",
|
||
"1666 关怀使用情况,解答使用问题,强化培训,挖掘增购商机。 \n",
|
||
"9211 关怀使用情况,邀约转介绍,跟进增购商机,识别首年续约风险,及时跟进提报。 \n",
|
||
"18856 关怀使用情况,邀约转介绍,跟进增购商机,识别首年续约风险,及时跟进提报。 \n",
|
||
"39649 关怀使用情况,邀约转介绍,跟进增购商机,识别首年续约风险,及时跟进提报。 \n",
|
||
"39675 关怀使用情况,邀约转介绍,跟进增购商机,识别首年续约风险,及时跟进提报。 \n",
|
||
"39694 关怀使用情况,邀约转介绍,跟进增购商机,识别首年续约风险,及时跟进提报。 \n",
|
||
"39697 关怀使用情况,邀约转介绍,跟进增购商机,识别首年续约风险,及时跟进提报。 \n",
|
||
"39722 关怀使用情况,邀约转介绍,跟进增购商机,识别首年续约风险,及时跟进提报。 \n",
|
||
"39733 关怀使用情况,邀约转介绍,跟进增购商机,识别首年续约风险,及时跟进提报。 \n",
|
||
"39737 关怀使用情况,邀约转介绍,跟进增购商机,识别首年续约风险,及时跟进提报。 \n",
|
||
"39747 关怀使用情况,邀约转介绍,跟进增购商机,识别首年续约风险,及时跟进提报。 \n",
|
||
"39751 关怀使用情况,邀约转介绍,跟进增购商机,识别首年续约风险,及时跟进提报。 \n",
|
||
"39788 关怀使用情况,邀约转介绍,跟进增购商机,识别首年续约风险,及时跟进提报。 \n",
|
||
"39832 关怀使用情况,邀约转介绍,跟进增购商机,识别首年续约风险,及时跟进提报。 \n",
|
||
"\n",
|
||
"[18 rows x 151 columns]\n"
|
||
]
|
||
}
|
||
],
|
||
"execution_count": 29
|
||
},
|
||
{
|
||
"metadata": {
|
||
"ExecuteTime": {
|
||
"end_time": "2025-04-17T01:24:51.050537Z",
|
||
"start_time": "2025-04-17T01:11:42.429234Z"
|
||
}
|
||
},
|
||
"cell_type": "code",
|
||
"source": [
|
||
"import os\n",
|
||
"import time\n",
|
||
"\n",
|
||
"import requests\n",
|
||
"\n",
|
||
"from api import API\n",
|
||
"from back_ground_module import CommonModule\n",
|
||
"import pandas as pd\n",
|
||
"import datetime\n",
|
||
"import re\n",
|
||
"from log_config import configure_task_logger, configure_error_task_logger\n",
|
||
"\n",
|
||
"api_instance = API()\n",
|
||
"common_module = CommonModule()\n",
|
||
"# start_time = datetime.datetime.now()\n",
|
||
"\n",
|
||
"# 获取已经配置好的常规日志记录器\n",
|
||
"logger = configure_task_logger()\n",
|
||
"\n",
|
||
"# 获取已经配置好的错误任务日志记录器\n",
|
||
"error_task_logger = configure_error_task_logger()\n",
|
||
"\n",
|
||
"\n",
|
||
"class RenewServicesRevisit:\n",
|
||
" def __init__(self):\n",
|
||
" self.index = None\n",
|
||
" self.data_NGV = None\n",
|
||
" self.date_list = None\n",
|
||
" self.Smart_detection = None\n",
|
||
" self.service_remind = None\n",
|
||
" self.json_list = []\n",
|
||
" self.NGV_data_list = None\n",
|
||
" self.permissions_table = None\n",
|
||
" self.staff_id_list = None\n",
|
||
" self.get_feature_usage = None\n",
|
||
" self.policy_recognition = None\n",
|
||
" self.widget_list = None\n",
|
||
" self.private_domain = None\n",
|
||
" self.public_domain = None\n",
|
||
" self.public_domain_list = None\n",
|
||
" self.different_industries = None\n",
|
||
" self.different_industries_list = None\n",
|
||
" self.groupnotification = None\n",
|
||
"\n",
|
||
" def load_all_data(self):\n",
|
||
" \"\"\"加载所有必要的数据表\"\"\"\n",
|
||
" # 省市区人员关系表\n",
|
||
" payload = {\"api_key\": \"675b900991ad2491c69389ca\", \"entry_id\": \"676512ac3e54dc3159460c0a\"}\n",
|
||
" json_dict = api_instance.entry_data_list(payload)\n",
|
||
" if json_dict and \"data\" in json_dict:\n",
|
||
" self.json_list = json_dict.get(\"data\")\n",
|
||
" else:\n",
|
||
" print(\"加载省市区人员关系表失败\")\n",
|
||
" self.json_list = []\n",
|
||
"\n",
|
||
" # 获取简道云员工id\n",
|
||
" payload = {\"api_key\": \"6694d3c4fcb69ca9a111a6c4\",\n",
|
||
" \"entry_id\": \"6769204a1902c9341340a1bc\",\n",
|
||
" }\n",
|
||
" staff_id = api_instance.entry_data_list(payload)\n",
|
||
" self.staff_id_list = staff_id.get(\"data\") # api请求格式,将数据封装在data字典里\n",
|
||
"\n",
|
||
" # 获取权限表信息\n",
|
||
" payload = {\"api_key\": \"675b900991ad2491c69389ca\", \"entry_id\": \"675b96c14e839f90fef1647c\"}\n",
|
||
" self.permissions_table = api_instance.entry_data_list(payload).get(\"data\")\n",
|
||
"\n",
|
||
" # 获取NGV数据\n",
|
||
" payload = {\"api_key\": \"675b900991ad2491c69389ca\", \"entry_id\": \"675bb02bd2d53c2034c665e4\"}\n",
|
||
" self.NGV_data_list = api_instance.entry_data_list(payload).get(\"data\")\n",
|
||
" # print(\"NGV获取后的类型:\", type(self.NGV_data_list))\n",
|
||
"\n",
|
||
" # 获取服务提醒-数据支持表单数据\n",
|
||
" payload = {\"api_key\": \"675b900991ad2491c69389ca\", \"entry_id\": \"676bb7bda3029720f1083e99\"}\n",
|
||
" self.service_remind = api_instance.entry_data_list(payload).get(\"data\")\n",
|
||
"\n",
|
||
" # 获取智能检测-数据支持表单数据\n",
|
||
" payload = {\"api_key\": \"675b900991ad2491c69389ca\", \"entry_id\": \"676bb99649ab3ac975af6e39\"}\n",
|
||
" self.Smart_detection = api_instance.entry_data_list(payload).get(\"data\")\n",
|
||
"\n",
|
||
" # 获取功能使用情况表\n",
|
||
" payload = {\"api_key\": \"675b900991ad2491c69389ca\", \"entry_id\": \"6763bbf657bd8fb76fcb41b2\"}\n",
|
||
" self.get_feature_usage = api_instance.entry_data_list(payload).get(\"data\", [])\n",
|
||
"\n",
|
||
" # 获取保单识别表\n",
|
||
" payload = {\"api_key\": \"675b900991ad2491c69389ca\", \"entry_id\": \"6773a60d30ed87ff9f68d3c5\"}\n",
|
||
" self.policy_recognition = api_instance.entry_data_list(payload).get(\"data\")\n",
|
||
" # 提取 _widget_1735632397600 的值并存储在列表中\n",
|
||
" self.widget_list = [item['_widget_1735632397600'] for item in self.policy_recognition]\n",
|
||
"\n",
|
||
" # 获取私域小程序-数据支持表单数据\n",
|
||
" payload = {\"api_key\": \"675b900991ad2491c69389ca\", \"entry_id\": \"67e0f0fae622896749ba5087\"}\n",
|
||
" self.private_domain = api_instance.entry_data_list(payload).get(\"data\", [])\n",
|
||
" # 提取 _widget_1742795002375 的值并存储在列表中\n",
|
||
" # self.private_domain_list = [item['_widget_1742795002375'] for item in self.private_domain]\n",
|
||
"\n",
|
||
" # 获取公域小程序-数据支持表单数据\n",
|
||
" payload = {\"api_key\": \"675b900991ad2491c69389ca\", \"entry_id\": \"67e0c702c8f603b997980999\"}\n",
|
||
" self.public_domain = api_instance.entry_data_list(payload).get(\"data\", [])\n",
|
||
" # 提取 _widget_1742784257506 的值并存储在列表中\n",
|
||
" self.public_domain_list = [item['_widget_1742784257506'] for item in self.public_domain]\n",
|
||
"\n",
|
||
" # 获取异业合作-数据支持表单数据\n",
|
||
" payload = {\"api_key\": \"675b900991ad2491c69389ca\", \"entry_id\": \"67e24fdd8dfcfa918e17c30b\"}\n",
|
||
" self.different_industries = api_instance.entry_data_list(payload).get(\"data\", [])\n",
|
||
" # 提取 _widget_1742784257506 的值并存储在列表中\n",
|
||
" self.different_industries_list = [item['_widget_1742884829007'] for item in self.different_industries]\n",
|
||
"\n",
|
||
" # 获取短信-数据支持表单数据\n",
|
||
" payload = {\"api_key\": \"675b900991ad2491c69389ca\", \"entry_id\": \"67e5107198ba1b20d5df3974\"}\n",
|
||
" self.groupnotification = api_instance.entry_data_list(payload).get(\"data\", [])\n",
|
||
"\n",
|
||
" @staticmethod\n",
|
||
" def download_url_content(url, save_path):\n",
|
||
" \"\"\"\n",
|
||
" 下载指定 URL 的内容并保存到本地文件。\n",
|
||
"\n",
|
||
" :param url: 要下载内容的 URL\n",
|
||
" :param save_path: 保存文件的路径\n",
|
||
" \"\"\"\n",
|
||
" try:\n",
|
||
" # 发送 GET 请求以获取内容\n",
|
||
" response = requests.get(url, stream=True)\n",
|
||
" response.raise_for_status() # 如果响应状态码不是 200,抛出异常\n",
|
||
"\n",
|
||
" # 确保保存目录存在\n",
|
||
" os.makedirs(os.path.dirname(save_path), exist_ok=True)\n",
|
||
"\n",
|
||
" # 将内容写入文件\n",
|
||
" with open(save_path, 'wb') as file:\n",
|
||
" for chunk in response.iter_content(chunk_size=8192): # 分块写入,避免占用过多内存\n",
|
||
" if chunk: # 过滤掉空块\n",
|
||
" file.write(chunk)\n",
|
||
"\n",
|
||
" print(f\"文件已成功保存到 {save_path}\")\n",
|
||
"\n",
|
||
" except requests.exceptions.RequestException as e:\n",
|
||
" print(f\"下载失败: {e}\")\n",
|
||
" except Exception as e:\n",
|
||
" print(f\"发生错误: {e}\")\n",
|
||
"\n",
|
||
" @staticmethod\n",
|
||
" def build_index(json_list):\n",
|
||
" index = {}\n",
|
||
" for json_item in json_list:\n",
|
||
" try:\n",
|
||
" key = (json_item['_widget_1734677164861'], json_item['_widget_1734677164862'],\n",
|
||
" json_item['_widget_1734677164863']) # 省市区\n",
|
||
" if '_widget_1734677164871' not in json_item: # 日常回访客服\n",
|
||
" raise KeyError(\"缺少 '日常回访客服' 键\")\n",
|
||
" index[key] = json_item\n",
|
||
" except KeyError as e:\n",
|
||
" print(f\"警告:{e},跳过该条记录: {json_item}\")\n",
|
||
" continue\n",
|
||
" return index\n",
|
||
"\n",
|
||
" @staticmethod\n",
|
||
" def find_customer_service(province_name, city_name, area_name, index):\n",
|
||
" key = (province_name, city_name, area_name)\n",
|
||
" # print(index)\n",
|
||
" if key not in index:\n",
|
||
" return \"数据缺失: 未找到对应的日常回访客服\"\n",
|
||
"\n",
|
||
" return index[key]\n",
|
||
"\n",
|
||
" @staticmethod\n",
|
||
" def remove_parentheses(text: str) -> str:\n",
|
||
" # 使用正则表达式匹配并去除括号及其内容\n",
|
||
" # \\s* 表示匹配零个或多个空白字符(处理括号前后可能存在的空格)\n",
|
||
" # $ 和 $ 分别表示匹配左括号和右括号\n",
|
||
" # 中间的 .*? 表示非贪婪地匹配任意数量的字符(包括没有字符的情况)\n",
|
||
" cleaned_text = re.sub(r'\\s*$.*?$\\s*', '', text)\n",
|
||
" # 为了确保同时处理中文括号,再进行一次替换\n",
|
||
" cleaned_text = re.sub(r'\\s*(.*?)\\s*', '', cleaned_text)\n",
|
||
" return cleaned_text.strip() # 去除两端多余的空白字符\n",
|
||
"\n",
|
||
" @staticmethod\n",
|
||
" def get_staff_id(row_item, name):\n",
|
||
" \"\"\"辅助函数,用于获取员工ID\"\"\"\n",
|
||
" if str(row_item[\"_widget_1734942794144\"]) == str(name): # 检查姓名是否匹配\n",
|
||
" return row_item[\"_widget_1734942794145\"] # 返回员工ID\n",
|
||
" return None\n",
|
||
"\n",
|
||
" def assign_customer_service(self, province_name, city_name, area_name, index):\n",
|
||
" \"\"\"根据省市区派发给日常回访客服\"\"\"\n",
|
||
" try:\n",
|
||
" customer_service_info = self.find_customer_service(province_name, city_name, area_name, index)\n",
|
||
" relationship_manager = customer_service_info.get('_widget_1734677164864', {}).get('username') # 运营顾问\n",
|
||
" customer_service = customer_service_info.get('_widget_1734677164871', {}).get('username') # 日常回访客服\n",
|
||
" technician = customer_service_info.get('_widget_1734677164866', {}).get('username')\n",
|
||
" area_manager = customer_service_info.get('_widget_1734677164865', {}).get('username')\n",
|
||
" return relationship_manager, customer_service, technician, area_manager\n",
|
||
" except Exception as e:\n",
|
||
" print(f\"Error finding customer service: {e}\")\n",
|
||
" return \"分配失败,请检查\", \"分配失败,请检查\", \"分配失败,请检查\"\n",
|
||
"\n",
|
||
" def calculate_date_one(self, start_offset=0):\n",
|
||
" \"\"\"\n",
|
||
" 计算从当前日期(或指定偏移量的日期)开始,往前遍历遇到date_list中日期的次数。\n",
|
||
"\n",
|
||
" 参数:\n",
|
||
" - start_offset: 从当前日期起始的天数偏移量,默认为0(即今天)。负数表示过去,正数表示未来。\n",
|
||
"\n",
|
||
" 返回:\n",
|
||
" - date_one: 遍历到date_list中日期的次数。\n",
|
||
" \"\"\"\n",
|
||
" # 设置起始日期\n",
|
||
" now_time = datetime.datetime.now() + datetime.timedelta(days=start_offset)\n",
|
||
"\n",
|
||
" # 初始化计数器\n",
|
||
" date_one = 1\n",
|
||
"\n",
|
||
" # 检查起始日期是否在date_list中\n",
|
||
" if now_time.strftime(\"%Y-%m-%d\") in self.date_list:\n",
|
||
" date_one = 0\n",
|
||
" print(\"开始次数:\", date_one)\n",
|
||
"\n",
|
||
" print(\"当前日期:\", now_time.strftime(\"%Y-%m-%d\"))\n",
|
||
"\n",
|
||
" # 遍历日期\n",
|
||
" for i in range(1, 10):\n",
|
||
" new_date = now_time + datetime.timedelta(days=-i)\n",
|
||
" new_date_str = new_date.strftime(\"%Y-%m-%d\")\n",
|
||
" print(\"遍历日期:\", new_date_str)\n",
|
||
" if new_date_str in self.date_list:\n",
|
||
" date_one += 1\n",
|
||
" print(\"节假日期:\", new_date_str)\n",
|
||
" else:\n",
|
||
" break\n",
|
||
"\n",
|
||
" print(\"遍历次数:\", date_one)\n",
|
||
" return date_one\n",
|
||
"\n",
|
||
" def main(self):\n",
|
||
" # 主店过期,分店设置为主店\n",
|
||
" global png_url, upload_key\n",
|
||
" self.load_all_data()\n",
|
||
" self.date_list = common_module.get_holiday_list() # 获取一年中的节假日\n",
|
||
" date_one = self.calculate_date_one(start_offset=0)\n",
|
||
" self.data_NGV = common_module.get_ngv_details(days_back=1) # 获取data_NGV 并转为str\n",
|
||
" self.index = self.build_index(self.json_list)\n",
|
||
"\n",
|
||
" # 将A列和B列的日期字符串转换为日期格式\n",
|
||
" data_NGV = self.data_NGV.copy()\n",
|
||
" # data_NGV.to_csv(\"dayin.csv\")\n",
|
||
" data_NGV['A'] = pd.to_datetime(data_NGV['expiry_time'])\n",
|
||
" data_NGV['B'] = pd.to_datetime(data_NGV['renew_date'])\n",
|
||
"\n",
|
||
" def replace_values(series):\n",
|
||
" # 使用条件判断来进行替换\n",
|
||
" return series.apply(lambda x: '' if pd.isna(x) or x in ['NA', 'None', ''] else x)\n",
|
||
"\n",
|
||
" # 对整个DataFrame的所有列应用替换函数\n",
|
||
"\n",
|
||
" # 处理字符串数据并显式指定数据类型\n",
|
||
" data_NGV = data_NGV.apply(replace_values)\n",
|
||
" # data_NGV.to_csv(\"dayinNGV.csv\")\n",
|
||
"\n",
|
||
" # 定义优先级顺序\n",
|
||
" edition_order = ['皇冠版', '至尊版', '尊享版', '旗舰版', '标准版', '进阶版', '基础版', '入门版']\n",
|
||
" customer_type_order = [\"F\", \"E\", \"D\", \"C\", \"B\", \"A\"] # 索引越小优先级越高\n",
|
||
" group_grade_order = ['全国KA(FMVP)', '区域KA(MVP)', '重要客户(SVIP)', '普通客户(VIP)']\n",
|
||
"\n",
|
||
" # 创建映射字典,并为不在列表中的值设置默认值\n",
|
||
" edition_map = {edition: idx for idx, edition in enumerate(edition_order)}\n",
|
||
" customer_type_map = {ctype: idx for idx, ctype in enumerate(customer_type_order)}\n",
|
||
" group_grade_map = {grade: idx for idx, grade in enumerate(group_grade_order)}\n",
|
||
"\n",
|
||
" # 添加用于排序的新列,并处理不在映射字典中的值\n",
|
||
" data_NGV['edition_rank'] = data_NGV['saas_edition_fmt'].map(edition_map).fillna(0).astype(\n",
|
||
" int) # 缺失值用最高优先级填充\n",
|
||
" data_NGV['customer_type_rank'] = data_NGV['saas_customer_type'].map(customer_type_map).fillna(0).astype(int)\n",
|
||
" data_NGV['group_grade_rank'] = data_NGV['group_grade'].map(group_grade_map).fillna(0).astype(int)\n",
|
||
" # data_NGV.to_csv(\"88855.csv\")\n",
|
||
"\n",
|
||
" # 找到每组中 edition_rank 最小值对应的行\n",
|
||
" best_edition_idx = data_NGV.groupby('id_own_group')['edition_rank'].idxmin()\n",
|
||
" best_edition_rows = data_NGV.loc[best_edition_idx]\n",
|
||
" best_edition_rows['max_saas_edition'] = best_edition_rows['saas_edition_fmt']\n",
|
||
"\n",
|
||
" # 找到每组中 customer_type_rank 最小值对应的行\n",
|
||
" best_customer_type_idx = data_NGV.groupby('id_own_group')['customer_type_rank'].idxmin()\n",
|
||
" best_customer_type_rows = data_NGV.loc[best_customer_type_idx]\n",
|
||
" best_customer_type_rows['max_saas_customer_type'] = best_customer_type_rows['customer_type_rank'].apply(\n",
|
||
" lambda x: customer_type_order[x])\n",
|
||
"\n",
|
||
" # 找到每组中 group_grade_rank 最小值对应的行\n",
|
||
" best_group_grade_idx = data_NGV.groupby('id_own_group')['group_grade_rank'].idxmin()\n",
|
||
" best_group_grade_rows = data_NGV.loc[best_group_grade_idx]\n",
|
||
" best_group_grade_rows['max_group_grade'] = best_group_grade_rows['group_grade']\n",
|
||
"\n",
|
||
" # 合并最佳值回到原数据集\n",
|
||
" best_values = (\n",
|
||
" best_edition_rows[['id_own_group', 'max_saas_edition']]\n",
|
||
" .merge(best_customer_type_rows[['id_own_group', 'max_saas_customer_type']], on='id_own_group',\n",
|
||
" how='outer')\n",
|
||
" .merge(best_group_grade_rows[['id_own_group', 'max_group_grade']], on='id_own_group', how='outer')\n",
|
||
" )\n",
|
||
"\n",
|
||
" # 将最佳值合并回原数据集\n",
|
||
" data_NGV = data_NGV.merge(best_values, on='id_own_group', how='left')\n",
|
||
"\n",
|
||
" condition = (data_NGV['is_main_org'] == 1) & (data_NGV['org_status'] == '过期') # 步骤2: 过滤条件\n",
|
||
"\n",
|
||
" ngvv2 = data_NGV[condition]\n",
|
||
" # ngvv2.to_excel(r\"C:\\Users\\Administrator.DESKTOP-7IC2USJ\\Desktop\\NGVV2.xlsx\")\n",
|
||
"\n",
|
||
" data_NGV_V2 = data_NGV.copy() # 步骤3: 检查id_own_group是否存在于ngvv2中\n",
|
||
" data_NGV_V2['条件'] = (data_NGV_V2['org_type'] == \"一般\") & (data_NGV_V2['org_status'] == '留存') & (\n",
|
||
" data_NGV_V2['area_manager'] != '殷昊') & (\n",
|
||
" data_NGV_V2['area_manager'] != '孙玉蕾') & (\n",
|
||
" data_NGV_V2['is_main_org'] != 1)\n",
|
||
" data_NGV_V2 = data_NGV_V2.loc[data_NGV_V2[\"条件\"]]\n",
|
||
" # 步骤4: 过滤存在的记录\n",
|
||
" data_NGV_V2['exists_in_ngvv2'] = data_NGV_V2['id_own_group'].isin(ngvv2['id_own_group'])\n",
|
||
" filtered_data = data_NGV_V2[data_NGV_V2['exists_in_ngvv2']]\n",
|
||
"\n",
|
||
" fixed_order = ['皇冠版', '至尊版', '尊享版', '旗舰版', '标准版', '进阶版', '基础版', '入门版']\n",
|
||
" # sorted_items = sorted(filtered_data, key=lambda x: fixed_order.index(x))\n",
|
||
"\n",
|
||
" fixed_order_map = {edition: index for index, edition in enumerate(fixed_order)}\n",
|
||
" filtered_data['sort_key'] = filtered_data['saas_edition_fmt'].map(fixed_order_map)\n",
|
||
" filtered_data = filtered_data.sort_values(by='sort_key').drop('sort_key', axis=1)\n",
|
||
"\n",
|
||
" result = filtered_data.drop_duplicates(subset='id_own_group', keep='first')\n",
|
||
"\n",
|
||
" data_NGV['条件'] = (data_NGV['org_type'] == \"一般\") & (data_NGV['org_status'] == '留存') & (\n",
|
||
" data_NGV['area_manager'] != '殷昊') & (\n",
|
||
" data_NGV['area_manager'] != '孙玉蕾') & (\n",
|
||
" data_NGV['is_main_org'] == 1)\n",
|
||
" data_NGV = data_NGV.loc[data_NGV[\"条件\"]]\n",
|
||
"\n",
|
||
" data_NGV = pd.concat([data_NGV, result], axis=0)\n",
|
||
" # data_NGV.to_csv(\"dayin1.csv\")\n",
|
||
" data_details = data_NGV.copy()\n",
|
||
" # data_details.to_excel(r\"C:\\Users\\admin\\Downloads\\1.xlsx\")\n",
|
||
"\n",
|
||
" # 重置索引\n",
|
||
" data_details = data_details.reset_index(drop=True)\n",
|
||
" # data_details.to_csv(\"dayin.csv\")\n",
|
||
" # 判断A列的日期是否大于B列的日期730天,如果是的话,将B列的值设置为1\n",
|
||
" data_details['条件'] = data_details.apply(\n",
|
||
" lambda row: (\n",
|
||
" (pd.to_datetime(row['A']) - pd.to_datetime(row['B'])).days\n",
|
||
" if pd.to_datetime(row['A']) - pd.to_datetime(row['B']) >= pd.Timedelta(days=730)\n",
|
||
" else 0\n",
|
||
" ),\n",
|
||
" axis=1\n",
|
||
" )\n",
|
||
" data_details = data_details.loc[data_details[\"条件\"] > 0]\n",
|
||
"\n",
|
||
" # 定义一个函数,用于将数字除以365并取整数\n",
|
||
" def divide_by_365(x):\n",
|
||
" if isinstance(x, (int, float)):\n",
|
||
" return int(x / 365)\n",
|
||
" else:\n",
|
||
" return x\n",
|
||
"\n",
|
||
" # 使用applymap()函数将divide_by_365函数应用到DataFrame的每个元素\n",
|
||
" data_details['年'] = data_details['条件'].apply(divide_by_365)\n",
|
||
" # 重置索引\n",
|
||
" data_details = data_details.reset_index(drop=True)\n",
|
||
" # data_details.to_excel(r\"C:\\Users\\admin\\Downloads\\2.xlsx\")\n",
|
||
" # 创建一个新的空的DataFrame\n",
|
||
" new_df = pd.DataFrame()\n",
|
||
" # 遍历原始DataFrame的每一行\n",
|
||
" from datetime import datetime\n",
|
||
" for index, row in data_details.iterrows():\n",
|
||
" # 根据A列的值来决定复制的次数\n",
|
||
" if row[\"renew_date\"] != \"2024-02-29\":\n",
|
||
" for i_new in range(1, row['年']):\n",
|
||
" # 修改日期\n",
|
||
" row_new = row.copy()\n",
|
||
" c = row_new[\"renew_date\"]\n",
|
||
" date_obj = datetime.strptime(c, \"%Y-%m-%d\")\n",
|
||
" new_year = date_obj.year + i_new\n",
|
||
" new_date_obj = date_obj.replace(year=new_year)\n",
|
||
" new_c = new_date_obj.strftime(\"%Y-%m-%d\")\n",
|
||
" row_new[\"renew_date\"] = new_c\n",
|
||
" # 将当前行添加到新的DataFrame中\n",
|
||
" # new_df = new_df.append(row_new, ignore_index=True)\n",
|
||
" new_df = pd.concat([new_df, pd.DataFrame([row_new])], ignore_index=True)\n",
|
||
" # 合并两个DataFrame\n",
|
||
" # new_df.to_excel(r\"C:\\Users\\admin\\Downloads\\3.xlsx\")\n",
|
||
" merged_df = pd.concat([data_NGV, new_df], axis=0, ignore_index=True)\n",
|
||
" data_details = merged_df.copy() # 替换名称\n",
|
||
"\n",
|
||
" data_details_not_null = data_details[data_details['renew_date'].notnull()]\n",
|
||
" # data_details_not_null = data_details_not_null[data_details_not_null['renew_date'].str.contains('2023')]\n",
|
||
" # data_details_not_null = data_details_not_null.sort_values(by='renew_date', ascending=True).drop_duplicates(\n",
|
||
" # subset='id_own_group') 重置索引\n",
|
||
" data_details_not_null = data_details_not_null.reset_index(drop=True)\n",
|
||
" data_details = data_details_not_null.copy() # 替换名称 v2\n",
|
||
" data_details['saas_create_time'] = data_details['saas_create_time'].str[:4] # 截取前10位\n",
|
||
" data_details['renew_date_new'] = data_details['renew_date'].str[:4] # 截取前10位\n",
|
||
" data_details = data_details[\n",
|
||
" data_details['saas_create_time'] != data_details['renew_date_new']] # 过滤掉等于renew_date的行\n",
|
||
"\n",
|
||
" data_details = data_details.reset_index(drop=True)\n",
|
||
"\n",
|
||
" print(data_details)\n",
|
||
" # data_details.to_excel(r\"C:\\Users\\admin\\Downloads\\4.xlsx\")\n",
|
||
" import datetime\n",
|
||
" start_time = datetime.datetime.now()\n",
|
||
"\n",
|
||
" date_90 = 83\n",
|
||
" date_120 = 113\n",
|
||
" date_180 = 173\n",
|
||
" # date_one = 1\n",
|
||
" now_time = start_time.replace()\n",
|
||
"\n",
|
||
" if now_time.strftime(\"%Y-%m-%d\") in self.date_list:\n",
|
||
" date_one = 0\n",
|
||
" print(\"开始次数:\", date_one)\n",
|
||
" print(\"当前日期:\", now_time)\n",
|
||
"\n",
|
||
" if now_time.strftime(\"%Y-%m-%d\") in self.date_list:\n",
|
||
" date_one = 0\n",
|
||
" print(\"开始次数:\", date_one)\n",
|
||
" print(\"当前日期:\", now_time)\n",
|
||
"\n",
|
||
" # for i in range(1, 10):\n",
|
||
" # new_date = now_time + datetime.timedelta(days=-i)\n",
|
||
" # new_date = new_date.strftime(\"%Y-%m-%d\")\n",
|
||
" # print(\"遍历日期:\", new_date)\n",
|
||
" # if new_date in self.date_list:\n",
|
||
" # date_one = date_one + 1\n",
|
||
" # print(\"节假日期:\", new_date)\n",
|
||
" # else:\n",
|
||
" # break\n",
|
||
"\n",
|
||
" print(\"遍历次数:\", date_one)\n",
|
||
"\n",
|
||
" now_time = start_time.replace()\n",
|
||
" for i in range(0, date_one):\n",
|
||
" import datetime\n",
|
||
" now_time = now_time + datetime.timedelta(days=-(i + 1))\n",
|
||
" today = now_time + datetime.timedelta(days=-date_90)\n",
|
||
" formatted_today_90 = today.strftime(\"%Y-%m-%d\")\n",
|
||
" today = now_time + datetime.timedelta(days=-date_120)\n",
|
||
" formatted_today_120 = today.strftime(\"%Y-%m-%d\")\n",
|
||
" today = now_time + datetime.timedelta(days=-date_180)\n",
|
||
" formatted_today_180 = today.strftime(\"%Y-%m-%d\")\n",
|
||
" print(formatted_today_90, formatted_today_120, formatted_today_180)\n",
|
||
" # 获取数据\n",
|
||
" data_details_90 = data_details.copy()\n",
|
||
" data_details_90['条件'] = (data_details_90['renew_date'] == formatted_today_90) & (data_details_90[\n",
|
||
" 'group_grade'] != \"普通客户(VIP)\") # & (data_details_90['saas_edition_fmt'] != '基础版') & (data_details_90['saas_edition_fmt'] != '入门版')\n",
|
||
" data_details_90 = data_details_90.loc[data_details_90[\"条件\"]]\n",
|
||
" data_details_120 = data_details.copy()\n",
|
||
" data_details_120['条件'] = (data_details_120['renew_date'] == formatted_today_120) & (\n",
|
||
" (data_details_120['saas_edition_fmt'] == '基础版') | (\n",
|
||
" data_details_120['saas_edition_fmt'] == '入门版'))\n",
|
||
" data_details_120 = data_details_120.loc[data_details_120[\"条件\"]]\n",
|
||
" data_details_180 = data_details.copy()\n",
|
||
" data_details_180['条件'] = (data_details_180[\n",
|
||
" 'renew_date'] == formatted_today_180) # & (data_details_180['saas_edition_fmt'] != '基础版') & (data_details_180['saas_edition_fmt'] != '入门版')\n",
|
||
" data_details_180 = data_details_180.loc[data_details_180[\"条件\"]]\n",
|
||
"\n",
|
||
" data_details_90[\"跟进阶段\"] = \"续约后90天回访\"\n",
|
||
" data_details_90[\"主要目的\"] = \"关怀使用情况,促进更多功能使用,提升系统使用深度。\"\n",
|
||
" data_details_120[\"跟进阶段\"] = \"续约后120天回访\"\n",
|
||
" data_details_120[\"主要目的\"] = \"暂无\"\n",
|
||
" data_details_180[\"跟进阶段\"] = \"续约后180天回访\"\n",
|
||
" data_details_180[\"主要目的\"] = \"关怀使用情况,促进增购商机转化,识别潜在风险,及时提报。\"\n",
|
||
"\n",
|
||
" # 合并三个DataFrame\n",
|
||
" data_result = pd.concat([data_details_90, data_details_180],\n",
|
||
" ignore_index=True) # 去除续约120天回访 data_details_120\n",
|
||
" print(len(data_result))\n",
|
||
" data_result = data_result.astype(str)\n",
|
||
"\n",
|
||
" data_NGV = data_result.copy()\n",
|
||
" \n",
|
||
" data_NGV = pd.read_excel(r\"C:\\Users\\Administrator.DESKTOP-7IC2USJ\\Desktop\\派发1.xlsx\", sheet_name=\"Sheet9\")\n",
|
||
"\n",
|
||
" for index_num, row in data_NGV.iterrows(): # 对过滤后的每一条进行派发\n",
|
||
" try:\n",
|
||
" # print(row[\"org_code\"]) # 数据验证\n",
|
||
" # print(row[\"service_impl_principal\"])\n",
|
||
" # print(row[\"area_manager\"])\n",
|
||
" # print(row[\"technician\"])\n",
|
||
" print(\"销售负责人是:\", row[\"salesmen\"])\n",
|
||
"\n",
|
||
" payload_dict = {}\n",
|
||
" saas_use_year = re.findall(r'第([0-9]+)年', row[\"saas_use_year\"])[0]\n",
|
||
"\n",
|
||
" NGV_roles = {\n",
|
||
" 'relationship_manager': row['service_impl_principal'], # 运营负责人\n",
|
||
" # 'relationship_manager': \"张阳\", # 运营负责人\n",
|
||
" 'area_manager': row['area_manager'], # 区域经理\n",
|
||
" 'technician': row['technician'], # 技术专家\n",
|
||
" 'salesmen': row['salesmen'], # 销售负责人\n",
|
||
" }\n",
|
||
"\n",
|
||
" for role, name in NGV_roles.items():\n",
|
||
" for row_item in self.staff_id_list:\n",
|
||
" staff_id = self.get_staff_id(row_item, name)\n",
|
||
" if staff_id:\n",
|
||
" NGV_roles[role] = staff_id\n",
|
||
" break # 找到后退出循环\n",
|
||
" else:\n",
|
||
" NGV_roles[role] = None # 如果没有找到对应的员工ID\n",
|
||
" # 回访人员: 需确认 四年以下 technician\n",
|
||
" if int(saas_use_year) < 4:\n",
|
||
"\n",
|
||
" relationship_manager, area_manager, technician, salesmen = [NGV_roles[role] for role in\n",
|
||
" ['relationship_manager',\n",
|
||
" 'area_manager',\n",
|
||
" 'technician', 'salesmen']]\n",
|
||
"\n",
|
||
" # 如果未找到运营负责人,则根据省市区派发给日常回访客服\n",
|
||
" if not relationship_manager:\n",
|
||
" relationship_manager = self.assign_customer_service(\n",
|
||
" row['province_name'], row['city_name'], row['area_name'], self.index\n",
|
||
" )[0]\n",
|
||
" if not technician:\n",
|
||
" technician = self.assign_customer_service(\n",
|
||
" row['province_name'], row['city_name'], row['area_name'], self.index\n",
|
||
" )[2]\n",
|
||
"\n",
|
||
" payload_dict.update({\n",
|
||
" \"_widget_1734590278288\": {\"value\": relationship_manager}, # 跟进人是运营负责人\n",
|
||
" })\n",
|
||
"\n",
|
||
" else:\n",
|
||
" salesmen = [NGV_roles[role] for role in ['salesmen']][0]\n",
|
||
" print(salesmen)\n",
|
||
" # salesmen = [NGV_roles[role] for role in\n",
|
||
" # ['salesmen']]\n",
|
||
" # 直接根据省市区派发给日常回访客服\n",
|
||
" relationship_manager, customer_service, technician, area_manager = self.assign_customer_service(\n",
|
||
" row['province_name'], row['city_name'], row['area_name'], self.index\n",
|
||
" )\n",
|
||
" payload_dict.update({\n",
|
||
" \"_widget_1734590278288\": {\"value\": customer_service} # 跟进人是日常回访客服\n",
|
||
" })\n",
|
||
"\n",
|
||
" payload_dict.update({\n",
|
||
" # \"_widget_1734590278288\": {\"value\": relationship_manager}, # 跟进人是运营负责人\n",
|
||
" \"_widget_1734590278289\": {\"value\": relationship_manager}, # 运营负责人\n",
|
||
" \"_widget_1734590278290\": {\"value\": area_manager}, # 区域经理\n",
|
||
" \"_widget_1734590278291\": {\"value\": technician}, # 技术专家\n",
|
||
" \"_widget_1735290738545\": {\"value\": salesmen} # 销售负责人\n",
|
||
" })\n",
|
||
"\n",
|
||
" # 输出结果\n",
|
||
" print(\"SaaS开户回访人员:\", relationship_manager or \"未分配\")\n",
|
||
" print(\"SaaS技术专家:\", technician or \"未分配\")\n",
|
||
" print(\"SaaS区域经理:\", area_manager or \"未分配\")\n",
|
||
"\n",
|
||
" # 判断权限唯一值\n",
|
||
" # pattern = r'([\\u4e00-\\u9fa5]+)\\('\n",
|
||
" # match = re.search(pattern, row['max_group_grade'])\n",
|
||
" # group_grade = match.group(1)\n",
|
||
" group_grade = re.sub(r'([^)]*)', '', row['max_group_grade'])\n",
|
||
"\n",
|
||
" if not row['saas_customer_type'] or row['saas_customer_type'] == 'NA' or row[\n",
|
||
" 'saas_customer_type'] == 'None':\n",
|
||
" row['saas_customer_type'] = \"F\"\n",
|
||
"\n",
|
||
" NGV_store_level_key = group_grade + row['max_saas_edition'] + row['max_saas_customer_type']\n",
|
||
" print(\"权限唯一值:\", NGV_store_level_key)\n",
|
||
"\n",
|
||
" Billing = None\n",
|
||
" for item in self.permissions_table:\n",
|
||
" if NGV_store_level_key == item.get(\"_widget_1734056507963\"): # 合并(等级-类型-分层)\n",
|
||
" print(\"该门店开单的权限是:\", item.get(\"_widget_1734055617039\"))\n",
|
||
" Billing = item.get(\"_widget_1734055617039\") # 开单\n",
|
||
" Service_Alerts = item.get(\"_widget_1734055617040\") # 服务提醒\n",
|
||
" membership = item.get(\"_widget_1734055617041\") # 会员卡\n",
|
||
" SMS = item.get(\"_widget_1734055617042\") # 短信\n",
|
||
" Public_domain_applets = item.get(\"_widget_1734055617043\") # 公域小程序\n",
|
||
" Private_domain_applets = item.get(\"_widget_1734055617044\") # 私域小程序\n",
|
||
" Test_sheet = item.get(\"_widget_1734055617045\") # 检测单\n",
|
||
" AI_poster = item.get(\"_widget_1734055617046\") # AI海报\n",
|
||
" Business_wallets = item.get(\"_widget_1734055617047\") # 企业钱包\n",
|
||
" Precision_marketing = item.get(\"_widget_1734055617049\") # 精准营销\n",
|
||
" Paid_memberships = item.get(\"_widget_1734055617051\") # 付费会员\n",
|
||
" business_WeCom = item.get(\"_widget_1734055617052\") # 企业微信\n",
|
||
" Insurance_policy_identification = item.get(\"_widget_1734055617053\") # 保险单识别\n",
|
||
" Insurance_bots = item.get(\"_widget_1734055617054\") # 保险机器人\n",
|
||
" Camera_pick_up = item.get(\"_widget_1734055617055\") # 摄像头接车\n",
|
||
" Camera_billing = item.get(\"_widget_1734055617056\") # 摄像头开单\n",
|
||
" Transparent_workshop = item.get(\"_widget_1734055617057\") # 透明车间\n",
|
||
" Cross_industry_cooperation = item.get(\"_widget_1734055617058\") # 异业合作\n",
|
||
" BI_Insights = item.get(\"_widget_1734055617059\") # BI洞察\n",
|
||
" payload_dict.update(\n",
|
||
" {\n",
|
||
" \"_widget_1734073342350\": {\"value\": Billing},\n",
|
||
" \"_widget_1735004315757\": {\"value\": Service_Alerts},\n",
|
||
" \"_widget_1735004315756\": {\"value\": membership},\n",
|
||
" \"_widget_1735004315755\": {\"value\": SMS},\n",
|
||
" \"_widget_1735004315754\": {\"value\": Public_domain_applets},\n",
|
||
" \"_widget_1735004315753\": {\"value\": Private_domain_applets},\n",
|
||
" \"_widget_1735004315752\": {\"value\": Test_sheet},\n",
|
||
" \"_widget_1735004315751\": {\"value\": AI_poster},\n",
|
||
" \"_widget_1735004315750\": {\"value\": Business_wallets},\n",
|
||
" \"_widget_1735004315749\": {\"value\": Precision_marketing},\n",
|
||
" \"_widget_1735004315748\": {\"value\": Paid_memberships},\n",
|
||
" \"_widget_1735004315747\": {\"value\": business_WeCom},\n",
|
||
" \"_widget_1735004315746\": {\"value\": Insurance_policy_identification},\n",
|
||
" \"_widget_1735004315745\": {\"value\": Insurance_bots},\n",
|
||
" \"_widget_1735004315744\": {\"value\": Camera_pick_up},\n",
|
||
" \"_widget_1735004315743\": {\"value\": Camera_billing},\n",
|
||
" \"_widget_1735004315742\": {\"value\": Transparent_workshop},\n",
|
||
" \"_widget_1735004315741\": {\"value\": Cross_industry_cooperation},\n",
|
||
" \"_widget_1734073342352\": {\"value\": BI_Insights},\n",
|
||
"\n",
|
||
" }\n",
|
||
" )\n",
|
||
"\n",
|
||
" feature_dict = {\n",
|
||
" \"开单\": \"_widget_1734073342350\",\n",
|
||
" \"服务提醒\": \"_widget_1735004315757\",\n",
|
||
" \"会员卡\": \"_widget_1735004315756\",\n",
|
||
" \"短信\": \"_widget_1735004315755\",\n",
|
||
" \"公域小程序\": \"_widget_1735004315754\",\n",
|
||
" \"私域小程序\": \"_widget_1735004315753\",\n",
|
||
" \"检测单\": \"_widget_1735004315752\",\n",
|
||
" \"AI海报\": \"_widget_1735004315751\",\n",
|
||
" \"企业钱包\": \"_widget_1735004315750\",\n",
|
||
" \"精准营销\": \"_widget_1735004315749\",\n",
|
||
" \"付费会员\": \"_widget_1735004315748\",\n",
|
||
" \"企业微信\": \"_widget_1735004315747\",\n",
|
||
" \"保险单识别\": \"_widget_1735004315746\",\n",
|
||
" \"保险机器人\": \"_widget_1735004315745\",\n",
|
||
" \"摄像头接车\": \"_widget_1735004315744\",\n",
|
||
" \"摄像头开单\": \"_widget_1735004315743\",\n",
|
||
" \"透明车间\": \"_widget_1735004315742\",\n",
|
||
" \"异业合作\": \"_widget_1735004315741\",\n",
|
||
" \"BI洞察\": \"_widget_1734073342352\",\n",
|
||
"\n",
|
||
" }\n",
|
||
" # _widget_1735527329557 下次是否推荐\n",
|
||
" for new_item in self.get_feature_usage:\n",
|
||
" for feature_module, feature_value in feature_dict.items(): # 模块\n",
|
||
" if new_item.get(\"_widget_1735268263079\") == feature_module and new_item.get(\n",
|
||
" \"_widget_1735527329557\") == \"否\" and new_item.get(\n",
|
||
" \"_widget_1735280720550\") == \\\n",
|
||
" row[\"id_own_org\"]: # 下次是否推荐 功能使用情况表\n",
|
||
" print(f\"{feature_value}进行了更改\")\n",
|
||
" payload_dict.update({f\"{feature_value}\": {\"value\": \"×\"}})\n",
|
||
"\n",
|
||
" if new_item.get(\"_widget_1735268263079\") == feature_module and new_item.get(\n",
|
||
" \"_widget_1736414617462\") == \"否\" and new_item.get(\n",
|
||
" \"_widget_1735280720550\") == \\\n",
|
||
" row[\"id_own_org\"]: # 下次是否跟进\n",
|
||
" print(f\"{feature_value}进行了更改\")\n",
|
||
" payload_dict.update({f\"{feature_value}\": {\"value\": \"×\"}})\n",
|
||
"\n",
|
||
" fields_to_check = {\n",
|
||
" \"_widget_1735004315763\": Billing, # 开单\n",
|
||
" \"_widget_1735106258016\": Service_Alerts, # 服务提醒\n",
|
||
" \"_widget_1735106258036\": membership, # 会员卡\n",
|
||
" \"_widget_1735106258086\": SMS, # 短信\n",
|
||
" \"_widget_1735106258112\": Public_domain_applets, # 公域小程序\n",
|
||
" \"_widget_1735106258141\": Private_domain_applets, # 私域小程序\n",
|
||
" \"_widget_1735107354648\": Test_sheet, # 检测单\n",
|
||
" \"_widget_1735107354725\": AI_poster, # AI海报\n",
|
||
" \"_widget_1735107354811\": Business_wallets, # 企业钱包\n",
|
||
" \"_widget_1735107354906\": Precision_marketing, # 精准营销\n",
|
||
" \"_widget_1735107354980\": Paid_memberships, # 付费会员\n",
|
||
" \"_widget_1735107355093\": business_WeCom, # 企业微信\n",
|
||
" \"_widget_1735107355143\": Insurance_policy_identification, # 保险单识别\n",
|
||
" \"_widget_1735107355235\": Insurance_bots, # 保险机器人\n",
|
||
" \"_widget_1735107355333\": Camera_pick_up, # 摄像头接车\n",
|
||
" \"_widget_1735107355392\": Camera_billing, # 摄像头开单\n",
|
||
" \"_widget_1735107355502\": Transparent_workshop, # 透明车间\n",
|
||
" \"_widget_1735107355618\": Cross_industry_cooperation, # 异业合作\n",
|
||
" \"_widget_1735107355740\": BI_Insights # BI洞察\n",
|
||
" }\n",
|
||
"\n",
|
||
" # 遍历每个字段,检查其值并更新payload_dict\n",
|
||
" for widget_id, field_name in fields_to_check.items():\n",
|
||
" if field_name == \"√\":\n",
|
||
" payload_dict.update({widget_id: {\"value\": \"是\"}})\n",
|
||
"\n",
|
||
" break\n",
|
||
"\n",
|
||
" if not Billing:\n",
|
||
" print(f\"权限表请求失败或者权限表无对应关系,权限唯一值是:{NGV_store_level_key}\")\n",
|
||
"\n",
|
||
" if row[\"active_status_fmt\"] == \"活跃\": # 开单 是否使用\n",
|
||
" payload_dict.update({\"_widget_1735004315765\": {\"value\": \"是\"}})\n",
|
||
" else:\n",
|
||
" payload_dict.update({\"_widget_1735004315765\": {\"value\": \"否\"}})\n",
|
||
" try:\n",
|
||
" if row[\"saas_edition_fmt\"] not in [\"基础版\", \"入门版\"]: # 会员卡 是否拥有\n",
|
||
" payload_dict.update({\"_widget_1735106258036\": {\"value\": \"是\"}})\n",
|
||
" else:\n",
|
||
" payload_dict.update({\"_widget_1735106258036\": {\"value\": \"否\"}})\n",
|
||
" except Exception as e:\n",
|
||
" print(f\"会员卡识别:Error finding customer service: {e}\")\n",
|
||
" try:\n",
|
||
" if row[\"card_bill_day_count_last_30_day\"] != \"0\": # 会员卡 是否使用\n",
|
||
" payload_dict.update({\"_widget_1735106258038\": {\"value\": \"是\"}})\n",
|
||
" else:\n",
|
||
" payload_dict.update({\"_widget_1735106258038\": {\"value\": \"否\"}})\n",
|
||
" except Exception as e:\n",
|
||
" print(f\"会员卡识别:Error finding customer service: {e}\")\n",
|
||
" # print(self.service_remind.get(\"_widget_1735112637045\"))\n",
|
||
" payload_dict[\"_widget_1735106258018\"] = {\"value\": \"否\"}\n",
|
||
"\n",
|
||
" for item in self.service_remind:\n",
|
||
" if row[\"id_own_group\"] == item.get(\"_widget_1735112637043\"):\n",
|
||
" if int(item.get(\"_widget_1735112637045\")) < 180 and int(\n",
|
||
" item.get(\"_widget_1735112637046\")) == 1: # 服务提醒 是否使用\n",
|
||
" payload_dict.update({\"_widget_1735106258018\": {\"value\": \"是\"}})\n",
|
||
" break\n",
|
||
" elif int(item.get(\"_widget_1735112637048\")) > 0:\n",
|
||
" payload_dict.update({\"_widget_1735106258018\": {\"value\": \"是\"}})\n",
|
||
" break\n",
|
||
"\n",
|
||
" keys_to_check = [\n",
|
||
" \"_widget_1735113110155\"\n",
|
||
" ] # 智能检测 是否使用\n",
|
||
"\n",
|
||
" # 初始化默认值为\"否\"\n",
|
||
" payload_dict[\"_widget_1735107354650\"] = {\"value\": \"否\"}\n",
|
||
"\n",
|
||
" # 检查每个键,如果有一个大于0,则更新为\"是\"并停止检查\n",
|
||
" for key in keys_to_check:\n",
|
||
" for item in self.Smart_detection:\n",
|
||
" if row[\"id_own_org\"] == item.get(\"_widget_1735113110147\"):\n",
|
||
" if int(item.get(key, 0)) > 0: # 使用get方法并提供默认值0防止键不存在的情况\n",
|
||
" payload_dict[\"_widget_1735107354650\"][\"value\"] = \"是\"\n",
|
||
" break\n",
|
||
"\n",
|
||
" # 近30天业务单量=0 则其它所有模块均不推荐\n",
|
||
" try:\n",
|
||
" for feature_module, feature_value in feature_dict.items(): # 模块\n",
|
||
" if row[\"bill_count_last_30_day\"] == '0' and payload_dict[feature_value][\"value\"] == '△':\n",
|
||
" payload_dict.update({f\"{feature_value}\": {\"value\": \"×\"}})\n",
|
||
" except Exception as e:\n",
|
||
" print(f\"不开单识别:Error finding customer service: {e}\")\n",
|
||
" # 保单识别:从系统中抽取目标门店,针对门店抽取修改是否推荐\n",
|
||
" try:\n",
|
||
" if row[\"org_code\"] in self.widget_list:\n",
|
||
" payload_dict.update({'_widget_1735004315746': {\"value\": \"△\"}})\n",
|
||
" except Exception as e:\n",
|
||
" print(f\"保单识别:Error finding customer service: {e}\")\n",
|
||
"\n",
|
||
" # 私域小程序:根据是否开通微信小程序判断是否使用,旗舰版及以上算拥有\n",
|
||
" try:\n",
|
||
" for item in self.private_domain:\n",
|
||
" if row[\"id_own_group\"] == item.get(\"_widget_1742795002375\"): # 公司id\n",
|
||
" if int(item.get(\"_widget_1742795002379\")) > 0: # 上架商品数\n",
|
||
" payload_dict.update({\"_widget_1735106258143\": {\"value\": \"是\"}}) # DX:是否拥有\n",
|
||
" break\n",
|
||
" else:\n",
|
||
" payload_dict.update({\"_widget_1735106258143\": {\"value\": \"否\"}}) # DX:是否拥有\n",
|
||
" break\n",
|
||
" except Exception as e:\n",
|
||
" print(f\"私域小程序:Error finding customer service: {e}\")\n",
|
||
" try:\n",
|
||
" high_version = ['皇冠版', '至尊版', '尊享版', '旗舰版']\n",
|
||
" if row[\"saas_edition_fmt\"] in high_version:\n",
|
||
" payload_dict.update({'_widget_1735106258141': {\"value\": \"是\"}}) # SYXCX:是否拥有\n",
|
||
" else:\n",
|
||
" payload_dict.update({'_widget_1735106258141': {\"value\": \"否\"}}) # SYXCX:是否拥有\n",
|
||
" except Exception as e:\n",
|
||
" print(f\"私域小程序:Error finding customer service: {e}\")\n",
|
||
"\n",
|
||
" # 公域小程序:根据是否开通微信小程序判断是否使用,旗舰版及以上算拥有\n",
|
||
" try:\n",
|
||
" for item in self.public_domain:\n",
|
||
" if row[\"id_own_org\"] == item.get(\"_widget_1742784257506\"): # 门店id\n",
|
||
" if int(item.get(\"_widget_1742784257509\")) == 1: # 发布商品数量\n",
|
||
" payload_dict.update({\"_widget_1735106258114\": {\"value\": \"是\"}}) # GYXCX:是否使用\n",
|
||
" break\n",
|
||
" else:\n",
|
||
" payload_dict.update({\"_widget_1735106258114\": {\"value\": \"否\"}}) # GYXCX:是否使用\n",
|
||
" break\n",
|
||
" except Exception as e:\n",
|
||
" print(f\"公域小程序:Error finding customer service: {e}\")\n",
|
||
" try:\n",
|
||
" if row[\"id_own_org\"] in self.public_domain_list:\n",
|
||
" payload_dict.update({'_widget_1735106258112': {\"value\": \"是\"}}) # GYXCX:是否拥有\n",
|
||
" else:\n",
|
||
" payload_dict.update({'_widget_1735106258112': {\"value\": \"否\"}}) # GYXCX:是否拥有\n",
|
||
" except Exception as e:\n",
|
||
" print(f\"公域小程序:Error finding customer service: {e}\")\n",
|
||
"\n",
|
||
" # 异业合作:根据是否存在判断是否拥有,过滤条件 商品名称包含异业两个字\n",
|
||
" try:\n",
|
||
" if row[\"id_own_org\"] in self.different_industries_list:\n",
|
||
" payload_dict.update({'_widget_1735107355618': {\"value\": \"是\"}}) # YYHZ:是否拥有\n",
|
||
" else:\n",
|
||
" payload_dict.update({'_widget_1735107355618': {\"value\": \"否\"}}) # YYHZ:是否拥有\n",
|
||
" except Exception as e:\n",
|
||
" print(f\"异业合作:Error finding customer service: {e}\")\n",
|
||
"\n",
|
||
" # 短信:根据是否启动短信功能判断是否拥有,根据\n",
|
||
" try:\n",
|
||
" for item in self.groupnotification:\n",
|
||
" if row[\"id_own_group\"] == item.get(\"_widget_1743065201885\"): # 公司id\n",
|
||
" if int(item.get(\"_widget_1743065201886\")) == 1: # 是否启动短信功能\n",
|
||
" payload_dict.update({\"_widget_1735106258086\": {\"value\": \"是\"}}) # DX:是否拥有\n",
|
||
" break\n",
|
||
" else:\n",
|
||
" payload_dict.update({\"_widget_1735106258086\": {\"value\": \"否\"}}) # DX:是否拥有\n",
|
||
" break\n",
|
||
" except Exception as e:\n",
|
||
" print(f\"短信:Error finding customer service: {e}\")\n",
|
||
" try:\n",
|
||
" for item in self.groupnotification:\n",
|
||
" if row[\"id_own_group\"] == item.get(\"_widget_1743065201885\"): # 公司id\n",
|
||
" if int(item.get(\"_widget_1743065201889\")) > 0: # 累计发送成功总人数\n",
|
||
" payload_dict.update({\"_widget_1735106258088\": {\"value\": \"是\"}}) # DX:是否使用\n",
|
||
" break\n",
|
||
" else:\n",
|
||
" payload_dict.update({\"_widget_1735106258088\": {\"value\": \"否\"}}) # DX:是否使用\n",
|
||
" break\n",
|
||
" except Exception as e:\n",
|
||
" print(f\"短信:Error finding customer service: {e}\")\n",
|
||
" NGV_data_id = None\n",
|
||
" # 获取关联数据\n",
|
||
" for NGV_Data in self.NGV_data_list:\n",
|
||
" # NGV_Data = NGV_Data.get(\"data\")\n",
|
||
" if row[\"org_code\"] == NGV_Data.get(\"_widget_1734062123071\"): # 门店编码\n",
|
||
" NGV_data_id = NGV_Data.get(\"_id\")\n",
|
||
" print(NGV_data_id)\n",
|
||
" try:\n",
|
||
" png_url = NGV_Data.get('_widget_1742890765211', {})[0].get('url', \"\")\n",
|
||
" except:\n",
|
||
" png_url = \"\"\n",
|
||
" print(png_url)\n",
|
||
" if not NGV_data_id:\n",
|
||
" print(\"未找到数据ID\")\n",
|
||
"\n",
|
||
" distribution_date = datetime.datetime.now(datetime.timezone.utc)\n",
|
||
" distribution_date = distribution_date.strftime('%Y-%m-%dT%H:%M:%S.%f')[:-3] + 'Z'\n",
|
||
"\n",
|
||
" upload_key = None\n",
|
||
" UUid = time.strftime(\"%Y%m%d%H%M%S\", time.localtime())\n",
|
||
" if png_url:\n",
|
||
" save_dir = \"sampleCloud\" # 设置输出目录\n",
|
||
"\n",
|
||
" # 创建输出目录(如果不存在)\n",
|
||
" import os\n",
|
||
"\n",
|
||
" os.makedirs(save_dir, exist_ok=True)\n",
|
||
"\n",
|
||
" save_path = fr'{save_dir}\\png\\{time.strftime(\"%Y%m%d%H%M%S\", time.localtime())}.png'\n",
|
||
"\n",
|
||
" RenewServicesRevisit.download_url_content(png_url, save_path)\n",
|
||
"\n",
|
||
" up_data = api_instance.get_upload_token(\n",
|
||
" {\"api_key\": \"675b900991ad2491c69389ca\", \"entry_id\": \"675b9c63925cd404038a6b86\",\n",
|
||
" \"transaction_id\": UUid})\n",
|
||
" upload_url = up_data.get(\"upload_url\")\n",
|
||
" upload_token = up_data.get(\"upload_token\")\n",
|
||
"\n",
|
||
" upload_result = api_instance.upload_file(\n",
|
||
" {\"upload_url\": upload_url, \"upload_token\": upload_token, \"file_path\": save_path})\n",
|
||
" upload_key = upload_result.get(\"key\")\n",
|
||
"\n",
|
||
" payload_dict.update({\n",
|
||
" \"_widget_1734590278279\": {\"value\": row[\"group_name\"]}, # 公司名称\n",
|
||
" \"_widget_1735112931760\": {\"value\": row[\"id_own_group\"]}, # 公司id\n",
|
||
" \"_widget_1735112931761\": {\"value\": row[\"id_own_org\"]}, # 门店id\n",
|
||
" \"_widget_1734590278281\": {\"value\": row['org_name']}, # 门店名称\n",
|
||
" \"_widget_1734590278292\": {\"value\": row[\"跟进阶段\"]}, # 跟进阶段\n",
|
||
" \"_widget_1734321349021\": {\"value\": NGV_data_id}, # 关data_get联数据\n",
|
||
" \"_widget_1742548684369\": {\"value\": row['主要目的']}, # 主要目的\n",
|
||
" \"_widget_1734590278266\": {\"value\": row['region_name']}, # 大区\n",
|
||
" \"_widget_1734590278285\": {\"value\": row['branch_name']}, # 小区\n",
|
||
" \"_widget_1734590278284\": {\"value\": row['province_name']}, # 省\n",
|
||
" \"_widget_1734590278283\": {\"value\": row['city_name']}, # 市\n",
|
||
" \"_widget_1734590278282\": {\"value\": row['area_name']}, # 区\n",
|
||
" \"_widget_1734590278278\": {\"value\": row['saas_customer_type']}, # 门店分层\n",
|
||
" \"_widget_1734590278277\": {\"value\": row['group_grade']}, # 公司等级\n",
|
||
" \"_widget_1734590278276\": {\"value\": row['limit_user_type']}, # 限制账户类型\n",
|
||
" \"_widget_1734590278275\": {\"value\": row['active_user_type']}, # 有效账户类型\n",
|
||
" \"_widget_1734590278274\": {\"value\": row['saas_version']}, # ERP操作模式\n",
|
||
" \"_widget_1734590278273\": {\"value\": row['saas_use_year']}, # 使用时长\n",
|
||
" \"_widget_1734590278272\": {\"value\": row['org_stage']}, # 门店阶段\n",
|
||
" \"_widget_1734590278271\": {\"value\": row['manage_model']}, # 经营模式\n",
|
||
" \"_widget_1734590278267\": {\"value\": row['contacts']}, # 联系人\n",
|
||
" \"_widget_1734590278287\": {\"value\": row['contact_mobile']}, # 联系手机号\n",
|
||
" \"_widget_1734590278286\": {\"value\": row['saas_edition_fmt']}, # SaaS版本\n",
|
||
" \"_widget_1734590278280\": {\"value\": row['org_code']}, # 门店编码\n",
|
||
" # \"_widget_1735287791875\": {\"value\": row['salesmen']}, # 销售负责人\n",
|
||
" \"_widget_1735096489244\": {\"value\": distribution_date}, # 派发时间\n",
|
||
" \"_widget_1742895342914\": {\"value\": row['business_scope_fmt']}, # 经营范围\n",
|
||
" \"_widget_1742895342915\": {\"value\": row['station_number']}, # 工位数\n",
|
||
" \"_widget_1742895342916\": {\"value\": [upload_key]} # 门头照片\n",
|
||
" })\n",
|
||
"\n",
|
||
" def convert_nan_none_to_null(obj):\n",
|
||
" if obj is None or (isinstance(obj, float) and math.isnan(obj)):\n",
|
||
" return None # 会被 json.dumps() 转换为 'null'\n",
|
||
" elif isinstance(obj, (list, tuple)):\n",
|
||
" return [convert_nan_none_to_null(item) for item in obj]\n",
|
||
" elif isinstance(obj, dict):\n",
|
||
" return {key: convert_nan_none_to_null(value) for key, value in obj.items()}\n",
|
||
" else:\n",
|
||
" return obj\n",
|
||
" cleaned_payload = convert_nan_none_to_null(payload_dict)\n",
|
||
"\n",
|
||
" routine_follow_up_payload = {\n",
|
||
" \"api_key\": \"675b900991ad2491c69389ca\",\n",
|
||
" \"entry_id\": \"675b9c63925cd404038a6b86\",\n",
|
||
" \"is_start_workflow\": \"true\",\n",
|
||
" \"data\": payload_dict,\n",
|
||
" \"transaction_id\": UUid\n",
|
||
" }\n",
|
||
"\n",
|
||
" print(routine_follow_up_payload)\n",
|
||
"\n",
|
||
" res = api_instance.data_batch_create(routine_follow_up_payload)\n",
|
||
" logger.info(f\"创建结果:{res}\")\n",
|
||
"\n",
|
||
" # print(res)\n",
|
||
" except:\n",
|
||
" pass\n",
|
||
"\n",
|
||
"\n",
|
||
"if __name__ == '__main__':\n",
|
||
" start = RenewServicesRevisit()\n",
|
||
" start.main()\n"
|
||
],
|
||
"id": "4ccc98491494ae3c",
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"已获取 100 条数据\n",
|
||
"已获取 200 条数据\n",
|
||
"已获取 300 条数据\n",
|
||
"已获取 400 条数据\n",
|
||
"已获取 500 条数据\n",
|
||
"已获取 600 条数据\n",
|
||
"已获取 700 条数据\n",
|
||
"已获取 800 条数据\n",
|
||
"已获取 900 条数据\n",
|
||
"已获取 1000 条数据\n",
|
||
"已获取 1100 条数据\n",
|
||
"已获取 1200 条数据\n",
|
||
"已获取 1300 条数据\n",
|
||
"已获取 1400 条数据\n",
|
||
"已获取 1500 条数据\n",
|
||
"已获取 1600 条数据\n",
|
||
"已获取 1700 条数据\n",
|
||
"已获取 1800 条数据\n",
|
||
"已获取 1900 条数据\n",
|
||
"已获取 2000 条数据\n",
|
||
"已获取 2100 条数据\n",
|
||
"已获取 2200 条数据\n",
|
||
"已获取 2300 条数据\n",
|
||
"已获取 2400 条数据\n",
|
||
"已获取 2500 条数据\n",
|
||
"已获取 2600 条数据\n",
|
||
"已获取 2700 条数据\n",
|
||
"已获取 2800 条数据\n",
|
||
"已获取 2900 条数据\n",
|
||
"已获取 3000 条数据\n",
|
||
"已获取 3100 条数据\n",
|
||
"已获取 3200 条数据\n",
|
||
"已获取 3300 条数据\n",
|
||
"已获取 3400 条数据\n",
|
||
"已获取 3500 条数据\n",
|
||
"已获取 3600 条数据\n",
|
||
"已获取 3664 条数据\n",
|
||
"已获取 100 条数据\n",
|
||
"已获取 200 条数据\n",
|
||
"已获取 222 条数据\n",
|
||
"已获取 100 条数据\n",
|
||
"已获取 192 条数据\n",
|
||
"已获取 100 条数据\n",
|
||
"已获取 200 条数据\n",
|
||
"已获取 300 条数据\n",
|
||
"已获取 400 条数据\n",
|
||
"已获取 500 条数据\n",
|
||
"已获取 600 条数据\n",
|
||
"已获取 700 条数据\n",
|
||
"已获取 800 条数据\n",
|
||
"已获取 900 条数据\n",
|
||
"已获取 1000 条数据\n",
|
||
"已获取 1100 条数据\n",
|
||
"已获取 1200 条数据\n",
|
||
"已获取 1300 条数据\n",
|
||
"已获取 1400 条数据\n",
|
||
"已获取 1500 条数据\n",
|
||
"已获取 1600 条数据\n",
|
||
"已获取 1700 条数据\n",
|
||
"已获取 1800 条数据\n",
|
||
"已获取 1900 条数据\n",
|
||
"已获取 2000 条数据\n",
|
||
"已获取 2100 条数据\n",
|
||
"已获取 2200 条数据\n",
|
||
"已获取 2300 条数据\n",
|
||
"已获取 2400 条数据\n",
|
||
"已获取 2500 条数据\n",
|
||
"已获取 2600 条数据\n",
|
||
"已获取 2700 条数据\n",
|
||
"已获取 2800 条数据\n",
|
||
"已获取 2900 条数据\n",
|
||
"已获取 3000 条数据\n",
|
||
"已获取 3100 条数据\n",
|
||
"已获取 3200 条数据\n",
|
||
"已获取 3300 条数据\n",
|
||
"已获取 3400 条数据\n",
|
||
"已获取 3500 条数据\n",
|
||
"已获取 3600 条数据\n",
|
||
"已获取 3700 条数据\n",
|
||
"已获取 3800 条数据\n",
|
||
"已获取 3900 条数据\n",
|
||
"已获取 4000 条数据\n",
|
||
"已获取 4100 条数据\n",
|
||
"已获取 4200 条数据\n",
|
||
"已获取 4300 条数据\n",
|
||
"已获取 4400 条数据\n",
|
||
"已获取 4500 条数据\n",
|
||
"已获取 4600 条数据\n",
|
||
"已获取 4700 条数据\n",
|
||
"已获取 4800 条数据\n",
|
||
"已获取 4900 条数据\n",
|
||
"已获取 5000 条数据\n",
|
||
"已获取 5100 条数据\n",
|
||
"已获取 5200 条数据\n",
|
||
"已获取 5300 条数据\n",
|
||
"已获取 5400 条数据\n",
|
||
"已获取 5500 条数据\n",
|
||
"已获取 5600 条数据\n",
|
||
"已获取 5700 条数据\n",
|
||
"已获取 5800 条数据\n",
|
||
"已获取 5900 条数据\n",
|
||
"已获取 6000 条数据\n",
|
||
"已获取 6100 条数据\n",
|
||
"已获取 6200 条数据\n",
|
||
"已获取 6300 条数据\n",
|
||
"已获取 6400 条数据\n",
|
||
"已获取 6500 条数据\n",
|
||
"已获取 6600 条数据\n",
|
||
"已获取 6700 条数据\n",
|
||
"已获取 6800 条数据\n",
|
||
"已获取 6900 条数据\n",
|
||
"已获取 7000 条数据\n",
|
||
"已获取 7100 条数据\n",
|
||
"已获取 7200 条数据\n",
|
||
"已获取 7300 条数据\n",
|
||
"已获取 7400 条数据\n",
|
||
"已获取 7500 条数据\n",
|
||
"已获取 7600 条数据\n",
|
||
"已获取 7700 条数据\n",
|
||
"已获取 7800 条数据\n",
|
||
"已获取 7900 条数据\n",
|
||
"已获取 8000 条数据\n",
|
||
"已获取 8100 条数据\n",
|
||
"已获取 8200 条数据\n",
|
||
"已获取 8300 条数据\n",
|
||
"已获取 8400 条数据\n",
|
||
"已获取 8500 条数据\n",
|
||
"已获取 8600 条数据\n",
|
||
"已获取 8700 条数据\n",
|
||
"已获取 8800 条数据\n",
|
||
"已获取 8900 条数据\n",
|
||
"已获取 9000 条数据\n",
|
||
"已获取 9100 条数据\n",
|
||
"已获取 9200 条数据\n",
|
||
"已获取 9300 条数据\n",
|
||
"已获取 9400 条数据\n",
|
||
"已获取 9500 条数据\n",
|
||
"已获取 9600 条数据\n",
|
||
"已获取 9700 条数据\n",
|
||
"已获取 9800 条数据\n",
|
||
"已获取 9900 条数据\n",
|
||
"已获取 10000 条数据\n",
|
||
"已获取 10100 条数据\n",
|
||
"已获取 10200 条数据\n",
|
||
"已获取 10300 条数据\n",
|
||
"已获取 10400 条数据\n",
|
||
"已获取 10500 条数据\n",
|
||
"已获取 10600 条数据\n",
|
||
"已获取 10700 条数据\n",
|
||
"已获取 10800 条数据\n",
|
||
"已获取 10900 条数据\n",
|
||
"已获取 11000 条数据\n",
|
||
"已获取 11100 条数据\n",
|
||
"已获取 11200 条数据\n",
|
||
"已获取 11300 条数据\n",
|
||
"已获取 11400 条数据\n",
|
||
"已获取 11500 条数据\n",
|
||
"已获取 11600 条数据\n",
|
||
"已获取 11700 条数据\n",
|
||
"已获取 11800 条数据\n",
|
||
"已获取 11900 条数据\n",
|
||
"已获取 12000 条数据\n",
|
||
"已获取 12100 条数据\n",
|
||
"已获取 12200 条数据\n",
|
||
"已获取 12300 条数据\n",
|
||
"已获取 12400 条数据\n",
|
||
"已获取 12500 条数据\n",
|
||
"已获取 12600 条数据\n",
|
||
"已获取 12700 条数据\n",
|
||
"已获取 12800 条数据\n",
|
||
"已获取 12900 条数据\n",
|
||
"已获取 13000 条数据\n",
|
||
"已获取 13100 条数据\n",
|
||
"已获取 13200 条数据\n",
|
||
"已获取 13300 条数据\n",
|
||
"已获取 13400 条数据\n",
|
||
"已获取 13500 条数据\n",
|
||
"已获取 13600 条数据\n",
|
||
"已获取 13700 条数据\n",
|
||
"已获取 13800 条数据\n",
|
||
"已获取 13900 条数据\n",
|
||
"已获取 14000 条数据\n",
|
||
"已获取 14100 条数据\n",
|
||
"已获取 14200 条数据\n",
|
||
"已获取 14300 条数据\n",
|
||
"已获取 14400 条数据\n",
|
||
"已获取 14500 条数据\n",
|
||
"已获取 14600 条数据\n",
|
||
"已获取 14700 条数据\n",
|
||
"已获取 14800 条数据\n",
|
||
"已获取 14900 条数据\n",
|
||
"已获取 15000 条数据\n",
|
||
"已获取 15100 条数据\n",
|
||
"已获取 15200 条数据\n",
|
||
"已获取 15300 条数据\n",
|
||
"已获取 15400 条数据\n",
|
||
"已获取 15500 条数据\n",
|
||
"已获取 15600 条数据\n",
|
||
"已获取 15700 条数据\n",
|
||
"已获取 15800 条数据\n",
|
||
"已获取 15900 条数据\n",
|
||
"已获取 16000 条数据\n",
|
||
"已获取 16100 条数据\n",
|
||
"已获取 16200 条数据\n",
|
||
"已获取 16300 条数据\n",
|
||
"已获取 16400 条数据\n",
|
||
"已获取 16500 条数据\n",
|
||
"已获取 16600 条数据\n",
|
||
"已获取 16700 条数据\n",
|
||
"已获取 16800 条数据\n",
|
||
"已获取 16900 条数据\n",
|
||
"已获取 17000 条数据\n",
|
||
"已获取 17100 条数据\n",
|
||
"已获取 17200 条数据\n",
|
||
"已获取 17300 条数据\n",
|
||
"已获取 17400 条数据\n",
|
||
"已获取 17500 条数据\n",
|
||
"已获取 17600 条数据\n",
|
||
"已获取 17700 条数据\n",
|
||
"已获取 17800 条数据\n",
|
||
"已获取 17900 条数据\n",
|
||
"已获取 18000 条数据\n",
|
||
"已获取 18100 条数据\n",
|
||
"已获取 18200 条数据\n",
|
||
"已获取 18300 条数据\n",
|
||
"已获取 18400 条数据\n",
|
||
"已获取 18500 条数据\n",
|
||
"已获取 18600 条数据\n",
|
||
"已获取 18700 条数据\n",
|
||
"已获取 18800 条数据\n",
|
||
"已获取 18900 条数据\n",
|
||
"已获取 19000 条数据\n",
|
||
"已获取 19100 条数据\n",
|
||
"已获取 19200 条数据\n",
|
||
"已获取 19300 条数据\n",
|
||
"已获取 19400 条数据\n",
|
||
"已获取 19500 条数据\n",
|
||
"已获取 19600 条数据\n",
|
||
"已获取 19700 条数据\n",
|
||
"已获取 19800 条数据\n",
|
||
"已获取 19900 条数据\n",
|
||
"已获取 20000 条数据\n",
|
||
"已获取 20100 条数据\n",
|
||
"已获取 20200 条数据\n",
|
||
"已获取 20300 条数据\n",
|
||
"已获取 20400 条数据\n",
|
||
"已获取 20500 条数据\n",
|
||
"已获取 20600 条数据\n",
|
||
"已获取 20700 条数据\n",
|
||
"已获取 20800 条数据\n",
|
||
"已获取 20900 条数据\n",
|
||
"已获取 21000 条数据\n",
|
||
"已获取 21100 条数据\n",
|
||
"已获取 21200 条数据\n",
|
||
"已获取 21300 条数据\n",
|
||
"已获取 21400 条数据\n",
|
||
"已获取 21500 条数据\n",
|
||
"已获取 21600 条数据\n",
|
||
"已获取 21700 条数据\n",
|
||
"已获取 21800 条数据\n",
|
||
"已获取 21900 条数据\n",
|
||
"已获取 22000 条数据\n",
|
||
"已获取 22100 条数据\n",
|
||
"已获取 22200 条数据\n",
|
||
"已获取 22300 条数据\n",
|
||
"已获取 22400 条数据\n",
|
||
"已获取 22500 条数据\n",
|
||
"已获取 22600 条数据\n",
|
||
"已获取 22700 条数据\n",
|
||
"已获取 22800 条数据\n",
|
||
"已获取 22900 条数据\n",
|
||
"已获取 23000 条数据\n",
|
||
"已获取 23100 条数据\n",
|
||
"已获取 23200 条数据\n",
|
||
"已获取 23300 条数据\n",
|
||
"已获取 23400 条数据\n",
|
||
"已获取 23500 条数据\n",
|
||
"已获取 23600 条数据\n",
|
||
"已获取 23700 条数据\n",
|
||
"已获取 23800 条数据\n",
|
||
"已获取 23900 条数据\n",
|
||
"已获取 24000 条数据\n",
|
||
"已获取 24100 条数据\n",
|
||
"已获取 24200 条数据\n",
|
||
"已获取 24300 条数据\n",
|
||
"已获取 24400 条数据\n",
|
||
"已获取 24500 条数据\n",
|
||
"已获取 24600 条数据\n",
|
||
"已获取 24700 条数据\n",
|
||
"已获取 24800 条数据\n",
|
||
"已获取 24900 条数据\n",
|
||
"已获取 25000 条数据\n",
|
||
"已获取 25100 条数据\n",
|
||
"已获取 25200 条数据\n",
|
||
"已获取 25300 条数据\n",
|
||
"已获取 25400 条数据\n",
|
||
"已获取 25500 条数据\n",
|
||
"已获取 25600 条数据\n",
|
||
"已获取 25700 条数据\n",
|
||
"已获取 25800 条数据\n",
|
||
"已获取 25900 条数据\n",
|
||
"已获取 26000 条数据\n",
|
||
"已获取 26100 条数据\n",
|
||
"已获取 26200 条数据\n",
|
||
"已获取 26300 条数据\n",
|
||
"已获取 26400 条数据\n",
|
||
"已获取 26500 条数据\n",
|
||
"已获取 26600 条数据\n",
|
||
"已获取 26700 条数据\n",
|
||
"已获取 26800 条数据\n",
|
||
"已获取 26900 条数据\n",
|
||
"已获取 27000 条数据\n",
|
||
"已获取 27100 条数据\n",
|
||
"已获取 27200 条数据\n",
|
||
"已获取 27300 条数据\n",
|
||
"已获取 27400 条数据\n",
|
||
"已获取 27500 条数据\n",
|
||
"已获取 27600 条数据\n",
|
||
"已获取 27700 条数据\n",
|
||
"已获取 27800 条数据\n",
|
||
"已获取 27900 条数据\n",
|
||
"已获取 28000 条数据\n",
|
||
"已获取 28100 条数据\n",
|
||
"已获取 28200 条数据\n",
|
||
"已获取 28300 条数据\n",
|
||
"已获取 28400 条数据\n",
|
||
"已获取 28500 条数据\n",
|
||
"已获取 28600 条数据\n",
|
||
"已获取 28700 条数据\n",
|
||
"已获取 28800 条数据\n",
|
||
"已获取 28900 条数据\n",
|
||
"已获取 29000 条数据\n",
|
||
"已获取 29100 条数据\n",
|
||
"已获取 29200 条数据\n",
|
||
"已获取 29300 条数据\n",
|
||
"已获取 29400 条数据\n",
|
||
"已获取 29500 条数据\n",
|
||
"已获取 29600 条数据\n",
|
||
"已获取 29700 条数据\n",
|
||
"已获取 29800 条数据\n",
|
||
"已获取 29900 条数据\n",
|
||
"已获取 30000 条数据\n",
|
||
"已获取 30100 条数据\n",
|
||
"已获取 30200 条数据\n",
|
||
"已获取 30300 条数据\n",
|
||
"已获取 30400 条数据\n",
|
||
"已获取 30500 条数据\n",
|
||
"已获取 30600 条数据\n",
|
||
"已获取 30700 条数据\n",
|
||
"已获取 30800 条数据\n",
|
||
"已获取 30900 条数据\n",
|
||
"已获取 31000 条数据\n",
|
||
"已获取 31100 条数据\n",
|
||
"已获取 31200 条数据\n",
|
||
"已获取 31300 条数据\n",
|
||
"已获取 31400 条数据\n",
|
||
"已获取 31500 条数据\n",
|
||
"已获取 31600 条数据\n",
|
||
"已获取 31700 条数据\n",
|
||
"已获取 31800 条数据\n",
|
||
"已获取 31900 条数据\n",
|
||
"已获取 32000 条数据\n",
|
||
"已获取 32100 条数据\n",
|
||
"已获取 32200 条数据\n",
|
||
"已获取 32300 条数据\n",
|
||
"已获取 32400 条数据\n",
|
||
"已获取 32500 条数据\n",
|
||
"已获取 32600 条数据\n",
|
||
"已获取 32700 条数据\n",
|
||
"已获取 32800 条数据\n",
|
||
"已获取 32900 条数据\n",
|
||
"已获取 33000 条数据\n",
|
||
"已获取 33100 条数据\n",
|
||
"已获取 33200 条数据\n",
|
||
"已获取 33300 条数据\n",
|
||
"已获取 33400 条数据\n",
|
||
"已获取 33500 条数据\n",
|
||
"已获取 33600 条数据\n",
|
||
"已获取 33700 条数据\n",
|
||
"已获取 33800 条数据\n",
|
||
"已获取 33900 条数据\n",
|
||
"已获取 34000 条数据\n",
|
||
"已获取 34100 条数据\n",
|
||
"已获取 34200 条数据\n",
|
||
"已获取 34300 条数据\n",
|
||
"已获取 34400 条数据\n",
|
||
"已获取 34500 条数据\n",
|
||
"已获取 34600 条数据\n",
|
||
"已获取 34700 条数据\n",
|
||
"已获取 34800 条数据\n",
|
||
"已获取 34900 条数据\n",
|
||
"已获取 35000 条数据\n",
|
||
"已获取 35100 条数据\n",
|
||
"已获取 35200 条数据\n",
|
||
"已获取 35300 条数据\n",
|
||
"已获取 35400 条数据\n",
|
||
"已获取 35500 条数据\n",
|
||
"已获取 35600 条数据\n",
|
||
"已获取 35700 条数据\n",
|
||
"已获取 35800 条数据\n",
|
||
"已获取 35900 条数据\n",
|
||
"已获取 36000 条数据\n",
|
||
"已获取 36100 条数据\n",
|
||
"已获取 36200 条数据\n",
|
||
"已获取 36300 条数据\n",
|
||
"已获取 36400 条数据\n",
|
||
"已获取 36500 条数据\n",
|
||
"已获取 36600 条数据\n",
|
||
"已获取 36700 条数据\n",
|
||
"已获取 36800 条数据\n",
|
||
"已获取 36900 条数据\n",
|
||
"已获取 37000 条数据\n",
|
||
"已获取 37100 条数据\n",
|
||
"已获取 37200 条数据\n",
|
||
"已获取 37300 条数据\n",
|
||
"已获取 37400 条数据\n",
|
||
"已获取 37500 条数据\n",
|
||
"已获取 37600 条数据\n",
|
||
"已获取 37700 条数据\n",
|
||
"已获取 37724 条数据\n",
|
||
"已获取 100 条数据\n",
|
||
"已获取 200 条数据\n",
|
||
"已获取 300 条数据\n",
|
||
"已获取 400 条数据\n",
|
||
"已获取 500 条数据\n",
|
||
"已获取 600 条数据\n",
|
||
"已获取 700 条数据\n",
|
||
"已获取 800 条数据\n",
|
||
"已获取 900 条数据\n",
|
||
"已获取 1000 条数据\n",
|
||
"已获取 1100 条数据\n",
|
||
"已获取 1200 条数据\n",
|
||
"已获取 1300 条数据\n",
|
||
"已获取 1400 条数据\n",
|
||
"已获取 1500 条数据\n",
|
||
"已获取 1600 条数据\n",
|
||
"已获取 1700 条数据\n",
|
||
"已获取 1800 条数据\n",
|
||
"已获取 1900 条数据\n",
|
||
"已获取 2000 条数据\n",
|
||
"已获取 2100 条数据\n",
|
||
"已获取 2200 条数据\n",
|
||
"已获取 2300 条数据\n",
|
||
"已获取 2400 条数据\n",
|
||
"已获取 2500 条数据\n",
|
||
"已获取 2600 条数据\n",
|
||
"已获取 2700 条数据\n",
|
||
"已获取 2800 条数据\n",
|
||
"已获取 2900 条数据\n",
|
||
"已获取 3000 条数据\n",
|
||
"已获取 3100 条数据\n",
|
||
"已获取 3200 条数据\n",
|
||
"已获取 3300 条数据\n",
|
||
"已获取 3400 条数据\n",
|
||
"已获取 3500 条数据\n",
|
||
"已获取 3600 条数据\n",
|
||
"已获取 3700 条数据\n",
|
||
"已获取 3800 条数据\n",
|
||
"已获取 3900 条数据\n",
|
||
"已获取 4000 条数据\n",
|
||
"已获取 4100 条数据\n",
|
||
"已获取 4200 条数据\n",
|
||
"已获取 4300 条数据\n",
|
||
"已获取 4400 条数据\n",
|
||
"已获取 4500 条数据\n",
|
||
"已获取 4600 条数据\n",
|
||
"已获取 4700 条数据\n",
|
||
"已获取 4800 条数据\n",
|
||
"已获取 4900 条数据\n",
|
||
"已获取 5000 条数据\n",
|
||
"已获取 5100 条数据\n",
|
||
"已获取 5200 条数据\n",
|
||
"已获取 5300 条数据\n",
|
||
"已获取 5400 条数据\n",
|
||
"已获取 5500 条数据\n",
|
||
"已获取 5600 条数据\n",
|
||
"已获取 5700 条数据\n",
|
||
"已获取 5800 条数据\n",
|
||
"已获取 5900 条数据\n",
|
||
"已获取 6000 条数据\n",
|
||
"已获取 6100 条数据\n",
|
||
"已获取 6200 条数据\n",
|
||
"已获取 6300 条数据\n",
|
||
"已获取 6400 条数据\n",
|
||
"已获取 6500 条数据\n",
|
||
"已获取 6600 条数据\n",
|
||
"已获取 6700 条数据\n",
|
||
"已获取 6800 条数据\n",
|
||
"已获取 6900 条数据\n",
|
||
"已获取 7000 条数据\n",
|
||
"已获取 7100 条数据\n",
|
||
"已获取 7200 条数据\n",
|
||
"已获取 7300 条数据\n",
|
||
"已获取 7400 条数据\n",
|
||
"已获取 7500 条数据\n",
|
||
"已获取 7600 条数据\n",
|
||
"已获取 7700 条数据\n",
|
||
"已获取 7800 条数据\n",
|
||
"已获取 7900 条数据\n",
|
||
"已获取 8000 条数据\n",
|
||
"已获取 8100 条数据\n",
|
||
"已获取 8200 条数据\n",
|
||
"已获取 8300 条数据\n",
|
||
"已获取 8400 条数据\n",
|
||
"已获取 8500 条数据\n",
|
||
"已获取 8600 条数据\n",
|
||
"已获取 8700 条数据\n",
|
||
"已获取 8800 条数据\n",
|
||
"已获取 8900 条数据\n",
|
||
"已获取 9000 条数据\n",
|
||
"已获取 9100 条数据\n",
|
||
"已获取 9200 条数据\n",
|
||
"已获取 9300 条数据\n",
|
||
"已获取 9400 条数据\n",
|
||
"已获取 9500 条数据\n",
|
||
"已获取 9600 条数据\n",
|
||
"已获取 9700 条数据\n",
|
||
"已获取 9800 条数据\n",
|
||
"已获取 9900 条数据\n",
|
||
"已获取 10000 条数据\n",
|
||
"已获取 10100 条数据\n",
|
||
"已获取 10200 条数据\n",
|
||
"已获取 10300 条数据\n",
|
||
"已获取 10400 条数据\n",
|
||
"已获取 10500 条数据\n",
|
||
"已获取 10600 条数据\n",
|
||
"已获取 10700 条数据\n",
|
||
"已获取 10800 条数据\n",
|
||
"已获取 10900 条数据\n",
|
||
"已获取 11000 条数据\n",
|
||
"已获取 11100 条数据\n",
|
||
"已获取 11200 条数据\n",
|
||
"已获取 11300 条数据\n",
|
||
"已获取 11400 条数据\n",
|
||
"已获取 11500 条数据\n",
|
||
"已获取 11600 条数据\n",
|
||
"已获取 11700 条数据\n",
|
||
"已获取 11800 条数据\n",
|
||
"已获取 11900 条数据\n",
|
||
"已获取 12000 条数据\n",
|
||
"已获取 12100 条数据\n",
|
||
"已获取 12200 条数据\n",
|
||
"已获取 12300 条数据\n",
|
||
"已获取 12400 条数据\n",
|
||
"已获取 12500 条数据\n",
|
||
"已获取 12600 条数据\n",
|
||
"已获取 12700 条数据\n",
|
||
"已获取 12800 条数据\n",
|
||
"已获取 12900 条数据\n",
|
||
"已获取 13000 条数据\n",
|
||
"已获取 13100 条数据\n",
|
||
"已获取 13200 条数据\n",
|
||
"已获取 13300 条数据\n",
|
||
"已获取 13400 条数据\n",
|
||
"已获取 13500 条数据\n",
|
||
"已获取 13600 条数据\n",
|
||
"已获取 13700 条数据\n",
|
||
"已获取 13800 条数据\n",
|
||
"已获取 13900 条数据\n",
|
||
"已获取 14000 条数据\n",
|
||
"已获取 14100 条数据\n",
|
||
"已获取 14200 条数据\n",
|
||
"已获取 14300 条数据\n",
|
||
"已获取 14400 条数据\n",
|
||
"已获取 14500 条数据\n",
|
||
"已获取 14600 条数据\n",
|
||
"已获取 14700 条数据\n",
|
||
"已获取 14800 条数据\n",
|
||
"已获取 14900 条数据\n",
|
||
"已获取 15000 条数据\n",
|
||
"已获取 15100 条数据\n",
|
||
"已获取 15200 条数据\n",
|
||
"已获取 15300 条数据\n",
|
||
"已获取 15400 条数据\n",
|
||
"已获取 15500 条数据\n",
|
||
"已获取 15600 条数据\n",
|
||
"已获取 15700 条数据\n",
|
||
"已获取 15800 条数据\n",
|
||
"已获取 15900 条数据\n",
|
||
"已获取 16000 条数据\n",
|
||
"已获取 16100 条数据\n",
|
||
"已获取 16200 条数据\n",
|
||
"已获取 16300 条数据\n",
|
||
"已获取 16400 条数据\n",
|
||
"已获取 16500 条数据\n",
|
||
"已获取 16600 条数据\n",
|
||
"已获取 16700 条数据\n",
|
||
"已获取 16800 条数据\n",
|
||
"已获取 16900 条数据\n",
|
||
"已获取 17000 条数据\n",
|
||
"已获取 17100 条数据\n",
|
||
"已获取 17200 条数据\n",
|
||
"已获取 17300 条数据\n",
|
||
"已获取 17400 条数据\n",
|
||
"已获取 17500 条数据\n",
|
||
"已获取 17600 条数据\n",
|
||
"已获取 17700 条数据\n",
|
||
"已获取 17800 条数据\n",
|
||
"已获取 17871 条数据\n",
|
||
"已获取 100 条数据\n",
|
||
"已获取 200 条数据\n",
|
||
"已获取 300 条数据\n",
|
||
"已获取 400 条数据\n",
|
||
"已获取 500 条数据\n",
|
||
"已获取 600 条数据\n",
|
||
"已获取 700 条数据\n",
|
||
"已获取 800 条数据\n",
|
||
"已获取 900 条数据\n",
|
||
"已获取 1000 条数据\n",
|
||
"已获取 1100 条数据\n",
|
||
"已获取 1200 条数据\n",
|
||
"已获取 1300 条数据\n",
|
||
"已获取 1400 条数据\n",
|
||
"已获取 1500 条数据\n",
|
||
"已获取 1600 条数据\n",
|
||
"已获取 1700 条数据\n",
|
||
"已获取 1800 条数据\n",
|
||
"已获取 1900 条数据\n",
|
||
"已获取 2000 条数据\n",
|
||
"已获取 2100 条数据\n",
|
||
"已获取 2200 条数据\n",
|
||
"已获取 2300 条数据\n",
|
||
"已获取 2400 条数据\n",
|
||
"已获取 2500 条数据\n",
|
||
"已获取 2600 条数据\n",
|
||
"已获取 2700 条数据\n",
|
||
"已获取 2800 条数据\n",
|
||
"已获取 2900 条数据\n",
|
||
"已获取 3000 条数据\n",
|
||
"已获取 3100 条数据\n",
|
||
"已获取 3200 条数据\n",
|
||
"已获取 3300 条数据\n",
|
||
"已获取 3400 条数据\n",
|
||
"已获取 3500 条数据\n",
|
||
"已获取 3600 条数据\n",
|
||
"已获取 3700 条数据\n",
|
||
"已获取 3800 条数据\n",
|
||
"已获取 3900 条数据\n",
|
||
"已获取 4000 条数据\n",
|
||
"已获取 4100 条数据\n",
|
||
"已获取 4200 条数据\n",
|
||
"已获取 4300 条数据\n",
|
||
"已获取 4400 条数据\n",
|
||
"已获取 4500 条数据\n",
|
||
"已获取 4600 条数据\n",
|
||
"已获取 4700 条数据\n",
|
||
"已获取 4800 条数据\n",
|
||
"已获取 4900 条数据\n",
|
||
"已获取 5000 条数据\n",
|
||
"已获取 5100 条数据\n",
|
||
"已获取 5200 条数据\n",
|
||
"已获取 5300 条数据\n",
|
||
"已获取 5400 条数据\n",
|
||
"已获取 5500 条数据\n",
|
||
"已获取 5600 条数据\n",
|
||
"已获取 5700 条数据\n",
|
||
"已获取 5800 条数据\n",
|
||
"已获取 5900 条数据\n",
|
||
"已获取 6000 条数据\n",
|
||
"已获取 6100 条数据\n",
|
||
"已获取 6200 条数据\n",
|
||
"已获取 6300 条数据\n",
|
||
"已获取 6400 条数据\n",
|
||
"已获取 6500 条数据\n",
|
||
"已获取 6600 条数据\n",
|
||
"已获取 6700 条数据\n",
|
||
"已获取 6800 条数据\n",
|
||
"已获取 6900 条数据\n",
|
||
"已获取 7000 条数据\n",
|
||
"已获取 7100 条数据\n",
|
||
"已获取 7200 条数据\n",
|
||
"已获取 7300 条数据\n",
|
||
"已获取 7400 条数据\n",
|
||
"已获取 7500 条数据\n",
|
||
"已获取 7600 条数据\n",
|
||
"已获取 7700 条数据\n",
|
||
"已获取 7800 条数据\n",
|
||
"已获取 7900 条数据\n",
|
||
"已获取 8000 条数据\n",
|
||
"已获取 8100 条数据\n",
|
||
"已获取 8200 条数据\n",
|
||
"已获取 8300 条数据\n",
|
||
"已获取 8400 条数据\n",
|
||
"已获取 8500 条数据\n",
|
||
"已获取 8600 条数据\n",
|
||
"已获取 8700 条数据\n",
|
||
"已获取 8800 条数据\n",
|
||
"已获取 8900 条数据\n",
|
||
"已获取 9000 条数据\n",
|
||
"已获取 9100 条数据\n",
|
||
"已获取 9200 条数据\n",
|
||
"已获取 9300 条数据\n",
|
||
"已获取 9400 条数据\n",
|
||
"已获取 9500 条数据\n",
|
||
"已获取 9600 条数据\n",
|
||
"已获取 9700 条数据\n",
|
||
"已获取 9800 条数据\n",
|
||
"已获取 9900 条数据\n",
|
||
"已获取 10000 条数据\n",
|
||
"已获取 10100 条数据\n",
|
||
"已获取 10200 条数据\n",
|
||
"已获取 10300 条数据\n",
|
||
"已获取 10400 条数据\n",
|
||
"已获取 10500 条数据\n",
|
||
"已获取 10600 条数据\n",
|
||
"已获取 10700 条数据\n",
|
||
"已获取 10800 条数据\n",
|
||
"已获取 10900 条数据\n",
|
||
"已获取 11000 条数据\n",
|
||
"已获取 11100 条数据\n",
|
||
"已获取 11200 条数据\n",
|
||
"已获取 11300 条数据\n",
|
||
"已获取 11400 条数据\n",
|
||
"已获取 11500 条数据\n",
|
||
"已获取 11600 条数据\n",
|
||
"已获取 11700 条数据\n",
|
||
"已获取 11800 条数据\n",
|
||
"已获取 11900 条数据\n",
|
||
"已获取 12000 条数据\n",
|
||
"已获取 12100 条数据\n",
|
||
"已获取 12200 条数据\n",
|
||
"已获取 12300 条数据\n",
|
||
"已获取 12400 条数据\n",
|
||
"已获取 12500 条数据\n",
|
||
"已获取 12600 条数据\n",
|
||
"已获取 12700 条数据\n",
|
||
"已获取 12800 条数据\n",
|
||
"已获取 12900 条数据\n",
|
||
"已获取 13000 条数据\n",
|
||
"已获取 13100 条数据\n",
|
||
"已获取 13200 条数据\n",
|
||
"已获取 13300 条数据\n",
|
||
"已获取 13400 条数据\n",
|
||
"已获取 13500 条数据\n",
|
||
"已获取 13600 条数据\n",
|
||
"已获取 13700 条数据\n",
|
||
"已获取 13800 条数据\n",
|
||
"已获取 13900 条数据\n",
|
||
"已获取 14000 条数据\n",
|
||
"已获取 14100 条数据\n",
|
||
"已获取 14200 条数据\n",
|
||
"已获取 14300 条数据\n",
|
||
"已获取 14400 条数据\n",
|
||
"已获取 14500 条数据\n",
|
||
"已获取 14600 条数据\n",
|
||
"已获取 14700 条数据\n",
|
||
"已获取 14800 条数据\n",
|
||
"已获取 14900 条数据\n",
|
||
"已获取 15000 条数据\n",
|
||
"已获取 15100 条数据\n",
|
||
"已获取 15200 条数据\n",
|
||
"已获取 15300 条数据\n",
|
||
"已获取 15400 条数据\n",
|
||
"已获取 15500 条数据\n",
|
||
"已获取 15600 条数据\n",
|
||
"已获取 15700 条数据\n",
|
||
"已获取 15800 条数据\n",
|
||
"已获取 15900 条数据\n",
|
||
"已获取 16000 条数据\n",
|
||
"已获取 16100 条数据\n",
|
||
"已获取 16200 条数据\n",
|
||
"已获取 16300 条数据\n",
|
||
"已获取 16400 条数据\n",
|
||
"已获取 16500 条数据\n",
|
||
"已获取 16600 条数据\n",
|
||
"已获取 16700 条数据\n",
|
||
"已获取 16800 条数据\n",
|
||
"已获取 16900 条数据\n",
|
||
"已获取 17000 条数据\n",
|
||
"已获取 17100 条数据\n",
|
||
"已获取 17200 条数据\n",
|
||
"已获取 17300 条数据\n",
|
||
"已获取 17400 条数据\n",
|
||
"已获取 17500 条数据\n",
|
||
"已获取 17600 条数据\n",
|
||
"已获取 17700 条数据\n",
|
||
"已获取 17800 条数据\n",
|
||
"已获取 17900 条数据\n",
|
||
"已获取 18000 条数据\n",
|
||
"已获取 18100 条数据\n",
|
||
"已获取 18200 条数据\n",
|
||
"已获取 18300 条数据\n",
|
||
"已获取 18400 条数据\n",
|
||
"已获取 18500 条数据\n",
|
||
"已获取 18600 条数据\n",
|
||
"已获取 18700 条数据\n",
|
||
"已获取 18800 条数据\n",
|
||
"已获取 18900 条数据\n",
|
||
"已获取 19000 条数据\n",
|
||
"已获取 19100 条数据\n",
|
||
"已获取 19200 条数据\n",
|
||
"已获取 19300 条数据\n",
|
||
"已获取 19400 条数据\n",
|
||
"已获取 19500 条数据\n",
|
||
"已获取 19600 条数据\n",
|
||
"已获取 19700 条数据\n",
|
||
"已获取 19800 条数据\n",
|
||
"已获取 19900 条数据\n",
|
||
"已获取 20000 条数据\n",
|
||
"已获取 20100 条数据\n",
|
||
"已获取 20200 条数据\n",
|
||
"已获取 20300 条数据\n",
|
||
"已获取 20400 条数据\n",
|
||
"已获取 20500 条数据\n",
|
||
"已获取 20600 条数据\n",
|
||
"已获取 20700 条数据\n",
|
||
"已获取 20800 条数据\n",
|
||
"已获取 20900 条数据\n",
|
||
"已获取 21000 条数据\n",
|
||
"已获取 21100 条数据\n",
|
||
"已获取 21200 条数据\n",
|
||
"已获取 21300 条数据\n",
|
||
"已获取 21400 条数据\n",
|
||
"已获取 21500 条数据\n",
|
||
"已获取 21600 条数据\n",
|
||
"已获取 21700 条数据\n",
|
||
"已获取 21800 条数据\n",
|
||
"已获取 21820 条数据\n",
|
||
"已获取 100 条数据\n",
|
||
"已获取 200 条数据\n",
|
||
"已获取 300 条数据\n",
|
||
"已获取 400 条数据\n",
|
||
"已获取 500 条数据\n",
|
||
"已获取 600 条数据\n",
|
||
"已获取 700 条数据\n",
|
||
"已获取 800 条数据\n",
|
||
"已获取 900 条数据\n",
|
||
"已获取 1000 条数据\n",
|
||
"已获取 1100 条数据\n",
|
||
"已获取 1200 条数据\n",
|
||
"已获取 1300 条数据\n",
|
||
"已获取 1400 条数据\n",
|
||
"已获取 1500 条数据\n",
|
||
"已获取 1600 条数据\n",
|
||
"已获取 1700 条数据\n",
|
||
"已获取 1800 条数据\n",
|
||
"已获取 1850 条数据\n",
|
||
"已获取 100 条数据\n",
|
||
"已获取 200 条数据\n",
|
||
"已获取 300 条数据\n",
|
||
"已获取 400 条数据\n",
|
||
"已获取 432 条数据\n",
|
||
"已获取 100 条数据\n",
|
||
"已获取 200 条数据\n",
|
||
"已获取 300 条数据\n",
|
||
"已获取 400 条数据\n",
|
||
"已获取 500 条数据\n",
|
||
"已获取 600 条数据\n",
|
||
"已获取 700 条数据\n",
|
||
"已获取 800 条数据\n",
|
||
"已获取 900 条数据\n",
|
||
"已获取 1000 条数据\n",
|
||
"已获取 1100 条数据\n",
|
||
"已获取 1200 条数据\n",
|
||
"已获取 1300 条数据\n",
|
||
"已获取 1400 条数据\n",
|
||
"已获取 1500 条数据\n",
|
||
"已获取 1600 条数据\n",
|
||
"已获取 1700 条数据\n",
|
||
"已获取 1800 条数据\n",
|
||
"已获取 1900 条数据\n",
|
||
"已获取 2000 条数据\n",
|
||
"已获取 2100 条数据\n",
|
||
"已获取 2200 条数据\n",
|
||
"已获取 2300 条数据\n",
|
||
"已获取 2400 条数据\n",
|
||
"已获取 2500 条数据\n",
|
||
"已获取 2600 条数据\n",
|
||
"已获取 2700 条数据\n",
|
||
"已获取 2800 条数据\n",
|
||
"已获取 2900 条数据\n",
|
||
"已获取 3000 条数据\n",
|
||
"已获取 3100 条数据\n",
|
||
"已获取 3200 条数据\n",
|
||
"已获取 3300 条数据\n",
|
||
"已获取 3369 条数据\n",
|
||
"已获取 100 条数据\n",
|
||
"已获取 200 条数据\n",
|
||
"已获取 206 条数据\n",
|
||
"已获取 51 条数据\n",
|
||
"已获取 100 条数据\n",
|
||
"已获取 200 条数据\n",
|
||
"已获取 300 条数据\n",
|
||
"已获取 400 条数据\n",
|
||
"已获取 500 条数据\n",
|
||
"已获取 600 条数据\n",
|
||
"已获取 700 条数据\n",
|
||
"已获取 800 条数据\n",
|
||
"已获取 900 条数据\n",
|
||
"已获取 1000 条数据\n",
|
||
"已获取 1100 条数据\n",
|
||
"已获取 1200 条数据\n",
|
||
"已获取 1300 条数据\n",
|
||
"已获取 1400 条数据\n",
|
||
"已获取 1500 条数据\n",
|
||
"已获取 1600 条数据\n",
|
||
"已获取 1700 条数据\n",
|
||
"已获取 1800 条数据\n",
|
||
"已获取 1900 条数据\n",
|
||
"已获取 2000 条数据\n",
|
||
"已获取 2100 条数据\n",
|
||
"已获取 2200 条数据\n",
|
||
"已获取 2300 条数据\n",
|
||
"已获取 2400 条数据\n",
|
||
"已获取 2500 条数据\n",
|
||
"已获取 2600 条数据\n",
|
||
"已获取 2700 条数据\n",
|
||
"已获取 2800 条数据\n",
|
||
"已获取 2900 条数据\n",
|
||
"已获取 3000 条数据\n",
|
||
"已获取 3100 条数据\n",
|
||
"已获取 3200 条数据\n",
|
||
"已获取 3300 条数据\n",
|
||
"已获取 3400 条数据\n",
|
||
"已获取 3500 条数据\n",
|
||
"已获取 3600 条数据\n",
|
||
"已获取 3700 条数据\n",
|
||
"已获取 3800 条数据\n",
|
||
"已获取 3900 条数据\n",
|
||
"已获取 4000 条数据\n",
|
||
"已获取 4100 条数据\n",
|
||
"已获取 4200 条数据\n",
|
||
"已获取 4300 条数据\n",
|
||
"已获取 4400 条数据\n",
|
||
"已获取 4500 条数据\n",
|
||
"已获取 4600 条数据\n",
|
||
"已获取 4700 条数据\n",
|
||
"已获取 4800 条数据\n",
|
||
"已获取 4900 条数据\n",
|
||
"已获取 5000 条数据\n",
|
||
"已获取 5100 条数据\n",
|
||
"已获取 5200 条数据\n",
|
||
"已获取 5300 条数据\n",
|
||
"已获取 5400 条数据\n",
|
||
"已获取 5500 条数据\n",
|
||
"已获取 5600 条数据\n",
|
||
"已获取 5700 条数据\n",
|
||
"已获取 5800 条数据\n",
|
||
"已获取 5900 条数据\n",
|
||
"已获取 6000 条数据\n",
|
||
"已获取 6100 条数据\n",
|
||
"已获取 6200 条数据\n",
|
||
"已获取 6300 条数据\n",
|
||
"已获取 6400 条数据\n",
|
||
"已获取 6500 条数据\n",
|
||
"已获取 6600 条数据\n",
|
||
"已获取 6700 条数据\n",
|
||
"已获取 6800 条数据\n",
|
||
"已获取 6900 条数据\n",
|
||
"已获取 7000 条数据\n",
|
||
"已获取 7100 条数据\n",
|
||
"已获取 7200 条数据\n",
|
||
"已获取 7300 条数据\n",
|
||
"已获取 7400 条数据\n",
|
||
"已获取 7500 条数据\n",
|
||
"已获取 7600 条数据\n",
|
||
"已获取 7700 条数据\n",
|
||
"已获取 7800 条数据\n",
|
||
"已获取 7900 条数据\n",
|
||
"已获取 8000 条数据\n",
|
||
"已获取 8100 条数据\n",
|
||
"已获取 8200 条数据\n",
|
||
"已获取 8300 条数据\n",
|
||
"已获取 8400 条数据\n",
|
||
"已获取 8500 条数据\n",
|
||
"已获取 8600 条数据\n",
|
||
"已获取 8700 条数据\n",
|
||
"已获取 8800 条数据\n",
|
||
"已获取 8900 条数据\n",
|
||
"已获取 9000 条数据\n",
|
||
"已获取 9100 条数据\n",
|
||
"已获取 9200 条数据\n",
|
||
"已获取 9300 条数据\n",
|
||
"已获取 9400 条数据\n",
|
||
"已获取 9500 条数据\n",
|
||
"已获取 9600 条数据\n",
|
||
"已获取 9700 条数据\n",
|
||
"已获取 9800 条数据\n",
|
||
"已获取 9900 条数据\n",
|
||
"已获取 10000 条数据\n",
|
||
"已获取 10100 条数据\n",
|
||
"已获取 10200 条数据\n",
|
||
"已获取 10300 条数据\n",
|
||
"已获取 10400 条数据\n",
|
||
"已获取 10500 条数据\n",
|
||
"已获取 10600 条数据\n",
|
||
"已获取 10700 条数据\n",
|
||
"已获取 10800 条数据\n",
|
||
"已获取 10900 条数据\n",
|
||
"已获取 11000 条数据\n",
|
||
"已获取 11100 条数据\n",
|
||
"已获取 11200 条数据\n",
|
||
"已获取 11300 条数据\n",
|
||
"已获取 11400 条数据\n",
|
||
"已获取 11500 条数据\n",
|
||
"已获取 11600 条数据\n",
|
||
"已获取 11700 条数据\n",
|
||
"已获取 11800 条数据\n",
|
||
"已获取 11900 条数据\n",
|
||
"已获取 12000 条数据\n",
|
||
"已获取 12100 条数据\n",
|
||
"已获取 12200 条数据\n",
|
||
"已获取 12300 条数据\n",
|
||
"已获取 12400 条数据\n",
|
||
"已获取 12500 条数据\n",
|
||
"已获取 12600 条数据\n",
|
||
"已获取 12700 条数据\n",
|
||
"已获取 12800 条数据\n",
|
||
"已获取 12900 条数据\n",
|
||
"已获取 13000 条数据\n",
|
||
"已获取 13100 条数据\n",
|
||
"已获取 13200 条数据\n",
|
||
"已获取 13300 条数据\n",
|
||
"已获取 13400 条数据\n",
|
||
"已获取 13500 条数据\n",
|
||
"已获取 13600 条数据\n",
|
||
"已获取 13700 条数据\n",
|
||
"已获取 13800 条数据\n",
|
||
"已获取 13900 条数据\n",
|
||
"已获取 14000 条数据\n",
|
||
"已获取 14100 条数据\n",
|
||
"已获取 14200 条数据\n",
|
||
"已获取 14300 条数据\n",
|
||
"已获取 14400 条数据\n",
|
||
"已获取 14500 条数据\n",
|
||
"已获取 14600 条数据\n",
|
||
"已获取 14700 条数据\n",
|
||
"已获取 14800 条数据\n",
|
||
"已获取 14900 条数据\n",
|
||
"已获取 15000 条数据\n",
|
||
"已获取 15100 条数据\n",
|
||
"已获取 15200 条数据\n",
|
||
"已获取 15300 条数据\n",
|
||
"已获取 15400 条数据\n",
|
||
"已获取 15500 条数据\n",
|
||
"已获取 15600 条数据\n",
|
||
"已获取 15700 条数据\n",
|
||
"已获取 15800 条数据\n",
|
||
"已获取 15900 条数据\n",
|
||
"已获取 16000 条数据\n",
|
||
"已获取 16100 条数据\n",
|
||
"已获取 16200 条数据\n",
|
||
"已获取 16300 条数据\n",
|
||
"已获取 16400 条数据\n",
|
||
"已获取 16500 条数据\n",
|
||
"已获取 16600 条数据\n",
|
||
"已获取 16700 条数据\n",
|
||
"已获取 16800 条数据\n",
|
||
"已获取 16900 条数据\n",
|
||
"已获取 17000 条数据\n",
|
||
"已获取 17100 条数据\n",
|
||
"已获取 17200 条数据\n",
|
||
"已获取 17300 条数据\n",
|
||
"已获取 17400 条数据\n",
|
||
"已获取 17500 条数据\n",
|
||
"已获取 17600 条数据\n",
|
||
"已获取 17700 条数据\n",
|
||
"已获取 17800 条数据\n",
|
||
"已获取 17900 条数据\n",
|
||
"已获取 18000 条数据\n",
|
||
"已获取 18100 条数据\n",
|
||
"已获取 18200 条数据\n",
|
||
"已获取 18300 条数据\n",
|
||
"已获取 18400 条数据\n",
|
||
"已获取 18500 条数据\n",
|
||
"已获取 18600 条数据\n",
|
||
"已获取 18700 条数据\n",
|
||
"已获取 18781 条数据\n",
|
||
"当前日期: 2025-04-17\n",
|
||
"遍历日期: 2025-04-16\n",
|
||
"遍历次数: 1\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stderr",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"C:\\Users\\Administrator.DESKTOP-7IC2USJ\\AppData\\Local\\Temp\\ipykernel_12820\\56379425.py:321: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
|
||
"Try using .loc[row_indexer,col_indexer] = value instead\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" filtered_data['sort_key'] = filtered_data['saas_edition_fmt'].map(fixed_order_map)\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
" date_id date_fmt id_own_group group_name \\\n",
|
||
"0 20250416 2025-04-16 11240984669918161533 合肥兆琳汽车服务有限公司 \n",
|
||
"1 20250416 2025-04-16 11240984669918160044 宁波太古汽车服务有限公司 \n",
|
||
"2 20250416 2025-04-16 11240984669918185067 苏州车觉道汽车服务有限公司 \n",
|
||
"3 20250416 2025-04-16 11240984669918182017 华豪汽修 \n",
|
||
"4 20250416 2025-04-16 11240984669918175531 江苏淮威汽车服务有限公司 \n",
|
||
"... ... ... ... ... \n",
|
||
"26771 20250416 2025-04-16 10546443563661823778 信阳市平桥区百度汽车维修中心/龙江路 \n",
|
||
"26772 20250416 2025-04-16 10907434497383320861 优车库 \n",
|
||
"26773 20250416 2025-04-16 10907434497383320861 优车库 \n",
|
||
"26774 20250416 2025-04-16 10546443564004141570 南京锋源汽车服务有限公司 \n",
|
||
"26775 20250416 2025-04-16 10546443564004141570 南京锋源汽车服务有限公司 \n",
|
||
"\n",
|
||
" id_own_org org_name org_code group_grade \\\n",
|
||
"0 11240984669918170533 合肥兆琳汽车服务有限公司 CHS202410150283533 重要客户(SVIP) \n",
|
||
"1 11240984669918168544 宁波太古汽车服务有限公司 CHS202410160283566 重要客户(SVIP) \n",
|
||
"2 11240984669918193575 苏州车觉道汽车服务有限公司 CHS202411010284709 重要客户(SVIP) \n",
|
||
"3 11240984669918191017 华豪汽修 CHS202410250284140 普通客户(VIP) \n",
|
||
"4 11240984669918184031 盐城共享钣喷中心 CHS202410210283865 重要客户(SVIP) \n",
|
||
"... ... ... ... ... \n",
|
||
"26771 11240984669918135520 百度汽车 CHS202409060281076 普通客户(VIP) \n",
|
||
"26772 11240984669918090034 优车库 CHS202407310278377 普通客户(VIP) \n",
|
||
"26773 11240984669918090034 优车库 CHS202407310278377 普通客户(VIP) \n",
|
||
"26774 11240984669918127026 锋源汽车 CHS202408300280497 普通客户(VIP) \n",
|
||
"26775 11240984669918127026 锋源汽车 CHS202408300280497 普通客户(VIP) \n",
|
||
"\n",
|
||
" org_type org_status ... edition_rank customer_type_rank \\\n",
|
||
"0 一般 留存 ... 5 2 \n",
|
||
"1 一般 留存 ... 5 1 \n",
|
||
"2 一般 留存 ... 5 2 \n",
|
||
"3 一般 留存 ... 7 5 \n",
|
||
"4 一般 留存 ... 5 1 \n",
|
||
"... ... ... ... ... ... \n",
|
||
"26771 一般 留存 ... 7 3 \n",
|
||
"26772 一般 留存 ... 7 3 \n",
|
||
"26773 一般 留存 ... 7 3 \n",
|
||
"26774 一般 留存 ... 7 3 \n",
|
||
"26775 一般 留存 ... 7 3 \n",
|
||
"\n",
|
||
" group_grade_rank max_saas_edition max_saas_customer_type \\\n",
|
||
"0 2 进阶版 D \n",
|
||
"1 2 进阶版 E \n",
|
||
"2 2 进阶版 D \n",
|
||
"3 3 入门版 A \n",
|
||
"4 2 进阶版 E \n",
|
||
"... ... ... ... \n",
|
||
"26771 3 尊享版 C \n",
|
||
"26772 3 基础版 C \n",
|
||
"26773 3 基础版 C \n",
|
||
"26774 3 基础版 C \n",
|
||
"26775 3 基础版 C \n",
|
||
"\n",
|
||
" max_group_grade 条件 exists_in_ngvv2 年 renew_date_new \n",
|
||
"0 重要客户(SVIP) 1 NaN NaN \n",
|
||
"1 重要客户(SVIP) 1 NaN NaN \n",
|
||
"2 重要客户(SVIP) 1 NaN NaN \n",
|
||
"3 普通客户(VIP) 1 NaN NaN \n",
|
||
"4 重要客户(SVIP) 1 NaN NaN \n",
|
||
"... ... ... ... ... ... \n",
|
||
"26771 普通客户(VIP) 1120 True 3.0 2026 \n",
|
||
"26772 普通客户(VIP) 1156 True 3.0 2025 \n",
|
||
"26773 普通客户(VIP) 1156 True 3.0 2026 \n",
|
||
"26774 普通客户(VIP) 1106 True 3.0 2025 \n",
|
||
"26775 普通客户(VIP) 1106 True 3.0 2026 \n",
|
||
"\n",
|
||
"[26776 rows x 153 columns]\n",
|
||
"开始次数: 1\n",
|
||
"当前日期: 2025-04-17 09:24:46.784417\n",
|
||
"遍历次数: 1\n",
|
||
"2025-01-23 2024-12-24 2024-10-25\n",
|
||
"59\n",
|
||
"销售负责人是: 刘磊\n",
|
||
"0254392654682418\n",
|
||
"SaaS开户回访人员: 0254392654682418\n",
|
||
"SaaS技术专家: 0237196424846034\n",
|
||
"SaaS区域经理: 1218085201677303\n",
|
||
"权限唯一值: 重要客户标准版E\n",
|
||
"该门店开单的权限是: √\n",
|
||
"67ebe3e10316219b9902b499\n",
|
||
"\n",
|
||
"销售负责人是: 刘磊\n",
|
||
"0254392654682418\n",
|
||
"SaaS开户回访人员: 0254392654682418\n",
|
||
"SaaS技术专家: 0237196424846034\n",
|
||
"SaaS区域经理: 1218085201677303\n",
|
||
"权限唯一值: 重要客户基础版D\n",
|
||
"该门店开单的权限是: √\n",
|
||
"67ebe4a3402e6a06de7b2a88\n",
|
||
"\n",
|
||
"销售负责人是: 贾宏伟\n",
|
||
"1124513635494702\n",
|
||
"SaaS开户回访人员: 1124513635494702\n",
|
||
"SaaS技术专家: 055512041727184572\n",
|
||
"SaaS区域经理: 1218085201677303\n",
|
||
"权限唯一值: 重要客户基础版D\n",
|
||
"该门店开单的权限是: √\n",
|
||
"67ebe45093cd0e815b15badc\n",
|
||
"\n",
|
||
"销售负责人是: 王蔚东\n",
|
||
"036316110429501709\n",
|
||
"SaaS开户回访人员: 036316110429501709\n",
|
||
"SaaS技术专家: 195159084238961158\n",
|
||
"SaaS区域经理: 025366033037741985\n",
|
||
"权限唯一值: 重要客户旗舰版D\n",
|
||
"该门店开单的权限是: √\n",
|
||
"67ebe3c33e982b69b90f567a\n",
|
||
"\n",
|
||
"销售负责人是: 刘磊\n",
|
||
"0254392654682418\n",
|
||
"SaaS开户回访人员: 0254392654682418\n",
|
||
"SaaS技术专家: 0237196424846034\n",
|
||
"SaaS区域经理: 1218085201677303\n",
|
||
"权限唯一值: 普通客户基础版C\n",
|
||
"该门店开单的权限是: √\n",
|
||
"67ebe4246e71febc7037cb1d\n",
|
||
"\n",
|
||
"销售负责人是: 王兵帅\n",
|
||
"6412695429095931\n",
|
||
"SaaS开户回访人员: 6412695429095931\n",
|
||
"SaaS技术专家: 054169455736370109\n",
|
||
"SaaS区域经理: 1525590028775887\n",
|
||
"权限唯一值: 普通客户基础版C\n",
|
||
"该门店开单的权限是: √\n",
|
||
"67ebe49c844fc468062d3ee7\n",
|
||
"\n",
|
||
"销售负责人是: 刘磊\n",
|
||
"0254392654682418\n",
|
||
"SaaS开户回访人员: 0254392654682418\n",
|
||
"SaaS技术专家: 0237196424846034\n",
|
||
"SaaS区域经理: 1218085201677303\n",
|
||
"权限唯一值: 重要客户基础版D\n",
|
||
"该门店开单的权限是: √\n",
|
||
"67ebe4a0cbb467a58217d00b\n",
|
||
"\n",
|
||
"销售负责人是: 陈煜\n",
|
||
"05463054031221652\n",
|
||
"SaaS开户回访人员: 05463054031221652\n",
|
||
"SaaS技术专家: 171128505620867604\n",
|
||
"SaaS区域经理: 232229053125844557\n",
|
||
"权限唯一值: 重要客户旗舰版D\n",
|
||
"该门店开单的权限是: √\n",
|
||
"67ebe409cbb467a58216a6e0\n",
|
||
"\n",
|
||
"销售负责人是: 魏延楠\n",
|
||
"162067282938988985\n",
|
||
"SaaS开户回访人员: 1143206052848269\n",
|
||
"SaaS技术专家: 110740004537832492\n",
|
||
"SaaS区域经理: 311003461041349\n",
|
||
"权限唯一值: 普通客户基础版A\n",
|
||
"该门店开单的权限是: √\n",
|
||
"67ebe49c038f019e7e6609f5\n",
|
||
"\n",
|
||
"销售负责人是: 贾宏伟\n",
|
||
"1124513635494702\n",
|
||
"SaaS开户回访人员: 1124513635494702\n",
|
||
"SaaS技术专家: 055512041727184572\n",
|
||
"SaaS区域经理: 1218085201677303\n",
|
||
"权限唯一值: 重要客户旗舰版D\n",
|
||
"该门店开单的权限是: √\n",
|
||
"67ebe3d85778ac1011aafe6c\n",
|
||
"\n",
|
||
"销售负责人是: 丰文祥\n",
|
||
"253635282420072174\n",
|
||
"SaaS开户回访人员: 253635282420072174\n",
|
||
"SaaS技术专家: 195159084238961158\n",
|
||
"SaaS区域经理: 025366033037741985\n",
|
||
"权限唯一值: 重要客户基础版D\n",
|
||
"该门店开单的权限是: √\n",
|
||
"67ebe49650a799395c177e3b\n",
|
||
"\n",
|
||
"销售负责人是: 邵宝振\n",
|
||
"032861373036352679\n",
|
||
"SaaS开户回访人员: 032861373036352679\n",
|
||
"SaaS技术专家: 1253235059942945\n",
|
||
"SaaS区域经理: 1218085201677303\n",
|
||
"权限唯一值: 普通客户旗舰版F\n",
|
||
"该门店开单的权限是: √\n",
|
||
"67ebe4246261eb293a77cc65\n",
|
||
"\n",
|
||
"销售负责人是: 王鑫\n",
|
||
"SaaS开户回访人员: 2750181616954944\n",
|
||
"SaaS技术专家: 0237196424846034\n",
|
||
"SaaS区域经理: 1218085201677303\n",
|
||
"权限唯一值: 普通客户基础版C\n",
|
||
"该门店开单的权限是: √\n",
|
||
"67ebe43dde575a6af79f2005\n",
|
||
"\n",
|
||
"销售负责人是: 舒晓明\n",
|
||
"224934300132837549\n",
|
||
"Error finding customer service: 'str' object has no attribute 'get'\n",
|
||
"销售负责人是: 许盼盼\n",
|
||
"693800011139268\n",
|
||
"SaaS开户回访人员: 693800011139268\n",
|
||
"SaaS技术专家: 055512041727184572\n",
|
||
"SaaS区域经理: 1218085201677303\n",
|
||
"权限唯一值: 重要客户旗舰版F\n",
|
||
"该门店开单的权限是: √\n",
|
||
"67ebe4246261eb293a77cc29\n",
|
||
"\n",
|
||
"销售负责人是: 储召强\n",
|
||
"075458412020533110\n",
|
||
"SaaS开户回访人员: 075458412020533110\n",
|
||
"SaaS技术专家: 3704680936560271\n",
|
||
"SaaS区域经理: 025366033037741985\n",
|
||
"权限唯一值: 重要客户旗舰版E\n",
|
||
"该门店开单的权限是: √\n",
|
||
"67ebe45093cd0e815b15bad9\n",
|
||
"\n",
|
||
"销售负责人是: 郭波波\n",
|
||
"SaaS开户回访人员: 101152211221580284\n",
|
||
"SaaS技术专家: 0103433535667605\n",
|
||
"SaaS区域经理: 232229053125844557\n",
|
||
"权限唯一值: 普通客户基础版F\n",
|
||
"该门店开单的权限是: √\n",
|
||
"67ebe4192cd7fe3c651ac64e\n",
|
||
"\n",
|
||
"销售负责人是: 邵宝振\n",
|
||
"SaaS开户回访人员: 032861373036352679\n",
|
||
"SaaS技术专家: 1253235059942945\n",
|
||
"SaaS区域经理: 1218085201677303\n",
|
||
"权限唯一值: 重要客户至尊版E\n",
|
||
"该门店开单的权限是: √\n",
|
||
"67ebe48f2224d5f4ce7e38b8\n",
|
||
"\n"
|
||
]
|
||
}
|
||
],
|
||
"execution_count": 5
|
||
}
|
||
],
|
||
"metadata": {
|
||
"kernelspec": {
|
||
"display_name": "Python 3",
|
||
"language": "python",
|
||
"name": "python3"
|
||
},
|
||
"language_info": {
|
||
"codemirror_mode": {
|
||
"name": "ipython",
|
||
"version": 2
|
||
},
|
||
"file_extension": ".py",
|
||
"mimetype": "text/x-python",
|
||
"name": "python",
|
||
"nbconvert_exporter": "python",
|
||
"pygments_lexer": "ipython2",
|
||
"version": "2.7.6"
|
||
}
|
||
},
|
||
"nbformat": 4,
|
||
"nbformat_minor": 5
|
||
}
|