备份
This commit is contained in:
@@ -63,7 +63,7 @@ def ceshi(formData) -> str:
|
||||
print("生成失败预警!")
|
||||
|
||||
|
||||
cookies_str ="marketingSESSIONID=1458e261-f7a5-44ab-813e-5112e3b54222; sajssdk_2015_cross_new_user=1; erpLanguage=zh-CN; prodOrg=11240984669918390035; unp=15956902486724325447; un=15956902486724325447; _up=-NillNN-qyBEJ--t3vnSknvoOF52yPeEsM8B2304WONeVPTFo57QjaZJ9Q3d-WrAAGgt60MgQHajHWBHMKKxj0CuWypi1JgKCFP1EPEk-HbqEvEVrIIg0AAJ9_NRv-ZNHu3M-GTc1523HHeqquVTjukek1TGOhdorEj9kxq49c3TRxc.; sensorsdata2015jssdkcross=%7B%22distinct_id%22%3A%2215956902486724325447%22%2C%22first_id%22%3A%2219a48e066e68e2-067b1e693596828-4c657b58-2073600-19a48e066e71500%22%2C%22props%22%3A%7B%22%24latest_traffic_source_type%22%3A%22%E7%9B%B4%E6%8E%A5%E6%B5%81%E9%87%8F%22%2C%22%24latest_search_keyword%22%3A%22%E6%9C%AA%E5%8F%96%E5%88%B0%E5%80%BC_%E7%9B%B4%E6%8E%A5%E6%89%93%E5%BC%80%22%2C%22%24latest_referrer%22%3A%22%22%7D%2C%22%24device_id%22%3A%2219a48e066e68e2-067b1e693596828-4c657b58-2073600-19a48e066e71500%22%7D; tmall=false; Hm_lvt_25f5e7a3a5dbb293d7dd35d5f1be8d0a=1762159273; HMACCOUNT=55F2182717FD6AE6; Hm_lpvt_25f5e7a3a5dbb293d7dd35d5f1be8d0a=1762159385"
|
||||
cookies_str ="marketingSESSIONID=0ac63d8a-75d0-498f-b8fe-a878331c7489; sensorsdata2015jssdkcross=%7B%22distinct_id%22%3A%2215932094283302236249%22%2C%22first_id%22%3A%2219b11da5605dba-09ce585a75d9ef-26011a51-2073600-19b11da5606f14%22%2C%22props%22%3A%7B%22%24latest_traffic_source_type%22%3A%22%E7%9B%B4%E6%8E%A5%E6%B5%81%E9%87%8F%22%2C%22%24latest_search_keyword%22%3A%22%E6%9C%AA%E5%8F%96%E5%88%B0%E5%80%BC_%E7%9B%B4%E6%8E%A5%E6%89%93%E5%BC%80%22%2C%22%24latest_referrer%22%3A%22%22%7D%2C%22%24device_id%22%3A%2219b11da5605dba-09ce585a75d9ef-26011a51-2073600-19b11da5606f14%22%7D; erpLanguage=zh-CN; unp=15932094283302236249; un=15932094283302236249; _up=-NillNN-qyBEJ--t3vnSknvoOF52zvONuckH23g8WuVfVffDo5DQjaZJ9Q3d-WrAAGgt60MgQHajHWBHMKKxj0CuWypi1JgKCFP1EPEk-HbqE_ATrYol1AAP_PVRv-ZNHu3M-GTc15uzFX6srOVWiusYklXFPBdmrEj9zR-69s-xcmc.; tmall=false; Hm_lvt_25f5e7a3a5dbb293d7dd35d5f1be8d0a=1773372154,1773382507,1773713140,1773741734; HMACCOUNT=350677B71627FB45; prodOrg=16015140731148603474; Hm_lpvt_25f5e7a3a5dbb293d7dd35d5f1be8d0a=1773743099"
|
||||
cookies_str = cookies_str.encode('utf-8').decode('latin-1')
|
||||
|
||||
cookie_dict = {item.split('=')[0]: item.split('=')[1]
|
||||
@@ -75,9 +75,10 @@ headers = {
|
||||
'origin': 'https://yunxiu.f6car.cn'
|
||||
}
|
||||
# 读取excel文件
|
||||
data = xlrd.open_workbook(r"D:\Idea Project\F6+宜搭+其它(1)\张阳脚本\模板\套餐卡退卡.xls")
|
||||
# data = xlrd.open_workbook(r"D:\Idea Project\F6+宜搭+其它(1)\张阳脚本\模板\套餐卡退卡.xls")
|
||||
data = xlrd.open_workbook(r"C:\Users\hp_z66\OneDrive\Desktop\钉钉文件\退卡.xls")
|
||||
|
||||
table = data.sheet_by_index(0) # 通过索引顺序获取
|
||||
table = data.sheet_by_index(1) # 通过索引顺序获取
|
||||
|
||||
h = table.nrows
|
||||
|
||||
@@ -131,7 +132,7 @@ for i in tqdm(range(1, h)):
|
||||
"czkList": [],
|
||||
"paymentList": [
|
||||
{
|
||||
"paymentTypeId": "18525862", # 各门店不同 手动更新
|
||||
"paymentTypeId": "6932687", # 各门店不同 手动更新
|
||||
"paymentType": "现金",
|
||||
"paymentAmount": idMember2,
|
||||
"gatheringType": 0,
|
||||
@@ -168,7 +169,7 @@ for i in tqdm(range(1, h)):
|
||||
res = requests.post(f'https://yunxiu.f6car.cn/financial/advance/payment/singleGathering',
|
||||
headers=headers, cookies=cookie_dict, json=data)
|
||||
print("打印出响应信息:", i, cardVersion, cardVersion1, resdata, idMember, res.text)
|
||||
time.sleep(4)
|
||||
time.sleep(2)
|
||||
# break # 测试
|
||||
except:
|
||||
formData = {
|
||||
|
||||
@@ -20,10 +20,10 @@ def parse_cookie_string(cookie_str):
|
||||
return {k: v.value for k, v in cookie.items()}
|
||||
|
||||
|
||||
cookies = "maintainSESSIONID=5668579a-89bd-4faf-8bc3-71e045e4c19f; sajssdk_2015_cross_new_user=1; erpLanguage=zh-CN; prodOrg=11240984669917717605; unp=15658191795152506944; un=15658191795152506944; _up=-NillNN-qyBEJ--t3vnSknvoOF55yPmMucwC2n4-X-VYVvfIo53QjaZJ9Q3d-WrAAGgt60MgQHajHWBHMqWxj0OjWylpxpYEXk7xGLY883DqFPoSrYgr3wsF_O1f6PpAWPXU62Df25CwHHavp-hUjOkfkFDKOhd98xbtwx3f_My0TQ..; sensorsdata2015jssdkcross=%7B%22distinct_id%22%3A%2215658191795152506944%22%2C%22first_id%22%3A%2219c55b3f719b4d-0c0ba8a14163198-4c657b58-2073600-19c55b3f71a1e63%22%2C%22props%22%3A%7B%22%24latest_traffic_source_type%22%3A%22%E7%9B%B4%E6%8E%A5%E6%B5%81%E9%87%8F%22%2C%22%24latest_search_keyword%22%3A%22%E6%9C%AA%E5%8F%96%E5%88%B0%E5%80%BC_%E7%9B%B4%E6%8E%A5%E6%89%93%E5%BC%80%22%2C%22%24latest_referrer%22%3A%22%22%7D%2C%22%24device_id%22%3A%2219c55b3f719b4d-0c0ba8a14163198-4c657b58-2073600-19c55b3f71a1e63%22%7D; tmall=false; Hm_lvt_25f5e7a3a5dbb293d7dd35d5f1be8d0a=1770964400; HMACCOUNT=592B0DDEAFF7F37D; Hm_lpvt_25f5e7a3a5dbb293d7dd35d5f1be8d0a=1770964405"
|
||||
cookies = "camaroSESSIONID=a3f9a309-cdbf-4ada-9afd-9fedbbf5a611; erpLanguage=zh-CN; tmall=false; Hm_lvt_25f5e7a3a5dbb293d7dd35d5f1be8d0a=1772617481,1772846629,1773129610,1773900258; HMACCOUNT=A6A0585E8C70051D; prodOrg=11240984669917749532; unp=15671257394116059163; un=15671257394116059163; _up=-NillNN-qyBEJ--t3vnSknvoOF55yvCPtcoG2n8-W-FdU_jAoZrQjaZJ9Q3d-WrAAGgt60MgQHajHWBHMKKxj0CuWypi1JgKCFP1EPEk-HbqE_AdqIsi0QoL__BRv-ZNHu3M-GTc2J-wF3KvreRRiOockFPKPxVsrEj94Xz8q7jyNhY.; sensorsdata2015jssdkcross=%7B%22distinct_id%22%3A%2215671257394116059163%22%2C%22first_id%22%3A%2219b6df76a22f46-04a98afdd2a11d8-4c657b58-1327104-19b6df76a2312c7%22%2C%22props%22%3A%7B%22%24latest_traffic_source_type%22%3A%22%E7%9B%B4%E6%8E%A5%E6%B5%81%E9%87%8F%22%2C%22%24latest_search_keyword%22%3A%22%E6%9C%AA%E5%8F%96%E5%88%B0%E5%80%BC_%E7%9B%B4%E6%8E%A5%E6%89%93%E5%BC%80%22%2C%22%24latest_referrer%22%3A%22%22%7D%2C%22%24device_id%22%3A%2219b6df76a22f46-04a98afdd2a11d8-4c657b58-1327104-19b6df76a2312c7%22%7D; Hm_lpvt_25f5e7a3a5dbb293d7dd35d5f1be8d0a=1773910193"
|
||||
|
||||
cookies_dict = parse_cookie_string(cookies)
|
||||
df = pd.read_excel(fr"C:\Users\hp_z66\OneDrive\Desktop\品牌名.xlsx",sheet_name=0)
|
||||
df = pd.read_excel(fr"C:\Users\hp_z66\Downloads\品牌 (1).xlsx",sheet_name=0)
|
||||
for index,row in tqdm(df.iterrows()):
|
||||
brandNmae = row["品牌名"]
|
||||
# cookies = requests.utils.dict_from_cookiejar(cookies)
|
||||
|
||||
+118
-5
@@ -1,16 +1,129 @@
|
||||
{
|
||||
"cells": [
|
||||
{
|
||||
"metadata": {},
|
||||
"cell_type": "markdown",
|
||||
"source": "# 材料分类新增",
|
||||
"id": "24450285119edffc"
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"id": "initial_id",
|
||||
"metadata": {
|
||||
"collapsed": true
|
||||
"collapsed": true,
|
||||
"ExecuteTime": {
|
||||
"end_time": "2026-03-03T03:05:10.661554200Z",
|
||||
"start_time": "2026-03-03T03:05:10.192818600Z"
|
||||
}
|
||||
},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
""
|
||||
]
|
||||
"import requests\n",
|
||||
"import pandas as pd\n",
|
||||
"cookies = {\n",
|
||||
" 'f6-ids-goodsSESSIONID': 'bdf9d5f3-4ef8-4877-ba8b-621b10eba091',\n",
|
||||
" 'erpLanguage': 'zh-CN',\n",
|
||||
" 'tmall': 'false',\n",
|
||||
" 'prodOrg': '11240984669917217520',\n",
|
||||
" 'unp': '15865484595890778191',\n",
|
||||
" '_up': '-NillNN-qyBEJ--t3vnSknvoOF53y_SJuMkA2n43U-daUfnArpjQjaZJ9Q3d-WrAAGgt60MgQHajHWBHMKKxj0CuWypi1JgKCFP1EPEk-HbqE_ERqYsr3gUN9_NRv-ZNHu3M-GTc1p60EX-sq-RQgeIal1HLPxpurEj9nxTH98zEYGg.',\n",
|
||||
" 'sensorsdata2015jssdkcross': '%7B%22distinct_id%22%3A%2215865484595890778191%22%2C%22first_id%22%3A%2219b6df76a22f46-04a98afdd2a11d8-4c657b58-1327104-19b6df76a2312c7%22%2C%22props%22%3A%7B%22%24latest_traffic_source_type%22%3A%22%E7%9B%B4%E6%8E%A5%E6%B5%81%E9%87%8F%22%2C%22%24latest_search_keyword%22%3A%22%E6%9C%AA%E5%8F%96%E5%88%B0%E5%80%BC_%E7%9B%B4%E6%8E%A5%E6%89%93%E5%BC%80%22%2C%22%24latest_referrer%22%3A%22%22%7D%2C%22%24device_id%22%3A%2219b6df76a22f46-04a98afdd2a11d8-4c657b58-1327104-19b6df76a2312c7%22%7D',\n",
|
||||
"}\n",
|
||||
"\n",
|
||||
"headers = {\n",
|
||||
" 'accept': 'application/json, text/plain, */*',\n",
|
||||
" 'accept-language': 'zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6',\n",
|
||||
" 'content-type': 'application/json;charset=UTF-8',\n",
|
||||
" 'origin': 'https://ids-goods.f6car.cn',\n",
|
||||
" 'priority': 'u=1, i',\n",
|
||||
" 'referer': 'https://ids-goods.f6car.cn/f6-ids-goods/view/material.html',\n",
|
||||
" 'sec-ch-ua': '\"Not:A-Brand\";v=\"99\", \"Microsoft Edge\";v=\"145\", \"Chromium\";v=\"145\"',\n",
|
||||
" 'sec-ch-ua-mobile': '?0',\n",
|
||||
" 'sec-ch-ua-platform': '\"Windows\"',\n",
|
||||
" 'sec-fetch-dest': 'empty',\n",
|
||||
" 'sec-fetch-mode': 'cors',\n",
|
||||
" 'sec-fetch-site': 'same-origin',\n",
|
||||
" 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/145.0.0.0 Safari/537.36 Edg/145.0.0.0',\n",
|
||||
" # 'cookie': 'f6-ids-goodsSESSIONID=bdf9d5f3-4ef8-4877-ba8b-621b10eba091; erpLanguage=zh-CN; tmall=false; prodOrg=11240984669917217520; unp=15865484595890778191; _up=-NillNN-qyBEJ--t3vnSknvoOF53y_SJuMkA2n43U-daUfnArpjQjaZJ9Q3d-WrAAGgt60MgQHajHWBHMKKxj0CuWypi1JgKCFP1EPEk-HbqE_ERqYsr3gUN9_NRv-ZNHu3M-GTc1p60EX-sq-RQgeIal1HLPxpurEj9nxTH98zEYGg.; sensorsdata2015jssdkcross=%7B%22distinct_id%22%3A%2215865484595890778191%22%2C%22first_id%22%3A%2219b6df76a22f46-04a98afdd2a11d8-4c657b58-1327104-19b6df76a2312c7%22%2C%22props%22%3A%7B%22%24latest_traffic_source_type%22%3A%22%E7%9B%B4%E6%8E%A5%E6%B5%81%E9%87%8F%22%2C%22%24latest_search_keyword%22%3A%22%E6%9C%AA%E5%8F%96%E5%88%B0%E5%80%BC_%E7%9B%B4%E6%8E%A5%E6%89%93%E5%BC%80%22%2C%22%24latest_referrer%22%3A%22%22%7D%2C%22%24device_id%22%3A%2219b6df76a22f46-04a98afdd2a11d8-4c657b58-1327104-19b6df76a2312c7%22%7D',\n",
|
||||
"}\n",
|
||||
"df = pd.read(fr\"C:\\Users\\hp_z66\\OneDrive\\Desktop\\钉钉文件\\新建 XLS 工作表.xls\",sheet_name='Sheet1')\n",
|
||||
"for index, row in df.iterrows():\n",
|
||||
" print(f\"正在创建材料一级分类{df[\"上级分类名称\"]}\")\n",
|
||||
" json_data = {\n",
|
||||
" 'partCategory': {\n",
|
||||
" 'categoryLevel': 1,\n",
|
||||
" 'name': df[\"上级分类名称\"],\n",
|
||||
" 'pId': '14438164991364920807',\n",
|
||||
" 'sort': 999,\n",
|
||||
" 'kzId': '',\n",
|
||||
" },\n",
|
||||
" }\n",
|
||||
"\n",
|
||||
" response = requests.post(\n",
|
||||
" 'https://ids-goods.f6car.cn/f6-ids-goods/part/category/add',\n",
|
||||
" cookies=cookies,\n",
|
||||
" headers=headers,\n",
|
||||
" json=json_data,\n",
|
||||
" )\n",
|
||||
"\n",
|
||||
" pkId = response.json().get(\"data\").get(\"pkId\")\n",
|
||||
" print(f\"正在创建材料2级分类{df[\"分类名称\"]}\")\n",
|
||||
" json_data = {\n",
|
||||
" 'partCategory': {\n",
|
||||
" 'categoryLevel': 2,\n",
|
||||
" 'name': df[\"分类名称\"],\n",
|
||||
" 'sort': '',\n",
|
||||
" 'pId': pkId,\n",
|
||||
" 'idFrom': '',\n",
|
||||
" 'kzId': '',\n",
|
||||
" },\n",
|
||||
" }\n",
|
||||
"\n",
|
||||
" response = requests.post(\n",
|
||||
" 'https://ids-goods.f6car.cn/f6-ids-goods/part/category/add',\n",
|
||||
" cookies=cookies,\n",
|
||||
" headers=headers,\n",
|
||||
" json=json_data,\n",
|
||||
" )\n",
|
||||
" print(\"材料二级分类完成\")"
|
||||
],
|
||||
"outputs": [
|
||||
{
|
||||
"data": {
|
||||
"text/plain": [
|
||||
"{'code': 200,\n",
|
||||
" 'data': {'categoryLevel': 1,\n",
|
||||
" 'code': '',\n",
|
||||
" 'creationtime': 1772507110598,\n",
|
||||
" 'creator': '15865484595890778191',\n",
|
||||
" 'groupId': None,\n",
|
||||
" 'href': '',\n",
|
||||
" 'id': None,\n",
|
||||
" 'idFrom': None,\n",
|
||||
" 'idMaintainType': '0',\n",
|
||||
" 'idOwnOrg': '11240984669917217520',\n",
|
||||
" 'isDel': 0,\n",
|
||||
" 'kzId': '',\n",
|
||||
" 'manageStatus': None,\n",
|
||||
" 'modifiedtime': 1772507110598,\n",
|
||||
" 'modifier': '15865484595890778191',\n",
|
||||
" 'name': '23',\n",
|
||||
" 'nodes': None,\n",
|
||||
" 'pId': '14438164991364920807',\n",
|
||||
" 'parentName': '',\n",
|
||||
" 'partPriceRuleId': None,\n",
|
||||
" 'pkId': '14582097883198654339',\n",
|
||||
" 'queryFlag': None,\n",
|
||||
" 'sort': 999,\n",
|
||||
" 'text': ''},\n",
|
||||
" 'message': 'SUCCESS'}"
|
||||
]
|
||||
},
|
||||
"execution_count": 3,
|
||||
"metadata": {},
|
||||
"output_type": "execute_result"
|
||||
}
|
||||
],
|
||||
"execution_count": 3
|
||||
}
|
||||
],
|
||||
"metadata": {
|
||||
|
||||
+17
-25
@@ -27,16 +27,14 @@
|
||||
"import pandas as pd\n",
|
||||
"import os\n",
|
||||
"\n",
|
||||
"\n",
|
||||
"\n",
|
||||
"cookies = {\n",
|
||||
" 'f6-ids-goodsSESSIONID': '32660868-f969-4f7f-9267-db66aafad920',\n",
|
||||
" 'f6-ids-goodsSESSIONID': 'b013763e-f0ee-4175-bc42-bc3045c56f81',\n",
|
||||
" 'erpLanguage': 'zh-CN',\n",
|
||||
" 'prodOrg': '16034652297803894850',\n",
|
||||
" 'unp': '16034652300295311374',\n",
|
||||
" '_up': '-NillNN-qyBEJ--t3vnSknvoOF1_zvWLtc8G03s9U-JeV_DCoJ3QjaZJ9Q3d-WrAAGgt60MgQHajHWBHMKKxj0CuWypi1JgKCFP1EPEk-HbqE_MVr4Mq1wsM__VRv-ZNHu3M-GTf3pu1E3Kqre1Vi-Ifk1fCPRRrrEj9m1mw9bCwNGQ.',\n",
|
||||
" 'sensorsdata2015jssdkcross': '%7B%22distinct_id%22%3A%2216034652300295311374%22%2C%22first_id%22%3A%2219b6df76a22f46-04a98afdd2a11d8-4c657b58-1327104-19b6df76a2312c7%22%2C%22props%22%3A%7B%22%24latest_traffic_source_type%22%3A%22%E7%9B%B4%E6%8E%A5%E6%B5%81%E9%87%8F%22%2C%22%24latest_search_keyword%22%3A%22%E6%9C%AA%E5%8F%96%E5%88%B0%E5%80%BC_%E7%9B%B4%E6%8E%A5%E6%89%93%E5%BC%80%22%2C%22%24latest_referrer%22%3A%22%22%7D%2C%22%24device_id%22%3A%2219b6df76a22f46-04a98afdd2a11d8-4c657b58-1327104-19b6df76a2312c7%22%7D',\n",
|
||||
" 'tmall': 'false',\n",
|
||||
" 'prodOrg': '10545724654284683060',\n",
|
||||
" 'unp': '10907434497537082431',\n",
|
||||
" '_up': '-NillNN-qyBEJ--t3vnSknvoOFt2zfaJs8kB2nw6WeBdXvPFpJjQjaZJ9Q3d-WrAAGgt60MgQHajHWBHMKKxj0CuWypi1JgKCFP1EPEk-HbqE_Adrokr3wcJ-vVRv-ZNHu3M-GTZ15i2EXSsquRSjOgdkF7BOhBurEj9nBrn9JjPSwY.',\n",
|
||||
" 'sensorsdata2015jssdkcross': '%7B%22distinct_id%22%3A%2210907434497537082431%22%2C%22first_id%22%3A%2219b6df76a22f46-04a98afdd2a11d8-4c657b58-1327104-19b6df76a2312c7%22%2C%22props%22%3A%7B%22%24latest_traffic_source_type%22%3A%22%E7%9B%B4%E6%8E%A5%E6%B5%81%E9%87%8F%22%2C%22%24latest_search_keyword%22%3A%22%E6%9C%AA%E5%8F%96%E5%88%B0%E5%80%BC_%E7%9B%B4%E6%8E%A5%E6%89%93%E5%BC%80%22%2C%22%24latest_referrer%22%3A%22%22%7D%2C%22%24device_id%22%3A%2219b6df76a22f46-04a98afdd2a11d8-4c657b58-1327104-19b6df76a2312c7%22%7D',\n",
|
||||
"}\n",
|
||||
"\n",
|
||||
"headers = {\n",
|
||||
@@ -46,16 +44,16 @@
|
||||
" 'origin': 'https://ids-goods.f6car.cn',\n",
|
||||
" 'priority': 'u=1, i',\n",
|
||||
" 'referer': 'https://ids-goods.f6car.cn/f6-ids-goods/view/material.html',\n",
|
||||
" 'sec-ch-ua': '\"Not(A:Brand\";v=\"8\", \"Chromium\";v=\"144\", \"Microsoft Edge\";v=\"144\"',\n",
|
||||
" 'sec-ch-ua': '\"Chromium\";v=\"146\", \"Not-A.Brand\";v=\"24\", \"Microsoft Edge\";v=\"146\"',\n",
|
||||
" 'sec-ch-ua-mobile': '?0',\n",
|
||||
" 'sec-ch-ua-platform': '\"Windows\"',\n",
|
||||
" 'sec-fetch-dest': 'empty',\n",
|
||||
" 'sec-fetch-mode': 'cors',\n",
|
||||
" 'sec-fetch-site': 'same-origin',\n",
|
||||
" 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/144.0.0.0 Safari/537.36 Edg/144.0.0.0',\n",
|
||||
" # 'cookie': 'f6-ids-goodsSESSIONID=32660868-f969-4f7f-9267-db66aafad920; erpLanguage=zh-CN; prodOrg=16034652297803894850; unp=16034652300295311374; _up=-NillNN-qyBEJ--t3vnSknvoOF1_zvWLtc8G03s9U-JeV_DCoJ3QjaZJ9Q3d-WrAAGgt60MgQHajHWBHMKKxj0CuWypi1JgKCFP1EPEk-HbqE_MVr4Mq1wsM__VRv-ZNHu3M-GTf3pu1E3Kqre1Vi-Ifk1fCPRRrrEj9m1mw9bCwNGQ.; sensorsdata2015jssdkcross=%7B%22distinct_id%22%3A%2216034652300295311374%22%2C%22first_id%22%3A%2219b6df76a22f46-04a98afdd2a11d8-4c657b58-1327104-19b6df76a2312c7%22%2C%22props%22%3A%7B%22%24latest_traffic_source_type%22%3A%22%E7%9B%B4%E6%8E%A5%E6%B5%81%E9%87%8F%22%2C%22%24latest_search_keyword%22%3A%22%E6%9C%AA%E5%8F%96%E5%88%B0%E5%80%BC_%E7%9B%B4%E6%8E%A5%E6%89%93%E5%BC%80%22%2C%22%24latest_referrer%22%3A%22%22%7D%2C%22%24device_id%22%3A%2219b6df76a22f46-04a98afdd2a11d8-4c657b58-1327104-19b6df76a2312c7%22%7D; tmall=false',\n",
|
||||
" 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36 Edg/146.0.0.0',\n",
|
||||
" # 'cookie': 'f6-ids-goodsSESSIONID=b013763e-f0ee-4175-bc42-bc3045c56f81; erpLanguage=zh-CN; tmall=false; prodOrg=10545724654284683060; unp=10907434497537082431; _up=-NillNN-qyBEJ--t3vnSknvoOFt2zfaJs8kB2nw6WeBdXvPFpJjQjaZJ9Q3d-WrAAGgt60MgQHajHWBHMKKxj0CuWypi1JgKCFP1EPEk-HbqE_Adrokr3wcJ-vVRv-ZNHu3M-GTZ15i2EXSsquRSjOgdkF7BOhBurEj9nBrn9JjPSwY.; sensorsdata2015jssdkcross=%7B%22distinct_id%22%3A%2210907434497537082431%22%2C%22first_id%22%3A%2219b6df76a22f46-04a98afdd2a11d8-4c657b58-1327104-19b6df76a2312c7%22%2C%22props%22%3A%7B%22%24latest_traffic_source_type%22%3A%22%E7%9B%B4%E6%8E%A5%E6%B5%81%E9%87%8F%22%2C%22%24latest_search_keyword%22%3A%22%E6%9C%AA%E5%8F%96%E5%88%B0%E5%80%BC_%E7%9B%B4%E6%8E%A5%E6%89%93%E5%BC%80%22%2C%22%24latest_referrer%22%3A%22%22%7D%2C%22%24device_id%22%3A%2219b6df76a22f46-04a98afdd2a11d8-4c657b58-1327104-19b6df76a2312c7%22%7D',\n",
|
||||
"}\n",
|
||||
"org_id = '16034652297803894850'\n",
|
||||
"org_id = '10545724654284683060'\n",
|
||||
"# 第一步:获取所有材料列表(分页)\n",
|
||||
"json_data = {\n",
|
||||
" 'keyWord': '',\n",
|
||||
@@ -91,19 +89,12 @@
|
||||
"\n",
|
||||
"\n",
|
||||
"try:\n",
|
||||
" response = requests.post(\n",
|
||||
" 'https://ids-goods.f6car.com/f6-ids-goods/part/getExactPartStockInfo',\n",
|
||||
" cookies=cookies,\n",
|
||||
" json=json_data,\n",
|
||||
" )\n",
|
||||
" response.raise_for_status()\n",
|
||||
" total_pages = response.json().get(\"data\", {}).get(\"totalPages\", 0)\n",
|
||||
" print(f\"材料列表页数: {total_pages}\")\n",
|
||||
"\n",
|
||||
" df = pd.read_excel(fr\"C:\\Users\\hp_z66\\Desktop\\钉钉文件\\一号车库材料信息需添加条码(宗川涵).xls\",\n",
|
||||
" engine='xlrd', sheet_name=0)\n",
|
||||
" all_materials_list = []\n",
|
||||
" total_pages = int(total_pages)\n",
|
||||
" for page in tqdm(range(1, total_pages + 1), desc=\"获取材料列表\"):\n",
|
||||
" json_data['currentPage'] = page\n",
|
||||
" for index, row in tqdm(df.iterrows(), desc=\"获取材料列表\"):\n",
|
||||
" json_data['currentPage'] = 1\n",
|
||||
" json_data['keyWord'] = row[\"规格\"]\n",
|
||||
" try:\n",
|
||||
" resp = requests.post(\n",
|
||||
" 'https://ids-goods.f6car.com/f6-ids-goods/part/getExactPartStockInfo',\n",
|
||||
@@ -123,7 +114,8 @@
|
||||
" print(f\"获取材料列表失败: {str(e)}, 堆栈信息: {traceback.format_exc()}\")\n",
|
||||
" raise\n",
|
||||
"\n",
|
||||
"df = pd.read_excel(fr\"C:\\Users\\hp_z66\\Desktop\\钉钉文件\\一号车库材料信息需添加条码(宗川涵).xls\", engine='xlrd',sheet_name=0)\n",
|
||||
"df = pd.read_excel(fr\"C:\\Users\\hp_z66\\Desktop\\钉钉文件\\一号车库材料信息需添加条码(宗川涵).xls\", engine='xlrd',\n",
|
||||
" sheet_name=0)\n",
|
||||
"# 第二步:构建 update_map(只存原始值,不预处理)\n",
|
||||
"update_map = {}\n",
|
||||
"skipped_count = 0\n",
|
||||
@@ -146,7 +138,7 @@
|
||||
"failure_count = 0\n",
|
||||
"skip_count = 0\n",
|
||||
"\n",
|
||||
"for item in tqdm(all_materials_list, desc=\"处理材料更新\",total = len(all_materials_list)):\n",
|
||||
"for item in tqdm(all_materials_list, desc=\"处理材料更新\", total=len(all_materials_list)):\n",
|
||||
" custom_code = item.get(\"customCode\")\n",
|
||||
" if not custom_code or str(custom_code) not in update_map:\n",
|
||||
" continue\n",
|
||||
|
||||
@@ -23,9 +23,9 @@ logger.addHandler(handler)
|
||||
|
||||
# 1.向服务器发送请求登录
|
||||
|
||||
username = "15942460506"
|
||||
password = "Aa123456"
|
||||
store_name = "安顺专业贴膜导航快修保养"
|
||||
username = "18838982933"
|
||||
password = "Ff123456"
|
||||
store_name = "武汉经济技术开发区沌阳汽车修理有限公司"
|
||||
module = 1
|
||||
|
||||
res = f6_module.login_in(username, password, store_name)
|
||||
|
||||
+154
-13
@@ -1,4 +1,4 @@
|
||||
from datetime import datetime
|
||||
from datetime import datetime, timezone, timedelta, date, UTC
|
||||
import time
|
||||
from typing import Optional, List, Dict, Any
|
||||
import requests
|
||||
@@ -230,6 +230,7 @@ class API:
|
||||
return data_get
|
||||
|
||||
|
||||
|
||||
class BossPermissionAutoApproval:
|
||||
"""
|
||||
Boss权限自动审批
|
||||
@@ -356,6 +357,13 @@ class BossPermissionAutoApproval:
|
||||
:param df: 含门店编码的df
|
||||
:return: df
|
||||
"""
|
||||
if df is None or df.empty:
|
||||
if df is None:
|
||||
df = pd.DataFrame()
|
||||
if "company_id" not in df.columns:
|
||||
df["company_id"] = []
|
||||
return df
|
||||
|
||||
unique_codes = df["门店编码"].unique().tolist()
|
||||
|
||||
# 初始化存储结果的字典
|
||||
@@ -459,7 +467,124 @@ class BossPermissionAutoApproval:
|
||||
# df.to_csv(fr"D:\Idea Project\F6+宜搭+其它(1)\张阳脚本\文件输出\门店含id权限功能映射.csv", index=False)
|
||||
return df
|
||||
|
||||
def send_task_error(self, task_start_time: str, task_name: str, error_message: str,
|
||||
df: pd.DataFrame = None) -> None:
|
||||
"""
|
||||
将任务失败情况发送到简道云(影响业务数据时调用)
|
||||
:param df: 失败文件
|
||||
:param task_start_time: 任务开始时间(字符串格式:"%Y-%m-%d %H:%M:%S",表示北京时间 UTC+8)
|
||||
:param task_name: 任务名称
|
||||
:param error_message: 失败详情
|
||||
"""
|
||||
try:
|
||||
# 1. 获取当前 UTC 时间(时区感知对象)
|
||||
end_time_utc = datetime.now(UTC) # ✅ 替代 utcnow()
|
||||
|
||||
# 2. 解析传入的北京时间(UTC+8)
|
||||
task_start_naive = datetime.strptime(task_start_time, "%Y-%m-%d %H:%M:%S")
|
||||
|
||||
# 3. 转换为 UTC 时间(减去 8 小时,并附加 UTC 时区)
|
||||
task_start_utc = task_start_naive - timedelta(hours=8)
|
||||
task_start_utc = task_start_utc.replace(tzinfo=timezone.utc) # 显式标记为 UTC
|
||||
|
||||
# 4. 计算运行时间(时区感知对象可直接相减)
|
||||
run_time = end_time_utc - task_start_utc
|
||||
run_time_sec = int(run_time.total_seconds())
|
||||
|
||||
# 5. 格式化时间为 UTC 的 ISO 8601 格式(带 "Z")
|
||||
today_utc = end_time_utc.strftime("%Y-%m-%d")
|
||||
task_end_iso = end_time_utc.strftime("%Y-%m-%dT%H:%M:%SZ")
|
||||
task_start_iso = task_start_utc.strftime("%Y-%m-%dT%H:%M:%SZ")
|
||||
|
||||
# 6.上传附件
|
||||
UUid = time.strftime("%Y%m%d%H%M%S", time.localtime())
|
||||
if df is not None:
|
||||
df.to_excel("upload_file.xlsx", index=False)
|
||||
file_path = "upload_file.xlsx"
|
||||
|
||||
up_data = API().get_upload_token(
|
||||
{"api_key": "6694d3c4fcb69ca9a111a6c4", "entry_id": "689ae65da00c17578e27cd74",
|
||||
"transaction_id": UUid})
|
||||
|
||||
upload_url = up_data.get("upload_url")
|
||||
upload_token = up_data.get("upload_token")
|
||||
|
||||
upload_result = API().upload_file(
|
||||
{"upload_url": upload_url, "upload_token": upload_token, "file_path": file_path})
|
||||
upload_key = upload_result.get("key")
|
||||
else:
|
||||
upload_key = ""
|
||||
|
||||
# 7. 构造请求数据(所有时间以 UTC 格式发送)
|
||||
payload = {
|
||||
"api_key": "6694d3c4fcb69ca9a111a6c4",
|
||||
"entry_id":"689ae65da00c17578e27cd74",
|
||||
"data": {
|
||||
"_widget_1744873387500": {"value": today_utc}, # UTC 日期
|
||||
"_widget_1743644977694": {"value": task_name},
|
||||
"_widget_1744873387501": {"value": task_start_iso}, # UTC 开始时间
|
||||
"_widget_1744873387502": {"value": task_end_iso}, # UTC 结束时间
|
||||
"_widget_1744873387504": {"value": run_time_sec},
|
||||
"_widget_1754981992215": {"value": error_message}, # 错误信息
|
||||
"_widget_1764830825356": {"value": [upload_key]}
|
||||
},
|
||||
"transaction_id": UUid
|
||||
}
|
||||
|
||||
# 8. 发送请求
|
||||
response = API().data_batch_create(payload)
|
||||
|
||||
except Exception as e:
|
||||
print(e)
|
||||
|
||||
def send_task_status(self, task_start_time: str, task_name: str) -> None:
|
||||
"""
|
||||
将任务状态发送到简道云(开始时间为北京时间,需转换到 UTC)
|
||||
:param task_start_time: 任务开始时间(字符串格式:"%Y-%m-%d %H:%M:%S",表示北京时间 UTC+8)
|
||||
:param task_name: 任务名称
|
||||
"""
|
||||
try:
|
||||
# 1. 获取当前 UTC 时间(时区感知对象)
|
||||
end_time_utc = datetime.now(UTC) # ✅ 替代 utcnow()
|
||||
|
||||
# 2. 解析传入的北京时间(UTC+8)
|
||||
task_start_naive = datetime.strptime(task_start_time, "%Y-%m-%d %H:%M:%S")
|
||||
|
||||
# 3. 转换为 UTC 时间(减去 8 小时,并附加 UTC 时区)
|
||||
task_start_utc = task_start_naive - timedelta(hours=8)
|
||||
task_start_utc = task_start_utc.replace(tzinfo=timezone.utc) # 显式标记为 UTC
|
||||
|
||||
# 4. 计算运行时间(时区感知对象可直接相减)
|
||||
run_time = end_time_utc - task_start_utc
|
||||
run_time_sec = int(run_time.total_seconds())
|
||||
|
||||
# 5. 格式化时间为 UTC 的 ISO 8601 格式(带 "Z")
|
||||
today_utc = end_time_utc.strftime("%Y-%m-%dT%H:%M:%SZ")
|
||||
task_end_iso = end_time_utc.strftime("%Y-%m-%dT%H:%M:%SZ")
|
||||
task_start_iso = task_start_utc.strftime("%Y-%m-%dT%H:%M:%SZ")
|
||||
|
||||
# 6. 构造请求数据(所有时间以 UTC 格式发送)
|
||||
payload = {
|
||||
"api_key": "6694d3c4fcb69ca9a111a6c4",
|
||||
"entry_id": "67ede908eb9c22261016466e",
|
||||
"data": {
|
||||
"_widget_1744873387500": {"value": today_utc}, # UTC 日期
|
||||
"_widget_1743644977694": {"value": task_name},
|
||||
"_widget_1744873387501": {"value": task_start_iso}, # UTC 开始时间
|
||||
"_widget_1744873387502": {"value": task_end_iso}, # UTC 结束时间
|
||||
"_widget_1744873387504": {"value": run_time_sec},
|
||||
}
|
||||
}
|
||||
|
||||
# 7. 发送请求
|
||||
response = API().data_batch_create(payload)
|
||||
|
||||
except Exception as e:
|
||||
print(e)
|
||||
|
||||
def update_permission(self, df):
|
||||
if df is None or df.empty:
|
||||
return pd.DataFrame(columns=["数据id", "门店编码", "一级分类", "二级分类", "权限", "开关", "状态"])
|
||||
|
||||
cookie_str = self.get_cookies[0].get("_widget_1757558743223")
|
||||
cookies = {}
|
||||
@@ -487,6 +612,8 @@ class BossPermissionAutoApproval:
|
||||
|
||||
result_list = []
|
||||
df.to_csv(fr"D:\Idea Project\F6+宜搭+其它(1)\张阳脚本\文件输出\门店含id权限功能映射.csv", index=False)
|
||||
if "开关" not in df.columns:
|
||||
return pd.DataFrame(columns=["数据id", "门店编码", "一级分类", "二级分类", "权限", "开关", "状态"])
|
||||
df.dropna(subset=['开关'], inplace=True)
|
||||
for index, row in df.iterrows():
|
||||
print(row)
|
||||
@@ -583,7 +710,8 @@ class BossPermissionAutoApproval:
|
||||
headers=headers,
|
||||
json=new_json_data,
|
||||
)
|
||||
# print(response.json())
|
||||
time.sleep(0.5)
|
||||
print(f"请求结果:{response.json()}")
|
||||
if response.json().get("code", 1000) == 200:
|
||||
result_list.append(
|
||||
{
|
||||
@@ -670,22 +798,35 @@ class BossPermissionAutoApproval:
|
||||
print(f"全部成功的数据id:{all_success_ids}")
|
||||
|
||||
def main(self):
|
||||
task_start_time = datetime.now()
|
||||
task_start_time = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
|
||||
try:
|
||||
|
||||
# step1 获取简道云上任务列表
|
||||
self.load_data()
|
||||
# step1 获取简道云上任务列表
|
||||
self.load_data()
|
||||
if not self.task_data:
|
||||
print("当前没有需要执行的任务,结束。")
|
||||
self.send_task_status(task_start_time, "boss权限自动审批")
|
||||
return
|
||||
|
||||
# step2 根据权限开通列表获取权限对应功能
|
||||
payload_df = self.map_switch_data()
|
||||
# step2 根据权限开通列表获取权限对应功能
|
||||
payload_df = self.map_switch_data()
|
||||
if payload_df is None or payload_df.empty:
|
||||
print("当前没有匹配到需要执行的审批节点数据,结束。")
|
||||
self.send_task_status(task_start_time, "boss权限自动审批")
|
||||
return
|
||||
|
||||
# step3 根据门店编码查询公司id。
|
||||
payload_df = self.get_company_id(payload_df)
|
||||
# step3 根据门店编码查询公司id。
|
||||
payload_df = self.get_company_id(payload_df)
|
||||
|
||||
# step4 批量修改权限
|
||||
result_df = self.update_permission(payload_df)
|
||||
# step4 批量修改权限
|
||||
result_df = self.update_permission(payload_df)
|
||||
|
||||
# step5 简道云发送状态与同意
|
||||
self.send_status_and_approval(result_df)
|
||||
# step5 简道云发送状态与同意
|
||||
self.send_status_and_approval(result_df)
|
||||
|
||||
self.send_task_status(task_start_time, "boss权限自动审批")
|
||||
except Exception as e:
|
||||
self.send_task_error(task_start_time, "boss权限自动审批失败", str(e))
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
|
||||
@@ -0,0 +1,143 @@
|
||||
{
|
||||
"cells": [
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 2,
|
||||
"id": "340bac5f",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"{'code': 200, 'data': 'ok', 'message': 'SUCCESS'}\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"import requests\n",
|
||||
"\n",
|
||||
"cookies = {\n",
|
||||
" 'hive-adminSESSIONID': '25fbadf1-4cb6-408f-9e3a-b73e55c47852',\n",
|
||||
" 'sensorsdata2015jssdkcross': '%7B%22distinct_id%22%3A%224210192048793363%22%2C%22first_id%22%3A%2219b6df4cc821138-0de2a4b89caaa9-4c657b58-1327104-19b6df4cc8319da%22%2C%22props%22%3A%7B%22%24latest_traffic_source_type%22%3A%22%E7%9B%B4%E6%8E%A5%E6%B5%81%E9%87%8F%22%2C%22%24latest_search_keyword%22%3A%22%E6%9C%AA%E5%8F%96%E5%88%B0%E5%80%BC_%E7%9B%B4%E6%8E%A5%E6%89%93%E5%BC%80%22%2C%22%24latest_referrer%22%3A%22%22%7D%2C%22%24device_id%22%3A%2219b6df4cc821138-0de2a4b89caaa9-4c657b58-1327104-19b6df4cc8319da%22%7D',\n",
|
||||
" '_yg_prod': 'EkX_f7K7eYt61spccZtpCE7FGQAxK5DfP_4PB6A0jCrCT1LYfszIPQQqjcJjPPEZL0J2pO07cfp8VG64XiDvBfYzvRdjXVIjT2D1e5La90Kcyw0I2IqvVma_W4j__vTE3I3zSTbNFRCPiizeGHdACpRaLiy_a2VE',\n",
|
||||
"}\n",
|
||||
"\n",
|
||||
"headers = {\n",
|
||||
" 'accept': 'application/json, text/plain, */*',\n",
|
||||
" 'accept-language': 'zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6',\n",
|
||||
" 'content-type': 'application/json;charset=UTF-8',\n",
|
||||
" 'origin': 'https://manage.f6yc.com',\n",
|
||||
" 'priority': 'u=1, i',\n",
|
||||
" 'referer': 'https://manage.f6yc.com/',\n",
|
||||
" 'sec-ch-ua': '\"Not:A-Brand\";v=\"99\", \"Microsoft Edge\";v=\"145\", \"Chromium\";v=\"145\"',\n",
|
||||
" 'sec-ch-ua-mobile': '?0',\n",
|
||||
" 'sec-ch-ua-platform': '\"Windows\"',\n",
|
||||
" 'sec-fetch-dest': 'empty',\n",
|
||||
" 'sec-fetch-mode': 'cors',\n",
|
||||
" 'sec-fetch-site': 'same-origin',\n",
|
||||
" 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/145.0.0.0 Safari/537.36 Edg/145.0.0.0',\n",
|
||||
" 'x-requested-with': 'XMLHttpRequest',\n",
|
||||
" # 'cookie': 'hive-adminSESSIONID=25fbadf1-4cb6-408f-9e3a-b73e55c47852; sensorsdata2015jssdkcross=%7B%22distinct_id%22%3A%224210192048793363%22%2C%22first_id%22%3A%2219b6df4cc821138-0de2a4b89caaa9-4c657b58-1327104-19b6df4cc8319da%22%2C%22props%22%3A%7B%22%24latest_traffic_source_type%22%3A%22%E7%9B%B4%E6%8E%A5%E6%B5%81%E9%87%8F%22%2C%22%24latest_search_keyword%22%3A%22%E6%9C%AA%E5%8F%96%E5%88%B0%E5%80%BC_%E7%9B%B4%E6%8E%A5%E6%89%93%E5%BC%80%22%2C%22%24latest_referrer%22%3A%22%22%7D%2C%22%24device_id%22%3A%2219b6df4cc821138-0de2a4b89caaa9-4c657b58-1327104-19b6df4cc8319da%22%7D; _yg_prod=EkX_f7K7eYt61spccZtpCE7FGQAxK5DfP_4PB6A0jCrCT1LYfszIPQQqjcJjPPEZL0J2pO07cfp8VG64XiDvBfYzvRdjXVIjT2D1e5La90Kcyw0I2IqvVma_W4j__vTE3I3zSTbNFRCPiizeGHdACpRaLiy_a2VE',\n",
|
||||
"}\n",
|
||||
"\n",
|
||||
"json_data = {\n",
|
||||
" 'orgId': '11240984669917217520',\n",
|
||||
" 'remark': '238888',\n",
|
||||
" 'endDate': '2027-12-19',\n",
|
||||
"}\n",
|
||||
"\n",
|
||||
"response = requests.post('https://manage.f6yc.com/hive-admin/org/resetEndDate', cookies=cookies, headers=headers, json=json_data)\n",
|
||||
"\n",
|
||||
"# Note: json_data will not be serialized by requests\n",
|
||||
"# exactly as it was in the original request.\n",
|
||||
"#data = '{\"orgId\":\"11240984669917217520\",\"remark\":\"2333333\",\"endDate\":\"2027-12-30\"}'\n",
|
||||
"#response = requests.post('https://manage.f6yc.com/hive-admin/org/resetEndDate', cookies=cookies, headers=headers, data=data)\n",
|
||||
"print(response.json())"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"id": "9a6552b0",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"import requests\n",
|
||||
"\n",
|
||||
"cookies = {\n",
|
||||
" 'hive-adminSESSIONID': '7fa76a20-ca37-4a57-b0af-af0dd7c18d58',\n",
|
||||
" 'sensorsdata2015jssdkcross': '%7B%22distinct_id%22%3A%224210192048793363%22%2C%22first_id%22%3A%2219b6df4cc821138-0de2a4b89caaa9-4c657b58-1327104-19b6df4cc8319da%22%2C%22props%22%3A%7B%22%24latest_traffic_source_type%22%3A%22%E7%9B%B4%E6%8E%A5%E6%B5%81%E9%87%8F%22%2C%22%24latest_search_keyword%22%3A%22%E6%9C%AA%E5%8F%96%E5%88%B0%E5%80%BC_%E7%9B%B4%E6%8E%A5%E6%89%93%E5%BC%80%22%2C%22%24latest_referrer%22%3A%22%22%7D%2C%22%24device_id%22%3A%2219b6df4cc821138-0de2a4b89caaa9-4c657b58-1327104-19b6df4cc8319da%22%7D',\n",
|
||||
" '_yg_prod': 'EkX_f7K7eYt61spccZtpCE7FGQAxK5DfP_4PB6A0jCrCT1LYfszIPQQqjcJjPPEZL0J2pO07cfp8VG64XiDvBfYzvRdjXVIjT2D1e5La90Kcyw0I2IqvVma_W4j__vTE3I3zSTbNFRCPiizeGHdACpRaLiy_a2VE',\n",
|
||||
"}\n",
|
||||
"\n",
|
||||
"headers = {\n",
|
||||
" 'accept': 'application/json, text/plain, */*',\n",
|
||||
" 'accept-language': 'zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6',\n",
|
||||
" 'content-type': 'application/json;charset=UTF-8',\n",
|
||||
" 'origin': 'https://manage.f6yc.com',\n",
|
||||
" 'priority': 'u=1, i',\n",
|
||||
" 'referer': 'https://manage.f6yc.com/',\n",
|
||||
" 'sec-ch-ua': '\"Not:A-Brand\";v=\"99\", \"Microsoft Edge\";v=\"145\", \"Chromium\";v=\"145\"',\n",
|
||||
" 'sec-ch-ua-mobile': '?0',\n",
|
||||
" 'sec-ch-ua-platform': '\"Windows\"',\n",
|
||||
" 'sec-fetch-dest': 'empty',\n",
|
||||
" 'sec-fetch-mode': 'cors',\n",
|
||||
" 'sec-fetch-site': 'same-origin',\n",
|
||||
" 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/145.0.0.0 Safari/537.36 Edg/145.0.0.0',\n",
|
||||
" 'x-requested-with': 'XMLHttpRequest',\n",
|
||||
" # 'cookie': 'hive-adminSESSIONID=7fa76a20-ca37-4a57-b0af-af0dd7c18d58; sensorsdata2015jssdkcross=%7B%22distinct_id%22%3A%224210192048793363%22%2C%22first_id%22%3A%2219b6df4cc821138-0de2a4b89caaa9-4c657b58-1327104-19b6df4cc8319da%22%2C%22props%22%3A%7B%22%24latest_traffic_source_type%22%3A%22%E7%9B%B4%E6%8E%A5%E6%B5%81%E9%87%8F%22%2C%22%24latest_search_keyword%22%3A%22%E6%9C%AA%E5%8F%96%E5%88%B0%E5%80%BC_%E7%9B%B4%E6%8E%A5%E6%89%93%E5%BC%80%22%2C%22%24latest_referrer%22%3A%22%22%7D%2C%22%24device_id%22%3A%2219b6df4cc821138-0de2a4b89caaa9-4c657b58-1327104-19b6df4cc8319da%22%7D; _yg_prod=EkX_f7K7eYt61spccZtpCE7FGQAxK5DfP_4PB6A0jCrCT1LYfszIPQQqjcJjPPEZL0J2pO07cfp8VG64XiDvBfYzvRdjXVIjT2D1e5La90Kcyw0I2IqvVma_W4j__vTE3I3zSTbNFRCPiizeGHdACpRaLiy_a2VE',\n",
|
||||
"}\n",
|
||||
"\n",
|
||||
"json_data = {\n",
|
||||
" 'orderId': 150619791,\n",
|
||||
" 'newEndDate': '2026-11-28T16:00:00.000Z',\n",
|
||||
" 'oldEndDate': 1795968000000, # 与实际显示日期有差别,加了28天,部分准确\n",
|
||||
" 'memo': '1234',\n",
|
||||
" 'type': 2, # 服务类型有关 不同服务对应不同\n",
|
||||
" 'orderType': '',\n",
|
||||
" 'clearAllValidPeriod': False,\n",
|
||||
" 'orgId': '11240984669917090055',\n",
|
||||
"}\n",
|
||||
"\n",
|
||||
"response = requests.post(\n",
|
||||
" 'https://manage.f6yc.com/hive-admin/order/achievement/modifyEndDate',\n",
|
||||
" cookies=cookies,\n",
|
||||
" headers=headers,\n",
|
||||
" json=json_data,\n",
|
||||
")\n",
|
||||
"\n",
|
||||
"# Note: json_data will not be serialized by requests\n",
|
||||
"# exactly as it was in the original request.\n",
|
||||
"#data = '{\"orderId\":150619791,\"newEndDate\":\"2026-11-28T16:00:00.000Z\",\"oldEndDate\":1795968000000,\"memo\":\"1234\",\"type\":2,\"orderType\":\"\",\"clearAllValidPeriod\":false,\"orgId\":\"11240984669917090055\"}'\n",
|
||||
"#response = requests.post(\n",
|
||||
"# 'https://manage.f6yc.com/hive-admin/order/achievement/modifyEndDate',\n",
|
||||
"# cookies=cookies,\n",
|
||||
"# headers=headers,\n",
|
||||
"# data=data,\n",
|
||||
"#)\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"metadata": {
|
||||
"kernelspec": {
|
||||
"display_name": "F6+宜搭+其它",
|
||||
"language": "python",
|
||||
"name": "python3"
|
||||
},
|
||||
"language_info": {
|
||||
"codemirror_mode": {
|
||||
"name": "ipython",
|
||||
"version": 3
|
||||
},
|
||||
"file_extension": ".py",
|
||||
"mimetype": "text/x-python",
|
||||
"name": "python",
|
||||
"nbconvert_exporter": "python",
|
||||
"pygments_lexer": "ipython3",
|
||||
"version": "3.13.11"
|
||||
}
|
||||
},
|
||||
"nbformat": 4,
|
||||
"nbformat_minor": 5
|
||||
}
|
||||
+20
-1
@@ -9,7 +9,26 @@
|
||||
},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
""
|
||||
"import anthropic\n",
|
||||
"\n",
|
||||
"client = anthropic.Anthropic()\n",
|
||||
"\n",
|
||||
"message = client.messages.create(\n",
|
||||
" model=\"MiniMax-M2.5\", # 切换为其他模型,如 MiniMax-M2.1\n",
|
||||
" max_tokens=1000,\n",
|
||||
" system=\"You are a helpful assistant.\",\n",
|
||||
" messages=[\n",
|
||||
" {\n",
|
||||
" \"role\": \"user\",\n",
|
||||
" \"content\": [\n",
|
||||
" {\n",
|
||||
" \"type\": \"text\",\n",
|
||||
" \"text\": \"Hi, how are you?\"\n",
|
||||
" }\n",
|
||||
" ]\n",
|
||||
" }\n",
|
||||
" ]\n",
|
||||
")"
|
||||
]
|
||||
}
|
||||
],
|
||||
|
||||
+30
-1
@@ -1 +1,30 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# -*- coding: utf-8 -*-
|
||||
import anthropic
|
||||
|
||||
client = anthropic.Anthropic(
|
||||
api_key="sk-cp-KfOUZiipk1SYliv6n5faaXQXIxRum6jiRdAF_aGiYeCSp12p4amSU94rPAvEp4ZgRAS7d8bwR7rruuGVqVCo9ZysSOewR0xPEOZ_XCPJEBhcqt5vrUWu4ls", # <--- 在这里填入你的 MiniMax 密钥
|
||||
base_url="https://api.minimaxi.com/anthropic" # <--- MiniMax 的兼容接口地址
|
||||
)
|
||||
|
||||
message = client.messages.create(
|
||||
model="MiniMax-M2.5",
|
||||
max_tokens=1000,
|
||||
system="You are a helpful assistant.",
|
||||
messages=[
|
||||
{
|
||||
"role": "user",
|
||||
"content": [
|
||||
{
|
||||
"type": "text",
|
||||
"text": "你现在使用的是什么模型"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
)
|
||||
|
||||
for block in message.content:
|
||||
if block.type == "thinking":
|
||||
print(f"Thinking:\n{block.thinking}\n")
|
||||
elif block.type == "text":
|
||||
print(f"Text:\n{block.text}\n")
|
||||
@@ -21,8 +21,8 @@ class Main:
|
||||
FORMID1 = "FORM-33666CB1XDU37AU57RKPK990C79S2YMOEEC8LS" # [表单]异常服务跟进待办2023
|
||||
|
||||
# 读取excel表格
|
||||
df = pd.read_excel(r"C:\Users\hp_z66\OneDrive\Desktop\钉钉文件\2026-1回访已回访.xlsx",
|
||||
sheet_name='Sheet5', dtype='string', header=1) # 此处将表头设置为了第二行
|
||||
df = pd.read_excel(r"C:\Users\hp_z66\OneDrive\Desktop\钉钉文件\2026-3已导入.xlsx",
|
||||
sheet_name='刷数据(注意部分字段替换)', dtype='string', header=1) # 此处将表头设置为了第二行
|
||||
df.fillna('', inplace=True)
|
||||
|
||||
@staticmethod
|
||||
|
||||
@@ -28,7 +28,7 @@ class Main:
|
||||
|
||||
|
||||
# 读取excel表格获取数据
|
||||
ceshi_data = pd.read_excel(r"C:\Users\hp_z66\OneDrive\Desktop\钉钉文件\2026-1回访已回访.xlsx",sheet_name='7天')
|
||||
ceshi_data = pd.read_excel(r"C:\Users\hp_z66\OneDrive\Desktop\钉钉文件\2026-3已导入.xlsx",sheet_name='7天节点且联系上(自动同意)')
|
||||
print("已读取表格")
|
||||
|
||||
# 执行自动化脚本
|
||||
|
||||
@@ -0,0 +1,105 @@
|
||||
{"服务单号":"_widget_1767851302585",
|
||||
"连锁店数据同步":"_widget_1767851302586",
|
||||
"服务单评价状态":"_widget_1767851302588",
|
||||
"订单编码":"_widget_1767851302590",
|
||||
"订单支付时间":"_widget_1767851302591",
|
||||
"订单手机号码":"_widget_1767851302592",
|
||||
"培训负责人":"_widget_1767851302593",
|
||||
"开户时间":"_widget_1767851302600",
|
||||
"加盟商信息":"_widget_1768892440188",
|
||||
"老板姓名":"_widget_1767863644357",
|
||||
"老板电话":"_widget_1767863644356",
|
||||
"系统对接人姓名":"_widget_1767863644355",
|
||||
"系统对接人电话":"_widget_1767863644358",
|
||||
"是否联系上客户":"_widget_1767863644369",
|
||||
"无法联系上的原因":"_widget_1767863644373",
|
||||
"联系不上其他原因备注":"_widget_1767863644384",
|
||||
"是否需要培训":"_widget_1767863644374",
|
||||
"不需要培训原因":"_widget_1767863644376",
|
||||
"不培训其他原因备注":"_widget_1767863644385",
|
||||
"预计培训时间":"_widget_1767863644396",
|
||||
"7天后培训原因":"_widget_1767863644397",
|
||||
"超期培训其他原因说明":"_widget_1767863644400",
|
||||
"原系统名称":"_widget_1767863644494",
|
||||
"是否需要处理数据":"_widget_1767863644486",
|
||||
"数据处理协助人":"_widget_1767863644582",
|
||||
"是否需要其他人协助":"_widget_1767863644488",
|
||||
"不需要处理数据原因":"_widget_1767863644490",
|
||||
"期初不需要导入其他原因":"_widget_1767863644496",
|
||||
"是否有意向开通企业钱包":"_widget_1767950519138",
|
||||
"预计开通时间":"_widget_1767950519140",
|
||||
"不开通原因":"_widget_1767950519141",
|
||||
"未开通企业钱包其他原因":"_widget_1767950519144",
|
||||
"本次上线是否为连锁":"_widget_1767950519038",
|
||||
"调研计划表":"_widget_1767950133552",
|
||||
"调研计划表.大阶段":"_widget_1767950133552._widget_1767950133553",
|
||||
"调研计划表.事项":"_widget_1767950133552._widget_1767950133563",
|
||||
"调研计划表.日期":"_widget_1767950133552._widget_1767950133555",
|
||||
"调研计划表.完成状态":"_widget_1767950133552._widget_1767950133556",
|
||||
"调研计划表.资料支持":"_widget_1767950133552._widget_1767950133565",
|
||||
"调研计划表.说明":"_widget_1767950133552._widget_1767950133567",
|
||||
"总部人员岗位.说明":"_widget_1767950519061._widget_1767950519095",
|
||||
"中大店人员岗位":"_widget_1767952153274",
|
||||
"中大店人员岗位.中大店人员岗位":"_widget_1767952153274._widget_1767952153275",
|
||||
"中大店人员岗位.资料支持":"_widget_1767952153274._widget_1767952153276",
|
||||
"中大店人员岗位.说明":"_widget_1767952153274._widget_1767952153277",
|
||||
"小店系统人员":"_widget_1767952153280",
|
||||
"小店系统人员.小店系统人员":"_widget_1767952153280._widget_1767952153281",
|
||||
"小店系统人员.资料支持":"_widget_1767952153280._widget_1767952153282",
|
||||
"小店系统人员.说明":"_widget_1767952153280._widget_1767952153283",
|
||||
"门店经营范围":"_widget_1767952153422",
|
||||
"洗美流程":"_widget_1768208029841",
|
||||
"维保流程":"_widget_1768208029845",
|
||||
"其他业务":"_widget_1768208030070",
|
||||
"会员管理业务":"_widget_1768208030074",
|
||||
"财务管理业务":"_widget_1768208030076",
|
||||
"员工业绩管理":"_widget_1768208030078",
|
||||
"数据统计需求":"_widget_1768208030080",
|
||||
"管理员培训内容":"_widget_1768290159279",
|
||||
"A版本岗位培训":"_widget_1768290159317",
|
||||
"店长培训":"_widget_1768290159319",
|
||||
"SA培训内容":"_widget_1768290159321",
|
||||
"库管培训内容":"_widget_1768290159323",
|
||||
"收银培训内容":"_widget_1768290159325",
|
||||
"技师培训内容":"_widget_1768290159327",
|
||||
"门店运营":"_widget_1768290159499",
|
||||
"供应链":"_widget_1768290159501",
|
||||
"市场营销":"_widget_1768290159503",
|
||||
"客服":"_widget_1768290159505",
|
||||
"财务":"_widget_1768290159507",
|
||||
"基础设置":"_widget_1768290159656",
|
||||
"材料编码是否允许自定义":"_widget_1768290159658",
|
||||
"参数设置":"_widget_1768290159660",
|
||||
"员工权限设置":"_widget_1768290159662",
|
||||
"业绩规则是否已设置":"_widget_1768290159664",
|
||||
"标签规则设置":"_widget_1768290159666",
|
||||
"会员卡模板设置":"_widget_1768290159668",
|
||||
"服务提醒规则设置":"_widget_1768290159670",
|
||||
"客户回访规则设置":"_widget_1768290159672",
|
||||
"公众号是否已配置":"_widget_1768290159674",
|
||||
"微信商城配置":"_widget_1768290159676",
|
||||
"门店名称":"_widget_1767851302597",
|
||||
"公司名称":"_widget_1767851302598",
|
||||
"运营专家":"_widget_1767851302595",
|
||||
"专属运营顾问":"_widget_1767851302594",
|
||||
"购买版本":"_widget_1767851302602",
|
||||
"客户等级":"_widget_1767851302599",
|
||||
"门店编码":"_widget_1767851302596",
|
||||
"ERP操作模式":"_widget_1767851302604",
|
||||
"门店类型":"_widget_1767851302606",
|
||||
"调研完成时间":"_widget_1768290159736",
|
||||
"服务单跟进时间":"_widget_1768290159737",
|
||||
"培训完成时间":"_widget_1768290159738",
|
||||
"距预计培训时间的天数":"_widget_1768292738361",
|
||||
"距培训完成时间天数":"_widget_1768290159741",
|
||||
"距调研时间天数":"_widget_1768290159742",
|
||||
"是否超期未评价":"_widget_1768290159745",
|
||||
"门店ID":"_widget_1768290159746",
|
||||
"公司ID":"_widget_1768290159747",
|
||||
"大区":"_widget_1768290159748",
|
||||
"区域经理":"_widget_1768290159749",
|
||||
"关联数据客户资料":"_widget_1768359885413",
|
||||
"提交人":"creator",
|
||||
"提交时间":"createTime",
|
||||
"更新时间":"updateTime",
|
||||
}
|
||||
+678
-393
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
+2044
-236
File diff suppressed because one or more lines are too long
+155
-1631
File diff suppressed because it is too large
Load Diff
+321
-157
@@ -1,10 +1,12 @@
|
||||
{
|
||||
"cells": [
|
||||
{
|
||||
"metadata": {},
|
||||
"cell_type": "markdown",
|
||||
"source": "# 车辆信息导出",
|
||||
"id": "a738ca16021a9e3b"
|
||||
"id": "a738ca16021a9e3b",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"# 车辆信息导出"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
@@ -12,50 +14,49 @@
|
||||
"metadata": {
|
||||
"collapsed": true,
|
||||
"ExecuteTime": {
|
||||
"end_time": "2025-12-22T09:33:52.535439Z",
|
||||
"start_time": "2025-12-22T09:24:33.820278Z"
|
||||
"end_time": "2026-03-24T03:12:19.747274800Z",
|
||||
"start_time": "2026-03-24T02:42:20.660416400Z"
|
||||
}
|
||||
},
|
||||
"source": [
|
||||
"import time\n",
|
||||
"\n",
|
||||
"import pandas as pd\n",
|
||||
"import requests\n",
|
||||
"from tqdm import tqdm\n",
|
||||
"\n",
|
||||
"# Cookie 和 Headers 配置\n",
|
||||
"cookies = {\n",
|
||||
" 'acw_tc': '0a472f4517663729846515826e48e5fe00deb9589551f37ca83749c9ce043f',\n",
|
||||
" 'Hm_lvt_684c22b31d0037eca5a691cde16370ad': '1765863565,1766372987',\n",
|
||||
" 'Hm_lpvt_684c22b31d0037eca5a691cde16370ad': '1766372987',\n",
|
||||
" 'HMACCOUNT': '55F2182717FD6AE6',\n",
|
||||
" 'e_token': 'd6c91f1dbb754081948988a722287335',\n",
|
||||
" 'acw_tc': '76b20f7917743149845914058ebc47559507cd60c8642e0d54dbe45b6da222',\n",
|
||||
" 'Hm_lvt_684c22b31d0037eca5a691cde16370ad': '1773130169,1774314982',\n",
|
||||
" 'Hm_lpvt_684c22b31d0037eca5a691cde16370ad': '1774314982',\n",
|
||||
" 'HMACCOUNT': 'A6A0585E8C70051D',\n",
|
||||
" 'e_token': 'f44423067c184689a19eb9dc564bf33e',\n",
|
||||
" 'weixin_token': 'Y',\n",
|
||||
" 'e_c': 'MzY3NTI1OTM0OTg4NzQxMA==',\n",
|
||||
" 'e_i_o_c_n': 'JTIyJUU5JUE5JUIwJUU1JThBJUEwJUU2JUIxJUJEJUU4JUJEJUE2JUU2JTlDJThEJUU1JThBJUExJUU0JUI4JUFEJUU1JUJGJTgzJUU5JUJDJThFJUU2JUI5JTk2JUU1JThDJUJBJUU1JTlEJTkxJUU1JThGJUEzJUU1JUJBJTk3JTVCKzIwMDI3NDUrJTVEJTIy',\n",
|
||||
" 'e_i_p_c_n': 'JTIyJUU5JUE5JUIwJUU1JThBJUEwJUU2JUIxJUJEJUU4JUJEJUE2JUU2JTlDJThEJUU1JThBJUExJUU0JUI4JUFEJUU1JUJGJTgzJUU5JUJDJThFJUU2JUI5JTk2JUU1JThDJUJBJUU1JTlEJTkxJUU1JThGJUEzJUU1JUJBJTk3JUU1JUJBJTk3JUU0JUI4JUJCJTVCKzIwMjk4NjkrJTVEJTIy',\n",
|
||||
" 'e_c': 'NTQ0MzQ1MDE0MTA3ODA1Mg==',\n",
|
||||
" 'e_i_o_c_n': 'JTIyJUU1JTlCJTlCJUU0JUJDJTlBJUU1JUI4JTgyJUU4JThEJUEzJUU5JUFBJThGJUU2JUIxJUJEJUU4JUJEJUE2JUU3JUJCJUI0JUU0JUJGJUFFJUU0JUI4JUFEJUU1JUJGJTgzJTVCKzIwMDM5MDYrJTVEJTIy',\n",
|
||||
" 'e_i_p_c_n': 'JTIyJUU5JUE5JUIwJUU1JThBJUEwJUU2JUIxJUJEJUU4JUJEJUE2JUU2JTlDJThEJUU1JThBJUExJUU0JUI4JUFEJUU1JUJGJTgzJUU1JTlCJTlCJUU0JUJDJTlBJUU1JUI4JTgyJUU2JUEzJTk1JUU2JUE2JTg4JUU1JTlCJUFEJUU1JUJBJTk3JUU1JUJBJTk3JUU0JUI4JUJCJTVCKzIwMjk5MDkrJTVEJTIy',\n",
|
||||
"}\n",
|
||||
"\n",
|
||||
"headers = {\n",
|
||||
" 'Accept': 'application/json, text/plain, */*',\n",
|
||||
" 'Accept-Language': 'zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6',\n",
|
||||
" 'Cache-Control': 'no-cache',\n",
|
||||
" 'Connection': 'keep-alive',\n",
|
||||
" 'Content-Type': 'application/json;charset=UTF-8',\n",
|
||||
" 'Irisclient': 'PC-web#tedspc',\n",
|
||||
" 'Origin': 'https://teds.tyreplus.com.cn',\n",
|
||||
" 'Pragma': 'no-cache',\n",
|
||||
" 'Referer': 'https://teds.tyreplus.com.cn/tedspc/index.html',\n",
|
||||
" 'Sec-Fetch-Dest': 'empty',\n",
|
||||
" 'Sec-Fetch-Mode': 'cors',\n",
|
||||
" 'Sec-Fetch-Site': 'same-origin',\n",
|
||||
" 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Safari/537.36 Edg/143.0.0.0',\n",
|
||||
" 'sec-ch-ua': '\"Microsoft Edge\";v=\"143\", \"Chromium\";v=\"143\", \"Not A(Brand\";v=\"24\"',\n",
|
||||
" 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36 Edg/146.0.0.0',\n",
|
||||
" 'sec-ch-ua': '\"Chromium\";v=\"146\", \"Not-A.Brand\";v=\"24\", \"Microsoft Edge\";v=\"146\"',\n",
|
||||
" 'sec-ch-ua-mobile': '?0',\n",
|
||||
" 'sec-ch-ua-platform': '\"Windows\"',\n",
|
||||
"}\n",
|
||||
"\n",
|
||||
"\n",
|
||||
"all_data = []\n",
|
||||
"for i in tqdm(range(1, 1144)):\n",
|
||||
"for i in tqdm(range(1, 2019)):\n",
|
||||
" json_data = {\n",
|
||||
" 'pageStart': i,\n",
|
||||
" 'pageNums': 10,\n",
|
||||
@@ -73,122 +74,272 @@
|
||||
" all_data += data_list\n",
|
||||
"\n",
|
||||
"df = pd.DataFrame(all_data)\n",
|
||||
"df.to_excel(r\"D:\\Idea Project\\F6+宜搭+其它(1)\\张阳脚本\\文件输出\\驰加车辆信息.xlsx\", index=False)\n",
|
||||
"\n"
|
||||
"df.to_excel(r\"D:\\Idea Project\\F6+宜搭+其它(1)\\张阳脚本\\文件输出\\13719825616驰加车辆信息1.xlsx\", index=False)\n"
|
||||
],
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stderr",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"100%|██████████| 1143/1143 [08:56<00:00, 2.13it/s]\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"execution_count": 4
|
||||
},
|
||||
{
|
||||
"metadata": {},
|
||||
"cell_type": "markdown",
|
||||
"source": "# 历史维修记录列表(结算单)",
|
||||
"id": "e166fa181fddc651"
|
||||
},
|
||||
{
|
||||
"metadata": {
|
||||
"ExecuteTime": {
|
||||
"end_time": "2025-12-22T03:17:34.270096Z",
|
||||
"start_time": "2025-12-22T03:12:30.351185Z"
|
||||
}
|
||||
},
|
||||
"cell_type": "code",
|
||||
"source": [
|
||||
"import requests\n",
|
||||
"from tqdm import tqdm\n",
|
||||
"import pandas as pd\n",
|
||||
"\n",
|
||||
"cookies = {\n",
|
||||
" 'acw_tc': '0a472f4517663729846515826e48e5fe00deb9589551f37ca83749c9ce043f',\n",
|
||||
" 'Hm_lvt_684c22b31d0037eca5a691cde16370ad': '1765863565,1766372987',\n",
|
||||
" 'Hm_lpvt_684c22b31d0037eca5a691cde16370ad': '1766372987',\n",
|
||||
" 'HMACCOUNT': '55F2182717FD6AE6',\n",
|
||||
" 'e_token': 'd6c91f1dbb754081948988a722287335',\n",
|
||||
" 'weixin_token': 'Y',\n",
|
||||
" 'e_c': 'MzY3NTI1OTM0OTg4NzQxMA==',\n",
|
||||
" 'e_i_o_c_n': 'JTIyJUU5JUE5JUIwJUU1JThBJUEwJUU2JUIxJUJEJUU4JUJEJUE2JUU2JTlDJThEJUU1JThBJUExJUU0JUI4JUFEJUU1JUJGJTgzJUU5JUJDJThFJUU2JUI5JTk2JUU1JThDJUJBJUU1JTlEJTkxJUU1JThGJUEzJUU1JUJBJTk3JTVCKzIwMDI3NDUrJTVEJTIy',\n",
|
||||
" 'e_i_p_c_n': 'JTIyJUU5JUE5JUIwJUU1JThBJUEwJUU2JUIxJUJEJUU4JUJEJUE2JUU2JTlDJThEJUU1JThBJUExJUU0JUI4JUFEJUU1JUJGJTgzJUU5JUJDJThFJUU2JUI5JTk2JUU1JThDJUJBJUU1JTlEJTkxJUU1JThGJUEzJUU1JUJBJTk3JUU1JUJBJTk3JUU0JUI4JUJCJTVCKzIwMjk4NjkrJTVEJTIy',\n",
|
||||
"}\n",
|
||||
"\n",
|
||||
"headers = {\n",
|
||||
" 'Accept': 'application/json, text/plain, */*',\n",
|
||||
" 'Accept-Language': 'zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6',\n",
|
||||
" 'Cache-Control': 'no-cache',\n",
|
||||
" 'Connection': 'keep-alive',\n",
|
||||
" 'Content-Type': 'application/json;charset=UTF-8',\n",
|
||||
" 'Irisclient': 'PC-web#tedspc',\n",
|
||||
" 'Origin': 'https://teds.tyreplus.com.cn',\n",
|
||||
" 'Pragma': 'no-cache',\n",
|
||||
" 'Referer': 'https://teds.tyreplus.com.cn/tedspc/index.html',\n",
|
||||
" 'Sec-Fetch-Dest': 'empty',\n",
|
||||
" 'Sec-Fetch-Mode': 'cors',\n",
|
||||
" 'Sec-Fetch-Site': 'same-origin',\n",
|
||||
" 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Safari/537.36 Edg/143.0.0.0',\n",
|
||||
" 'sec-ch-ua': '\"Microsoft Edge\";v=\"143\", \"Chromium\";v=\"143\", \"Not A(Brand\";v=\"24\"',\n",
|
||||
" 'sec-ch-ua-mobile': '?0',\n",
|
||||
" 'sec-ch-ua-platform': '\"Windows\"',\n",
|
||||
"}\n",
|
||||
"\n",
|
||||
"history_all_data = []\n",
|
||||
"for i in tqdm(range(1, 848)):\n",
|
||||
" json_data = {\n",
|
||||
" # 记得修改门店list\n",
|
||||
" 'storeCodeList': [\n",
|
||||
" '302558',\n",
|
||||
" '366900',\n",
|
||||
" ],\n",
|
||||
" 'pageStart': i,\n",
|
||||
" 'pageNums': 10,\n",
|
||||
" 'pageNum': i,\n",
|
||||
" 'pageSize': 10,\n",
|
||||
" }\n",
|
||||
"\n",
|
||||
" response = requests.post(\n",
|
||||
" 'https://teds.tyreplus.com.cn/api/aftersales/payment/queryPaymentSettlementListByCondition',\n",
|
||||
" cookies=cookies,\n",
|
||||
" headers=headers,\n",
|
||||
" json=json_data,\n",
|
||||
" )\n",
|
||||
" history_data_list = response.json()['obj']['list']\n",
|
||||
" history_all_data += history_data_list\n",
|
||||
"\n",
|
||||
"df = pd.DataFrame(history_all_data)\n",
|
||||
"df.to_excel(r\"D:\\Idea Project\\F6+宜搭+其它(1)\\张阳脚本\\文件输出\\结算单.xlsx\", index=False)\n"
|
||||
],
|
||||
"id": "51f8f4b21505280a",
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stderr",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"100%|██████████| 847/847 [04:53<00:00, 2.89it/s]\n"
|
||||
"100%|██████████| 2018/2018 [29:27<00:00, 1.14it/s]\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"execution_count": 2
|
||||
},
|
||||
{
|
||||
"metadata": {},
|
||||
"cell_type": "markdown",
|
||||
"source": "历史维修记录明细(结算单明细)",
|
||||
"id": "44cdf0d8f5f01c7d"
|
||||
"id": "e166fa181fddc651",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"# 历史维修记录列表(结算单)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"id": "51f8f4b21505280a",
|
||||
"metadata": {
|
||||
"ExecuteTime": {
|
||||
"end_time": "2025-12-22T09:16:59.210944Z",
|
||||
"start_time": "2025-12-22T05:46:03.111327Z"
|
||||
"end_time": "2026-03-24T07:37:35.090160900Z",
|
||||
"start_time": "2026-03-24T05:31:09.783019900Z"
|
||||
}
|
||||
},
|
||||
"source": [
|
||||
"import time\n",
|
||||
"import requests\n",
|
||||
"from tqdm import tqdm\n",
|
||||
"import pandas as pd\n",
|
||||
"\n",
|
||||
"# ================= 配置区域 =================\n",
|
||||
"# Cookie 和 Headers 配置\n",
|
||||
"cookies = {\n",
|
||||
" 'acw_tc': '76b20f7917743149845914058ebc47559507cd60c8642e0d54dbe45b6da222',\n",
|
||||
" 'Hm_lvt_684c22b31d0037eca5a691cde16370ad': '1773130169,1774314982',\n",
|
||||
" 'Hm_lpvt_684c22b31d0037eca5a691cde16370ad': '1774314982',\n",
|
||||
" 'HMACCOUNT': 'A6A0585E8C70051D',\n",
|
||||
" 'e_token': 'f44423067c184689a19eb9dc564bf33e',\n",
|
||||
" 'weixin_token': 'Y',\n",
|
||||
" 'e_c': 'NTQ0MzQ1MDE0MTA3ODA1Mg==',\n",
|
||||
" 'e_i_o_c_n': 'JTIyJUU1JTlCJTlCJUU0JUJDJTlBJUU1JUI4JTgyJUU4JThEJUEzJUU5JUFBJThGJUU2JUIxJUJEJUU4JUJEJUE2JUU3JUJCJUI0JUU0JUJGJUFFJUU0JUI4JUFEJUU1JUJGJTgzJTVCKzIwMDM5MDYrJTVEJTIy',\n",
|
||||
" 'e_i_p_c_n': 'JTIyJUU5JUE5JUIwJUU1JThBJUEwJUU2JUIxJUJEJUU4JUJEJUE2JUU2JTlDJThEJUU1JThBJUExJUU0JUI4JUFEJUU1JUJGJTgzJUU1JTlCJTlCJUU0JUJDJTlBJUU1JUI4JTgyJUU2JUEzJTk1JUU2JUE2JTg4JUU1JTlCJUFEJUU1JUJBJTk3JUU1JUJBJTk3JUU0JUI4JUJCJTVCKzIwMjk5MDkrJTVEJTIy',\n",
|
||||
"}\n",
|
||||
"\n",
|
||||
"headers = {\n",
|
||||
" 'Accept': 'application/json, text/plain, */*',\n",
|
||||
" 'Accept-Language': 'zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6',\n",
|
||||
" 'Connection': 'keep-alive',\n",
|
||||
" 'Content-Type': 'application/json;charset=UTF-8',\n",
|
||||
" 'Irisclient': 'PC-web#tedspc',\n",
|
||||
" 'Origin': 'https://teds.tyreplus.com.cn',\n",
|
||||
" 'Referer': 'https://teds.tyreplus.com.cn/tedspc/index.html',\n",
|
||||
" 'Sec-Fetch-Dest': 'empty',\n",
|
||||
" 'Sec-Fetch-Mode': 'cors',\n",
|
||||
" 'Sec-Fetch-Site': 'same-origin',\n",
|
||||
" 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36 Edg/146.0.0.0',\n",
|
||||
" 'sec-ch-ua': '\"Chromium\";v=\"146\", \"Not-A.Brand\";v=\"24\", \"Microsoft Edge\";v=\"146\"',\n",
|
||||
" 'sec-ch-ua-mobile': '?0',\n",
|
||||
" 'sec-ch-ua-platform': '\"Windows\"',\n",
|
||||
" # 'Cookie': 'acw_tc=76b20f7917743149845914058ebc47559507cd60c8642e0d54dbe45b6da222; Hm_lvt_684c22b31d0037eca5a691cde16370ad=1773130169,1774314982; Hm_lpvt_684c22b31d0037eca5a691cde16370ad=1774314982; HMACCOUNT=A6A0585E8C70051D; e_token=f44423067c184689a19eb9dc564bf33e; weixin_token=Y; e_c=NTQ0MzQ1MDE0MTA3ODA1Mg==; e_i_o_c_n=JTIyJUU1JTlCJTlCJUU0JUJDJTlBJUU1JUI4JTgyJUU4JThEJUEzJUU5JUFBJThGJUU2JUIxJUJEJUU4JUJEJUE2JUU3JUJCJUI0JUU0JUJGJUFFJUU0JUI4JUFEJUU1JUJGJTgzJTVCKzIwMDM5MDYrJTVEJTIy; e_i_p_c_n=JTIyJUU5JUE5JUIwJUU1JThBJUEwJUU2JUIxJUJEJUU4JUJEJUE2JUU2JTlDJThEJUU1JThBJUExJUU0JUI4JUFEJUU1JUJGJTgzJUU1JTlCJTlCJUU0JUJDJTlBJUU1JUI4JTgyJUU2JUEzJTk1JUU2JUE2JTg4JUU1JTlCJUFEJUU1JUJBJTk3JUU1JUJBJTk3JUU0JUI4JUJCJTVCKzIwMjk5MDkrJTVEJTIy',\n",
|
||||
"}\n",
|
||||
"\n",
|
||||
"\n",
|
||||
"# 业务参数配置\n",
|
||||
"TARGET_URL = 'https://teds.tyreplus.com.cn/api/aftersales/payment/queryPaymentSettlementListByCondition'\n",
|
||||
"STORE_CODES = [\"330522\", \"343280\"] # 门店列表\n",
|
||||
"PAGE_SIZE = 10\n",
|
||||
"OUTPUT_PATH = r\"D:\\Idea Project\\F6+宜搭+其它(1)\\张阳脚本\\文件输出\\13822673880结算单.xlsx\"\n",
|
||||
"MAX_RETRIES = 3\n",
|
||||
"\n",
|
||||
"# ================= 功能函数 =================\n",
|
||||
"\n",
|
||||
"def fetch_page_with_retry(page_num, store_list, max_retries=MAX_RETRIES):\n",
|
||||
" \"\"\"\n",
|
||||
" 带重试机制的单页数据获取函数\n",
|
||||
" :param page_num: 当前页码 (从1开始)\n",
|
||||
" :param store_list: 门店代码列表\n",
|
||||
" :param max_retries: 最大重试次数\n",
|
||||
" :return: 成功的响应JSON对象,若最终失败则返回None\n",
|
||||
" \"\"\"\n",
|
||||
" json_data = {\n",
|
||||
" 'storeCodeList': store_list,\n",
|
||||
" 'pageStart': page_num,\n",
|
||||
" 'pageNums': 10,\n",
|
||||
" 'pageNum': page_num,\n",
|
||||
" 'pageSize': PAGE_SIZE,\n",
|
||||
" }\n",
|
||||
"\n",
|
||||
" for attempt in range(max_retries):\n",
|
||||
" try:\n",
|
||||
" response = requests.post(\n",
|
||||
" TARGET_URL,\n",
|
||||
" cookies=cookies,\n",
|
||||
" headers=headers,\n",
|
||||
" json=json_data,\n",
|
||||
" timeout=15 # 增加超时时间以防网络波动\n",
|
||||
" )\n",
|
||||
" response.raise_for_status() # 检查HTTP状态码 (如404, 500)\n",
|
||||
" result = response.json()\n",
|
||||
"\n",
|
||||
" # 检查业务逻辑是否成功 (通常code=200或success=true表示成功)\n",
|
||||
" # 根据实际接口返回调整判断条件,这里假设 obj 存在即视为结构正常\n",
|
||||
" if 'obj' in result and 'list' in result['obj']:\n",
|
||||
" return result\n",
|
||||
" else:\n",
|
||||
" # 如果返回了错误信息\n",
|
||||
" error_msg = result.get('msg', result.get('message', 'Unknown business error'))\n",
|
||||
" print(f\"第{page_num}页业务返回异常: {error_msg}\")\n",
|
||||
" # 如果是明确的业务错误(如权限不足),通常重试无效,可直接跳出\n",
|
||||
" if \"权限\" in str(error_msg) or \"token\" in str(error_msg).lower():\n",
|
||||
" return None\n",
|
||||
"\n",
|
||||
" except Exception as e:\n",
|
||||
" print(f\"第{page_num}页请求失败 (尝试 {attempt+1}/{max_retries}): {str(e)}\")\n",
|
||||
" if attempt < max_retries - 1:\n",
|
||||
" wait_time = 2 ** attempt # 指数退避: 1s, 2s, 4s...\n",
|
||||
" time.sleep(wait_time)\n",
|
||||
" else:\n",
|
||||
" print(f\"第{page_num}页最终获取失败,将跳过该页。\")\n",
|
||||
" return None\n",
|
||||
"\n",
|
||||
" return None\n",
|
||||
"\n",
|
||||
"# ================= 主执行逻辑 =================\n",
|
||||
"\n",
|
||||
"all_data = []\n",
|
||||
"current_page = 1\n",
|
||||
"total_records = 0\n",
|
||||
"total_pages = 0\n",
|
||||
"\n",
|
||||
"print(\"正在获取第 1 页数据以计算总记录数...\")\n",
|
||||
"\n",
|
||||
"# 1. 获取第一页,确定总数\n",
|
||||
"first_response = fetch_page_with_retry(current_page, STORE_CODES)\n",
|
||||
"\n",
|
||||
"if first_response:\n",
|
||||
" data_list = first_response['obj']['list']\n",
|
||||
" all_data += data_list\n",
|
||||
"\n",
|
||||
" # 获取总数\n",
|
||||
" total_records = first_response['obj'].get('total', 0)\n",
|
||||
" print(f\"✅ 获取成功。总记录数: {total_records}\")\n",
|
||||
"\n",
|
||||
" if total_records > 0:\n",
|
||||
" # 计算总页数 (向上取整)\n",
|
||||
" total_pages = (total_records + PAGE_SIZE - 1) // PAGE_SIZE\n",
|
||||
" print(f\"📄 预计总页数: {total_pages} (每页 {PAGE_SIZE} 条)\")\n",
|
||||
"\n",
|
||||
" # 2. 循环获取剩余页面\n",
|
||||
" if total_pages > 1:\n",
|
||||
" for page_idx in tqdm(range(2, total_pages + 1), desc=\"正在爬取结算单\", initial=1, total=total_pages):\n",
|
||||
" response = fetch_page_with_retry(page_idx, STORE_CODES)\n",
|
||||
"\n",
|
||||
" if response:\n",
|
||||
" page_data = response['obj']['list']\n",
|
||||
" all_data += page_data\n",
|
||||
" else:\n",
|
||||
" print(f\"⚠️ 警告:第 {page_idx} 页数据获取失败,已跳过。\")\n",
|
||||
"\n",
|
||||
" # 礼貌性延时,防止触发风控\n",
|
||||
" time.sleep(0.5)\n",
|
||||
" else:\n",
|
||||
" print(\"ℹ️ 所有数据已在第一页获取完毕,无需继续爬取。\")\n",
|
||||
" else:\n",
|
||||
" print(\"ℹ️ 未找到任何符合条件的数据。\")\n",
|
||||
"else:\n",
|
||||
" print(\"❌ 无法获取第一页数据,程序终止。请检查Cookie是否过期或网络是否正常。\")\n",
|
||||
"\n",
|
||||
"# ================= 数据保存 =================\n",
|
||||
"\n",
|
||||
"if all_data:\n",
|
||||
" df = pd.DataFrame(all_data)\n",
|
||||
" try:\n",
|
||||
" df.to_excel(OUTPUT_PATH, index=False)\n",
|
||||
" print(f\"\\n🎉 数据已成功保存至: {OUTPUT_PATH}\")\n",
|
||||
" print(f\"📊 共保存 {len(df)} 条记录 (期望: {total_records})\")\n",
|
||||
"\n",
|
||||
" if len(df) < total_records:\n",
|
||||
" print(f\"⚠️ 注意:实际保存数量 ({len(df)}) 少于期望数量 ({total_records}),部分页面可能获取失败。\")\n",
|
||||
"\n",
|
||||
" except Exception as e:\n",
|
||||
" print(f\"❌ 保存文件时出错: {e}\")\n",
|
||||
" print(\"请检查文件路径是否正确,且文件未被其他程序占用。\")\n",
|
||||
"else:\n",
|
||||
" print(\"\\n💤 没有数据可保存。\")"
|
||||
],
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"正在获取第 1 页数据以计算总记录数...\n",
|
||||
"✅ 获取成功。总记录数: 43728\n",
|
||||
"📄 预计总页数: 4373 (每页 10 条)\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "stderr",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"正在爬取结算单: 33%|███▎ | 1441/4373 [38:12<1:29:11, 1.83s/it]"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"第1442页请求失败 (尝试 1/3): ('Connection aborted.', ConnectionResetError(10054, '远程主机强迫关闭了一个现有的连接。', None, 10054, None))\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "stderr",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"正在爬取结算单: 51%|█████ | 2241/4373 [1:02:36<1:01:42, 1.74s/it]"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"第2242页请求失败 (尝试 1/3): ('Connection aborted.', ConnectionResetError(10054, '远程主机强迫关闭了一个现有的连接。', None, 10054, None))\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "stderr",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"正在爬取结算单: 100%|██████████| 4373/4373 [2:05:27<00:00, 1.72s/it] \n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"\n",
|
||||
"🎉 数据已成功保存至: D:\\Idea Project\\F6+宜搭+其它(1)\\张阳脚本\\文件输出\\13822673880结算单.xlsx\n",
|
||||
"📊 共保存 43730 条记录 (期望: 43728)\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"execution_count": 3
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "44cdf0d8f5f01c7d",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"历史维修记录明细(结算单明细)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"id": "b7e0d7a4da6c9b03",
|
||||
"metadata": {
|
||||
"ExecuteTime": {
|
||||
"end_time": "2026-03-25T10:15:04.125375900Z",
|
||||
"start_time": "2026-03-24T12:31:05.631170600Z"
|
||||
}
|
||||
},
|
||||
"source": [
|
||||
"import requests\n",
|
||||
"from tqdm.notebook import tqdm\n",
|
||||
@@ -196,37 +347,36 @@
|
||||
"import time\n",
|
||||
"\n",
|
||||
"cookies = {\n",
|
||||
" 'acw_tc': '0a472f4517663729846515826e48e5fe00deb9589551f37ca83749c9ce043f',\n",
|
||||
" 'Hm_lvt_684c22b31d0037eca5a691cde16370ad': '1765863565,1766372987',\n",
|
||||
" 'Hm_lpvt_684c22b31d0037eca5a691cde16370ad': '1766372987',\n",
|
||||
" 'HMACCOUNT': '55F2182717FD6AE6',\n",
|
||||
" 'e_token': 'd6c91f1dbb754081948988a722287335',\n",
|
||||
" 'acw_tc': '76b20f7917743149845914058ebc47559507cd60c8642e0d54dbe45b6da222',\n",
|
||||
" 'Hm_lvt_684c22b31d0037eca5a691cde16370ad': '1773130169,1774314982',\n",
|
||||
" 'Hm_lpvt_684c22b31d0037eca5a691cde16370ad': '1774314982',\n",
|
||||
" 'HMACCOUNT': 'A6A0585E8C70051D',\n",
|
||||
" 'e_token': 'f44423067c184689a19eb9dc564bf33e',\n",
|
||||
" 'weixin_token': 'Y',\n",
|
||||
" 'e_c': 'MzY3NTI1OTM0OTg4NzQxMA==',\n",
|
||||
" 'e_i_o_c_n': 'JTIyJUU5JUE5JUIwJUU1JThBJUEwJUU2JUIxJUJEJUU4JUJEJUE2JUU2JTlDJThEJUU1JThBJUExJUU0JUI4JUFEJUU1JUJGJTgzJUU5JUJDJThFJUU2JUI5JTk2JUU1JThDJUJBJUU1JTlEJTkxJUU1JThGJUEzJUU1JUJBJTk3JTVCKzIwMDI3NDUrJTVEJTIy',\n",
|
||||
" 'e_i_p_c_n': 'JTIyJUU5JUE5JUIwJUU1JThBJUEwJUU2JUIxJUJEJUU4JUJEJUE2JUU2JTlDJThEJUU1JThBJUExJUU0JUI4JUFEJUU1JUJGJTgzJUU5JUJDJThFJUU2JUI5JTk2JUU1JThDJUJBJUU1JTlEJTkxJUU1JThGJUEzJUU1JUJBJTk3JUU1JUJBJTk3JUU0JUI4JUJCJTVCKzIwMjk4NjkrJTVEJTIy',\n",
|
||||
" 'e_c': 'NTQ0MzQ1MDE0MTA3ODA1Mg==',\n",
|
||||
" 'e_i_o_c_n': 'JTIyJUU1JTlCJTlCJUU0JUJDJTlBJUU1JUI4JTgyJUU4JThEJUEzJUU5JUFBJThGJUU2JUIxJUJEJUU4JUJEJUE2JUU3JUJCJUI0JUU0JUJGJUFFJUU0JUI4JUFEJUU1JUJGJTgzJTVCKzIwMDM5MDYrJTVEJTIy',\n",
|
||||
" 'e_i_p_c_n': 'JTIyJUU5JUE5JUIwJUU1JThBJUEwJUU2JUIxJUJEJUU4JUJEJUE2JUU2JTlDJThEJUU1JThBJUExJUU0JUI4JUFEJUU1JUJGJTgzJUU1JTlCJTlCJUU0JUJDJTlBJUU1JUI4JTgyJUU2JUEzJTk1JUU2JUE2JTg4JUU1JTlCJUFEJUU1JUJBJTk3JUU1JUJBJTk3JUU0JUI4JUJCJTVCKzIwMjk5MDkrJTVEJTIy',\n",
|
||||
"}\n",
|
||||
"\n",
|
||||
"headers = {\n",
|
||||
" 'Accept': 'application/json, text/plain, */*',\n",
|
||||
" 'Accept-Language': 'zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6',\n",
|
||||
" 'Cache-Control': 'no-cache',\n",
|
||||
" 'Connection': 'keep-alive',\n",
|
||||
" 'Content-Type': 'application/json;charset=UTF-8',\n",
|
||||
" 'Irisclient': 'PC-web#tedspc',\n",
|
||||
" 'Origin': 'https://teds.tyreplus.com.cn',\n",
|
||||
" 'Pragma': 'no-cache',\n",
|
||||
" 'Referer': 'https://teds.tyreplus.com.cn/tedspc/index.html',\n",
|
||||
" 'Sec-Fetch-Dest': 'empty',\n",
|
||||
" 'Sec-Fetch-Mode': 'cors',\n",
|
||||
" 'Sec-Fetch-Site': 'same-origin',\n",
|
||||
" 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Safari/537.36 Edg/143.0.0.0',\n",
|
||||
" 'sec-ch-ua': '\"Microsoft Edge\";v=\"143\", \"Chromium\";v=\"143\", \"Not A(Brand\";v=\"24\"',\n",
|
||||
" 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36 Edg/146.0.0.0',\n",
|
||||
" 'sec-ch-ua': '\"Chromium\";v=\"146\", \"Not-A.Brand\";v=\"24\", \"Microsoft Edge\";v=\"146\"',\n",
|
||||
" 'sec-ch-ua-mobile': '?0',\n",
|
||||
" 'sec-ch-ua-platform': '\"Windows\"',\n",
|
||||
" # 'Cookie': 'acw_tc=76b20f7917743149845914058ebc47559507cd60c8642e0d54dbe45b6da222; Hm_lvt_684c22b31d0037eca5a691cde16370ad=1773130169,1774314982; Hm_lpvt_684c22b31d0037eca5a691cde16370ad=1774314982; HMACCOUNT=A6A0585E8C70051D; e_token=f44423067c184689a19eb9dc564bf33e; weixin_token=Y; e_c=NTQ0MzQ1MDE0MTA3ODA1Mg==; e_i_o_c_n=JTIyJUU1JTlCJTlCJUU0JUJDJTlBJUU1JUI4JTgyJUU4JThEJUEzJUU5JUFBJThGJUU2JUIxJUJEJUU4JUJEJUE2JUU3JUJCJUI0JUU0JUJGJUFFJUU0JUI4JUFEJUU1JUJGJTgzJTVCKzIwMDM5MDYrJTVEJTIy; e_i_p_c_n=JTIyJUU5JUE5JUIwJUU1JThBJUEwJUU2JUIxJUJEJUU4JUJEJUE2JUU2JTlDJThEJUU1JThBJUExJUU0JUI4JUFEJUU1JUJGJTgzJUU1JTlCJTlCJUU0JUJDJTlBJUU1JUI4JTgyJUU2JUEzJTk1JUU2JUE2JTg4JUU1JTlCJUFEJUU1JUJBJTk3JUU1JUJBJTk3JUU0JUI4JUJCJTVCKzIwMjk5MDkrJTVEJTIy',\n",
|
||||
"}\n",
|
||||
"\n",
|
||||
"df = pd.read_excel(\"D:\\Idea Project\\F6+宜搭+其它(1)\\张阳脚本\\文件输出\\结算单.xlsx\", sheet_name='Sheet1')\n",
|
||||
"df = pd.read_excel(fr\"D:\\Idea Project\\F6+宜搭+其它(1)\\张阳脚本\\文件输出\\13822673880结算单.xlsx\", sheet_name='Sheet1')\n",
|
||||
"\n",
|
||||
"all_data_list = []\n",
|
||||
"all_service_data = []\n",
|
||||
@@ -302,32 +452,24 @@
|
||||
"df3 = pd.DataFrame(all_payment_data)\n",
|
||||
"\n",
|
||||
"# 保存到Excel\n",
|
||||
"df.to_excel(r\"D:\\Idea Project\\F6+宜搭+其它(1)\\张阳脚本\\文件输出\\历史维修记录明细.xlsx\", index=False)\n",
|
||||
"df1.to_excel(r\"D:\\Idea Project\\F6+宜搭+其它(1)\\张阳脚本\\文件输出\\历史维修记录明细-服务明细.xlsx\", index=False)\n",
|
||||
"df2.to_excel(r\"D:\\Idea Project\\F6+宜搭+其它(1)\\张阳脚本\\文件输出\\历史维修记录明细-产品明细.xlsx\", index=False)\n",
|
||||
"df3.to_excel(r\"D:\\Idea Project\\F6+宜搭+其它(1)\\张阳脚本\\文件输出\\历史维修记录明细-支付方式.xlsx\", index=False)\n"
|
||||
"df.to_excel(r\"D:\\Idea Project\\F6+宜搭+其它(1)\\张阳脚本\\文件输出\\1历史维修记录明细1.xlsx\", index=False)\n",
|
||||
"df1.to_excel(r\"D:\\Idea Project\\F6+宜搭+其它(1)\\张阳脚本\\文件输出\\1历史维修记录明细-服务明细1.xlsx\",\n",
|
||||
" index=False)\n",
|
||||
"df2.to_excel(r\"D:\\Idea Project\\F6+宜搭+其它(1)\\张阳脚本\\文件输出\\1历史维修记录明细-产品明细1.xlsx\",\n",
|
||||
" index=False)\n",
|
||||
"df3.to_excel(r\"D:\\Idea Project\\F6+宜搭+其它(1)\\张阳脚本\\文件输出\\1历史维修记录明细-支付方式1.xlsx\",\n",
|
||||
" index=False)\n"
|
||||
],
|
||||
"id": "b7e0d7a4da6c9b03",
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stderr",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"<>:37: SyntaxWarning: invalid escape sequence '\\I'\n",
|
||||
"<>:37: SyntaxWarning: invalid escape sequence '\\I'\n",
|
||||
"C:\\Users\\zy187\\AppData\\Local\\Temp\\ipykernel_29896\\1397566597.py:37: SyntaxWarning: invalid escape sequence '\\I'\n",
|
||||
" df = pd.read_excel(\"D:\\Idea Project\\F6+宜搭+其它(1)\\张阳脚本\\文件输出\\结算单.xlsx\", sheet_name='Sheet1')\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"data": {
|
||||
"text/plain": [
|
||||
" 0%| | 0/8463 [00:00<?, ?it/s]"
|
||||
" 0%| | 0/43730 [00:00<?, ?it/s]"
|
||||
],
|
||||
"application/vnd.jupyter.widget-view+json": {
|
||||
"version_major": 2,
|
||||
"version_minor": 0,
|
||||
"model_id": "6e51c0e7de2f4a7aab44e2c939cba811"
|
||||
"model_id": "2475aaf2f08b4f3f9b6915bcbc30a4fc"
|
||||
}
|
||||
},
|
||||
"metadata": {},
|
||||
@@ -340,36 +482,58 @@
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"HTTP 请求失败,状态码: 504 (paymentNo: SI2512141629588397)\n",
|
||||
"请求异常: HTTPSConnectionPool(host='teds.tyreplus.com.cn', port=443): Read timed out. (read timeout=10) (paymentNo: SI2509131018744247)\n",
|
||||
"请求异常: HTTPSConnectionPool(host='teds.tyreplus.com.cn', port=443): Read timed out. (read timeout=10) (paymentNo: SI2508260841398950)\n",
|
||||
"请求异常: HTTPSConnectionPool(host='teds.tyreplus.com.cn', port=443): Read timed out. (read timeout=10) (paymentNo: SI2508171023222117)\n",
|
||||
"请求异常: HTTPSConnectionPool(host='teds.tyreplus.com.cn', port=443): Read timed out. (read timeout=10) (paymentNo: SI2508091817076414)\n",
|
||||
"请求异常: HTTPSConnectionPool(host='teds.tyreplus.com.cn', port=443): Read timed out. (read timeout=10) (paymentNo: SI2508081059041103)\n",
|
||||
"请求异常: HTTPSConnectionPool(host='teds.tyreplus.com.cn', port=443): Read timed out. (read timeout=10) (paymentNo: SI2508011823922622)\n"
|
||||
"请求异常: ('Connection aborted.', ConnectionResetError(10054, '远程主机强迫关闭了一个现有的连接。', None, 10054, None)) (paymentNo: SI2511031810785166)\n",
|
||||
"请求异常: ('Connection aborted.', ConnectionResetError(10054, '远程主机强迫关闭了一个现有的连接。', None, 10054, None)) (paymentNo: SI2510121646331912)\n",
|
||||
"请求异常: ('Connection aborted.', ConnectionResetError(10054, '远程主机强迫关闭了一个现有的连接。', None, 10054, None)) (paymentNo: SI2504251333197830)\n",
|
||||
"请求异常: HTTPSConnectionPool(host='teds.tyreplus.com.cn', port=443): Read timed out. (read timeout=10) (paymentNo: SI2504251333197185)\n",
|
||||
"HTTP 请求失败,状态码: 504 (paymentNo: SI2504251328192860)\n",
|
||||
"请求异常: ('Connection aborted.', ConnectionResetError(10054, '远程主机强迫关闭了一个现有的连接。', None, 10054, None)) (paymentNo: SI2504251327191463)\n",
|
||||
"HTTP 请求失败,状态码: 502 (paymentNo: SI2504251326190989)\n",
|
||||
"请求异常: ('Connection aborted.', ConnectionResetError(10054, '远程主机强迫关闭了一个现有的连接。', None, 10054, None)) (paymentNo: SI2504251320185538)\n",
|
||||
"请求异常: ('Connection aborted.', ConnectionResetError(10054, '远程主机强迫关闭了一个现有的连接。', None, 10054, None)) (paymentNo: SI2504251319184980)\n",
|
||||
"HTTP 请求失败,状态码: 502 (paymentNo: SI2504251316180693)\n",
|
||||
"请求异常: HTTPSConnectionPool(host='teds.tyreplus.com.cn', port=443): Read timed out. (read timeout=10) (paymentNo: SI2504251302159764)\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"execution_count": 3
|
||||
"execution_count": 5
|
||||
},
|
||||
{
|
||||
"metadata": {},
|
||||
"cell_type": "code",
|
||||
"outputs": [],
|
||||
"execution_count": null,
|
||||
"source": [
|
||||
"\n",
|
||||
"# 保存到Excel\n",
|
||||
"df.to_excel(r\"D:\\Idea Project\\F6+宜搭+其它(1)\\张阳脚本\\文件输出\\1历史维修记录明细1.xlsx\", index=False)\n",
|
||||
"df1.to_excel(r\"D:\\Idea Project\\F6+宜搭+其它(1)\\张阳脚本\\文件输出\\1历史维修记录明细-服务明细1.xlsx\",\n",
|
||||
" index=False)\n",
|
||||
"df2.to_excel(r\"D:\\Idea Project\\F6+宜搭+其它(1)\\张阳脚本\\文件输出\\1历史维修记录明细-产品明细1.xlsx\",\n",
|
||||
" index=False)\n",
|
||||
"df3.to_excel(r\"D:\\Idea Project\\F6+宜搭+其它(1)\\张阳脚本\\文件输出\\1历史维修记录明细-支付方式1.xlsx\",\n",
|
||||
" index=False)"
|
||||
],
|
||||
"id": "bdef2047419fb838"
|
||||
}
|
||||
],
|
||||
"metadata": {
|
||||
"kernelspec": {
|
||||
"display_name": "Python 3",
|
||||
"display_name": "F6+宜搭+其它",
|
||||
"language": "python",
|
||||
"name": "python3"
|
||||
},
|
||||
"language_info": {
|
||||
"codemirror_mode": {
|
||||
"name": "ipython",
|
||||
"version": 2
|
||||
"version": 3
|
||||
},
|
||||
"file_extension": ".py",
|
||||
"mimetype": "text/x-python",
|
||||
"name": "python",
|
||||
"nbconvert_exporter": "python",
|
||||
"pygments_lexer": "ipython2",
|
||||
"version": "2.7.6"
|
||||
"pygments_lexer": "ipython3",
|
||||
"version": "3.13.11"
|
||||
}
|
||||
},
|
||||
"nbformat": 4,
|
||||
|
||||
@@ -0,0 +1,183 @@
|
||||
# 可以引用一些第三方库.
|
||||
import requests
|
||||
import time
|
||||
from datetime import datetime, timedelta, timezone
|
||||
from typing import Any, Dict, List, Optional
|
||||
|
||||
# api_key = triggerConf.get('_widget_17756292392611')
|
||||
# entry_id = triggerConf.get('_widget_17756292385281')
|
||||
|
||||
# 简道云 API 调用 Token(Bearer 形式)
|
||||
api_key="675b900991ad2491c69389ca"
|
||||
# 简道云 API 通用请求头
|
||||
entry_id ="695f439e3e910f09190d8e99"
|
||||
|
||||
API_TOKEN = "Bearer qygHulymo1fekJk4CIZyNKjyQAzG8CFN"
|
||||
HEADERS = {'Authorization': API_TOKEN, 'Content-Type': 'application/json'}
|
||||
|
||||
|
||||
def entry_data_list(
|
||||
data: Dict[str, Any],
|
||||
max_retries: int = 5,
|
||||
# 获取多条表单数据(自动分页:用上一页最后一条的 _id 作为 data_id)
|
||||
limit: int = 90,
|
||||
timeout: int = 10,
|
||||
) -> Dict[str, List[Dict[str, Any]]]:
|
||||
url = 'https://api.jiandaoyun.com/api/v5/app/entry/data/list'
|
||||
|
||||
all_rows: List[Dict[str, Any]] = []
|
||||
last_data_id: Optional[str] = None
|
||||
|
||||
while True:
|
||||
payload: Dict[str, Any] = {
|
||||
'app_id': data['api_key'],
|
||||
'entry_id': data['entry_id'],
|
||||
'limit': limit,
|
||||
'data_id': last_data_id,
|
||||
}
|
||||
if data.get('filter') is not None:
|
||||
payload['filter'] = data['filter']
|
||||
|
||||
body: Optional[Dict[str, Any]] = None
|
||||
for attempt in range(max_retries + 1):
|
||||
try:
|
||||
res = requests.post(url=url, json=payload, headers=HEADERS, timeout=timeout)
|
||||
res.raise_for_status()
|
||||
# 网络抖动/超时等异常,按最大重试次数重试
|
||||
body = res.json()
|
||||
break
|
||||
except requests.RequestException:
|
||||
if attempt >= max_retries:
|
||||
raise
|
||||
time.sleep(0.5)
|
||||
|
||||
batch = (body or {}).get('data') or []
|
||||
if not batch:
|
||||
# 下一页从本页最后一条数据之后继续拉取
|
||||
break
|
||||
|
||||
all_rows.extend(batch)
|
||||
last_data_id = batch[-1].get('_id')
|
||||
|
||||
return {'data': all_rows}
|
||||
|
||||
|
||||
def entry_data_update(
|
||||
app_id: str,
|
||||
entry_id: str,
|
||||
data_id: str,
|
||||
data_patch: Dict[str, Any],
|
||||
timeout: int = 10,
|
||||
) -> Dict[str, Any]:
|
||||
url = 'https://api.jiandaoyun.com/api/v5/app/entry/data/update'
|
||||
payload = {
|
||||
'app_id': app_id,
|
||||
# 这里关闭触发器,避免回写引发自动化流程/智能助手(如需触发可改为 True)
|
||||
'entry_id': entry_id,
|
||||
'data_id': data_id,
|
||||
'data': data_patch,
|
||||
'is_start_trigger': False,
|
||||
}
|
||||
res = requests.post(url=url, json=payload, headers=HEADERS, timeout=timeout)
|
||||
res.raise_for_status()
|
||||
print(res.json())
|
||||
return res.json()
|
||||
|
||||
|
||||
def get_widget_value(row: Dict[str, Any], widget_id: str) -> Any:
|
||||
raw = row.get(widget_id)
|
||||
if isinstance(raw, dict) and 'value' in raw:
|
||||
return raw.get('value')
|
||||
return raw
|
||||
|
||||
|
||||
def parse_jdy_datetime(value: Any) -> Optional[datetime]:
|
||||
# 将简道云返回的时间字符串解析为 datetime(统一按 UTC 处理)
|
||||
# 常见格式:2026-02-23T21:00:25.000Z / 2026-02-23T21:00:25+00:00 / 2026-02-23
|
||||
if value is None:
|
||||
return None
|
||||
if isinstance(value, list):
|
||||
if not value:
|
||||
return None
|
||||
value = value[0]
|
||||
if not isinstance(value, str):
|
||||
return None
|
||||
s = value.strip()
|
||||
if not s:
|
||||
return None
|
||||
if s.endswith('Z'):
|
||||
# fromisoformat 不直接识别 Z,这里转成 +00:00
|
||||
s = s[:-1] + '+00:00'
|
||||
try:
|
||||
dt = datetime.fromisoformat(s)
|
||||
except ValueError:
|
||||
try:
|
||||
dt = datetime.strptime(s, '%Y-%m-%d')
|
||||
except ValueError:
|
||||
return None
|
||||
if dt.tzinfo is None:
|
||||
# 如果没有时区信息,默认按 UTC 解释(避免与 now 的时区不一致)
|
||||
dt = dt.replace(tzinfo=timezone.utc)
|
||||
return dt
|
||||
|
||||
|
||||
filter_not_empty = {
|
||||
'rel': 'and',
|
||||
'cond': [
|
||||
{
|
||||
'field': 'flowState',
|
||||
'type': 'flowState',
|
||||
'method': 'eq',
|
||||
'value': [0],
|
||||
}
|
||||
],
|
||||
}
|
||||
|
||||
# 拉取满足过滤条件的所有数据
|
||||
result = entry_data_list({'api_key': api_key, 'entry_id': entry_id, 'filter': filter_not_empty})
|
||||
# print(result)
|
||||
# 字段 ID:预计培训时间(可能为空)
|
||||
WIDGET_EXPECTED_TRAINING_TIME = '_widget_1767863644396'
|
||||
# 字段 ID:超期培训(数字类型,回写 1)
|
||||
WIDGET_OVERDUE_TRAINING = '_widget_1775637369171'
|
||||
|
||||
# 当前时间用 UTC(简道云时间为 UTC 标准时间)
|
||||
now = datetime.now(timezone.utc)
|
||||
updated_count = 0
|
||||
for row in result.get('data', []):
|
||||
data_id = row.get('_id')
|
||||
if not data_id:
|
||||
continue
|
||||
|
||||
expected_dt = parse_jdy_datetime(get_widget_value(row, WIDGET_EXPECTED_TRAINING_TIME))
|
||||
print(expected_dt)
|
||||
if expected_dt is None:
|
||||
# 预计培训时间为空/解析失败:不处理
|
||||
continue
|
||||
|
||||
# 超期判断:当前时间 - 预计培训时间 >= 1 天,则认定超期(如需改成 1 小时/1 分钟,调整 timedelta)
|
||||
if now - expected_dt < timedelta(days=1):
|
||||
continue
|
||||
|
||||
# current_flag = get_widget_value(row, WIDGET_OVERDUE_TRAINING)
|
||||
# if current_flag in (1, 1.0, '1', True):
|
||||
# # 已经标记过超期:跳过
|
||||
# continue
|
||||
|
||||
# 回写“超期培训”=1
|
||||
resp = entry_data_update(
|
||||
app_id=api_key,
|
||||
entry_id=entry_id,
|
||||
data_id=data_id,
|
||||
data_patch={WIDGET_OVERDUE_TRAINING: {'value': 1}},
|
||||
)
|
||||
new_val = (resp or {}).get('data', {}).get(WIDGET_OVERDUE_TRAINING)
|
||||
if new_val in (1, 1.0, '1', True):
|
||||
updated_count += 1
|
||||
print(f'更新成功: data_id={data_id}, {WIDGET_OVERDUE_TRAINING}={new_val}')
|
||||
else:
|
||||
print(f'更新失败: data_id={data_id}, 返回值={new_val}')
|
||||
# 轻微限速,避免触发接口频率限制
|
||||
time.sleep(0.05)
|
||||
print(f'本次共更新 {updated_count} 条')
|
||||
|
||||
+467
-5
@@ -1,16 +1,478 @@
|
||||
{
|
||||
"cells": [
|
||||
{
|
||||
"metadata": {},
|
||||
"cell_type": "markdown",
|
||||
"source": "# 获取",
|
||||
"id": "e8a978f1dd0c1473"
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"id": "initial_id",
|
||||
"metadata": {
|
||||
"collapsed": true
|
||||
"collapsed": true,
|
||||
"ExecuteTime": {
|
||||
"end_time": "2026-03-04T01:43:48.844029800Z",
|
||||
"start_time": "2026-03-04T01:43:48.318172300Z"
|
||||
}
|
||||
},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
""
|
||||
]
|
||||
"import requests\n",
|
||||
"\n",
|
||||
"cookies = {\n",
|
||||
" 'auth_token': 's%3A.9uztgExtmqUJXHCi00hv9SGq6eVYSvH%2BxQSwrox1Yls',\n",
|
||||
" 'fx-lang': 'zh_cn',\n",
|
||||
" '_ga': 'GA1.1.626243428.1772260541',\n",
|
||||
" '_clck': 'y7ldwu%5E2%5Eg3y%5E0%5E2250',\n",
|
||||
" 'sensorsdata2015jssdkcross': '%7B%22distinct_id%22%3A%2257956c24ceedab0c48c17b4e%22%2C%22first_id%22%3A%2219b6dd1a10c148a-063e3a033b10ed-4c657b58-2073600-19b6dd1a10d145b%22%2C%22props%22%3A%7B%22%24latest_traffic_source_type%22%3A%22%E8%87%AA%E7%84%B6%E6%90%9C%E7%B4%A2%E6%B5%81%E9%87%8F%22%2C%22%24latest_search_keyword%22%3A%22%E6%9C%AA%E5%8F%96%E5%88%B0%E5%80%BC%22%2C%22%24latest_referrer%22%3A%22https%3A%2F%2Fcn.bing.com%2F%22%7D%2C%22identities%22%3A%22eyIkaWRlbnRpdHlfY29va2llX2lkIjoiMTliNmRkMWExMGMxNDhhLTA2M2UzYTAzM2IxMGVkLTRjNjU3YjU4LTIwNzM2MDAtMTliNmRkMWExMGQxNDViIiwiJGlkZW50aXR5X2xvZ2luX2lkIjoiNTc5NTZjMjRjZWVkYWIwYzQ4YzE3YjRlIn0%3D%22%2C%22history_login_id%22%3A%7B%22name%22%3A%22%24identity_login_id%22%2C%22value%22%3A%2257956c24ceedab0c48c17b4e%22%7D%7D',\n",
|
||||
" '_ga_JTDW9M3LHZ': 'GS2.1.s1772266909$o3$g0$t1772266909$j60$l0$h0',\n",
|
||||
" '_csrf': 's%3A_1U5JMsnCD3RTwmCER9JqFb4.mo773pACR2hpC5wQ5xRGTuHdG4IFBizJgZutwkTfRhc',\n",
|
||||
" 'Hm_lvt_de47dd1629940fe88b02865de93dd9fe': '1771984077,1772162048,1772241582,1772414152',\n",
|
||||
" 'Hm_lpvt_de47dd1629940fe88b02865de93dd9fe': '1772414152',\n",
|
||||
" 'HMACCOUNT': 'A6A0585E8C70051D',\n",
|
||||
" 'GSuvNKHqfvX2r6v7P8HkZv2bow': 's%3ANSFxWNnsV8OLC9fbqrhhSe7MujIfdZRJ.tMYAhg8UajUy6BrCqfYcElJt5PZXAPx5IFCMAzFhC0g',\n",
|
||||
" 'JDY_SID': 's%3AUdb7kb2OqRccqGoceHeVLZk8x0WSlLt7.ZWuCEChyCcI5HYSTmXSbFVsmMaAx9Lplm3%2F%2FJ4B%2Biuo',\n",
|
||||
" 'acw_tc': '792b310417725202437878036eef3b2138e3d0c935a3195adcd214fcd14298',\n",
|
||||
"}\n",
|
||||
"\n",
|
||||
"headers = {\n",
|
||||
" 'accept': 'application/json, text/plain, */*',\n",
|
||||
" 'accept-language': 'zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6',\n",
|
||||
" 'content-type': 'application/json',\n",
|
||||
" 'origin': 'https://dingtalk.jiandaoyun.com',\n",
|
||||
" 'priority': 'u=1, i',\n",
|
||||
" 'referer': 'https://dingtalk.jiandaoyun.com/dashboard/app/675b900991ad2491c69389ca/settings',\n",
|
||||
" 'sec-ch-ua': '\"Not:A-Brand\";v=\"99\", \"Microsoft Edge\";v=\"145\", \"Chromium\";v=\"145\"',\n",
|
||||
" 'sec-ch-ua-mobile': '?0',\n",
|
||||
" 'sec-ch-ua-platform': '\"Windows\"',\n",
|
||||
" 'sec-fetch-dest': 'empty',\n",
|
||||
" 'sec-fetch-mode': 'cors',\n",
|
||||
" 'sec-fetch-site': 'same-origin',\n",
|
||||
" 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/145.0.0.0 Safari/537.36 Edg/145.0.0.0',\n",
|
||||
" 'x-csrf-token': 'afr9n0d0-xNh9YhyR-HDks1s9eLiyYWihqWM',\n",
|
||||
" 'x-jdy-ver': '10.17.4',\n",
|
||||
" 'x-request-id': '69ccc531-0640-4bfd-a3fc-d992836a2eae',\n",
|
||||
" # 'cookie': 'auth_token=s%3A.9uztgExtmqUJXHCi00hv9SGq6eVYSvH%2BxQSwrox1Yls; fx-lang=zh_cn; _ga=GA1.1.626243428.1772260541; _clck=y7ldwu%5E2%5Eg3y%5E0%5E2250; sensorsdata2015jssdkcross=%7B%22distinct_id%22%3A%2257956c24ceedab0c48c17b4e%22%2C%22first_id%22%3A%2219b6dd1a10c148a-063e3a033b10ed-4c657b58-2073600-19b6dd1a10d145b%22%2C%22props%22%3A%7B%22%24latest_traffic_source_type%22%3A%22%E8%87%AA%E7%84%B6%E6%90%9C%E7%B4%A2%E6%B5%81%E9%87%8F%22%2C%22%24latest_search_keyword%22%3A%22%E6%9C%AA%E5%8F%96%E5%88%B0%E5%80%BC%22%2C%22%24latest_referrer%22%3A%22https%3A%2F%2Fcn.bing.com%2F%22%7D%2C%22identities%22%3A%22eyIkaWRlbnRpdHlfY29va2llX2lkIjoiMTliNmRkMWExMGMxNDhhLTA2M2UzYTAzM2IxMGVkLTRjNjU3YjU4LTIwNzM2MDAtMTliNmRkMWExMGQxNDViIiwiJGlkZW50aXR5X2xvZ2luX2lkIjoiNTc5NTZjMjRjZWVkYWIwYzQ4YzE3YjRlIn0%3D%22%2C%22history_login_id%22%3A%7B%22name%22%3A%22%24identity_login_id%22%2C%22value%22%3A%2257956c24ceedab0c48c17b4e%22%7D%7D; _ga_JTDW9M3LHZ=GS2.1.s1772266909$o3$g0$t1772266909$j60$l0$h0; _csrf=s%3A_1U5JMsnCD3RTwmCER9JqFb4.mo773pACR2hpC5wQ5xRGTuHdG4IFBizJgZutwkTfRhc; Hm_lvt_de47dd1629940fe88b02865de93dd9fe=1771984077,1772162048,1772241582,1772414152; Hm_lpvt_de47dd1629940fe88b02865de93dd9fe=1772414152; HMACCOUNT=A6A0585E8C70051D; GSuvNKHqfvX2r6v7P8HkZv2bow=s%3ANSFxWNnsV8OLC9fbqrhhSe7MujIfdZRJ.tMYAhg8UajUy6BrCqfYcElJt5PZXAPx5IFCMAzFhC0g; JDY_SID=s%3AUdb7kb2OqRccqGoceHeVLZk8x0WSlLt7.ZWuCEChyCcI5HYSTmXSbFVsmMaAx9Lplm3%2F%2FJ4B%2Biuo; acw_tc=792b310417725202437878036eef3b2138e3d0c935a3195adcd214fcd14298',\n",
|
||||
"}\n",
|
||||
"\n",
|
||||
"json_data = {\n",
|
||||
" 'appId': '675b900991ad2491c69389ca',\n",
|
||||
" 'process_id': '694b9d4501c6e08e0a394ec6',\n",
|
||||
" 'skip': 0,\n",
|
||||
" 'limit': 200,\n",
|
||||
" 'filter': [],\n",
|
||||
" 'status': 3,\n",
|
||||
"}\n",
|
||||
"\n",
|
||||
"response = requests.post(\n",
|
||||
" 'https://dingtalk.jiandaoyun.com/automation/apis/process/logs',\n",
|
||||
" cookies=cookies,\n",
|
||||
" headers=headers,\n",
|
||||
" json=json_data,\n",
|
||||
")\n",
|
||||
"\n",
|
||||
"response.json()"
|
||||
],
|
||||
"outputs": [
|
||||
{
|
||||
"data": {
|
||||
"text/plain": [
|
||||
"{'logs': []}"
|
||||
]
|
||||
},
|
||||
"execution_count": 1,
|
||||
"metadata": {},
|
||||
"output_type": "execute_result"
|
||||
}
|
||||
],
|
||||
"execution_count": 1
|
||||
},
|
||||
{
|
||||
"metadata": {
|
||||
"ExecuteTime": {
|
||||
"end_time": "2026-03-03T07:51:59.825360300Z",
|
||||
"start_time": "2026-03-03T07:51:59.344076600Z"
|
||||
}
|
||||
},
|
||||
"cell_type": "code",
|
||||
"source": [
|
||||
"import requests\n",
|
||||
"\n",
|
||||
"cookies = {\n",
|
||||
" 'auth_token': 's%3A.9uztgExtmqUJXHCi00hv9SGq6eVYSvH%2BxQSwrox1Yls',\n",
|
||||
" 'fx-lang': 'zh_cn',\n",
|
||||
" '_ga': 'GA1.1.626243428.1772260541',\n",
|
||||
" '_clck': 'y7ldwu%5E2%5Eg3y%5E0%5E2250',\n",
|
||||
" 'sensorsdata2015jssdkcross': '%7B%22distinct_id%22%3A%2257956c24ceedab0c48c17b4e%22%2C%22first_id%22%3A%2219b6dd1a10c148a-063e3a033b10ed-4c657b58-2073600-19b6dd1a10d145b%22%2C%22props%22%3A%7B%22%24latest_traffic_source_type%22%3A%22%E8%87%AA%E7%84%B6%E6%90%9C%E7%B4%A2%E6%B5%81%E9%87%8F%22%2C%22%24latest_search_keyword%22%3A%22%E6%9C%AA%E5%8F%96%E5%88%B0%E5%80%BC%22%2C%22%24latest_referrer%22%3A%22https%3A%2F%2Fcn.bing.com%2F%22%7D%2C%22identities%22%3A%22eyIkaWRlbnRpdHlfY29va2llX2lkIjoiMTliNmRkMWExMGMxNDhhLTA2M2UzYTAzM2IxMGVkLTRjNjU3YjU4LTIwNzM2MDAtMTliNmRkMWExMGQxNDViIiwiJGlkZW50aXR5X2xvZ2luX2lkIjoiNTc5NTZjMjRjZWVkYWIwYzQ4YzE3YjRlIn0%3D%22%2C%22history_login_id%22%3A%7B%22name%22%3A%22%24identity_login_id%22%2C%22value%22%3A%2257956c24ceedab0c48c17b4e%22%7D%7D',\n",
|
||||
" '_ga_JTDW9M3LHZ': 'GS2.1.s1772266909$o3$g0$t1772266909$j60$l0$h0',\n",
|
||||
" '_csrf': 's%3A_1U5JMsnCD3RTwmCER9JqFb4.mo773pACR2hpC5wQ5xRGTuHdG4IFBizJgZutwkTfRhc',\n",
|
||||
" 'Hm_lvt_de47dd1629940fe88b02865de93dd9fe': '1771984077,1772162048,1772241582,1772414152',\n",
|
||||
" 'Hm_lpvt_de47dd1629940fe88b02865de93dd9fe': '1772414152',\n",
|
||||
" 'HMACCOUNT': 'A6A0585E8C70051D',\n",
|
||||
" 'GSuvNKHqfvX2r6v7P8HkZv2bow': 's%3ANSFxWNnsV8OLC9fbqrhhSe7MujIfdZRJ.tMYAhg8UajUy6BrCqfYcElJt5PZXAPx5IFCMAzFhC0g',\n",
|
||||
" 'JDY_SID': 's%3AUdb7kb2OqRccqGoceHeVLZk8x0WSlLt7.ZWuCEChyCcI5HYSTmXSbFVsmMaAx9Lplm3%2F%2FJ4B%2Biuo',\n",
|
||||
" 'acw_tc': '792b310417725202437878036eef3b2138e3d0c935a3195adcd214fcd14298',\n",
|
||||
"}\n",
|
||||
"\n",
|
||||
"headers = {\n",
|
||||
" 'accept': 'application/json, text/plain, */*',\n",
|
||||
" 'accept-language': 'zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6',\n",
|
||||
" 'content-type': 'application/json',\n",
|
||||
" 'origin': 'https://dingtalk.jiandaoyun.com',\n",
|
||||
" 'priority': 'u=1, i',\n",
|
||||
" 'referer': 'https://dingtalk.jiandaoyun.com/dashboard/app/675b900991ad2491c69389ca/settings',\n",
|
||||
" 'sec-ch-ua': '\"Not:A-Brand\";v=\"99\", \"Microsoft Edge\";v=\"145\", \"Chromium\";v=\"145\"',\n",
|
||||
" 'sec-ch-ua-mobile': '?0',\n",
|
||||
" 'sec-ch-ua-platform': '\"Windows\"',\n",
|
||||
" 'sec-fetch-dest': 'empty',\n",
|
||||
" 'sec-fetch-mode': 'cors',\n",
|
||||
" 'sec-fetch-site': 'same-origin',\n",
|
||||
" 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/145.0.0.0 Safari/537.36 Edg/145.0.0.0',\n",
|
||||
" 'x-csrf-token': 'afr9n0d0-xNh9YhyR-HDks1s9eLiyYWihqWM',\n",
|
||||
" 'x-jdy-ver': '10.17.4',\n",
|
||||
" 'x-request-id': 'dfec814f-81ed-47ce-a9cd-6d7bf53389d6',\n",
|
||||
" # 'cookie': 'auth_token=s%3A.9uztgExtmqUJXHCi00hv9SGq6eVYSvH%2BxQSwrox1Yls; fx-lang=zh_cn; _ga=GA1.1.626243428.1772260541; _clck=y7ldwu%5E2%5Eg3y%5E0%5E2250; sensorsdata2015jssdkcross=%7B%22distinct_id%22%3A%2257956c24ceedab0c48c17b4e%22%2C%22first_id%22%3A%2219b6dd1a10c148a-063e3a033b10ed-4c657b58-2073600-19b6dd1a10d145b%22%2C%22props%22%3A%7B%22%24latest_traffic_source_type%22%3A%22%E8%87%AA%E7%84%B6%E6%90%9C%E7%B4%A2%E6%B5%81%E9%87%8F%22%2C%22%24latest_search_keyword%22%3A%22%E6%9C%AA%E5%8F%96%E5%88%B0%E5%80%BC%22%2C%22%24latest_referrer%22%3A%22https%3A%2F%2Fcn.bing.com%2F%22%7D%2C%22identities%22%3A%22eyIkaWRlbnRpdHlfY29va2llX2lkIjoiMTliNmRkMWExMGMxNDhhLTA2M2UzYTAzM2IxMGVkLTRjNjU3YjU4LTIwNzM2MDAtMTliNmRkMWExMGQxNDViIiwiJGlkZW50aXR5X2xvZ2luX2lkIjoiNTc5NTZjMjRjZWVkYWIwYzQ4YzE3YjRlIn0%3D%22%2C%22history_login_id%22%3A%7B%22name%22%3A%22%24identity_login_id%22%2C%22value%22%3A%2257956c24ceedab0c48c17b4e%22%7D%7D; _ga_JTDW9M3LHZ=GS2.1.s1772266909$o3$g0$t1772266909$j60$l0$h0; _csrf=s%3A_1U5JMsnCD3RTwmCER9JqFb4.mo773pACR2hpC5wQ5xRGTuHdG4IFBizJgZutwkTfRhc; Hm_lvt_de47dd1629940fe88b02865de93dd9fe=1771984077,1772162048,1772241582,1772414152; Hm_lpvt_de47dd1629940fe88b02865de93dd9fe=1772414152; HMACCOUNT=A6A0585E8C70051D; GSuvNKHqfvX2r6v7P8HkZv2bow=s%3ANSFxWNnsV8OLC9fbqrhhSe7MujIfdZRJ.tMYAhg8UajUy6BrCqfYcElJt5PZXAPx5IFCMAzFhC0g; JDY_SID=s%3AUdb7kb2OqRccqGoceHeVLZk8x0WSlLt7.ZWuCEChyCcI5HYSTmXSbFVsmMaAx9Lplm3%2F%2FJ4B%2Biuo; acw_tc=792b310417725202437878036eef3b2138e3d0c935a3195adcd214fcd14298',\n",
|
||||
"}\n",
|
||||
"\n",
|
||||
"json_data = {\n",
|
||||
" 'appId': '675b900991ad2491c69389ca',\n",
|
||||
" 'process_id': '694b9d4501c6e08e0a394ec6',\n",
|
||||
" 'instance_id': '69a2965d3c20d24aa17d727f',\n",
|
||||
"}\n",
|
||||
"\n",
|
||||
"response = requests.post(\n",
|
||||
" 'https://dingtalk.jiandaoyun.com/automation/apis/process/brief_logs',\n",
|
||||
" cookies=cookies,\n",
|
||||
" headers=headers,\n",
|
||||
" json=json_data,\n",
|
||||
")\n",
|
||||
"\n",
|
||||
"response.json()\n"
|
||||
],
|
||||
"id": "365eb74b38689b02",
|
||||
"outputs": [
|
||||
{
|
||||
"data": {
|
||||
"text/plain": [
|
||||
"{'instance_status': 3,\n",
|
||||
" 'version_info': {'version': 6,\n",
|
||||
" 'stage': 'inuse',\n",
|
||||
" 'publish_time': '2025-12-25T07:07:58.659Z',\n",
|
||||
" 'publisher': {'_id': '57956c24ceedab0c48c17b4e',\n",
|
||||
" 'username': '#admin',\n",
|
||||
" 'nickname': 'F6汽车科技',\n",
|
||||
" 'type': 0,\n",
|
||||
" 'status': 1,\n",
|
||||
" 'frozen': 0,\n",
|
||||
" 'dept': [],\n",
|
||||
" 'role': [],\n",
|
||||
" 'manage_dept': [],\n",
|
||||
" 'is_owner': True,\n",
|
||||
" 'label': []}},\n",
|
||||
" 'lines': [{'from': 0, 'to': 2}, {'from': 2, 'to': 4}],\n",
|
||||
" 'flows': [{'flow_id': -1,\n",
|
||||
" 'name': '结束',\n",
|
||||
" 'type': 'end',\n",
|
||||
" 'prev_ids': [3],\n",
|
||||
" 'next_ids': [],\n",
|
||||
" 'detail': {},\n",
|
||||
" 'status': 2},\n",
|
||||
" {'flow_id': 0,\n",
|
||||
" 'name': '触发数据',\n",
|
||||
" 'type': 'trigger_data',\n",
|
||||
" 'prev_ids': [],\n",
|
||||
" 'next_ids': [2],\n",
|
||||
" 'props': {'type': 'data_event',\n",
|
||||
" 'trigger_actions': [{'action': 'activity_complete',\n",
|
||||
" 'trigger_flows': [{'flow_id': 1, 'actions': [1]}]}],\n",
|
||||
" 'condition': {'rel': 'and', 'cond': []},\n",
|
||||
" 'src_key': 'jdy:app:675b900991ad2491c69389ca:form:6931063d64187eaf6b927557'},\n",
|
||||
" 'detail': {'action': 'activity_complete',\n",
|
||||
" 'trigger_data_label': '南宁市鑫梦缘汽车维修服务有限公司',\n",
|
||||
" 'form': '6931063d64187eaf6b927557'},\n",
|
||||
" 'status': 1},\n",
|
||||
" {'flow_id': 2,\n",
|
||||
" 'name': '插件节点',\n",
|
||||
" 'type': 'plugin',\n",
|
||||
" 'prev_ids': [0],\n",
|
||||
" 'next_ids': [4],\n",
|
||||
" 'props': {'type': 'jdy_plugin',\n",
|
||||
" 'plugin': {'plugin_id': '694c9b169d6537ef6f03c22c',\n",
|
||||
" 'symbol': 'func.694c9b159d6537ef6f03c22a',\n",
|
||||
" 'agent_id': '694c9b16420a545e560704d1',\n",
|
||||
" 'type': 'function',\n",
|
||||
" 'in_mappings': [{'id': 'data_id',\n",
|
||||
" 'type': 'text',\n",
|
||||
" 'resolver_type': 'process_var',\n",
|
||||
" 'variable': {'src_type': 'node',\n",
|
||||
" 'node_id': 0,\n",
|
||||
" 'var_id': '_id',\n",
|
||||
" 'var_scope': 'output'}},\n",
|
||||
" {'id': '_widget_17666305829161',\n",
|
||||
" 'type': 'text',\n",
|
||||
" 'resolver_type': 'process_var',\n",
|
||||
" 'variable': {'src_type': 'node',\n",
|
||||
" 'node_id': 0,\n",
|
||||
" 'var_id': 'appId',\n",
|
||||
" 'var_scope': 'output'}},\n",
|
||||
" {'id': '_widget_17666305843161',\n",
|
||||
" 'type': 'text',\n",
|
||||
" 'resolver_type': 'process_var',\n",
|
||||
" 'variable': {'src_type': 'node',\n",
|
||||
" 'node_id': 0,\n",
|
||||
" 'var_id': 'entryId',\n",
|
||||
" 'var_scope': 'output'}}],\n",
|
||||
" 'out_mappings': []}},\n",
|
||||
" 'detail': {'action': 'plugin', 'plugin_name': '续约回访通过审批记录获取当前审批人'},\n",
|
||||
" 'status': 1},\n",
|
||||
" {'flow_id': 3,\n",
|
||||
" 'name': '修改数据',\n",
|
||||
" 'type': 'update_data',\n",
|
||||
" 'prev_ids': [5],\n",
|
||||
" 'next_ids': [-1],\n",
|
||||
" 'props': {'type': 'multi',\n",
|
||||
" 'tgt_type': 'node',\n",
|
||||
" 'tgt_node': 0,\n",
|
||||
" 'mode': 'update',\n",
|
||||
" 'update_assignments': [{'type': 'datetime',\n",
|
||||
" 'field': '_widget_1765352838631',\n",
|
||||
" 'resolver_type': 'process_var',\n",
|
||||
" 'variable': {'src_type': 'node',\n",
|
||||
" 'var_id': 'updateTime',\n",
|
||||
" 'var_scope': 'output',\n",
|
||||
" 'node_id': 0}}]},\n",
|
||||
" 'detail': {},\n",
|
||||
" 'status': 2},\n",
|
||||
" {'flow_id': 4,\n",
|
||||
" 'name': '插件节点',\n",
|
||||
" 'type': 'plugin',\n",
|
||||
" 'prev_ids': [2],\n",
|
||||
" 'next_ids': [5],\n",
|
||||
" 'props': {'type': 'jdy_plugin',\n",
|
||||
" 'plugin': {'plugin_id': '694ca083112862746f4e5b2f',\n",
|
||||
" 'symbol': 'func.694ca082112862746f4e5b29',\n",
|
||||
" 'agent_id': '694ca083420a545e561091ef',\n",
|
||||
" 'type': 'function',\n",
|
||||
" 'in_mappings': [{'id': '_widget_17666295456371',\n",
|
||||
" 'type': 'text',\n",
|
||||
" 'resolver_type': 'process_var',\n",
|
||||
" 'variable': {'src_type': 'node',\n",
|
||||
" 'node_id': 0,\n",
|
||||
" 'var_id': 'appId',\n",
|
||||
" 'var_scope': 'output'}},\n",
|
||||
" {'id': '_widget_17666295463651',\n",
|
||||
" 'type': 'text',\n",
|
||||
" 'resolver_type': 'process_var',\n",
|
||||
" 'variable': {'src_type': 'node',\n",
|
||||
" 'node_id': 0,\n",
|
||||
" 'var_id': 'entryId',\n",
|
||||
" 'var_scope': 'output'}},\n",
|
||||
" {'id': '_widget_17666295471001',\n",
|
||||
" 'type': 'text',\n",
|
||||
" 'resolver_type': 'process_var',\n",
|
||||
" 'variable': {'src_type': 'node',\n",
|
||||
" 'node_id': 0,\n",
|
||||
" 'var_id': '_id',\n",
|
||||
" 'var_scope': 'output'}},\n",
|
||||
" {'id': '_widget_17666325849471',\n",
|
||||
" 'type': 'text',\n",
|
||||
" 'resolver_type': 'process_var',\n",
|
||||
" 'variable': {'src_type': 'node',\n",
|
||||
" 'node_id': 0,\n",
|
||||
" 'var_id': '_widget_1766631811839',\n",
|
||||
" 'var_scope': 'output'}},\n",
|
||||
" {'id': '_widget_17666340965771',\n",
|
||||
" 'type': 'text',\n",
|
||||
" 'resolver_type': 'process_var',\n",
|
||||
" 'variable': {'src_type': 'node',\n",
|
||||
" 'node_id': 0,\n",
|
||||
" 'var_id': '_widget_1766633812134',\n",
|
||||
" 'var_scope': 'output'}}],\n",
|
||||
" 'out_mappings': []}},\n",
|
||||
" 'detail': {},\n",
|
||||
" 'status': 3,\n",
|
||||
" 'err_code': 17021,\n",
|
||||
" 'err_message': \"name 'return_data' is not defined\"},\n",
|
||||
" {'flow_id': 5,\n",
|
||||
" 'name': '修改数据',\n",
|
||||
" 'type': 'update_data',\n",
|
||||
" 'prev_ids': [4],\n",
|
||||
" 'next_ids': [3],\n",
|
||||
" 'props': {'type': 'multi',\n",
|
||||
" 'tgt_type': 'node',\n",
|
||||
" 'tgt_node': 0,\n",
|
||||
" 'mode': 'update',\n",
|
||||
" 'update_assignments': [{'type': 'text',\n",
|
||||
" 'field': '_widget_1766633812134',\n",
|
||||
" 'resolver_type': 'literal',\n",
|
||||
" 'resolver_arg': None},\n",
|
||||
" {'type': 'combocheck',\n",
|
||||
" 'field': '_widget_1765330820391',\n",
|
||||
" 'resolver_type': 'literal',\n",
|
||||
" 'resolver_arg': None}]},\n",
|
||||
" 'detail': {},\n",
|
||||
" 'status': 2}]}"
|
||||
]
|
||||
},
|
||||
"execution_count": 3,
|
||||
"metadata": {},
|
||||
"output_type": "execute_result"
|
||||
}
|
||||
],
|
||||
"execution_count": 3
|
||||
},
|
||||
{
|
||||
"metadata": {
|
||||
"ExecuteTime": {
|
||||
"end_time": "2026-03-03T07:53:36.246716600Z",
|
||||
"start_time": "2026-03-03T07:53:35.727963200Z"
|
||||
}
|
||||
},
|
||||
"cell_type": "code",
|
||||
"source": [
|
||||
"import requests\n",
|
||||
"\n",
|
||||
"cookies = {\n",
|
||||
" 'auth_token': 's%3A.9uztgExtmqUJXHCi00hv9SGq6eVYSvH%2BxQSwrox1Yls',\n",
|
||||
" 'fx-lang': 'zh_cn',\n",
|
||||
" '_ga': 'GA1.1.626243428.1772260541',\n",
|
||||
" '_clck': 'y7ldwu%5E2%5Eg3y%5E0%5E2250',\n",
|
||||
" 'sensorsdata2015jssdkcross': '%7B%22distinct_id%22%3A%2257956c24ceedab0c48c17b4e%22%2C%22first_id%22%3A%2219b6dd1a10c148a-063e3a033b10ed-4c657b58-2073600-19b6dd1a10d145b%22%2C%22props%22%3A%7B%22%24latest_traffic_source_type%22%3A%22%E8%87%AA%E7%84%B6%E6%90%9C%E7%B4%A2%E6%B5%81%E9%87%8F%22%2C%22%24latest_search_keyword%22%3A%22%E6%9C%AA%E5%8F%96%E5%88%B0%E5%80%BC%22%2C%22%24latest_referrer%22%3A%22https%3A%2F%2Fcn.bing.com%2F%22%7D%2C%22identities%22%3A%22eyIkaWRlbnRpdHlfY29va2llX2lkIjoiMTliNmRkMWExMGMxNDhhLTA2M2UzYTAzM2IxMGVkLTRjNjU3YjU4LTIwNzM2MDAtMTliNmRkMWExMGQxNDViIiwiJGlkZW50aXR5X2xvZ2luX2lkIjoiNTc5NTZjMjRjZWVkYWIwYzQ4YzE3YjRlIn0%3D%22%2C%22history_login_id%22%3A%7B%22name%22%3A%22%24identity_login_id%22%2C%22value%22%3A%2257956c24ceedab0c48c17b4e%22%7D%7D',\n",
|
||||
" '_ga_JTDW9M3LHZ': 'GS2.1.s1772266909$o3$g0$t1772266909$j60$l0$h0',\n",
|
||||
" '_csrf': 's%3A_1U5JMsnCD3RTwmCER9JqFb4.mo773pACR2hpC5wQ5xRGTuHdG4IFBizJgZutwkTfRhc',\n",
|
||||
" 'Hm_lvt_de47dd1629940fe88b02865de93dd9fe': '1771984077,1772162048,1772241582,1772414152',\n",
|
||||
" 'Hm_lpvt_de47dd1629940fe88b02865de93dd9fe': '1772414152',\n",
|
||||
" 'HMACCOUNT': 'A6A0585E8C70051D',\n",
|
||||
" 'GSuvNKHqfvX2r6v7P8HkZv2bow': 's%3ANSFxWNnsV8OLC9fbqrhhSe7MujIfdZRJ.tMYAhg8UajUy6BrCqfYcElJt5PZXAPx5IFCMAzFhC0g',\n",
|
||||
" 'JDY_SID': 's%3AUdb7kb2OqRccqGoceHeVLZk8x0WSlLt7.ZWuCEChyCcI5HYSTmXSbFVsmMaAx9Lplm3%2F%2FJ4B%2Biuo',\n",
|
||||
"}\n",
|
||||
"\n",
|
||||
"headers = {\n",
|
||||
" 'accept': 'application/json, text/plain, */*',\n",
|
||||
" 'accept-language': 'zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6',\n",
|
||||
" 'content-type': 'application/json',\n",
|
||||
" 'origin': 'https://dingtalk.jiandaoyun.com',\n",
|
||||
" 'priority': 'u=1, i',\n",
|
||||
" 'referer': 'https://dingtalk.jiandaoyun.com/dashboard/app/675b900991ad2491c69389ca/settings',\n",
|
||||
" 'sec-ch-ua': '\"Not:A-Brand\";v=\"99\", \"Microsoft Edge\";v=\"145\", \"Chromium\";v=\"145\"',\n",
|
||||
" 'sec-ch-ua-mobile': '?0',\n",
|
||||
" 'sec-ch-ua-platform': '\"Windows\"',\n",
|
||||
" 'sec-fetch-dest': 'empty',\n",
|
||||
" 'sec-fetch-mode': 'cors',\n",
|
||||
" 'sec-fetch-site': 'same-origin',\n",
|
||||
" 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/145.0.0.0 Safari/537.36 Edg/145.0.0.0',\n",
|
||||
" 'x-csrf-token': 'afr9n0d0-xNh9YhyR-HDks1s9eLiyYWihqWM',\n",
|
||||
" 'x-jdy-ver': '10.17.4',\n",
|
||||
" 'x-request-id': 'd47aa898-1b1f-4b88-afe5-a044eefed8c8',\n",
|
||||
" # 'cookie': 'auth_token=s%3A.9uztgExtmqUJXHCi00hv9SGq6eVYSvH%2BxQSwrox1Yls; fx-lang=zh_cn; _ga=GA1.1.626243428.1772260541; _clck=y7ldwu%5E2%5Eg3y%5E0%5E2250; sensorsdata2015jssdkcross=%7B%22distinct_id%22%3A%2257956c24ceedab0c48c17b4e%22%2C%22first_id%22%3A%2219b6dd1a10c148a-063e3a033b10ed-4c657b58-2073600-19b6dd1a10d145b%22%2C%22props%22%3A%7B%22%24latest_traffic_source_type%22%3A%22%E8%87%AA%E7%84%B6%E6%90%9C%E7%B4%A2%E6%B5%81%E9%87%8F%22%2C%22%24latest_search_keyword%22%3A%22%E6%9C%AA%E5%8F%96%E5%88%B0%E5%80%BC%22%2C%22%24latest_referrer%22%3A%22https%3A%2F%2Fcn.bing.com%2F%22%7D%2C%22identities%22%3A%22eyIkaWRlbnRpdHlfY29va2llX2lkIjoiMTliNmRkMWExMGMxNDhhLTA2M2UzYTAzM2IxMGVkLTRjNjU3YjU4LTIwNzM2MDAtMTliNmRkMWExMGQxNDViIiwiJGlkZW50aXR5X2xvZ2luX2lkIjoiNTc5NTZjMjRjZWVkYWIwYzQ4YzE3YjRlIn0%3D%22%2C%22history_login_id%22%3A%7B%22name%22%3A%22%24identity_login_id%22%2C%22value%22%3A%2257956c24ceedab0c48c17b4e%22%7D%7D; _ga_JTDW9M3LHZ=GS2.1.s1772266909$o3$g0$t1772266909$j60$l0$h0; _csrf=s%3A_1U5JMsnCD3RTwmCER9JqFb4.mo773pACR2hpC5wQ5xRGTuHdG4IFBizJgZutwkTfRhc; Hm_lvt_de47dd1629940fe88b02865de93dd9fe=1771984077,1772162048,1772241582,1772414152; Hm_lpvt_de47dd1629940fe88b02865de93dd9fe=1772414152; HMACCOUNT=A6A0585E8C70051D; GSuvNKHqfvX2r6v7P8HkZv2bow=s%3ANSFxWNnsV8OLC9fbqrhhSe7MujIfdZRJ.tMYAhg8UajUy6BrCqfYcElJt5PZXAPx5IFCMAzFhC0g; JDY_SID=s%3AUdb7kb2OqRccqGoceHeVLZk8x0WSlLt7.ZWuCEChyCcI5HYSTmXSbFVsmMaAx9Lplm3%2F%2FJ4B%2Biuo',\n",
|
||||
"}\n",
|
||||
"\n",
|
||||
"json_data = {\n",
|
||||
" 'appId': '675b900991ad2491c69389ca',\n",
|
||||
" 'process_id': '694b9d4501c6e08e0a394ec6',\n",
|
||||
" 'instance_id': '69a2965d3c20d24aa17d727f',\n",
|
||||
" 'node_id': 4,\n",
|
||||
"}\n",
|
||||
"\n",
|
||||
"response = requests.post(\n",
|
||||
" 'https://dingtalk.jiandaoyun.com/automation/apis/process/node_logs',\n",
|
||||
" cookies=cookies,\n",
|
||||
" headers=headers,\n",
|
||||
" json=json_data,\n",
|
||||
")\n",
|
||||
"\n",
|
||||
"execution_id=response.json().get('execution_id')\n",
|
||||
"service_id=response.json().get('service_id')"
|
||||
],
|
||||
"id": "c6f43b9e61a6f77",
|
||||
"outputs": [
|
||||
{
|
||||
"data": {
|
||||
"text/plain": [
|
||||
"{'start_at': '2026-02-28T07:16:47.344Z',\n",
|
||||
" 'err_code': 17021,\n",
|
||||
" 'err_message': \"name 'return_data' is not defined\",\n",
|
||||
" 'execution_id': '69a2965f31ec2fe4a248d258',\n",
|
||||
" 'service_id': '69a2965f31ec2fe4a248d259',\n",
|
||||
" 'can_retry': True}"
|
||||
]
|
||||
},
|
||||
"execution_count": 4,
|
||||
"metadata": {},
|
||||
"output_type": "execute_result"
|
||||
}
|
||||
],
|
||||
"execution_count": 4
|
||||
},
|
||||
{
|
||||
"metadata": {},
|
||||
"cell_type": "code",
|
||||
"outputs": [],
|
||||
"execution_count": null,
|
||||
"source": [
|
||||
"import requests\n",
|
||||
"\n",
|
||||
"cookies = {\n",
|
||||
" 'auth_token': 's%3A.9uztgExtmqUJXHCi00hv9SGq6eVYSvH%2BxQSwrox1Yls',\n",
|
||||
" 'fx-lang': 'zh_cn',\n",
|
||||
" '_ga': 'GA1.1.626243428.1772260541',\n",
|
||||
" '_clck': 'y7ldwu%5E2%5Eg3y%5E0%5E2250',\n",
|
||||
" 'sensorsdata2015jssdkcross': '%7B%22distinct_id%22%3A%2257956c24ceedab0c48c17b4e%22%2C%22first_id%22%3A%2219b6dd1a10c148a-063e3a033b10ed-4c657b58-2073600-19b6dd1a10d145b%22%2C%22props%22%3A%7B%22%24latest_traffic_source_type%22%3A%22%E8%87%AA%E7%84%B6%E6%90%9C%E7%B4%A2%E6%B5%81%E9%87%8F%22%2C%22%24latest_search_keyword%22%3A%22%E6%9C%AA%E5%8F%96%E5%88%B0%E5%80%BC%22%2C%22%24latest_referrer%22%3A%22https%3A%2F%2Fcn.bing.com%2F%22%7D%2C%22identities%22%3A%22eyIkaWRlbnRpdHlfY29va2llX2lkIjoiMTliNmRkMWExMGMxNDhhLTA2M2UzYTAzM2IxMGVkLTRjNjU3YjU4LTIwNzM2MDAtMTliNmRkMWExMGQxNDViIiwiJGlkZW50aXR5X2xvZ2luX2lkIjoiNTc5NTZjMjRjZWVkYWIwYzQ4YzE3YjRlIn0%3D%22%2C%22history_login_id%22%3A%7B%22name%22%3A%22%24identity_login_id%22%2C%22value%22%3A%2257956c24ceedab0c48c17b4e%22%7D%7D',\n",
|
||||
" '_ga_JTDW9M3LHZ': 'GS2.1.s1772266909$o3$g0$t1772266909$j60$l0$h0',\n",
|
||||
" '_csrf': 's%3A_1U5JMsnCD3RTwmCER9JqFb4.mo773pACR2hpC5wQ5xRGTuHdG4IFBizJgZutwkTfRhc',\n",
|
||||
" 'Hm_lvt_de47dd1629940fe88b02865de93dd9fe': '1771984077,1772162048,1772241582,1772414152',\n",
|
||||
" 'Hm_lpvt_de47dd1629940fe88b02865de93dd9fe': '1772414152',\n",
|
||||
" 'HMACCOUNT': 'A6A0585E8C70051D',\n",
|
||||
" 'GSuvNKHqfvX2r6v7P8HkZv2bow': 's%3ANSFxWNnsV8OLC9fbqrhhSe7MujIfdZRJ.tMYAhg8UajUy6BrCqfYcElJt5PZXAPx5IFCMAzFhC0g',\n",
|
||||
" 'JDY_SID': 's%3AUdb7kb2OqRccqGoceHeVLZk8x0WSlLt7.ZWuCEChyCcI5HYSTmXSbFVsmMaAx9Lplm3%2F%2FJ4B%2Biuo',\n",
|
||||
"}\n",
|
||||
"\n",
|
||||
"headers = {\n",
|
||||
" 'accept': 'application/json, text/plain, */*',\n",
|
||||
" 'accept-language': 'zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6',\n",
|
||||
" 'content-type': 'application/json',\n",
|
||||
" 'origin': 'https://dingtalk.jiandaoyun.com',\n",
|
||||
" 'priority': 'u=1, i',\n",
|
||||
" 'referer': 'https://dingtalk.jiandaoyun.com/dashboard/app/675b900991ad2491c69389ca/settings',\n",
|
||||
" 'sec-ch-ua': '\"Not:A-Brand\";v=\"99\", \"Microsoft Edge\";v=\"145\", \"Chromium\";v=\"145\"',\n",
|
||||
" 'sec-ch-ua-mobile': '?0',\n",
|
||||
" 'sec-ch-ua-platform': '\"Windows\"',\n",
|
||||
" 'sec-fetch-dest': 'empty',\n",
|
||||
" 'sec-fetch-mode': 'cors',\n",
|
||||
" 'sec-fetch-site': 'same-origin',\n",
|
||||
" 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/145.0.0.0 Safari/537.36 Edg/145.0.0.0',\n",
|
||||
" 'x-csrf-token': 'afr9n0d0-xNh9YhyR-HDks1s9eLiyYWihqWM',\n",
|
||||
" 'x-jdy-ver': '10.17.4',\n",
|
||||
" 'x-request-id': 'e08d24ec-4770-4a7c-b932-203c46cb2e24',\n",
|
||||
" # 'cookie': 'auth_token=s%3A.9uztgExtmqUJXHCi00hv9SGq6eVYSvH%2BxQSwrox1Yls; fx-lang=zh_cn; _ga=GA1.1.626243428.1772260541; _clck=y7ldwu%5E2%5Eg3y%5E0%5E2250; sensorsdata2015jssdkcross=%7B%22distinct_id%22%3A%2257956c24ceedab0c48c17b4e%22%2C%22first_id%22%3A%2219b6dd1a10c148a-063e3a033b10ed-4c657b58-2073600-19b6dd1a10d145b%22%2C%22props%22%3A%7B%22%24latest_traffic_source_type%22%3A%22%E8%87%AA%E7%84%B6%E6%90%9C%E7%B4%A2%E6%B5%81%E9%87%8F%22%2C%22%24latest_search_keyword%22%3A%22%E6%9C%AA%E5%8F%96%E5%88%B0%E5%80%BC%22%2C%22%24latest_referrer%22%3A%22https%3A%2F%2Fcn.bing.com%2F%22%7D%2C%22identities%22%3A%22eyIkaWRlbnRpdHlfY29va2llX2lkIjoiMTliNmRkMWExMGMxNDhhLTA2M2UzYTAzM2IxMGVkLTRjNjU3YjU4LTIwNzM2MDAtMTliNmRkMWExMGQxNDViIiwiJGlkZW50aXR5X2xvZ2luX2lkIjoiNTc5NTZjMjRjZWVkYWIwYzQ4YzE3YjRlIn0%3D%22%2C%22history_login_id%22%3A%7B%22name%22%3A%22%24identity_login_id%22%2C%22value%22%3A%2257956c24ceedab0c48c17b4e%22%7D%7D; _ga_JTDW9M3LHZ=GS2.1.s1772266909$o3$g0$t1772266909$j60$l0$h0; _csrf=s%3A_1U5JMsnCD3RTwmCER9JqFb4.mo773pACR2hpC5wQ5xRGTuHdG4IFBizJgZutwkTfRhc; Hm_lvt_de47dd1629940fe88b02865de93dd9fe=1771984077,1772162048,1772241582,1772414152; Hm_lpvt_de47dd1629940fe88b02865de93dd9fe=1772414152; HMACCOUNT=A6A0585E8C70051D; GSuvNKHqfvX2r6v7P8HkZv2bow=s%3ANSFxWNnsV8OLC9fbqrhhSe7MujIfdZRJ.tMYAhg8UajUy6BrCqfYcElJt5PZXAPx5IFCMAzFhC0g; JDY_SID=s%3AUdb7kb2OqRccqGoceHeVLZk8x0WSlLt7.ZWuCEChyCcI5HYSTmXSbFVsmMaAx9Lplm3%2F%2FJ4B%2Biuo',\n",
|
||||
"}\n",
|
||||
"\n",
|
||||
"json_data = {\n",
|
||||
" 'appId': '675b900991ad2491c69389ca',\n",
|
||||
" 'process_id': '694b9d4501c6e08e0a394ec6',\n",
|
||||
" 'instance_id': '69a2965d3c20d24aa17d727f',\n",
|
||||
" 'execution_id': '69a2965f31ec2fe4a248d258',\n",
|
||||
" 'service_id': '69a2965f31ec2fe4a248d259',\n",
|
||||
"}\n",
|
||||
"\n",
|
||||
"response = requests.post(\n",
|
||||
" 'https://dingtalk.jiandaoyun.com/automation/apis/process/retry_node',\n",
|
||||
" cookies=cookies,\n",
|
||||
" headers=headers,\n",
|
||||
" json=json_data,\n",
|
||||
")\n",
|
||||
"\n",
|
||||
"# Note: json_data will not be serialized by requests\n",
|
||||
"# exactly as it was in the original request.\n",
|
||||
"#data = '{\"appId\":\"675b900991ad2491c69389ca\",\"process_id\":\"694b9d4501c6e08e0a394ec6\",\"instance_id\":\"69a2965d3c20d24aa17d727f\",\"execution_id\":\"69a2965f31ec2fe4a248d258\",\"service_id\":\"69a2965f31ec2fe4a248d259\"}'\n",
|
||||
"#response = requests.post(\n",
|
||||
"# 'https://dingtalk.jiandaoyun.com/automation/apis/process/retry_node',\n",
|
||||
"# cookies=cookies,\n",
|
||||
"# headers=headers,\n",
|
||||
"# data=data,\n",
|
||||
"#)\n"
|
||||
],
|
||||
"id": "6d128ca0e42cb7d5"
|
||||
}
|
||||
],
|
||||
"metadata": {
|
||||
|
||||
+215
-1
@@ -1 +1,215 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# -*- coding: utf-8 -*-
|
||||
import requests
|
||||
import time
|
||||
import json
|
||||
|
||||
# 配置部分
|
||||
COOKIES = {
|
||||
'auth_token': 's%3A.9uztgExtmqUJXHCi00hv9SGq6eVYSvH%2BxQSwrox1Yls',
|
||||
'fx-lang': 'zh_cn',
|
||||
'tenantId': 'agndqbuttb7ipfciraxcokgqyu',
|
||||
'AGL_USER_ID': 'a50da526-dd43-4a78-ace1-ba810a6f2168',
|
||||
'_ga': 'GA1.1.626243428.1772260541',
|
||||
'_clck': 'y7ldwu%5E2%5Eg3y%5E0%5E2250',
|
||||
'sensorsdata2015jssdkcross': '%7B%22distinct_id%22%3A%2257956c24ceedab0c48c17b4e%22%2C%22first_id%22%3A%2219b6dd1a10c148a-063e3a033b10ed-4c657b58-2073600-19b6dd1a10d145b%22%2C%22props%22%3A%7B%22%24latest_traffic_source_type%22%3A%22%E8%87%AA%E7%84%B6%E6%90%9C%E7%B4%A2%E6%B5%81%E9%87%8F%22%2C%22%24latest_search_keyword%22%3A%22%E6%9C%AA%E5%8F%96%E5%88%B0%E5%80%BC%22%2C%22%24latest_referrer%22%3A%22https%3A%2F%2Fcn.bing.com%2F%22%7D%2C%22identities%22%3A%22eyIkaWRlbnRpdHlfY29va2llX2lkIjoiMTliNmRkMWExMGMxNDhhLTA2M2UzYTAzM2IxMGVkLTRjNjU3YjU4LTIwNzM2MDAtMTliNmRkMWExMGQxNDViIiwiJGlkZW50aXR5X2xvZ2luX2lkIjoiNTc5NTZjMjRjZWVkYWIwYzQ4YzE3YjRlIn0%3D%22%2C%22history_login_id%22%3A%7B%22name%22%3A%22%24identity_login_id%22%2C%22value%22%3A%2257956c24ceedab0c48c17b4e%22%7D%7D',
|
||||
'_ga_JTDW9M3LHZ': 'GS2.1.s1772266909$o3$g0$t1772266909$j60$l0$h0',
|
||||
'_csrf': 's%3A_1U5JMsnCD3RTwmCER9JqFb4.mo773pACR2hpC5wQ5xRGTuHdG4IFBizJgZutwkTfRhc',
|
||||
'Hm_lvt_de47dd1629940fe88b02865de93dd9fe': '1771984077,1772162048,1772241582,1772414152',
|
||||
'Hm_lpvt_de47dd1629940fe88b02865de93dd9fe': '1772414152',
|
||||
'HMACCOUNT': 'A6A0585E8C70051D',
|
||||
'GSuvNKHqfvX2r6v7P8HkZv2bow': 's%3ANSFxWNnsV8OLC9fbqrhhSe7MujIfdZRJ.tMYAhg8UajUy6BrCqfYcElJt5PZXAPx5IFCMAzFhC0g',
|
||||
'JDY_SID': 's%3AUdb7kb2OqRccqGoceHeVLZk8x0WSlLt7.ZWuCEChyCcI5HYSTmXSbFVsmMaAx9Lplm3%2F%2FJ4B%2Biuo',
|
||||
'acw_tc': '743e76f717725247327573805ec920bcf336c7da350308d821feb726945021',
|
||||
}
|
||||
|
||||
HEADERS = {
|
||||
'accept': 'application/json, text/plain, */*',
|
||||
'accept-language': 'zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6',
|
||||
'content-type': 'application/json',
|
||||
'origin': 'https://www.jiandaoyun.com',
|
||||
'priority': 'u=1, i',
|
||||
'referer': 'https://www.jiandaoyun.com/dashboard/app/675b900991ad2491c69389ca/settings',
|
||||
'sec-ch-ua': '"Not:A-Brand";v="99", "Microsoft Edge";v="145", "Chromium";v="145"',
|
||||
'sec-ch-ua-mobile': '?0',
|
||||
'sec-ch-ua-platform': '"Windows"',
|
||||
'sec-fetch-dest': 'empty',
|
||||
'sec-fetch-mode': 'cors',
|
||||
'sec-fetch-site': 'same-origin',
|
||||
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/145.0.0.0 Safari/537.36 Edg/145.0.0.0',
|
||||
'x-csrf-token': 'bNv86JCo-fWdbOodYigjN6C8IUfIrvt211k4',
|
||||
'x-jdy-ver': '10.17.4',
|
||||
'x-request-id': 'ed87c6c8-7a8c-4444-b487-5d1b37c653e7',
|
||||
# 'cookie': 'auth_token=s%3A.9uztgExtmqUJXHCi00hv9SGq6eVYSvH%2BxQSwrox1Yls; fx-lang=zh_cn; tenantId=agndqbuttb7ipfciraxcokgqyu; AGL_USER_ID=a50da526-dd43-4a78-ace1-ba810a6f2168; _ga=GA1.1.626243428.1772260541; _clck=y7ldwu%5E2%5Eg3y%5E0%5E2250; sensorsdata2015jssdkcross=%7B%22distinct_id%22%3A%2257956c24ceedab0c48c17b4e%22%2C%22first_id%22%3A%2219b6dd1a10c148a-063e3a033b10ed-4c657b58-2073600-19b6dd1a10d145b%22%2C%22props%22%3A%7B%22%24latest_traffic_source_type%22%3A%22%E8%87%AA%E7%84%B6%E6%90%9C%E7%B4%A2%E6%B5%81%E9%87%8F%22%2C%22%24latest_search_keyword%22%3A%22%E6%9C%AA%E5%8F%96%E5%88%B0%E5%80%BC%22%2C%22%24latest_referrer%22%3A%22https%3A%2F%2Fcn.bing.com%2F%22%7D%2C%22identities%22%3A%22eyIkaWRlbnRpdHlfY29va2llX2lkIjoiMTliNmRkMWExMGMxNDhhLTA2M2UzYTAzM2IxMGVkLTRjNjU3YjU4LTIwNzM2MDAtMTliNmRkMWExMGQxNDViIiwiJGlkZW50aXR5X2xvZ2luX2lkIjoiNTc5NTZjMjRjZWVkYWIwYzQ4YzE3YjRlIn0%3D%22%2C%22history_login_id%22%3A%7B%22name%22%3A%22%24identity_login_id%22%2C%22value%22%3A%2257956c24ceedab0c48c17b4e%22%7D%7D; _ga_JTDW9M3LHZ=GS2.1.s1772266909$o3$g0$t1772266909$j60$l0$h0; _csrf=s%3A_1U5JMsnCD3RTwmCER9JqFb4.mo773pACR2hpC5wQ5xRGTuHdG4IFBizJgZutwkTfRhc; Hm_lvt_de47dd1629940fe88b02865de93dd9fe=1771984077,1772162048,1772241582,1772414152; Hm_lpvt_de47dd1629940fe88b02865de93dd9fe=1772414152; HMACCOUNT=A6A0585E8C70051D; GSuvNKHqfvX2r6v7P8HkZv2bow=s%3ANSFxWNnsV8OLC9fbqrhhSe7MujIfdZRJ.tMYAhg8UajUy6BrCqfYcElJt5PZXAPx5IFCMAzFhC0g; JDY_SID=s%3AUdb7kb2OqRccqGoceHeVLZk8x0WSlLt7.ZWuCEChyCcI5HYSTmXSbFVsmMaAx9Lplm3%2F%2FJ4B%2Biuo; acw_tc=743e76f717725247327573805ec920bcf336c7da350308d821feb726945021',
|
||||
}
|
||||
|
||||
BASE_URL = "https://dingtalk.jiandaoyun.com"
|
||||
APP_ID = '675b900991ad2491c69389ca'
|
||||
PROCESS_ID = "694b9e1a5ef7b2983fe1f922" # 智能助手流程id
|
||||
NODE_ID = 3 # 根据原代码固定为4# 出現問題的結點
|
||||
|
||||
|
||||
def check_response(resp_or_data, step_name):
|
||||
"""通用响应校验函数(兼容 Response / 已解析的 JSON 数据)"""
|
||||
if hasattr(resp_or_data, "status_code") and hasattr(resp_or_data, "json"):
|
||||
response = resp_or_data
|
||||
if response.status_code != 200:
|
||||
print(f"[❌ {step_name}] 请求失败,状态码: {response.status_code}")
|
||||
print(f" 响应内容: {response.text[:200]}...")
|
||||
return None
|
||||
|
||||
try:
|
||||
data = response.json()
|
||||
except ValueError:
|
||||
print(f"[❌ {step_name}] 响应不是有效的 JSON 格式")
|
||||
return None
|
||||
else:
|
||||
# 允许直接传入 response.json() 的结果(dict/list/...)
|
||||
data = resp_or_data
|
||||
|
||||
# 检查常见错误结构:尽量只在“明确失败”时返回 None,避免误伤正常返回
|
||||
if isinstance(data, dict):
|
||||
if data.get("error"):
|
||||
msg = data.get("message") or data.get("msg") or data.get("error") or "未知错误"
|
||||
print(f"[❌ {step_name}] 业务逻辑错误: {msg}")
|
||||
return None
|
||||
|
||||
if data.get("success") is False:
|
||||
msg = data.get("message") or data.get("msg") or "success=false"
|
||||
print(f"[❌ {step_name}] 业务逻辑错误: {msg}")
|
||||
return None
|
||||
|
||||
if "code" in data:
|
||||
code = data.get("code")
|
||||
# 常见成功码:0/200;其他情况仅当明确不是成功码才判失败
|
||||
if code not in (None, 0, 200, "0", "200", True):
|
||||
msg = data.get("message") or data.get("msg") or data.get("error") or f"code={code}"
|
||||
print(f"[❌ {step_name}] 业务逻辑错误: {msg}")
|
||||
return None
|
||||
|
||||
return data
|
||||
|
||||
|
||||
def main():
|
||||
print(f"[*] 开始执行流程,目标应用: {APP_ID}, 流程: {PROCESS_ID}")
|
||||
|
||||
# 1. 轮询查询日志列表并依次处理
|
||||
limit = 20 # 每次最多处理多少条
|
||||
success_count = 0
|
||||
fail_count = 0
|
||||
total_instances = 0
|
||||
|
||||
while True:
|
||||
log_payload = {
|
||||
'appId': APP_ID,
|
||||
'process_id': PROCESS_ID,
|
||||
'skip': 0, # 每次都从第 0 条开始查最新的失败记录
|
||||
'limit': limit,
|
||||
'filter': [],
|
||||
'status': 3, # 假设 3 代表某种特定状态(如失败/待处理)
|
||||
}
|
||||
|
||||
print(f"[*] 正在获取流程日志列表,limit={limit} ...")
|
||||
resp_logs = requests.post(
|
||||
f'{BASE_URL}/automation/apis/process/logs',
|
||||
cookies=COOKIES,
|
||||
headers=HEADERS,
|
||||
json=log_payload,
|
||||
)
|
||||
logs_data = check_response(resp_logs, "获取日志列表")
|
||||
if not logs_data:
|
||||
break
|
||||
|
||||
print(logs_data)
|
||||
|
||||
# 兼容不同返回字段命名:有的环境是 "logs",有的是 "log"
|
||||
instance_list = logs_data.get("log") or logs_data.get("logs") or []
|
||||
if not instance_list:
|
||||
print("[⚠️] 未找到符合条件的流程实例,任务结束。")
|
||||
break
|
||||
|
||||
batch_count = len(instance_list)
|
||||
total_instances += batch_count
|
||||
print(f"[✅] 本批获取 {batch_count} 条实例记录,开始逐个处理...")
|
||||
|
||||
for idx, item in enumerate(instance_list, start=1):
|
||||
instance_id = item.get("instance_id")
|
||||
if not instance_id:
|
||||
print(f"[⚠️] 第 {idx} 条记录缺少 instance_id,跳过。")
|
||||
continue
|
||||
|
||||
print(f"\n--- 处理实例 {idx}: {instance_id} ---")
|
||||
|
||||
# 2. 获取节点日志 (获取 execution_id 和 service_id)
|
||||
node_log_payload = {
|
||||
'appId': APP_ID,
|
||||
'process_id': PROCESS_ID,
|
||||
'instance_id': instance_id,
|
||||
'node_id': NODE_ID,
|
||||
}
|
||||
|
||||
resp_node = requests.post(
|
||||
f'{BASE_URL}/automation/apis/process/node_logs',
|
||||
cookies=COOKIES,
|
||||
headers=HEADERS,
|
||||
json=node_log_payload,
|
||||
)
|
||||
|
||||
node_data = check_response(resp_node, "获取节点日志")
|
||||
if not node_data:
|
||||
print(f"[❌] 实例 {instance_id} 获取节点日志失败,跳过重试。")
|
||||
fail_count += 1
|
||||
continue
|
||||
|
||||
execution_id = node_data.get('execution_id')
|
||||
service_id = node_data.get('service_id')
|
||||
|
||||
if not execution_id or not service_id:
|
||||
print(f"[❌] 实例 {instance_id} 返回数据中缺少 execution_id 或 service_id。")
|
||||
print(f" 返回数据: {json.dumps(node_data)}")
|
||||
fail_count += 1
|
||||
continue
|
||||
|
||||
print(f" [ℹ️] 获取到执行ID: {execution_id}, 服务ID: {service_id}")
|
||||
|
||||
# 3. 执行重试 (Retry)
|
||||
retry_payload = {
|
||||
'appId': APP_ID,
|
||||
'process_id': PROCESS_ID,
|
||||
'instance_id': instance_id,
|
||||
'execution_id': execution_id,
|
||||
'service_id': service_id,
|
||||
}
|
||||
|
||||
resp_retry = requests.post(
|
||||
f'{BASE_URL}/automation/apis/process/retry_node',
|
||||
cookies=COOKIES,
|
||||
headers=HEADERS,
|
||||
json=retry_payload,
|
||||
)
|
||||
|
||||
retry_data = check_response(resp_retry, "执行重试")
|
||||
|
||||
if retry_data:
|
||||
print(f"[✅] 实例 {instance_id} 重试请求发送成功。")
|
||||
success_count += 1
|
||||
else:
|
||||
print(f"[❌] 实例 {instance_id} 重试请求失败。")
|
||||
fail_count += 1
|
||||
|
||||
# 可选:添加短暂延时,避免触发频率限制
|
||||
time.sleep(0.5)
|
||||
|
||||
# 不使用 skip 分页,而是重新查询最新的失败记录,直到接口不再返回失败实例为止
|
||||
|
||||
print("\n" + "=" * 30)
|
||||
print(f"[🏁] 任务完成。总计实例数: {total_instances}, 成功重试: {success_count}, 失败: {fail_count}")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
try:
|
||||
main()
|
||||
except Exception as e:
|
||||
print(f"[💥] 程序发生未捕获的异常: {e}")
|
||||
import traceback
|
||||
|
||||
traceback.print_exc()
|
||||
|
||||
+439
-648
File diff suppressed because it is too large
Load Diff
@@ -1,20 +1,29 @@
|
||||
{
|
||||
"cells": [
|
||||
{
|
||||
"metadata": {},
|
||||
"cell_type": "markdown",
|
||||
"source": "宜搭导出文件字段对应",
|
||||
"id": "ccd76344cc98d6e6"
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"id": "initial_id",
|
||||
"metadata": {
|
||||
"collapsed": true
|
||||
"collapsed": true,
|
||||
"ExecuteTime": {
|
||||
"end_time": "2026-03-07T02:04:58.912156600Z",
|
||||
"start_time": "2026-03-07T02:04:55.474219900Z"
|
||||
}
|
||||
},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"import pandas as pd\n",
|
||||
"import numpy as np\n",
|
||||
"from datetime import datetime\n",
|
||||
"\n",
|
||||
"\n",
|
||||
"# 读取旧数据,记得排除下有订单的\n",
|
||||
"old_df = pd.read_excel(\"C:\\Users\\hp_z66\\Desktop\\(流程)续约服务流程进行中.xlsx\") # 或 read_csv\n",
|
||||
"old_df = pd.read_excel(fr\"C:\\Users\\hp_z66\\OneDrive\\Desktop\\续约服务数据合并报告_20260307.xlsx\",sheet_name = \"今天前30及后120\") # 或 read_csv\n",
|
||||
"\n",
|
||||
"# 初始化新 DataFrame(列按新表头)\n",
|
||||
"new_columns = [\n",
|
||||
@@ -50,7 +59,7 @@
|
||||
" \"专属运营顾问\": \"运营顾问\",\n",
|
||||
" \"订单编码\": \"订单编码\",\n",
|
||||
" \"订单支付日期\": \"订单支付日期\",\n",
|
||||
" \"公司等级\": \"公司等级\",\n",
|
||||
" \"客户等级\": \"公司等级\",\n",
|
||||
" \"联系情况及问题说明\": \"联系情况及问题说明\",\n",
|
||||
" \"产品原因\": \"产品问题\",\n",
|
||||
" \"服务问题\": \"服务问题\",\n",
|
||||
@@ -65,6 +74,15 @@
|
||||
" \"最近修改时间\": \"更新时间\",\n",
|
||||
" \"应续约日\": \"应续约日\",\n",
|
||||
" \"区域经理\": \"运营专家\", # 假设区域经理作为运营专家\n",
|
||||
" \"120天处理人\":\"120天是否跟进\",\n",
|
||||
" \"60天处理人\":\"60天是否跟进\",\n",
|
||||
" \"30天处理人\":\"30天是否跟进\",\n",
|
||||
" \"到期前120天联系情况_提交人\":\"120天处理人\",\n",
|
||||
" \"到期前60天联系情况_提交人\":\"60天处理人\",\n",
|
||||
" \"到期前30天联系情况_提交人\":\"30天处理人\",\n",
|
||||
" \"到期前120天联系情况_日期\":\"120天跟进时间\",\n",
|
||||
" \"到期前60天联系情况_日期\":\"60天跟进时间\",\n",
|
||||
" \"到期前30天联系情况_日期\":\"30天跟进时间\",\n",
|
||||
"}\n",
|
||||
"\n",
|
||||
"# 处理每一行\n",
|
||||
@@ -83,21 +101,6 @@
|
||||
" new_row['0天自动流转时间'] = new_row['过期日'] + pd.Timedelta(days=90)\n",
|
||||
"\n",
|
||||
"\n",
|
||||
" # 是否跟进逻辑(根据处理人是否为空)\n",
|
||||
" new_row[\"120天处理人\"] = row.get(\"120天处理人\", None)\n",
|
||||
" new_row[\"60天处理人\"] = row.get(\"60天处理人\", None)\n",
|
||||
" new_row[\"30天处理人\"] = row.get(\"30天处理人\", None)\n",
|
||||
"\n",
|
||||
" new_row[\"120天是否跟进\"] = pd.notna(new_row[\"120天处理人\"])\n",
|
||||
" new_row[\"60天是否跟进\"] = pd.notna(new_row[\"60天处理人\"])\n",
|
||||
" new_row[\"30天是否跟进\"] = pd.notna(new_row[\"30天处理人\"])\n",
|
||||
"\n",
|
||||
" # 跟进时间:用最近修改时间或留空\n",
|
||||
" update_time = row.get(\"最近修改时间\", None)\n",
|
||||
" new_row[\"120天跟进时间\"] = update_time\n",
|
||||
" new_row[\"60天跟进时间\"] = update_time\n",
|
||||
" new_row[\"30天跟进时间\"] = update_time\n",
|
||||
"\n",
|
||||
" # 是否联系上:旧表有“是否联系上客户”\n",
|
||||
" contacted = row.get(\"是否联系上客户\", None)\n",
|
||||
" if pd.notna(contacted):\n",
|
||||
@@ -148,7 +151,17 @@
|
||||
"# 保存\n",
|
||||
"new_df.to_excel(\"new_table_migrated.xlsx\", index=False)\n",
|
||||
"print(\"迁移完成!\")"
|
||||
]
|
||||
],
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"迁移完成!\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"execution_count": 4
|
||||
}
|
||||
],
|
||||
"metadata": {
|
||||
|
||||
+79
-5
@@ -2,14 +2,88 @@
|
||||
"cells": [
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"id": "initial_id",
|
||||
"execution_count": 3,
|
||||
"id": "7cdc1ee6c3dae53d",
|
||||
"metadata": {
|
||||
"collapsed": true
|
||||
"ExecuteTime": {
|
||||
"end_time": "2026-03-17T06:00:09.320172200Z",
|
||||
"start_time": "2026-03-17T05:59:15.867810200Z"
|
||||
}
|
||||
},
|
||||
"outputs": [],
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"正在保存第 1 张\n",
|
||||
"正在保存第 2 张\n",
|
||||
"正在保存第 3 张\n",
|
||||
"\n",
|
||||
"✅ 3张照片已全部保存到:D:\\ding_watermark\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
""
|
||||
"import pyautogui\n",
|
||||
"import time\n",
|
||||
"import os\n",
|
||||
"\n",
|
||||
"# ====================== 请替换为你实际获取的坐标 ======================\n",
|
||||
"CARD_POS = (900, 400) # 「张阳[内部群]」卡片消息的位置\n",
|
||||
"IMG_POS = (820, 320) # 卡片里水印照片的中心位置\n",
|
||||
"SAVE_BTN_POS = (780, 620) # 另存为窗口里「保存」按钮的位置\n",
|
||||
"SAVE_FOLDER = r\"D:\\ding_watermark\" # 你想保存的文件夹\n",
|
||||
"TOTAL = 3 # 先保存3张\n",
|
||||
"DELAY = 2 # 操作间隔,慢一点更稳\n",
|
||||
"# =====================================================================\n",
|
||||
"\n",
|
||||
"# 创建保存目录\n",
|
||||
"if not os.path.exists(SAVE_FOLDER):\n",
|
||||
" os.makedirs(SAVE_FOLDER)\n",
|
||||
"\n",
|
||||
"pyautogui.PAUSE = 0.5\n",
|
||||
"\n",
|
||||
"input(\"请切到钉钉窗口,确保第一张卡片可见,按回车开始…\")\n",
|
||||
"\n",
|
||||
"for i in range(1, TOTAL + 1):\n",
|
||||
" print(f\"正在保存第 {i} 张\")\n",
|
||||
"\n",
|
||||
" # 1. 点击卡片,打开预览\n",
|
||||
" pyautogui.click(CARD_POS)\n",
|
||||
" time.sleep(DELAY)\n",
|
||||
"\n",
|
||||
" # 2. 右键点击图片,弹出菜单\n",
|
||||
" pyautogui.rightClick(IMG_POS)\n",
|
||||
" time.sleep(0.8)\n",
|
||||
"\n",
|
||||
" # 3. 选择「另存为」(根据你的右键菜单,可能需要按1次或2次↓)\n",
|
||||
" pyautogui.press('down') # 试1次,如果不对就改成 presses=2\n",
|
||||
" pyautogui.press('enter')\n",
|
||||
" time.sleep(DELAY)\n",
|
||||
"\n",
|
||||
" # 4. 输入文件名\n",
|
||||
" pyautogui.typewrite(f\"watermark_{i}\")\n",
|
||||
" time.sleep(0.5)\n",
|
||||
"\n",
|
||||
" # 5. 定位到保存目录(Alt+D 快速切地址栏)\n",
|
||||
" pyautogui.hotkey('alt', 'd')\n",
|
||||
" pyautogui.typewrite(SAVE_FOLDER)\n",
|
||||
" pyautogui.press('enter')\n",
|
||||
" time.sleep(0.5)\n",
|
||||
"\n",
|
||||
" # 6. 点击「保存」按钮\n",
|
||||
" pyautogui.click(SAVE_BTN_POS)\n",
|
||||
" time.sleep(DELAY)\n",
|
||||
"\n",
|
||||
" # 7. 关闭卡片预览\n",
|
||||
" pyautogui.press('esc')\n",
|
||||
" time.sleep(0.8)\n",
|
||||
"\n",
|
||||
" # 8. 滚动到下一张卡片\n",
|
||||
" pyautogui.scroll(-200, x=CARD_POS[0], y=CARD_POS[1])\n",
|
||||
" time.sleep(0.8)\n",
|
||||
"\n",
|
||||
"print(f\"\\n✅ 3张照片已全部保存到:{SAVE_FOLDER}\")"
|
||||
]
|
||||
}
|
||||
],
|
||||
|
||||
Reference in New Issue
Block a user