392 lines
17 KiB
Plaintext
392 lines
17 KiB
Plaintext
{
|
||
"cells": [
|
||
{
|
||
"cell_type": "code",
|
||
"id": "initial_id",
|
||
"metadata": {
|
||
"collapsed": true,
|
||
"ExecuteTime": {
|
||
"end_time": "2025-12-25T06:14:43.010877600Z",
|
||
"start_time": "2025-12-25T06:14:42.705835200Z"
|
||
}
|
||
},
|
||
"source": [
|
||
"import json\n",
|
||
"import requests\n",
|
||
"\n",
|
||
"triggerConf = {\n",
|
||
"\"_widget_17666295456371\": \"675b900991ad2491c69389ca\",\n",
|
||
"\"_widget_17666295463651\": \"6931063d64187eaf6b927557\",\n",
|
||
"\"_widget_17666295471001\": \"694caec6d3f22e2e1723b776\",\n",
|
||
"\"_widget_17666325849471\": \"11240984669918342117\",\n",
|
||
"\"_widget_17666340965771\": \"新起点养车维修\"\n",
|
||
"}\n",
|
||
"\n",
|
||
"\n",
|
||
"# 获取输入参数(带默认空字符串)\n",
|
||
"api_key = str(triggerConf.get('_widget_17666295456371', '')).strip()\n",
|
||
"entry_id = str(triggerConf.get('_widget_17666295463651', '')).strip()\n",
|
||
"data_id = str(triggerConf.get('_widget_17666295471001', '')).strip()\n",
|
||
"company_id = str(triggerConf.get('_widget_17666325849471', '')).strip()\n",
|
||
"org_str = triggerConf.get('_widget_17666340965771', '')\n",
|
||
"\n",
|
||
"# 安全校验:必要参数不能为空\n",
|
||
"if not all([api_key, entry_id, data_id, company_id]):\n",
|
||
" raise ValueError(\"缺少必要参数:应用ID、表单ID、数据ID 或 公司ID 不能为空\")\n",
|
||
"\n",
|
||
"# 解析连锁店列表\n",
|
||
"org_list = []\n",
|
||
"if org_str:\n",
|
||
" if isinstance(org_str, str):\n",
|
||
" org_list = [item.strip() for item in org_str.split(',') if item.strip()]\n",
|
||
" elif isinstance(org_str, list):\n",
|
||
" org_list = [str(item).strip() for item in org_str if str(item).strip()]\n",
|
||
"\n",
|
||
"# 请求头\n",
|
||
"BEARER_TOKEN = \"qygHulymo1fekJk4CIZyNKjyQAzG8CFN\"\n",
|
||
"headers = {\n",
|
||
" 'Authorization': f'Bearer {BEARER_TOKEN}',\n",
|
||
" 'Content-Type': 'application/json'\n",
|
||
"}\n",
|
||
"\n",
|
||
"# 第一步:获取当前触发数据的内容\n",
|
||
"data_payload = {\n",
|
||
" \"app_id\": api_key,\n",
|
||
" \"entry_id\": entry_id,\n",
|
||
" \"data_id\": data_id\n",
|
||
"}\n",
|
||
"trigger_data_url = \"https://api.jiandaoyun.com/api/v5/app/entry/data/get\"\n",
|
||
"try:\n",
|
||
" data_response = requests.post(trigger_data_url, headers=headers, data=json.dumps(data_payload), timeout=10)\n",
|
||
" data_response.raise_for_status()\n",
|
||
" data_resp_json = data_response.json()\n",
|
||
" trigger_data = data_resp_json.get(\"data\", {})\n",
|
||
" if not trigger_data:\n",
|
||
" raise ValueError(\"未能获取到当前数据内容\")\n",
|
||
"except Exception as e:\n",
|
||
" raise RuntimeError(f\"获取当前数据失败: {str(e)}\")\n",
|
||
"\n",
|
||
"# 第二步:查询该公司下所有进行中的数据\n",
|
||
"url = \"https://api.jiandaoyun.com/api/v5/app/entry/data/list\"\n",
|
||
"payload = {\n",
|
||
" \"app_id\": api_key,\n",
|
||
" \"entry_id\": entry_id,\n",
|
||
" \"filter\": {\n",
|
||
" \"rel\": \"and\",\n",
|
||
" \"cond\": [\n",
|
||
" {\"field\": \"_widget_1766631811839\", \"type\": \"text\", \"method\": \"eq\", \"value\": company_id},\n",
|
||
" {\"field\": \"flowState\", \"type\": \"flowstate\", \"method\": \"eq\", \"value\": [0]}\n",
|
||
" ]\n",
|
||
" }\n",
|
||
"}\n",
|
||
"try:\n",
|
||
" response = requests.post(url, headers=headers, json=payload, timeout=10)\n",
|
||
" resp_json = response.json()\n",
|
||
" data_list = resp_json.get(\"data\", [])\n",
|
||
"except Exception as e:\n",
|
||
" raise RuntimeError(f\"查询进行中数据失败: {str(e)}\")\n",
|
||
"\n",
|
||
"# # 要同步的字段映射(目标字段ID -> 触发数据中的源字段ID)\n",
|
||
"# field_mapping = {\n",
|
||
"# \"_widget_1764820541638\": \"_widget_1764820541638\", # 是否联系上\n",
|
||
"# \"_widget_1764820541641\": \"_widget_1764820541641\", # 现阶段问题\n",
|
||
"# \"_widget_1765330820509\": \"_widget_1765330820509\", # 未联系原因\n",
|
||
"# \"_widget_1764820541653\": \"_widget_1764820541653\", # 联系情况及问题说明\n",
|
||
"# \"_widget_1764820541697\": \"_widget_1764820541697\", # 回访方式\n",
|
||
"# \"_widget_1764820541657\": \"_widget_1764820541657\", # 潜在商机\n",
|
||
"# \"_widget_1764820541659\": \"_widget_1764820541659\", # 商机详情\n",
|
||
"# \"_widget_1764820541654\": \"_widget_1764820541654\", # 续约意愿\n",
|
||
"# \"_widget_1764820541700\": \"_widget_1764820541700\", # 不续约原因\n",
|
||
"# \"_widget_1764820541707\": \"_widget_1764820541707\", # 产品原因\n",
|
||
"# \"_widget_1764820541709\": \"_widget_1764820541709\", # 服务问题\n",
|
||
"# \"_widget_1764820541711\": \"_widget_1764820541711\", # 门店原因\n",
|
||
"# \"_widget_1764820541713\": \"_widget_1764820541713\", # 价格原因\n",
|
||
"# \"_widget_1764820541702\": \"_widget_1764820541702\", # 不续约具体情况说明\n",
|
||
"# }\n",
|
||
"#\n",
|
||
"# # 遍历匹配的连锁店数据\n",
|
||
"# for data in data_list:\n",
|
||
"# store_code = data.get(\"_widget_1764820541617\")\n",
|
||
"# if not store_code or store_code not in org_list:\n",
|
||
"# continue\n",
|
||
"#\n",
|
||
"# new_data_id = data.get(\"_id\")\n",
|
||
"# if not new_data_id:\n",
|
||
"# continue\n",
|
||
"#\n",
|
||
"# # 构建更新 payload(仅包含非 None 值)\n",
|
||
"# update_data = {}\n",
|
||
"# for target_field, source_field in field_mapping.items():\n",
|
||
"# value = trigger_data.get(source_field)\n",
|
||
"# # 如果值为 None 或空字符串(根据业务决定是否跳过)\n",
|
||
"# if value is not None:\n",
|
||
"# update_data[target_field] = {\"value\": value}\n",
|
||
"#\n",
|
||
"# if not update_data:\n",
|
||
"# continue # 无有效字段可更新\n",
|
||
"#\n",
|
||
"# modify_payload = {\n",
|
||
"# \"app_id\": api_key,\n",
|
||
"# \"entry_id\": entry_id,\n",
|
||
"# \"data_id\": new_data_id,\n",
|
||
"# \"data\": update_data\n",
|
||
"# }\n",
|
||
"#\n",
|
||
"# # 同步字段\n",
|
||
"# try:\n",
|
||
"# modif_url = \"https://api.jiandaoyun.com/api/v5/app/entry/data/update\"\n",
|
||
"# res = requests.post(modif_url, headers=headers, data=json.dumps(modify_payload), timeout=10)\n",
|
||
"# res.raise_for_status()\n",
|
||
"# except Exception as e:\n",
|
||
"# print(f\"更新数据 {new_data_id} 失败: {e}\")\n",
|
||
"# continue # 继续处理下一个,不中断\n",
|
||
"#\n",
|
||
"# # 第三步:尝试自动审批(仅当处于指定节点)\n",
|
||
"# try:\n",
|
||
"# instance_url = \"https://api.jiandaoyun.com/api/v6/workflow/instance/get\"\n",
|
||
"# instance_payload = {\n",
|
||
"# \"instance_id\": new_data_id,\n",
|
||
"# \"tasks_type\": 1\n",
|
||
"# }\n",
|
||
"# instance_res = requests.post(instance_url, headers=headers, data=json.dumps(instance_payload), timeout=10)\n",
|
||
"# instance_res.raise_for_status()\n",
|
||
"# instance_data = instance_res.json()\n",
|
||
"# tasks = instance_data.get(\"tasks\", [])\n",
|
||
"#\n",
|
||
"# if not tasks:\n",
|
||
"# continue\n",
|
||
"#\n",
|
||
"# last_task = tasks[-1]\n",
|
||
"# flow_id = last_task.get(\"flow_id\")\n",
|
||
"# task_id = last_task.get(\"task_id\")\n",
|
||
"# assignee_info = last_task.get(\"assignee\") or {}\n",
|
||
"# username = assignee_info.get(\"username\")\n",
|
||
"#\n",
|
||
"# if flow_id in [1, 2, 3, 9] and task_id and username:\n",
|
||
"# allow_url = \"https://api.jiandaoyun.com/api/v1/workflow/task/approve\"\n",
|
||
"# allow_payload = {\n",
|
||
"# \"username\": username,\n",
|
||
"# \"instance_id\": new_data_id,\n",
|
||
"# \"task_id\": task_id\n",
|
||
"# }\n",
|
||
"# allo_result = requests.post(allow_url, headers=headers, data=json.dumps(allow_payload), timeout=10)\n",
|
||
"# allo_result.raise_for_status()\n",
|
||
"# print(f\"自动审批成功: data_id={new_data_id}, task_id={task_id}\")\n",
|
||
"# else:\n",
|
||
"# print(f\"跳过自动审批: flow_id={flow_id}, task_id={task_id}, username={username}\")\n",
|
||
"#\n",
|
||
"# except Exception as e:\n",
|
||
"# print(f\"自动审批失败 (data_id={new_data_id}): {e}\")\n"
|
||
],
|
||
"outputs": [],
|
||
"execution_count": 8
|
||
},
|
||
{
|
||
"metadata": {
|
||
"ExecuteTime": {
|
||
"end_time": "2025-12-25T06:14:45.807079300Z",
|
||
"start_time": "2025-12-25T06:14:45.761404700Z"
|
||
}
|
||
},
|
||
"cell_type": "code",
|
||
"source": "resp_json",
|
||
"id": "d4299d8a0596e5f8",
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"{'data': [{'_id': '694caec6d3f22e2e1723b775',\n",
|
||
" 'creator': {'name': 'F6汽车科技', 'username': '#admin', 'status': 1, 'type': 0},\n",
|
||
" 'updater': {'name': 'F6汽车科技', 'username': '#admin', 'status': 1, 'type': 0},\n",
|
||
" 'deleter': None,\n",
|
||
" 'createTime': '2025-12-25T03:25:58.151Z',\n",
|
||
" 'updateTime': '2025-12-25T05:57:01.097Z',\n",
|
||
" 'deleteTime': None,\n",
|
||
" 'flowState': 0,\n",
|
||
" '_widget_1764820541663': '680f49b134bee97fbb857ef1',\n",
|
||
" '_widget_1764820541616': '新起点养车',\n",
|
||
" '_widget_1764820541617': '新起点养车维修',\n",
|
||
" '_widget_1764820541661': 'CHS202411050285054',\n",
|
||
" '_widget_1764820541618': '',\n",
|
||
" '_widget_1764820541672': '2026-04-23T16:00:00.000Z',\n",
|
||
" '_widget_1764820541623': '基础版',\n",
|
||
" '_widget_1764820541624': 'SaaS新签:999',\n",
|
||
" '_widget_1764820541621': '王旭',\n",
|
||
" '_widget_1764820541622': '19819386119',\n",
|
||
" '_widget_1764820541625': {'name': '邵宝振',\n",
|
||
" 'username': '032861373036352679',\n",
|
||
" 'status': 1,\n",
|
||
" 'type': 0,\n",
|
||
" 'departments': [122333676],\n",
|
||
" 'integrate_id': '032861373036352679'},\n",
|
||
" '_widget_1766631811839': '11240984669918342117',\n",
|
||
" '_widget_1764820541628': '',\n",
|
||
" '_widget_1764820541634': None,\n",
|
||
" '_widget_1765352838631': None,\n",
|
||
" '_widget_1764820541630': '',\n",
|
||
" '_widget_1764820541635': None,\n",
|
||
" '_widget_1765352838632': None,\n",
|
||
" '_widget_1764820541632': '',\n",
|
||
" '_widget_1764820541636': None,\n",
|
||
" '_widget_1765352838633': None,\n",
|
||
" '_widget_1764820541638': '',\n",
|
||
" '_widget_1764820541641': '',\n",
|
||
" '_widget_1765330820509': '',\n",
|
||
" '_widget_1764820541653': '',\n",
|
||
" '_widget_1764820541697': '',\n",
|
||
" '_widget_1764820541657': '',\n",
|
||
" '_widget_1764820541659': '',\n",
|
||
" '_widget_1764820541654': '',\n",
|
||
" '_widget_1764820541700': '',\n",
|
||
" '_widget_1764820541707': '',\n",
|
||
" '_widget_1764820541709': '',\n",
|
||
" '_widget_1764820541711': '',\n",
|
||
" '_widget_1764820541713': '',\n",
|
||
" '_widget_1764820541702': '',\n",
|
||
" '_widget_1764820541717': [],\n",
|
||
" '_widget_1764820541681': '',\n",
|
||
" '_widget_1765330820391': [],\n",
|
||
" '_widget_1764820541674': '',\n",
|
||
" '_widget_1764820541679': None,\n",
|
||
" '_widget_1764820541676': '',\n",
|
||
" '_widget_1764820541680': '',\n",
|
||
" '_widget_1764820541865': '2026-02-22T16:00:00.000Z',\n",
|
||
" '_widget_1765964381895': '2026-03-24T16:00:00.000Z',\n",
|
||
" '_widget_1765964381896': '2026-04-23T16:00:00.000Z',\n",
|
||
" '_widget_1765964381897': '2026-07-22T16:00:00.000Z',\n",
|
||
" '_widget_1765352838609': '',\n",
|
||
" '_widget_1765352838610': '',\n",
|
||
" '_widget_1765964381952': '单店',\n",
|
||
" '_widget_1765866283543': '',\n",
|
||
" '_widget_1764820541715': {'name': '申晓勇',\n",
|
||
" 'username': '171201105229666119',\n",
|
||
" 'status': 1,\n",
|
||
" 'type': 0,\n",
|
||
" 'departments': [177751223],\n",
|
||
" 'integrate_id': '171201105229666119'},\n",
|
||
" '_widget_1766130435561': '普通客户(VIP)',\n",
|
||
" '_widget_1764820541678': {'name': '王斌',\n",
|
||
" 'username': '1253235059942945',\n",
|
||
" 'status': 1,\n",
|
||
" 'type': 0,\n",
|
||
" 'departments': [122333676],\n",
|
||
" 'integrate_id': '1253235059942945'},\n",
|
||
" '_widget_1766376046563': '00059',\n",
|
||
" '_widget_1766469131897': '否',\n",
|
||
" '_widget_1766633812134': '',\n",
|
||
" 'appId': '675b900991ad2491c69389ca',\n",
|
||
" 'entryId': '6931063d64187eaf6b927557'},\n",
|
||
" {'_id': '694caec6d3f22e2e1723b776',\n",
|
||
" 'creator': {'name': 'F6汽车科技', 'username': '#admin', 'status': 1, 'type': 0},\n",
|
||
" 'updater': {'name': 'F6汽车科技', 'username': '#admin', 'status': 1, 'type': 0},\n",
|
||
" 'deleter': None,\n",
|
||
" 'createTime': '2025-12-25T03:25:58.151Z',\n",
|
||
" 'updateTime': '2025-12-25T05:58:40.218Z',\n",
|
||
" 'deleteTime': None,\n",
|
||
" 'flowState': 0,\n",
|
||
" '_widget_1764820541663': '680f48b90a8a958979d7a2d3',\n",
|
||
" '_widget_1764820541616': '武陵区隆铖改汽车俱乐部',\n",
|
||
" '_widget_1764820541617': '武陵区隆铖改汽车俱乐部',\n",
|
||
" '_widget_1764820541661': 'CHS202504240297172',\n",
|
||
" '_widget_1764820541618': '',\n",
|
||
" '_widget_1764820541672': '2026-04-23T16:00:00.000Z',\n",
|
||
" '_widget_1764820541623': '进阶版',\n",
|
||
" '_widget_1764820541624': 'SaaS新签:1199',\n",
|
||
" '_widget_1764820541621': '朱松松',\n",
|
||
" '_widget_1764820541622': '18932158817',\n",
|
||
" '_widget_1764820541625': {'name': '胡冰',\n",
|
||
" 'username': '19212436541043695',\n",
|
||
" 'status': 1,\n",
|
||
" 'type': 0,\n",
|
||
" 'departments': [122503482],\n",
|
||
" 'integrate_id': '19212436541043695'},\n",
|
||
" '_widget_1766631811839': '11240984669918342117',\n",
|
||
" '_widget_1764820541628': '主动',\n",
|
||
" '_widget_1764820541634': None,\n",
|
||
" '_widget_1765352838631': None,\n",
|
||
" '_widget_1764820541630': '主动',\n",
|
||
" '_widget_1764820541635': None,\n",
|
||
" '_widget_1765352838632': None,\n",
|
||
" '_widget_1764820541632': '主动',\n",
|
||
" '_widget_1764820541636': None,\n",
|
||
" '_widget_1765352838633': None,\n",
|
||
" '_widget_1764820541638': '否',\n",
|
||
" '_widget_1764820541641': '',\n",
|
||
" '_widget_1765330820509': '空号/停机/关机',\n",
|
||
" '_widget_1764820541653': '234',\n",
|
||
" '_widget_1764820541697': 'udesk外呼',\n",
|
||
" '_widget_1764820541657': '',\n",
|
||
" '_widget_1764820541659': '',\n",
|
||
" '_widget_1764820541654': '否',\n",
|
||
" '_widget_1764820541700': '服务问题',\n",
|
||
" '_widget_1764820541707': '',\n",
|
||
" '_widget_1764820541709': '联系不上运营顾问',\n",
|
||
" '_widget_1764820541711': '',\n",
|
||
" '_widget_1764820541713': '',\n",
|
||
" '_widget_1764820541702': '',\n",
|
||
" '_widget_1764820541717': [],\n",
|
||
" '_widget_1764820541681': '是',\n",
|
||
" '_widget_1765330820391': [],\n",
|
||
" '_widget_1764820541674': '',\n",
|
||
" '_widget_1764820541679': None,\n",
|
||
" '_widget_1764820541676': '',\n",
|
||
" '_widget_1764820541680': '',\n",
|
||
" '_widget_1764820541865': '2026-02-22T16:00:00.000Z',\n",
|
||
" '_widget_1765964381895': '2026-03-24T16:00:00.000Z',\n",
|
||
" '_widget_1765964381896': '2026-04-23T16:00:00.000Z',\n",
|
||
" '_widget_1765964381897': '2026-07-22T16:00:00.000Z',\n",
|
||
" '_widget_1765352838609': '',\n",
|
||
" '_widget_1765352838610': '',\n",
|
||
" '_widget_1765964381952': '单店',\n",
|
||
" '_widget_1765866283543': '',\n",
|
||
" '_widget_1764820541715': {'name': '孙海程',\n",
|
||
" 'username': '084119070623372941',\n",
|
||
" 'status': 1,\n",
|
||
" 'type': 0,\n",
|
||
" 'departments': [177751223],\n",
|
||
" 'integrate_id': '084119070623372941'},\n",
|
||
" '_widget_1766130435561': '普通客户(VIP)',\n",
|
||
" '_widget_1764820541678': {'name': '金华斌',\n",
|
||
" 'username': '3704680936560271',\n",
|
||
" 'status': 1,\n",
|
||
" 'type': 0,\n",
|
||
" 'departments': [122503482],\n",
|
||
" 'integrate_id': '3704680936560271'},\n",
|
||
" '_widget_1766376046563': '00060',\n",
|
||
" '_widget_1766469131897': '否',\n",
|
||
" '_widget_1766633812134': '',\n",
|
||
" 'appId': '675b900991ad2491c69389ca',\n",
|
||
" 'entryId': '6931063d64187eaf6b927557'}]}"
|
||
]
|
||
},
|
||
"execution_count": 9,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"execution_count": 9
|
||
}
|
||
],
|
||
"metadata": {
|
||
"kernelspec": {
|
||
"display_name": "Python 3",
|
||
"language": "python",
|
||
"name": "python3"
|
||
},
|
||
"language_info": {
|
||
"codemirror_mode": {
|
||
"name": "ipython",
|
||
"version": 2
|
||
},
|
||
"file_extension": ".py",
|
||
"mimetype": "text/x-python",
|
||
"name": "python",
|
||
"nbconvert_exporter": "python",
|
||
"pygments_lexer": "ipython2",
|
||
"version": "2.7.6"
|
||
}
|
||
},
|
||
"nbformat": 4,
|
||
"nbformat_minor": 5
|
||
}
|