| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- class QueryOrderTool:
- name = 'query_order'
- route_path = '/mcp/tools/queryOrder'
- def __init__(self, api_client=None):
- self.api_client = api_client
- def metadata(self):
- return {
- 'name': self.name,
- 'description': (
- '使用场景:仅兼容旧版跨字段通用搜索;只有用户明确要求把同一号码'
- '同时作为订单号、客户参考号、快递单号、排舱单号、柜号和SO号搜索,'
- '并且目标是查看订单列表时使用。禁止使用:用户已明确号码类型时必须'
- '改用 query_order_exact;用户只说“单号”“这个号码”或号码类型不明确时'
- '必须先询问用户,确认前不得调用。不得根据号码格式猜测,不得并行调用'
- '候选工具,不得跨字段或跨工具试查,查询无结果后也不得换字段重试。'
- '本工具返回订单列表,不返回排舱列表、排舱详情、物流轨迹、报关资料文件'
- '或导出文件。'
- ),
- 'input_schema': {
- 'type': 'object',
- 'properties': {
- 'keyword': {
- 'type': 'string',
- 'description': (
- '旧版跨字段通用搜索值。只有用户明确接受同时搜索订单号、'
- '客户参考号、快递单号、排舱单号、柜号和SO号时才可传入。'
- ),
- },
- 'page': {'type': 'integer', 'minimum': 1},
- 'limit': {'type': 'integer', 'minimum': 1, 'maximum': 100},
- },
- 'required': ['keyword'],
- },
- }
- def call(self, keyword, page=1, limit=20, request_id='rq_query_order'):
- if self.api_client is None:
- raise RuntimeError('api client is required for query_order')
- keyword = str(keyword).strip()
- if not keyword:
- raise ValueError('keyword is required')
- page = max(1, int(page))
- limit = max(1, min(100, int(limit)))
- payload = {
- 'keyword': keyword,
- 'page': page,
- 'limit': limit,
- }
- return self.api_client.call_tool(self.name, self.route_path, payload, request_id)
|