zhouhui.jiang

update

......@@ -13,7 +13,7 @@ API_CONFIG = {
"headers": {
"accept": "*/*",
"Content-Type": "application/json",
"Authorization": os.getenv("API_AUTHORIZATION", "Bearer 2.343fa30a6a4d42b6afe62bdd0570a50b"),
"Authorization": os.getenv("API_AUTHORIZATION", "Bearer 2.72961203173b48f8975ea6eb8667e05f"),
"Ver": os.getenv("API_VER", "033BD94B1168D7E4F0D644C3C95E35BF.D73E33B659AD1D6B7D181D1DF8D05760"),
"Referer": os.getenv("API_REFERER", "http://192.168.1.251/")
}
......
......@@ -96,24 +96,21 @@ def create_waybill_d(consignmentCode: str) -> str:
waybill_id = extra.get('id')
code = extra.get('consignmentCode') or consignmentCode or ""
# 若拿不到ID,严格按目标格式返回(字段留空)
# 初始化返回数据
result_data = {
"consignmentCode": code,
"waybill_id": str(waybill_id) if waybill_id else "",
"operate_unit_name": "",
"operate_unit_code": "",
"detailList": []
}
# 若拿不到ID,直接返回空数据
if not waybill_id:
lines = [
f"运单号:{code} 的D类运单已成功创建。",
f"运单号:{code}",
"\t公司信息",
"\t发件人公司:",
"\t海关编码:",
"\t商品明细信息",
"\t出口商品编码:",
"\t中文品名:",
]
return "\n".join(lines)
# 直接请求表头详情(不引入额外文本,空值留空)
return json.dumps(result_data, ensure_ascii=False, indent=2)
# 请求表头详情获取 operate_unit_name 和 operate_unit_code
head_url = f"{API_CONFIG['base_url']}/Exp/bus-customer/consignment/headInfo"
operate_unit_name = ""
operate_unit_code = ""
try:
head_resp = requests.post(
head_url,
......@@ -124,21 +121,19 @@ def create_waybill_d(consignmentCode: str) -> str:
if head_resp.status_code == 200:
head_json = head_resp.json()
head_extra = (head_json.get("data") or {}).get("extra") or {}
operate_unit_name = head_extra.get("operateUnitName") or ""
operate_unit_code = head_extra.get("operateUnitCode") or ""
result_data["operate_unit_name"] = head_extra.get("operateUnitName") or ""
result_data["operate_unit_code"] = head_extra.get("operateUnitCode") or ""
except Exception:
pass
# 直接请求表体明细(取第一条,空值留空
# 请求表体明细获取所有商品明细(sku_code 和 sku_name
detail_url = f"{API_CONFIG['base_url']}/Exp/bus-customer/consignment/detail/list"
sku_code = ""
sku_name = ""
try:
detail_payload = {
"consType": "consType_D",
"consignmentId": waybill_id,
"pageIndex": 1,
"pageSize": 5,
"pageSize": 100, # 增加页面大小以获取更多记录
}
detail_resp = requests.post(
detail_url,
......@@ -149,25 +144,20 @@ def create_waybill_d(consignmentCode: str) -> str:
if detail_resp.status_code == 200:
detail_json = detail_resp.json()
records = (detail_json.get("data") or {}).get("records") or []
if isinstance(records, list) and records:
first = records[0] if isinstance(records[0], dict) else {}
sku_code = first.get("skuCode") or ""
sku_name = first.get("skuName") or ""
if isinstance(records, list):
# 遍历所有记录,构建 detailList
for item in records:
if isinstance(item, dict):
detail_item = {
"sku_code": item.get("skuCode") or "",
"sku_name": item.get("skuName") or ""
}
result_data["detailList"].append(detail_item)
except Exception:
pass
# 严格按目标格式输出(不添加解释性文字、提示或建议)
lines = [
f"运单号:{code} 的D类运单已成功创建。",
f"运单号:{code}",
"\t公司信息",
f"\t发件人公司:{operate_unit_name}",
f"\t海关编码:{operate_unit_code}",
"\t商品明细信息",
f"\t出口商品编码:{sku_code}",
f"\t中文品名:{sku_name}",
]
return "\n".join(lines)
# 返回 JSON 格式数据
return json.dumps(result_data, ensure_ascii=False, indent=2)
except requests.exceptions.RequestException as e:
return f"❌ 网络请求失败: {str(e)}"
......@@ -230,9 +220,21 @@ def query_waybill_list(initialize: int = 1, consStatusName: str = "等待录入"
if not data:
return f"查询成功: 未找到状态为 '{consStatusName}' 的运单记录。"
# 生成 HTML 表格
html_table = generate_waybill_table(data)
return f"查询成功: 找到 {len(data)} 条运单记录。状态: {consStatusName}\n\n{html_table}"
# 提取所需字段并返回 JSON 格式
result_list = []
for item in data:
if isinstance(item, dict):
result_item = {
"consignmentCode": item.get('consignmentCode', ''),
"consType": item.get('consType', ''),
"consStatus": item.get('consStatus', ''),
"sender": item.get('sender', ''),
"createTime": item.get('createTime', '')
}
result_list.append(result_item)
# 返回 JSON 格式数据
return json.dumps(result_list, ensure_ascii=False, indent=2)
else:
return f"查询失败: HTTP {response.status_code}, 错误信息: {response.text}"
......
......@@ -110,14 +110,13 @@ agent = create_react_agent(
- 若调用了工具并获得结果,则必须将该工具返回的文本“原样作为最终答复”输出,不允许添加任何解释、建议或额外文字。
## 可用工具:
- query_waybill_list: 查询运单列表,支持按状态筛选,结果以HTML表格形式展示
- query_waybill_list: 查询运单列表,支持按状态筛选,结果以JSON形式展示
- create_waybill_d: 根据运单号创建D类运单,需要提供运单号参数
- upload_clearance_file: 上传清关PDF文件,需要 code、slip_id、pdf_path
- push_waybill_for_ocr: 根据运单ID推送OCR进行识别,需要提供运单ID(waybill_id)参数
## query_waybill_list数据展示说明:
- 运单查询结果会自动格式化为HTML表格,包含:运单号、运单类型、运单状态、发件人、运单日期
- 表格在终端中会以HTML源码形式显示,用户可以在支持HTML的环境中查看格式化效果
- 运单查询结果会自动格式化为JSON形式展示,包含:运单号、运单类型、运单状态、发件人、运单日期
- 空字段会显示为空单元格
- 运单创建结果会显示成功/失败状态和详细信息
......
No preview for this file type