| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 |
- class EnableFuelRateTool:
- name = 'enable_fuel_rate'
- route_path = '/mcp/tools/enableFuelRate'
- backend = 'base'
- def __init__(self, api_client=None):
- self.api_client = api_client
- def metadata(self):
- return {
- 'name': self.name,
- 'description': (
- '使用场景:把燃油系数生效或启用。燃油代码必须来自query_fuel_rate_list,格式为RY加数字。'
- '可以一次启用多条,最多20条。草稿和失效都可以启用。'
- '已经启用的不能再次启用。'
- '禁止使用:新增、编辑、失效、删除、手填不存在的燃油代码。'
- '参数只用于工具内部调用;最终回答只能展示中文业务名称和燃油代码。'
- ),
- 'input_schema': {
- 'type': 'object',
- 'properties': {
- 'fuel_no': {
- 'type': 'array',
- 'minItems': 1,
- 'maxItems': 20,
- 'items': {
- 'type': 'string',
- 'minLength': 1,
- 'maxLength': 20,
- },
- 'description': '要启用的燃油代码,例如["RY12"]。',
- },
- },
- 'required': ['fuel_no'],
- 'additionalProperties': False,
- },
- }
- def call(self, fuel_no, request_id='rq_enable_fuel_rate'):
- if self.api_client is None:
- raise RuntimeError('api client is required for enable_fuel_rate')
- return self.api_client.call_tool(
- self.name,
- self.route_path,
- {'fuel_no': _fuel_numbers(fuel_no)},
- request_id,
- )
- def _fuel_numbers(value):
- if isinstance(value, str):
- value = [value]
- if not isinstance(value, list) or not value or len(value) > 20:
- raise ValueError('fuel_no is invalid')
- numbers = []
- seen = set()
- for item in value:
- if not isinstance(item, str) or not item.strip() or len(item.strip()) > 20:
- raise ValueError('fuel_no is invalid')
- number = item.strip()
- if number in seen:
- continue
- seen.add(number)
- numbers.append(number)
- return numbers
|