feat(api_client): 增加详细的API请求和响应日志记录
增加对test_sql_with_schema接口的详细日志记录功能, 包括传入数据和返回数据的完整信息,便于调试和问题排查。 fix(utils): 修复sqlParams为空时的处理逻辑 修改process_skill_response函数中对空sqlParams的处理, 避免在sqlParams为None时导致JSON解析错误,并注释掉默认参数设置逻辑。 chore(config): 更新环境配置和项目版本 更新多个项目的数据库ID、数据源ID和后端基础URL配置, 并将lzwcai-mcp-sqlexecutor版本从0.1.8升级到0.10。 chore(logger): 改进日志目录创建逻辑 修改LoggerConfig类中的日志目录创建方法,使用mkdir(parents=True, exist_ok=True) 确保所有父目录都被创建。
This commit is contained in:
@@ -128,6 +128,19 @@ class DataSourceAPIClient:
|
||||
Exception: 请求失败时抛出
|
||||
"""
|
||||
try:
|
||||
# 详细记录传入的数据
|
||||
logger.info("=" * 80)
|
||||
logger.info("test_sql_with_schema 接口接收到的数据:")
|
||||
logger.info(f"数据类型: {type(request_data)}")
|
||||
logger.info(f"数据内容: {json.dumps(request_data, ensure_ascii=False, indent=2)}")
|
||||
logger.info(f"数据源ID: {request_data.get('datasourceId')}")
|
||||
logger.info(f"业务名称: {request_data.get('businessName')}")
|
||||
logger.info(f"业务描述: {request_data.get('businessDescription')}")
|
||||
logger.info(f"SQL模板: {request_data.get('sqlTemplate')}")
|
||||
logger.info(f"参数定义: {request_data.get('parameters')}")
|
||||
logger.info(f"测试参数: {request_data.get('testParams')}")
|
||||
logger.info("=" * 80)
|
||||
|
||||
url = f"{self.base_url}/datasource/sqlExecutionLog/testSqlWithSchema"
|
||||
|
||||
# 构建请求头(包含Content-Type)
|
||||
@@ -151,8 +164,19 @@ class DataSourceAPIClient:
|
||||
# 解析JSON响应
|
||||
data = response.json()
|
||||
|
||||
# 详细记录返回的数据
|
||||
logger.info("=" * 80)
|
||||
logger.info("test_sql_with_schema 接口返回的数据:")
|
||||
logger.info(f"HTTP状态码: {response.status_code}")
|
||||
logger.info(f"响应数据类型: {type(data)}")
|
||||
logger.info(f"响应数据内容: {json.dumps(data, ensure_ascii=False, indent=2)}")
|
||||
if isinstance(data, dict):
|
||||
logger.info(f"响应code: {data.get('code')}")
|
||||
logger.info(f"响应msg: {data.get('msg')}")
|
||||
logger.info(f"响应data: {data.get('data')}")
|
||||
logger.info("=" * 80)
|
||||
|
||||
logger.info(f"测试SQL API调用成功")
|
||||
logger.debug(f"响应数据: {json.dumps(data, ensure_ascii=False, indent=2)}")
|
||||
|
||||
return data
|
||||
|
||||
@@ -267,7 +291,8 @@ def process_skill_response(response: Dict[str, Any]) -> List[Dict[str, Any]]:
|
||||
queries = []
|
||||
for skill in data_list:
|
||||
# 解析sqlParams字符串为JSON对象
|
||||
sql_params = json.loads(skill.get("sqlParams", "{}"))
|
||||
sql_params_str = skill.get("sqlParams") or "{}"
|
||||
sql_params = json.loads(sql_params_str)
|
||||
|
||||
# 判断sqlParams是否为空对象
|
||||
is_empty_params = (
|
||||
@@ -278,10 +303,10 @@ def process_skill_response(response: Dict[str, Any]) -> List[Dict[str, Any]]:
|
||||
len(sql_params.get("required", [])) == 0
|
||||
)
|
||||
|
||||
# 如果是空对象,使用默认的员工ID参数
|
||||
if is_empty_params:
|
||||
logger.info(f"技能 {skill.get('name')} (ID: {skill.get('id')}) 的sqlParams为空,使用默认员工ID参数")
|
||||
sql_params = default_employee_schema
|
||||
# # 如果是空对象,使用默认的员工ID参数
|
||||
# if is_empty_params:
|
||||
# logger.info(f"技能 {skill.get('name')} (ID: {skill.get('id')}) 的sqlParams为空,使用默认员工ID参数")
|
||||
# sql_params = default_employee_schema
|
||||
|
||||
# 映射字段
|
||||
query = {
|
||||
|
||||
@@ -29,8 +29,8 @@ class LoggerConfig:
|
||||
project_root = Path(__file__).parent.parent
|
||||
self.logs_dir = project_root / "logs"
|
||||
|
||||
# 创建日志目录
|
||||
self.logs_dir.mkdir(exist_ok=True)
|
||||
# 创建日志目录(包括父目录)
|
||||
self.logs_dir.mkdir(parents=True, exist_ok=True)
|
||||
|
||||
# 日志格式
|
||||
self.log_format = '%(asctime)s - %(name)s - %(levelname)s - [%(filename)s:%(lineno)d] - %(message)s'
|
||||
|
||||
@@ -2,8 +2,13 @@
|
||||
Entry point for lzwcai-mcp-sqlexecutor
|
||||
Runs the MCP server for SQL query execution
|
||||
"""
|
||||
import os
|
||||
|
||||
os.environ["databaseId"] = "12"
|
||||
os.environ["skillId"] = "2013848312313335809"
|
||||
os.environ["backendBaseUrl"] = "http://192.168.11.24:8088"
|
||||
if __name__ == "__main__":
|
||||
# Import and run the actual MCP server
|
||||
from lzwcai_mcp_sqlexecutor.main import main
|
||||
|
||||
main()
|
||||
|
||||
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
|
||||
|
||||
[project]
|
||||
name = "lzwcai-mcp-sqlexecutor"
|
||||
version = "0.1.8"
|
||||
version = "0.1.10"
|
||||
description = "MCP server for executing business SQL queries with dynamic tool generation"
|
||||
readme = "README.md"
|
||||
requires-python = ">=3.13"
|
||||
|
||||
Reference in New Issue
Block a user