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:
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)
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:
# 使用传统数据生成器但仍然传递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)
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",
endpoint_spec_lookup_key="CREATE",
request_overrides={
# We assume the body is an array under 'data' key
"body": {"data": ["{{stage_context.current_payload}}"]}
# DMS标准格式包含version、act和data字段
"body": {
"version": "1.0.0",
"act": -1,
"data": ["{{stage_context.current_payload}}"]
}
},
response_assertions=[validate_response_is_true],
outputs_to_context={}
@ -493,7 +497,12 @@ class DmsCrudScenarioStage(BaseAPIStage):
name="Step 3: Update Resource",
endpoint_spec_lookup_key="UPDATE",
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]
),
@ -669,6 +678,7 @@ class DmsCrudScenarioStage(BaseAPIStage):
# 构建LIST请求体使用固定的简化模式
if filter_key and filter_value:
list_payload = {
"version": "1.0.0",
"isSearchCount": True,
"query": {
"fields": [],
@ -691,6 +701,7 @@ class DmsCrudScenarioStage(BaseAPIStage):
else:
# 没有可用的过滤条件,返回基本查询
list_payload = {
"version": "1.0.0",
"isSearchCount": True,
"query": {
"fields": [],
@ -712,14 +723,14 @@ class DmsCrudScenarioStage(BaseAPIStage):
if not delete_op or not isinstance(delete_op, DMSEndpoint):
# 回退到简单的主键值列表
self.logger.warning("无法获取删除操作信息,使用简单主键值列表")
return {"data": [pk_value]}
return {"version": "1.0.0", "data": [pk_value]}
# 获取identityId列表
identity_id_list = getattr(delete_op, 'identity_id_list', [])
if not identity_id_list:
self.logger.warning("删除操作没有identityId信息使用简单主键值列表")
return {"data": [pk_value]}
return {"version": "1.0.0", "data": [pk_value]}
# 根据identityId列表长度判断删除格式
if len(identity_id_list) > 1:
@ -729,7 +740,7 @@ class DmsCrudScenarioStage(BaseAPIStage):
else:
# 单主键:使用字符串列表
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]:
"""构建多主键的删除请求体"""

11486
summary(10).json Normal file

File diff suppressed because it is too large Load Diff