fix:dms api

This commit is contained in:
gongwenxin 2025-08-19 17:51:50 +08:00
parent a9ca927ba8
commit ad5f3b2c52
2 changed files with 11505 additions and 8 deletions

View File

@ -377,7 +377,7 @@ class DmsCrudScenarioStage(BaseAPIStage):
except Exception as e: except Exception as e:
self.logger.warning(f"LLM数据生成失败: {e},回退到传统数据生成") self.logger.warning(f"LLM数据生成失败: {e},回退到传统数据生成")
# 回退到传统数据生成 # 回退到传统数据生成
data_generator = DataGenerator(logger_param=self.logger) data_generator = DataGenerator(logger_param=self.logger, well_data_manager=getattr(self.orchestrator, 'well_data_manager', None))
generated_data = data_generator.generate_data_from_schema(create_schema, context_name="create_payload", llm_service=self.llm_service) generated_data = data_generator.generate_data_from_schema(create_schema, context_name="create_payload", llm_service=self.llm_service)
if isinstance(generated_data, dict) and 'data' in generated_data and isinstance(generated_data['data'], list) and len(generated_data['data']) > 0: if isinstance(generated_data, dict) and 'data' in generated_data and isinstance(generated_data['data'], list) and len(generated_data['data']) > 0:
# 设置所有主键字段 # 设置所有主键字段
@ -392,7 +392,7 @@ class DmsCrudScenarioStage(BaseAPIStage):
else: else:
# 使用传统数据生成器但仍然传递LLM服务以便在内部尝试使用 # 使用传统数据生成器但仍然传递LLM服务以便在内部尝试使用
self.logger.info("LLM服务不可用使用传统数据生成器") self.logger.info("LLM服务不可用使用传统数据生成器")
data_generator = DataGenerator(logger_param=self.logger) data_generator = DataGenerator(logger_param=self.logger, well_data_manager=getattr(self.orchestrator, 'well_data_manager', None))
generated_data = data_generator.generate_data_from_schema(create_schema, context_name="create_payload", llm_service=None) generated_data = data_generator.generate_data_from_schema(create_schema, context_name="create_payload", llm_service=None)
if isinstance(generated_data, dict) and 'data' in generated_data and isinstance(generated_data['data'], list) and len(generated_data['data']) > 0: if isinstance(generated_data, dict) and 'data' in generated_data and isinstance(generated_data['data'], list) and len(generated_data['data']) > 0:
# 设置所有主键字段 # 设置所有主键字段
@ -474,8 +474,12 @@ class DmsCrudScenarioStage(BaseAPIStage):
name="Step 1: Create Resource", name="Step 1: Create Resource",
endpoint_spec_lookup_key="CREATE", endpoint_spec_lookup_key="CREATE",
request_overrides={ request_overrides={
# We assume the body is an array under 'data' key # DMS标准格式包含version、act和data字段
"body": {"data": ["{{stage_context.current_payload}}"]} "body": {
"version": "1.0.0",
"act": -1,
"data": ["{{stage_context.current_payload}}"]
}
}, },
response_assertions=[validate_response_is_true], response_assertions=[validate_response_is_true],
outputs_to_context={} outputs_to_context={}
@ -493,7 +497,12 @@ class DmsCrudScenarioStage(BaseAPIStage):
name="Step 3: Update Resource", name="Step 3: Update Resource",
endpoint_spec_lookup_key="UPDATE", endpoint_spec_lookup_key="UPDATE",
request_overrides={ request_overrides={
"body": {"data": ["{{stage_context.update_payload}}"]}, # DMS标准格式包含version、act和data字段
"body": {
"version": "1.0.0",
"act": -1,
"data": ["{{stage_context.update_payload}}"]
}
}, },
response_assertions=[validate_response_is_true] response_assertions=[validate_response_is_true]
), ),
@ -669,6 +678,7 @@ class DmsCrudScenarioStage(BaseAPIStage):
# 构建LIST请求体使用固定的简化模式 # 构建LIST请求体使用固定的简化模式
if filter_key and filter_value: if filter_key and filter_value:
list_payload = { list_payload = {
"version": "1.0.0",
"isSearchCount": True, "isSearchCount": True,
"query": { "query": {
"fields": [], "fields": [],
@ -691,6 +701,7 @@ class DmsCrudScenarioStage(BaseAPIStage):
else: else:
# 没有可用的过滤条件,返回基本查询 # 没有可用的过滤条件,返回基本查询
list_payload = { list_payload = {
"version": "1.0.0",
"isSearchCount": True, "isSearchCount": True,
"query": { "query": {
"fields": [], "fields": [],
@ -712,14 +723,14 @@ class DmsCrudScenarioStage(BaseAPIStage):
if not delete_op or not isinstance(delete_op, DMSEndpoint): if not delete_op or not isinstance(delete_op, DMSEndpoint):
# 回退到简单的主键值列表 # 回退到简单的主键值列表
self.logger.warning("无法获取删除操作信息,使用简单主键值列表") self.logger.warning("无法获取删除操作信息,使用简单主键值列表")
return {"data": [pk_value]} return {"version": "1.0.0", "data": [pk_value]}
# 获取identityId列表 # 获取identityId列表
identity_id_list = getattr(delete_op, 'identity_id_list', []) identity_id_list = getattr(delete_op, 'identity_id_list', [])
if not identity_id_list: if not identity_id_list:
self.logger.warning("删除操作没有identityId信息使用简单主键值列表") self.logger.warning("删除操作没有identityId信息使用简单主键值列表")
return {"data": [pk_value]} return {"version": "1.0.0", "data": [pk_value]}
# 根据identityId列表长度判断删除格式 # 根据identityId列表长度判断删除格式
if len(identity_id_list) > 1: if len(identity_id_list) > 1:
@ -729,7 +740,7 @@ class DmsCrudScenarioStage(BaseAPIStage):
else: else:
# 单主键:使用字符串列表 # 单主键:使用字符串列表
self.logger.info(f"检测到单主键删除操作,主键字段: {identity_id_list[0]}") self.logger.info(f"检测到单主键删除操作,主键字段: {identity_id_list[0]}")
return {"data": [pk_value]} return {"version": "1.0.0", "data": [pk_value]}
def _build_multi_key_delete_body(self, identity_id_list: List[str], primary_pk_name: str, primary_pk_value: str, create_payload: Dict[str, Any]) -> Dict[str, Any]: def _build_multi_key_delete_body(self, identity_id_list: List[str], primary_pk_name: str, primary_pk_value: str, create_payload: Dict[str, Any]) -> Dict[str, Any]:
"""构建多主键的删除请求体""" """构建多主键的删除请求体"""

11486
summary(10).json Normal file

File diff suppressed because it is too large Load Diff