compliance/log.txt
2025-05-26 15:38:37 +08:00

1078 lines
221 KiB
Plaintext
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

2025-05-26 14:59:38,221 - __main__ - DEBUG - 已启用详细日志模式
2025-05-26 14:59:38,221 - __main__ - INFO - args.api_key: sk-0213c70194624703a1d0d80e0f762b0e
2025-05-26 14:59:38,221 - ddms_compliance_suite.test_orchestrator - INFO - 初始化 TestCaseRegistry扫描目录: ./custom_testcases
2025-05-26 14:59:38,221 - ddms_compliance_suite.test_case_registry - INFO - 开始从目录 './custom_testcases' 及其子目录发现测试用例...
2025-05-26 14:59:38,222 - ddms_compliance_suite.test_case_registry - DEBUG - 成功导入模块: basic_checks 从 ./custom_testcases/basic_checks.py
2025-05-26 14:59:38,222 - ddms_compliance_suite.test_case_registry - INFO - 已注册测试用例: 'TC-STATUS-001' (基本状态码 200 检查) 来自类 'StatusCode200Check' (路径: ./custom_testcases/basic_checks.py)
2025-05-26 14:59:38,222 - ddms_compliance_suite.test_case_registry - DEBUG - 成功导入模块: https_mandatory_case 从 ./custom_testcases/compliance_catalog/security/https_mandatory_case.py
2025-05-26 14:59:38,222 - ddms_compliance_suite.test_case_registry - INFO - 已注册测试用例: 'TC-SECURITY-001' (HTTPS Protocol Mandatory Verification) 来自类 'HTTPSMandatoryCase' (路径: ./custom_testcases/compliance_catalog/security/https_mandatory_case.py)
2025-05-26 14:59:38,224 - ddms_compliance_suite.test_case_registry - DEBUG - 成功导入模块: url_llm_checks 从 ./custom_testcases/compliance_catalog/normative_spec/url_llm_checks.py
2025-05-26 14:59:38,224 - ddms_compliance_suite.test_case_registry - INFO - 已注册测试用例: 'TC-NORMATIVE-URL-LLM-COMPREHENSIVE-001' (综合URL规范与RESTful风格检查 (LLM)) 来自类 'ComprehensiveURLCheckLLMCase' (路径: ./custom_testcases/compliance_catalog/normative_spec/url_llm_checks.py)
2025-05-26 14:59:38,224 - ddms_compliance_suite.test_case_registry - DEBUG - 成功导入模块: http_method_usage_case 从 ./custom_testcases/compliance_catalog/normative_spec/http_method_usage_case.py
2025-05-26 14:59:38,224 - ddms_compliance_suite.test_case_registry - DEBUG - 成功导入模块: missing_required_field_query_case 从 ./custom_testcases/compliance_catalog/error_handling/missing_required_field_query_case.py
2025-05-26 14:59:38,224 - ddms_compliance_suite.test_case_registry - INFO - 已注册测试用例: 'TC-ERROR-4003-QUERY' (Error Code 4003 - Missing Required Query Parameter Validation) 来自类 'MissingRequiredFieldQueryCase' (路径: ./custom_testcases/compliance_catalog/error_handling/missing_required_field_query_case.py)
2025-05-26 14:59:38,225 - ddms_compliance_suite.test_case_registry - DEBUG - 成功导入模块: type_mismatch_body_case 从 ./custom_testcases/compliance_catalog/error_handling/type_mismatch_body_case.py
2025-05-26 14:59:38,225 - ddms_compliance_suite.test_case_registry - INFO - 已注册测试用例: 'TC-ERROR-4001-BODY' (Error Code 4001 - Request Body Type Mismatch Validation) 来自类 'TypeMismatchBodyCase' (路径: ./custom_testcases/compliance_catalog/error_handling/type_mismatch_body_case.py)
2025-05-26 14:59:38,225 - ddms_compliance_suite.test_case_registry - DEBUG - 成功导入模块: missing_required_field_body_case 从 ./custom_testcases/compliance_catalog/error_handling/missing_required_field_body_case.py
2025-05-26 14:59:38,225 - ddms_compliance_suite.test_case_registry - INFO - 已注册测试用例: 'TC-ERROR-4003-BODY' (Error Code 4003 - Missing Required Request Body Field Validation) 来自类 'MissingRequiredFieldBodyCase' (路径: ./custom_testcases/compliance_catalog/error_handling/missing_required_field_body_case.py)
2025-05-26 14:59:38,225 - ddms_compliance_suite.test_case_registry - DEBUG - 成功导入模块: type_mismatch_query_param_case 从 ./custom_testcases/compliance_catalog/error_handling/type_mismatch_query_param_case.py
2025-05-26 14:59:38,225 - ddms_compliance_suite.test_case_registry - INFO - 已注册测试用例: 'TC-ERROR-4001-QUERY' (Error Code 4001 - Query Parameter Type Mismatch Validation) 来自类 'TypeMismatchQueryParamCase' (路径: ./custom_testcases/compliance_catalog/error_handling/type_mismatch_query_param_case.py)
2025-05-26 14:59:38,225 - ddms_compliance_suite.test_case_registry - DEBUG - 成功导入模块: schema_validation_case 从 ./custom_testcases/compliance_catalog/core_functionality/schema_validation_case.py
2025-05-26 14:59:38,225 - ddms_compliance_suite.test_case_registry - INFO - 已注册测试用例: 'TC-CORE-FUNC-001' (Response Body JSON Schema Validation) 来自类 'ResponseSchemaValidationCase' (路径: ./custom_testcases/compliance_catalog/core_functionality/schema_validation_case.py)
2025-05-26 14:59:38,225 - ddms_compliance_suite.test_case_registry - INFO - 已根据 execution_order (主要) 和类名 (次要) 对 8 个测试用例类进行了排序。
2025-05-26 14:59:38,225 - ddms_compliance_suite.test_case_registry - INFO - 测试用例发现完成。总共注册了 8 个独特的测试用例 (基于ID)。发现并排序了 8 个测试用例类。
2025-05-26 14:59:38,225 - ddms_compliance_suite.test_orchestrator - INFO - TestCaseRegistry 初始化完成,发现 8 个测试用例类。
2025-05-26 14:59:38,225 - ddms_compliance_suite.llm_utils.llm_service - INFO - LLMService initialized for model 'qwen-plus' at https://dashscope.aliyuncs.com/compatible-mode/v1
2025-05-26 14:59:38,225 - ddms_compliance_suite.test_orchestrator - INFO - LLMService 已成功初始化,模型: qwen-plus。
2025-05-26 14:59:38,225 - __main__ - INFO - 从YAPI文件运行测试: assets/doc/井筒API示例_simple.json
2025-05-26 14:59:38,225 - ddms_compliance_suite.test_orchestrator - INFO - 从YAPI文件加载API定义: assets/doc/井筒API示例_simple.json
2025-05-26 14:59:38,225 - ddms_compliance_suite.input_parser.parser - INFO - Parsing YAPI spec from: assets/doc/井筒API示例_simple.json
2025-05-26 14:59:38,226 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-STATUS-001' 适用于端点 'POST /api/dms/{dms_instance_code}/v1/message/push/{schema}/{version}'。
2025-05-26 14:59:38,226 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-NORMATIVE-URL-LLM-COMPREHENSIVE-001' 适用于端点 'POST /api/dms/{dms_instance_code}/v1/message/push/{schema}/{version}'。
2025-05-26 14:59:38,226 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-CORE-FUNC-001' 适用于端点 'POST /api/dms/{dms_instance_code}/v1/message/push/{schema}/{version}'。
2025-05-26 14:59:38,226 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-SECURITY-001' 适用于端点 'POST /api/dms/{dms_instance_code}/v1/message/push/{schema}/{version}'。
2025-05-26 14:59:38,226 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4001-QUERY' 适用于端点 'POST /api/dms/{dms_instance_code}/v1/message/push/{schema}/{version}'。
2025-05-26 14:59:38,226 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4001-BODY' 适用于端点 'POST /api/dms/{dms_instance_code}/v1/message/push/{schema}/{version}'。
2025-05-26 14:59:38,226 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4003-BODY' 适用于端点 'POST /api/dms/{dms_instance_code}/v1/message/push/{schema}/{version}'。
2025-05-26 14:59:38,226 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4003-QUERY' 适用于端点 'POST /api/dms/{dms_instance_code}/v1/message/push/{schema}/{version}'。
2025-05-26 14:59:38,226 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-STATUS-001' 适用于端点 'POST /api/dms/{dms_instance_code}/v1/cd_geo_unit/{version}'。
2025-05-26 14:59:38,226 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-NORMATIVE-URL-LLM-COMPREHENSIVE-001' 适用于端点 'POST /api/dms/{dms_instance_code}/v1/cd_geo_unit/{version}'。
2025-05-26 14:59:38,226 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-CORE-FUNC-001' 适用于端点 'POST /api/dms/{dms_instance_code}/v1/cd_geo_unit/{version}'。
2025-05-26 14:59:38,226 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-SECURITY-001' 适用于端点 'POST /api/dms/{dms_instance_code}/v1/cd_geo_unit/{version}'。
2025-05-26 14:59:38,226 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4001-QUERY' 适用于端点 'POST /api/dms/{dms_instance_code}/v1/cd_geo_unit/{version}'。
2025-05-26 14:59:38,226 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4001-BODY' 适用于端点 'POST /api/dms/{dms_instance_code}/v1/cd_geo_unit/{version}'。
2025-05-26 14:59:38,226 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4003-BODY' 适用于端点 'POST /api/dms/{dms_instance_code}/v1/cd_geo_unit/{version}'。
2025-05-26 14:59:38,226 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4003-QUERY' 适用于端点 'POST /api/dms/{dms_instance_code}/v1/cd_geo_unit/{version}'。
2025-05-26 14:59:38,226 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-STATUS-001' 适用于端点 'PUT /api/dms/{dms_instance_code}/v1/cd_geo_unit'。
2025-05-26 14:59:38,226 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-NORMATIVE-URL-LLM-COMPREHENSIVE-001' 适用于端点 'PUT /api/dms/{dms_instance_code}/v1/cd_geo_unit'。
2025-05-26 14:59:38,226 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-CORE-FUNC-001' 适用于端点 'PUT /api/dms/{dms_instance_code}/v1/cd_geo_unit'。
2025-05-26 14:59:38,226 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-SECURITY-001' 适用于端点 'PUT /api/dms/{dms_instance_code}/v1/cd_geo_unit'。
2025-05-26 14:59:38,226 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4001-QUERY' 适用于端点 'PUT /api/dms/{dms_instance_code}/v1/cd_geo_unit'。
2025-05-26 14:59:38,226 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4001-BODY' 适用于端点 'PUT /api/dms/{dms_instance_code}/v1/cd_geo_unit'。
2025-05-26 14:59:38,226 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4003-BODY' 适用于端点 'PUT /api/dms/{dms_instance_code}/v1/cd_geo_unit'。
2025-05-26 14:59:38,226 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4003-QUERY' 适用于端点 'PUT /api/dms/{dms_instance_code}/v1/cd_geo_unit'。
2025-05-26 14:59:38,226 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-STATUS-001' 适用于端点 'DELETE /api/dms/{dms_instance_code}/v1/cd_geo_unit'。
2025-05-26 14:59:38,226 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-NORMATIVE-URL-LLM-COMPREHENSIVE-001' 适用于端点 'DELETE /api/dms/{dms_instance_code}/v1/cd_geo_unit'。
2025-05-26 14:59:38,226 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-CORE-FUNC-001' 适用于端点 'DELETE /api/dms/{dms_instance_code}/v1/cd_geo_unit'。
2025-05-26 14:59:38,226 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-SECURITY-001' 适用于端点 'DELETE /api/dms/{dms_instance_code}/v1/cd_geo_unit'。
2025-05-26 14:59:38,226 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4001-QUERY' 适用于端点 'DELETE /api/dms/{dms_instance_code}/v1/cd_geo_unit'。
2025-05-26 14:59:38,226 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4001-BODY' 适用于端点 'DELETE /api/dms/{dms_instance_code}/v1/cd_geo_unit'。
2025-05-26 14:59:38,226 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4003-BODY' 适用于端点 'DELETE /api/dms/{dms_instance_code}/v1/cd_geo_unit'。
2025-05-26 14:59:38,226 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4003-QUERY' 适用于端点 'DELETE /api/dms/{dms_instance_code}/v1/cd_geo_unit'。
2025-05-26 14:59:38,226 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-STATUS-001' 适用于端点 'POST /api/dms/{dms_instance_code}/v1/cd_geo_unit'。
2025-05-26 14:59:38,226 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-NORMATIVE-URL-LLM-COMPREHENSIVE-001' 适用于端点 'POST /api/dms/{dms_instance_code}/v1/cd_geo_unit'。
2025-05-26 14:59:38,226 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-CORE-FUNC-001' 适用于端点 'POST /api/dms/{dms_instance_code}/v1/cd_geo_unit'。
2025-05-26 14:59:38,226 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-SECURITY-001' 适用于端点 'POST /api/dms/{dms_instance_code}/v1/cd_geo_unit'。
2025-05-26 14:59:38,226 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4001-QUERY' 适用于端点 'POST /api/dms/{dms_instance_code}/v1/cd_geo_unit'。
2025-05-26 14:59:38,226 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4001-BODY' 适用于端点 'POST /api/dms/{dms_instance_code}/v1/cd_geo_unit'。
2025-05-26 14:59:38,226 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4003-BODY' 适用于端点 'POST /api/dms/{dms_instance_code}/v1/cd_geo_unit'。
2025-05-26 14:59:38,226 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4003-QUERY' 适用于端点 'POST /api/dms/{dms_instance_code}/v1/cd_geo_unit'。
2025-05-26 14:59:38,226 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-STATUS-001' 适用于端点 'GET /api/dms/{dms_instance_code}/v1/cd_geo_unit/{version}/{id}'。
2025-05-26 14:59:38,226 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-NORMATIVE-URL-LLM-COMPREHENSIVE-001' 适用于端点 'GET /api/dms/{dms_instance_code}/v1/cd_geo_unit/{version}/{id}'。
2025-05-26 14:59:38,226 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-CORE-FUNC-001' 适用于端点 'GET /api/dms/{dms_instance_code}/v1/cd_geo_unit/{version}/{id}'。
2025-05-26 14:59:38,226 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-SECURITY-001' 适用于端点 'GET /api/dms/{dms_instance_code}/v1/cd_geo_unit/{version}/{id}'。
2025-05-26 14:59:38,226 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4001-QUERY' 适用于端点 'GET /api/dms/{dms_instance_code}/v1/cd_geo_unit/{version}/{id}'。
2025-05-26 14:59:38,226 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4001-BODY' 适用于端点 'GET /api/dms/{dms_instance_code}/v1/cd_geo_unit/{version}/{id}'。
2025-05-26 14:59:38,226 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4003-BODY' 适用于端点 'GET /api/dms/{dms_instance_code}/v1/cd_geo_unit/{version}/{id}'。
2025-05-26 14:59:38,226 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4003-QUERY' 适用于端点 'GET /api/dms/{dms_instance_code}/v1/cd_geo_unit/{version}/{id}'。
2025-05-26 14:59:38,226 - ddms_compliance_suite.test_orchestrator - INFO - 开始为端点测试: POST /api/dms/{dms_instance_code}/v1/message/push/{schema}/{version} (数据推送接口)
2025-05-26 14:59:38,226 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-STATUS-001' 适用于端点 'POST /api/dms/{dms_instance_code}/v1/message/push/{schema}/{version}'。
2025-05-26 14:59:38,226 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-NORMATIVE-URL-LLM-COMPREHENSIVE-001' 适用于端点 'POST /api/dms/{dms_instance_code}/v1/message/push/{schema}/{version}'。
2025-05-26 14:59:38,226 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-CORE-FUNC-001' 适用于端点 'POST /api/dms/{dms_instance_code}/v1/message/push/{schema}/{version}'。
2025-05-26 14:59:38,226 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-SECURITY-001' 适用于端点 'POST /api/dms/{dms_instance_code}/v1/message/push/{schema}/{version}'。
2025-05-26 14:59:38,226 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4001-QUERY' 适用于端点 'POST /api/dms/{dms_instance_code}/v1/message/push/{schema}/{version}'。
2025-05-26 14:59:38,226 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4001-BODY' 适用于端点 'POST /api/dms/{dms_instance_code}/v1/message/push/{schema}/{version}'。
2025-05-26 14:59:38,226 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4003-BODY' 适用于端点 'POST /api/dms/{dms_instance_code}/v1/message/push/{schema}/{version}'。
2025-05-26 14:59:38,226 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4003-QUERY' 适用于端点 'POST /api/dms/{dms_instance_code}/v1/message/push/{schema}/{version}'。
2025-05-26 14:59:38,226 - ddms_compliance_suite.test_orchestrator - INFO - 端点 'POST /api/dms/{dms_instance_code}/v1/message/push/{schema}/{version}' 发现了 8 个适用的测试用例: ['TC-STATUS-001', 'TC-NORMATIVE-URL-LLM-COMPREHENSIVE-001', 'TC-CORE-FUNC-001', 'TC-SECURITY-001', 'TC-ERROR-4001-QUERY', 'TC-ERROR-4001-BODY', 'TC-ERROR-4003-BODY', 'TC-ERROR-4003-QUERY']
2025-05-26 14:59:38,226 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-STATUS-001' for 'POST /api/dms/{dms_instance_code}/v1/message/push/{schema}/{version}'
2025-05-26 14:59:38,226 - ddms_compliance_suite.test_orchestrator - DEBUG - 成功通过 to_dict() 方法将类型为 <class 'ddms_compliance_suite.input_parser.parser.YAPIEndpoint'> 的 endpoint_spec 转换为字典。
2025-05-26 14:59:38,226 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: <class 'ddms_compliance_suite.input_parser.parser.ParsedYAPISpec'>) to dict using .spec attribute.
2025-05-26 14:59:38,226 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: StatusCode200Check 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_yapi_id', '_yapi_raw_data', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['yapi_categories'])
2025-05-26 14:59:38,226 - testcase.TC-STATUS-001 - INFO - 测试用例 TC-STATUS-001 (基本状态码 200 检查) 已针对端点 'POST /api/dms/{dms_instance_code}/v1/message/push/{schema}/{version}' 初始化。
2025-05-26 14:59:38,226 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-STATUS-001' (基本状态码 200 检查) for endpoint 'POST /api/dms/{dms_instance_code}/v1/message/push/{schema}/{version}'
2025-05-26 14:59:38,226 - ddms_compliance_suite.test_orchestrator - INFO - [post__api_dms_dms_instance_code_v1_message_push_schema_version_135716] 开始为端点 POST_/api/dms/{dms_instance_code}/v1/message/push/{schema}/{version} 准备初始请求数据 (TC: TC-STATUS-001)
2025-05-26 14:59:38,226 - ddms_compliance_suite.test_orchestrator - INFO - [post__api_dms_dms_instance_code_v1_message_push_schema_version_135716] 端点 'POST_/api/dms/{dms_instance_code}/v1/message/push/{schema}/{version}' 的参数未在缓存中找到,开始生成。
2025-05-26 14:59:38,226 - ddms_compliance_suite.test_orchestrator - INFO - [post__api_dms_dms_instance_code_v1_message_push_schema_version_135716] 使用常规方法或LLM未启用为路径参数。
2025-05-26 14:59:38,226 - ddms_compliance_suite.test_orchestrator - INFO - [post__api_dms_dms_instance_code_v1_message_push_schema_version_135716] 使用常规方法生成 path 参数。
2025-05-26 14:59:38,227 - ddms_compliance_suite.test_orchestrator - DEBUG - [post__api_dms_dms_instance_code_v1_message_push_schema_version_135716] 使用 schema 中的 'example' 值 for (context: path parameter 'dms_instance_code'): example_dms_instance_code
2025-05-26 14:59:38,227 - ddms_compliance_suite.test_orchestrator - DEBUG - [post__api_dms_dms_instance_code_v1_message_push_schema_version_135716] 使用 schema 中的 'example' 值 for (context: path parameter 'schema'): example_schema
2025-05-26 14:59:38,227 - ddms_compliance_suite.test_orchestrator - DEBUG - [post__api_dms_dms_instance_code_v1_message_push_schema_version_135716] 使用 schema 中的 'example' 值 for (context: path parameter 'version'): example_version
2025-05-26 14:59:38,227 - ddms_compliance_suite.test_orchestrator - INFO - [post__api_dms_dms_instance_code_v1_message_push_schema_version_135716] 常规方法生成的 path 参数: {'dms_instance_code': 'example_dms_instance_code', 'schema': 'example_schema', 'version': 'example_version'}
2025-05-26 14:59:38,227 - ddms_compliance_suite.test_orchestrator - INFO - [post__api_dms_dms_instance_code_v1_message_push_schema_version_135716] 没有定义 query 参数。
2025-05-26 14:59:38,227 - ddms_compliance_suite.test_orchestrator - INFO - [post__api_dms_dms_instance_code_v1_message_push_schema_version_135716] 使用常规方法或LLM未启用为头部参数。
2025-05-26 14:59:38,227 - ddms_compliance_suite.test_orchestrator - INFO - [post__api_dms_dms_instance_code_v1_message_push_schema_version_135716] 使用常规方法生成 header 参数。
2025-05-26 14:59:38,227 - ddms_compliance_suite.test_orchestrator - DEBUG - [post__api_dms_dms_instance_code_v1_message_push_schema_version_135716] 生成 string 类型数据 ('') for (context: header parameter 'tenant-id'): example_string
2025-05-26 14:59:38,227 - ddms_compliance_suite.test_orchestrator - DEBUG - [post__api_dms_dms_instance_code_v1_message_push_schema_version_135716] 生成 string 类型数据 ('') for (context: header parameter 'Authorization'): example_string
2025-05-26 14:59:38,227 - ddms_compliance_suite.test_orchestrator - INFO - [post__api_dms_dms_instance_code_v1_message_push_schema_version_135716] 常规方法生成的 header 参数: {'tenant-id': 'example_string', 'Authorization': 'example_string'}
2025-05-26 14:59:38,227 - ddms_compliance_suite.test_orchestrator - INFO - [post__api_dms_dms_instance_code_v1_message_push_schema_version_135716] 使用常规方法或LLM未启用/不适用,为请求体。
2025-05-26 14:59:38,227 - ddms_compliance_suite.test_orchestrator - DEBUG - [post__api_dms_dms_instance_code_v1_message_push_schema_version_135716] 生成 object 类型数据 for (context: requestBody). Properties: ['isSearchCount', 'query']
2025-05-26 14:59:38,227 - ddms_compliance_suite.test_orchestrator - DEBUG - [post__api_dms_dms_instance_code_v1_message_push_schema_version_135716] 使用 schema 中的 'default' 值 for (context: requestBody.isSearchCount): True
2025-05-26 14:59:38,227 - ddms_compliance_suite.test_orchestrator - DEBUG - [post__api_dms_dms_instance_code_v1_message_push_schema_version_135716] 生成 object 类型数据 for (context: requestBody.query). Properties: ['dataRegions', 'fields', 'filter', 'groupFields', 'groupFilter', 'sort']
2025-05-26 14:59:38,227 - ddms_compliance_suite.test_orchestrator - DEBUG - [post__api_dms_dms_instance_code_v1_message_push_schema_version_135716] 生成 array 类型数据 for (context: requestBody.query.dataRegions). Items schema: {'description': '数据域JD、DG、TL', 'type': 'string'}, minItems: 1
2025-05-26 14:59:38,227 - ddms_compliance_suite.test_orchestrator - DEBUG - [post__api_dms_dms_instance_code_v1_message_push_schema_version_135716] 生成 string 类型数据 ('') for (context: requestBody.query.dataRegions[0]): example_string
2025-05-26 14:59:38,227 - ddms_compliance_suite.test_orchestrator - DEBUG - [post__api_dms_dms_instance_code_v1_message_push_schema_version_135716] 生成 array 类型数据 for (context: requestBody.query.fields). Items schema: {'description': '查询的字段', 'type': 'string'}, minItems: 1
2025-05-26 14:59:38,227 - ddms_compliance_suite.test_orchestrator - DEBUG - [post__api_dms_dms_instance_code_v1_message_push_schema_version_135716] 生成 string 类型数据 ('') for (context: requestBody.query.fields[0]): example_string
2025-05-26 14:59:38,227 - ddms_compliance_suite.test_orchestrator - DEBUG - [post__api_dms_dms_instance_code_v1_message_push_schema_version_135716] 生成 object 类型数据 for (context: requestBody.query.filter). Properties: ['key', 'logic', 'realValue', 'singleValue', 'subFilter', 'symbol']
2025-05-26 14:59:38,227 - ddms_compliance_suite.test_orchestrator - DEBUG - [post__api_dms_dms_instance_code_v1_message_push_schema_version_135716] 生成 string 类型数据 ('') for (context: requestBody.query.filter.key): example_string
2025-05-26 14:59:38,227 - ddms_compliance_suite.test_orchestrator - DEBUG - [post__api_dms_dms_instance_code_v1_message_push_schema_version_135716] 生成 string 类型数据 ('') for (context: requestBody.query.filter.logic): example_string
2025-05-26 14:59:38,227 - ddms_compliance_suite.test_orchestrator - DEBUG - [post__api_dms_dms_instance_code_v1_message_push_schema_version_135716] 生成 array 类型数据 for (context: requestBody.query.filter.realValue). Items schema: {'description': '条件值', 'type': 'object', 'properties': {}}, minItems: 1
2025-05-26 14:59:38,227 - ddms_compliance_suite.test_orchestrator - DEBUG - [post__api_dms_dms_instance_code_v1_message_push_schema_version_135716] 生成 object 类型数据 for (context: requestBody.query.filter.realValue[0]). Properties: []
2025-05-26 14:59:38,227 - ddms_compliance_suite.test_orchestrator - DEBUG - [post__api_dms_dms_instance_code_v1_message_push_schema_version_135716] 生成 object 类型数据 for (context: requestBody.query.filter.singleValue). Properties: []
2025-05-26 14:59:38,227 - ddms_compliance_suite.test_orchestrator - DEBUG - [post__api_dms_dms_instance_code_v1_message_push_schema_version_135716] 生成 array 类型数据 for (context: requestBody.query.filter.subFilter). Items schema: {'$ref': '#/components/schemas/FilterVO', 'type': 'string'}, minItems: 1
2025-05-26 14:59:38,227 - ddms_compliance_suite.test_orchestrator - DEBUG - [post__api_dms_dms_instance_code_v1_message_push_schema_version_135716] 生成 string 类型数据 ('') for (context: requestBody.query.filter.subFilter[0]): example_string
2025-05-26 14:59:38,227 - ddms_compliance_suite.test_orchestrator - DEBUG - [post__api_dms_dms_instance_code_v1_message_push_schema_version_135716] 生成 string 类型数据 ('') for (context: requestBody.query.filter.symbol): example_string
2025-05-26 14:59:38,227 - ddms_compliance_suite.test_orchestrator - DEBUG - [post__api_dms_dms_instance_code_v1_message_push_schema_version_135716] 生成 array 类型数据 for (context: requestBody.query.groupFields). Items schema: {'description': '分组字段group by', 'type': 'string'}, minItems: 1
2025-05-26 14:59:38,227 - ddms_compliance_suite.test_orchestrator - DEBUG - [post__api_dms_dms_instance_code_v1_message_push_schema_version_135716] 生成 string 类型数据 ('') for (context: requestBody.query.groupFields[0]): example_string
2025-05-26 14:59:38,227 - ddms_compliance_suite.test_orchestrator - DEBUG - [post__api_dms_dms_instance_code_v1_message_push_schema_version_135716] 生成 object 类型数据 for (context: requestBody.query.groupFilter). Properties: ['key', 'logic', 'realValue', 'singleValue', 'subFilter', 'symbol']
2025-05-26 14:59:38,227 - ddms_compliance_suite.test_orchestrator - DEBUG - [post__api_dms_dms_instance_code_v1_message_push_schema_version_135716] 生成 string 类型数据 ('') for (context: requestBody.query.groupFilter.key): example_string
2025-05-26 14:59:38,227 - ddms_compliance_suite.test_orchestrator - DEBUG - [post__api_dms_dms_instance_code_v1_message_push_schema_version_135716] 生成 string 类型数据 ('') for (context: requestBody.query.groupFilter.logic): example_string
2025-05-26 14:59:38,227 - ddms_compliance_suite.test_orchestrator - DEBUG - [post__api_dms_dms_instance_code_v1_message_push_schema_version_135716] 生成 array 类型数据 for (context: requestBody.query.groupFilter.realValue). Items schema: {'description': '条件值', 'type': 'object', 'properties': {}}, minItems: 1
2025-05-26 14:59:38,227 - ddms_compliance_suite.test_orchestrator - DEBUG - [post__api_dms_dms_instance_code_v1_message_push_schema_version_135716] 生成 object 类型数据 for (context: requestBody.query.groupFilter.realValue[0]). Properties: []
2025-05-26 14:59:38,227 - ddms_compliance_suite.test_orchestrator - DEBUG - [post__api_dms_dms_instance_code_v1_message_push_schema_version_135716] 生成 object 类型数据 for (context: requestBody.query.groupFilter.singleValue). Properties: []
2025-05-26 14:59:38,227 - ddms_compliance_suite.test_orchestrator - DEBUG - [post__api_dms_dms_instance_code_v1_message_push_schema_version_135716] 生成 array 类型数据 for (context: requestBody.query.groupFilter.subFilter). Items schema: {'$ref': '#/components/schemas/FilterVO', 'type': 'string'}, minItems: 1
2025-05-26 14:59:38,227 - ddms_compliance_suite.test_orchestrator - DEBUG - [post__api_dms_dms_instance_code_v1_message_push_schema_version_135716] 生成 string 类型数据 ('') for (context: requestBody.query.groupFilter.subFilter[0]): example_string
2025-05-26 14:59:38,227 - ddms_compliance_suite.test_orchestrator - DEBUG - [post__api_dms_dms_instance_code_v1_message_push_schema_version_135716] 生成 string 类型数据 ('') for (context: requestBody.query.groupFilter.symbol): example_string
2025-05-26 14:59:38,227 - ddms_compliance_suite.test_orchestrator - DEBUG - [post__api_dms_dms_instance_code_v1_message_push_schema_version_135716] 生成 object 类型数据 for (context: requestBody.query.sort). Properties: []
2025-05-26 14:59:38,227 - ddms_compliance_suite.test_orchestrator - INFO - [post__api_dms_dms_instance_code_v1_message_push_schema_version_135716] 端点 'POST_/api/dms/{dms_instance_code}/v1/message/push/{schema}/{version}' 的参数已生成并存入缓存。
2025-05-26 14:59:38,227 - ddms_compliance_suite.test_orchestrator - DEBUG - [post__api_dms_dms_instance_code_v1_message_push_schema_version_135716] (新生成) 准备的请求数据: method=POST, path_params={'dms_instance_code': 'example_dms_instance_code', 'schema': 'example_schema', 'version': 'example_version'}, query_params={}, headers=['Accept', 'Content-Type', 'tenant-id', 'Authorization'], body_type=dict
2025-05-26 14:59:38,289 - testcase.TC-STATUS-001 - INFO - 状态码验证通过: 200 == 200 for http://127.0.0.1:4523/m1/6389742-6086420-default/api/dms/example_dms_instance_code/v1/message/push/example_schema/example_version
2025-05-26 14:59:38,289 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-STATUS-001' 执行成功。
2025-05-26 14:59:38,289 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-STATUS-001' 执行完毕,状态: 通过
2025-05-26 14:59:38,289 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-NORMATIVE-URL-LLM-COMPREHENSIVE-001' for 'POST /api/dms/{dms_instance_code}/v1/message/push/{schema}/{version}'
2025-05-26 14:59:38,289 - ddms_compliance_suite.test_orchestrator - DEBUG - 成功通过 to_dict() 方法将类型为 <class 'ddms_compliance_suite.input_parser.parser.YAPIEndpoint'> 的 endpoint_spec 转换为字典。
2025-05-26 14:59:38,289 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: <class 'ddms_compliance_suite.input_parser.parser.ParsedYAPISpec'>) to dict using .spec attribute.
2025-05-26 14:59:38,289 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: ComprehensiveURLCheckLLMCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_yapi_id', '_yapi_raw_data', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['yapi_categories'])
2025-05-26 14:59:38,289 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-NORMATIVE-URL-LLM-COMPREHENSIVE-001' (综合URL规范与RESTful风格检查 (LLM)) for endpoint 'POST /api/dms/{dms_instance_code}/v1/message/push/{schema}/{version}'
2025-05-26 14:59:38,289 - ddms_compliance_suite.test_orchestrator - INFO - [post__api_dms_dms_instance_code_v1_message_push_schema_version_135716] 开始为端点 POST_/api/dms/{dms_instance_code}/v1/message/push/{schema}/{version} 准备初始请求数据 (TC: TC-NORMATIVE-URL-LLM-COMPREHENSIVE-001)
2025-05-26 14:59:38,289 - ddms_compliance_suite.test_orchestrator - INFO - [post__api_dms_dms_instance_code_v1_message_push_schema_version_135716] 从缓存加载了端点 'POST_/api/dms/{dms_instance_code}/v1/message/push/{schema}/{version}' 的LLM参数。
2025-05-26 14:59:38,289 - ddms_compliance_suite.test_orchestrator - DEBUG - [post__api_dms_dms_instance_code_v1_message_push_schema_version_135716] (缓存加载) 准备的请求数据: method=POST, path_params={'dms_instance_code': 'example_dms_instance_code', 'schema': 'example_schema', 'version': 'example_version'}, query_params={}, headers=['Accept', 'Content-Type', 'tenant-id', 'Authorization'], body_type=dict
2025-05-26 14:59:38,289 - testcase.TC-NORMATIVE-URL-LLM-COMPREHENSIVE-001 - INFO - 向LLM发送请求评估路径: /api/dms/{dms_instance_code}/v1/message/push/{schema}/{version} (POST)
2025-05-26 14:59:38,289 - ddms_compliance_suite.llm_utils.llm_service - DEBUG - LLM API Request Payload:
{
"model": "qwen-plus",
"messages": [
{
"role": "system",
"content": "你是一位API设计评审专家专注于评估API的URL规范性和RESTful风格。你的输出必须是严格的JSON格式。"
},
{
"role": "user",
"content": "\n请扮演一位资深的API设计评审员。我将提供一个API端点的路径模板、HTTP方法以及可能的接口名称。\n请根据以下石油行业API设计规范评估此API端点并以严格的JSON格式返回您的评估结果。\nJSON对象应包含一个名为 \"assessments\" 的键,其值为一个对象列表,每个对象代表对一个标准的评估,包含 \"standard_name\" (字符串), \"is_compliant\" (布尔值), 和 \"reason\" (字符串) 三个键。\n\nAPI端点信息:\n- HTTP方法: POST\n- 路径模板: /api/dms/{dms_instance_code}/v1/message/push/{schema}/{version}\n- 路径中提取的参数名: [dms_instance_code, schema, version]\n\n评估标准:\n\n1. **接口名称规范 (接口名称需要你从路径模板中提取,一般是路径中除了参数名以外的最后的一个单词)**:\n - 规则: 采用'动词+名词'结构,明确业务语义 (例如: GetWellLog, SubmitSeismicJob)。\n - standard_name: \"interface_naming_convention\"\n\n2. **HTTP方法使用规范**:\n - 规则: 遵循RESTful规范GET用于数据检索, POST用于创建资源, PUT用于更新资源, DELETE用于删除资源。\n - standard_name: \"http_method_usage\"\n\n3. **URL路径结构规范**:\n - 规则: 格式为 `<前缀>/<专业领域>/v<版本号>/<资源类型>` (例如: /logging/v1.2/wells, /seismicprospecting/v1.0/datasets)。\n - 前缀: 示例: /api/dms\n - 专业领域: 专业领域示例: seismicprospecting, welllogging, reservoirevaluation\n - 版本号: 语义化版本,例如 v1, v1.0, v2.1.3。\n - 资源类型: 通常为名词复数。\n - standard_name: \"url_path_structure\"\n\n4. **URL路径参数命名规范**:\n - 规则: 路径参数(如果存在)必须使用全小写字母(可以是一个单词)或小写字母加下划线命名(这是多个单词的情况),并能反映资源的唯一标识 (例如: {well_id},{version},{schema})。\n - standard_name: \"url_path_parameter_naming\"\n\n5. **资源命名规范 (在路径中)**:\n - 规则: 资源集合应使用名词的复数形式表示 (例如 `/wells`, `/logs`);应优先使用石油行业的标准术语 (例如用 `trajectory` 而非 `path` 来表示井轨迹)。\n - standard_name: \"resource_naming_in_path\"\n - standard_name: \"resource\"\n - standard_name: \"schema\"\n - standard_name: \"version\"\n\n\n\n请确保您的输出是一个可以被 `json.loads()` 直接解析的JSON对象。\n例如:\n{\n \"assessments\": [\n {\n \"standard_name\": \"interface_naming_convention\",\n \"is_compliant\": true,\n \"reason\": \"接口名称 'GetWellboreTrajectory' 符合动词+名词结构。\"\n },\n {\n \"standard_name\": \"http_method_usage\",\n \"is_compliant\": true,\n \"reason\": \"GET方法用于检索资源符合规范。\"\n }\n // ... 其他标准的评估 ...\n ]\n}\n"
}
],
"max_tokens": 1024,
"temperature": 0.2
}
2025-05-26 14:59:51,690 - ddms_compliance_suite.llm_utils.llm_service - DEBUG - LLM API Response:
{
"choices": [
{
"message": {
"role": "assistant",
"content": "```json\n{\n \"assessments\": [\n {\n \"standard_name\": \"interface_naming_convention\",\n \"is_compliant\": false,\n \"reason\": \"接口名称 'push' 不符合动词+名词结构,建议改为更明确的业务语义名称,例如 'PushMessage'。\"\n },\n {\n \"standard_name\": \"http_method_usage\",\n \"is_compliant\": true,\n \"reason\": \"POST方法用于创建资源如推送消息符合RESTful规范。\"\n },\n {\n \"standard_name\": \"url_path_structure\",\n \"is_compliant\": true,\n \"reason\": \"URL路径结构为 '/api/dms/{dms_instance_code}/v1/message/push/{schema}/{version}',符合 `<前缀>/<专业领域>/v<版本号>/<资源类型>` 的格式。\"\n },\n {\n \"standard_name\": \"url_path_parameter_naming\",\n \"is_compliant\": true,\n \"reason\": \"路径参数 {dms_instance_code}, {schema}, {version} 均使用小写字母或下划线命名,符合命名规范。\"\n },\n {\n \"standard_name\": \"resource_naming_in_path\",\n \"is_compliant\": false,\n \"reason\": \"路径中的 'message' 和 'push' 不完全符合石油行业标准术语,建议使用更具体的资源集合名称(如 'messages')。此外,'push' 应作为操作而非资源名处理。\"\n }\n ]\n}\n```"
},
"finish_reason": "stop",
"index": 0,
"logprobs": null
}
],
"object": "chat.completion",
"usage": {
"prompt_tokens": 810,
"completion_tokens": 324,
"total_tokens": 1134,
"prompt_tokens_details": {
"cached_tokens": 0
}
},
"created": 1748242792,
"system_fingerprint": null,
"model": "qwen-plus",
"id": "chatcmpl-08a69523-abf1-9131-bcc6-b5d6f16e94ec"
}
2025-05-26 14:59:51,692 - testcase.TC-NORMATIVE-URL-LLM-COMPREHENSIVE-001 - WARNING - LLM评估 - 标准 'interface_naming_convention' for '/api/dms/{dms_instance_code}/v1/message/push/{schema}/{version}': 不符合。原因: 接口名称 'push' 不符合动词+名词结构,建议改为更明确的业务语义名称,例如 'PushMessage'。
2025-05-26 14:59:51,692 - testcase.TC-NORMATIVE-URL-LLM-COMPREHENSIVE-001 - INFO - LLM评估 - 标准 'http_method_usage' for '/api/dms/{dms_instance_code}/v1/message/push/{schema}/{version}': 符合。原因: POST方法用于创建资源如推送消息符合RESTful规范。
2025-05-26 14:59:51,692 - testcase.TC-NORMATIVE-URL-LLM-COMPREHENSIVE-001 - INFO - LLM评估 - 标准 'url_path_structure' for '/api/dms/{dms_instance_code}/v1/message/push/{schema}/{version}': 符合。原因: URL路径结构为 '/api/dms/{dms_instance_code}/v1/message/push/{schema}/{version}',符合 `<前缀>/<专业领域>/v<版本号>/<资源类型>` 的格式。
2025-05-26 14:59:51,692 - testcase.TC-NORMATIVE-URL-LLM-COMPREHENSIVE-001 - INFO - LLM评估 - 标准 'url_path_parameter_naming' for '/api/dms/{dms_instance_code}/v1/message/push/{schema}/{version}': 符合。原因: 路径参数 {dms_instance_code}, {schema}, {version} 均使用小写字母或下划线命名,符合命名规范。
2025-05-26 14:59:51,692 - testcase.TC-NORMATIVE-URL-LLM-COMPREHENSIVE-001 - WARNING - LLM评估 - 标准 'resource_naming_in_path' for '/api/dms/{dms_instance_code}/v1/message/push/{schema}/{version}': 不符合。原因: 路径中的 'message' 和 'push' 不完全符合石油行业标准术语,建议使用更具体的资源集合名称(如 'messages')。此外,'push' 应作为操作而非资源名处理。
2025-05-26 14:59:51,766 - ddms_compliance_suite.test_orchestrator - DEBUG -  ❌ 测试用例 'TC-NORMATIVE-URL-LLM-COMPREHENSIVE-001' 执行失败。
2025-05-26 14:59:51,767 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-NORMATIVE-URL-LLM-COMPREHENSIVE-001' 执行完毕,状态: 失败
2025-05-26 14:59:51,767 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-CORE-FUNC-001' for 'POST /api/dms/{dms_instance_code}/v1/message/push/{schema}/{version}'
2025-05-26 14:59:51,767 - ddms_compliance_suite.test_orchestrator - DEBUG - 成功通过 to_dict() 方法将类型为 <class 'ddms_compliance_suite.input_parser.parser.YAPIEndpoint'> 的 endpoint_spec 转换为字典。
2025-05-26 14:59:51,767 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: <class 'ddms_compliance_suite.input_parser.parser.ParsedYAPISpec'>) to dict using .spec attribute.
2025-05-26 14:59:51,767 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: ResponseSchemaValidationCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_yapi_id', '_yapi_raw_data', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['yapi_categories'])
2025-05-26 14:59:51,767 - testcase.TC-CORE-FUNC-001 - INFO - 测试用例 'TC-CORE-FUNC-001' 已为端点 'POST /api/dms/{dms_instance_code}/v1/message/push/{schema}/{version}' 初始化。
2025-05-26 14:59:51,767 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-CORE-FUNC-001' (Response Body JSON Schema Validation) for endpoint 'POST /api/dms/{dms_instance_code}/v1/message/push/{schema}/{version}'
2025-05-26 14:59:51,767 - ddms_compliance_suite.test_orchestrator - INFO - [post__api_dms_dms_instance_code_v1_message_push_schema_version_135716] 开始为端点 POST_/api/dms/{dms_instance_code}/v1/message/push/{schema}/{version} 准备初始请求数据 (TC: TC-CORE-FUNC-001)
2025-05-26 14:59:51,767 - ddms_compliance_suite.test_orchestrator - INFO - [post__api_dms_dms_instance_code_v1_message_push_schema_version_135716] 从缓存加载了端点 'POST_/api/dms/{dms_instance_code}/v1/message/push/{schema}/{version}' 的LLM参数。
2025-05-26 14:59:51,767 - ddms_compliance_suite.test_orchestrator - DEBUG - [post__api_dms_dms_instance_code_v1_message_push_schema_version_135716] (缓存加载) 准备的请求数据: method=POST, path_params={'dms_instance_code': 'example_dms_instance_code', 'schema': 'example_schema', 'version': 'example_version'}, query_params={}, headers=['Accept', 'Content-Type', 'tenant-id', 'Authorization'], body_type=dict
2025-05-26 14:59:51,793 - testcase.TC-CORE-FUNC-001 - INFO - 响应包含JSON体但在API规范中未找到针对状态码 200 的JSON schema。跳过schema验证。
2025-05-26 14:59:51,793 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-CORE-FUNC-001' 执行成功。
2025-05-26 14:59:51,793 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-CORE-FUNC-001' 执行完毕,状态: 通过
2025-05-26 14:59:51,793 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-SECURITY-001' for 'POST /api/dms/{dms_instance_code}/v1/message/push/{schema}/{version}'
2025-05-26 14:59:51,793 - ddms_compliance_suite.test_orchestrator - DEBUG - 成功通过 to_dict() 方法将类型为 <class 'ddms_compliance_suite.input_parser.parser.YAPIEndpoint'> 的 endpoint_spec 转换为字典。
2025-05-26 14:59:51,793 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: <class 'ddms_compliance_suite.input_parser.parser.ParsedYAPISpec'>) to dict using .spec attribute.
2025-05-26 14:59:51,793 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: HTTPSMandatoryCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_yapi_id', '_yapi_raw_data', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['yapi_categories'])
2025-05-26 14:59:51,793 - testcase.TC-SECURITY-001 - INFO - 测试用例 'TC-SECURITY-001' 已为端点 'POST /api/dms/{dms_instance_code}/v1/message/push/{schema}/{version}' 初始化。
2025-05-26 14:59:51,793 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-SECURITY-001' (HTTPS Protocol Mandatory Verification) for endpoint 'POST /api/dms/{dms_instance_code}/v1/message/push/{schema}/{version}'
2025-05-26 14:59:51,793 - ddms_compliance_suite.test_orchestrator - INFO - [post__api_dms_dms_instance_code_v1_message_push_schema_version_135716] 开始为端点 POST_/api/dms/{dms_instance_code}/v1/message/push/{schema}/{version} 准备初始请求数据 (TC: TC-SECURITY-001)
2025-05-26 14:59:51,793 - ddms_compliance_suite.test_orchestrator - INFO - [post__api_dms_dms_instance_code_v1_message_push_schema_version_135716] 从缓存加载了端点 'POST_/api/dms/{dms_instance_code}/v1/message/push/{schema}/{version}' 的LLM参数。
2025-05-26 14:59:51,793 - ddms_compliance_suite.test_orchestrator - DEBUG - [post__api_dms_dms_instance_code_v1_message_push_schema_version_135716] (缓存加载) 准备的请求数据: method=POST, path_params={'dms_instance_code': 'example_dms_instance_code', 'schema': 'example_schema', 'version': 'example_version'}, query_params={}, headers=['Accept', 'Content-Type', 'tenant-id', 'Authorization'], body_type=dict
2025-05-26 14:59:51,793 - testcase.TC-SECURITY-001 - WARNING - 原始URL 'http://127.0.0.1:4523/m1/6389742-6086420-default/api/dms/example_dms_instance_code/v1/message/push/example_schema/example_version' 不是HTTPS。跳过此测试用例的URL修改。
2025-05-26 14:59:51,812 - testcase.TC-SECURITY-001 - ERROR - 安全漏洞API允许通过HTTP成功响应 (200)。
2025-05-26 14:59:51,812 - ddms_compliance_suite.test_orchestrator - DEBUG -  ❌ 测试用例 'TC-SECURITY-001' 执行失败。
2025-05-26 14:59:51,812 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-SECURITY-001' 执行完毕,状态: 失败
2025-05-26 14:59:51,812 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-ERROR-4001-QUERY' for 'POST /api/dms/{dms_instance_code}/v1/message/push/{schema}/{version}'
2025-05-26 14:59:51,812 - ddms_compliance_suite.test_orchestrator - DEBUG - 成功通过 to_dict() 方法将类型为 <class 'ddms_compliance_suite.input_parser.parser.YAPIEndpoint'> 的 endpoint_spec 转换为字典。
2025-05-26 14:59:51,812 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: <class 'ddms_compliance_suite.input_parser.parser.ParsedYAPISpec'>) to dict using .spec attribute.
2025-05-26 14:59:51,812 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: TypeMismatchQueryParamCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_yapi_id', '_yapi_raw_data', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['yapi_categories'])
2025-05-26 14:59:51,812 - testcase.TC-ERROR-4001-QUERY - CRITICAL - TC-ERROR-4001-QUERY _try_find_mismatch_target_in_query >>> STARTED
2025-05-26 14:59:51,812 - testcase.TC-ERROR-4001-QUERY - DEBUG - 开始为端点 POST /api/dms/{dms_instance_code}/v1/message/push/{schema}/{version} 初始化查询参数类型不匹配测试的目标字段查找。
2025-05-26 14:59:51,812 - testcase.TC-ERROR-4001-QUERY - CRITICAL - TC-ERROR-4001-QUERY _try_find_mismatch_target_in_query >>> Parameters to be processed: [{'name': 'dms_instance_code', 'in': 'path', 'required': True, 'description': '注册实例code\n井筒中心 well_kd_wellbore_ideas01', 'schema': {'type': 'string', 'example': 'example_dms_instance_code'}}, {'name': 'schema', 'in': 'path', 'required': True, 'description': '', 'schema': {'type': 'string', 'example': 'example_schema'}}, {'name': 'version', 'in': 'path', 'required': True, 'description': '', 'schema': {'type': 'string', 'example': 'example_version'}}, {'name': 'tenant-id', 'in': 'header', 'required': True, 'description': 'tenant-id (Only:undefined)', 'schema': {'type': 'string'}}, {'name': 'Authorization', 'in': 'header', 'required': True, 'description': 'Authorization (Only:undefined)', 'schema': {'type': 'string'}}]
2025-05-26 14:59:51,812 - testcase.TC-ERROR-4001-QUERY - DEBUG - 传入的参数列表 (在 TC-ERROR-4001-QUERY中): [{'name': 'dms_instance_code', 'in': 'path', 'required': True, 'description': '注册实例code\n井筒中心 well_kd_wellbore_ideas01', 'schema': {'type': 'string', 'example': 'example_dms_instance_code'}}, {'name': 'schema', 'in': 'path', 'required': True, 'description': '', 'schema': {'type': 'string', 'example': 'example_schema'}}, {'name': 'version', 'in': 'path', 'required': True, 'description': '', 'schema': {'type': 'string', 'example': 'example_version'}}, {'name': 'tenant-id', 'in': 'header', 'required': True, 'description': 'tenant-id (Only:undefined)', 'schema': {'type': 'string'}}, {'name': 'Authorization', 'in': 'header', 'required': True, 'description': 'Authorization (Only:undefined)', 'schema': {'type': 'string'}}]
2025-05-26 14:59:51,812 - testcase.TC-ERROR-4001-QUERY - INFO - 最终,在端点 POST /api/dms/{dms_instance_code}/v1/message/push/{schema}/{version} 的查询参数中,均未找到可用于测试类型不匹配的字段。
2025-05-26 14:59:51,812 - testcase.TC-ERROR-4001-QUERY - CRITICAL - TC-ERROR-4001-QUERY __INIT__ >>> STARTED
2025-05-26 14:59:51,812 - testcase.TC-ERROR-4001-QUERY - DEBUG - 开始为端点 POST /api/dms/{dms_instance_code}/v1/message/push/{schema}/{version} 初始化查询参数类型不匹配测试的目标字段查找。
2025-05-26 14:59:51,812 - testcase.TC-ERROR-4001-QUERY - CRITICAL - TC-ERROR-4001-QUERY __INIT__ >>> Parameters to be processed: [{'name': 'dms_instance_code', 'in': 'path', 'required': True, 'description': '注册实例code\n井筒中心 well_kd_wellbore_ideas01', 'schema': {'type': 'string', 'example': 'example_dms_instance_code'}}, {'name': 'schema', 'in': 'path', 'required': True, 'description': '', 'schema': {'type': 'string', 'example': 'example_schema'}}, {'name': 'version', 'in': 'path', 'required': True, 'description': '', 'schema': {'type': 'string', 'example': 'example_version'}}, {'name': 'tenant-id', 'in': 'header', 'required': True, 'description': 'tenant-id (Only:undefined)', 'schema': {'type': 'string'}}, {'name': 'Authorization', 'in': 'header', 'required': True, 'description': 'Authorization (Only:undefined)', 'schema': {'type': 'string'}}]
2025-05-26 14:59:51,812 - testcase.TC-ERROR-4001-QUERY - DEBUG - 传入的参数列表 (在 TC-ERROR-4001-QUERY中): [{'name': 'dms_instance_code', 'in': 'path', 'required': True, 'description': '注册实例code\n井筒中心 well_kd_wellbore_ideas01', 'schema': {'type': 'string', 'example': 'example_dms_instance_code'}}, {'name': 'schema', 'in': 'path', 'required': True, 'description': '', 'schema': {'type': 'string', 'example': 'example_schema'}}, {'name': 'version', 'in': 'path', 'required': True, 'description': '', 'schema': {'type': 'string', 'example': 'example_version'}}, {'name': 'tenant-id', 'in': 'header', 'required': True, 'description': 'tenant-id (Only:undefined)', 'schema': {'type': 'string'}}, {'name': 'Authorization', 'in': 'header', 'required': True, 'description': 'Authorization (Only:undefined)', 'schema': {'type': 'string'}}]
2025-05-26 14:59:51,812 - testcase.TC-ERROR-4001-QUERY - INFO - 最终,在端点 POST /api/dms/{dms_instance_code}/v1/message/push/{schema}/{version} 的查询参数中,均未找到可用于测试类型不匹配的字段。
2025-05-26 14:59:51,812 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-ERROR-4001-QUERY' (Error Code 4001 - Query Parameter Type Mismatch Validation) for endpoint 'POST /api/dms/{dms_instance_code}/v1/message/push/{schema}/{version}'
2025-05-26 14:59:51,812 - ddms_compliance_suite.test_orchestrator - INFO - [post__api_dms_dms_instance_code_v1_message_push_schema_version_135716] 开始为端点 POST_/api/dms/{dms_instance_code}/v1/message/push/{schema}/{version} 准备初始请求数据 (TC: TC-ERROR-4001-QUERY)
2025-05-26 14:59:51,812 - ddms_compliance_suite.test_orchestrator - INFO - [post__api_dms_dms_instance_code_v1_message_push_schema_version_135716] 从缓存加载了端点 'POST_/api/dms/{dms_instance_code}/v1/message/push/{schema}/{version}' 的LLM参数。
2025-05-26 14:59:51,812 - ddms_compliance_suite.test_orchestrator - DEBUG - [post__api_dms_dms_instance_code_v1_message_push_schema_version_135716] (缓存加载) 准备的请求数据: method=POST, path_params={'dms_instance_code': 'example_dms_instance_code', 'schema': 'example_schema', 'version': 'example_version'}, query_params={}, headers=['Accept', 'Content-Type', 'tenant-id', 'Authorization'], body_type=dict
2025-05-26 14:59:51,812 - testcase.TC-ERROR-4001-QUERY - DEBUG - Hook: generate_headers, current keys: ['Accept', 'Content-Type', 'tenant-id', 'Authorization']
2025-05-26 14:59:51,812 - testcase.TC-ERROR-4001-QUERY - DEBUG - TC-ERROR-4001-QUERY is focused on query parameters, generate_request_body will not modify the body.
2025-05-26 14:59:51,812 - testcase.TC-ERROR-4001-QUERY - DEBUG - Hook: modify_request_url, original URL: http://127.0.0.1:4523/m1/6389742-6086420-default/api/dms/example_dms_instance_code/v1/message/push/example_schema/example_version
2025-05-26 14:59:51,812 - testcase.TC-ERROR-4001-QUERY - DEBUG - Test case 'TC-ERROR-4001-QUERY' did not modify the URL via modify_request_url hook.
2025-05-26 14:59:51,812 - testcase.TC-ERROR-4001-QUERY - DEBUG - Hook: validate_request_url, url: http://127.0.0.1:4523/m1/6389742-6086420-default/api/dms/example_dms_instance_code/v1/message/push/example_schema/example_version
2025-05-26 14:59:51,813 - testcase.TC-ERROR-4001-QUERY - DEBUG - Hook: validate_request_headers, header keys: ['Accept', 'Content-Type', 'tenant-id', 'Authorization']
2025-05-26 14:59:51,813 - testcase.TC-ERROR-4001-QUERY - DEBUG - Hook: validate_request_body, body type: <class 'dict'>
2025-05-26 14:59:51,832 - testcase.TC-ERROR-4001-QUERY - INFO - TC-ERROR-4001-QUERY: 由于未识别到目标查询参数字段,跳过类型不匹配测试。
2025-05-26 14:59:51,832 - testcase.TC-ERROR-4001-QUERY - DEBUG - Hook: check_performance, elapsed: 0.01949787139892578
2025-05-26 14:59:51,832 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-ERROR-4001-QUERY' 执行成功。
2025-05-26 14:59:51,832 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-ERROR-4001-QUERY' 执行完毕,状态: 通过
2025-05-26 14:59:51,832 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-ERROR-4001-BODY' for 'POST /api/dms/{dms_instance_code}/v1/message/push/{schema}/{version}'
2025-05-26 14:59:51,832 - ddms_compliance_suite.test_orchestrator - DEBUG - 成功通过 to_dict() 方法将类型为 <class 'ddms_compliance_suite.input_parser.parser.YAPIEndpoint'> 的 endpoint_spec 转换为字典。
2025-05-26 14:59:51,833 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: <class 'ddms_compliance_suite.input_parser.parser.ParsedYAPISpec'>) to dict using .spec attribute.
2025-05-26 14:59:51,833 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: TypeMismatchBodyCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_yapi_id', '_yapi_raw_data', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['yapi_categories'])
2025-05-26 14:59:51,833 - testcase.TC-ERROR-4001-BODY - CRITICAL - TC-ERROR-4001-BODY __INIT__ >>> STARTED
2025-05-26 14:59:51,833 - testcase.TC-ERROR-4001-BODY - DEBUG - 开始为端点 POST /api/dms/{dms_instance_code}/v1/message/push/{schema}/{version} 初始化请求体类型不匹配测试的目标字段查找。
2025-05-26 14:59:51,833 - testcase.TC-ERROR-4001-BODY - DEBUG - 从顶层 'requestBody' 中获取到 schema: ['properties', 'type', '$$ref']
2025-05-26 14:59:51,833 - testcase.TC-ERROR-4001-BODY - DEBUG - 最终用于检查的请求体 schema: ['properties', 'type', '$$ref']
2025-05-26 14:59:51,833 - testcase.TC-ERROR-4001-BODY - DEBUG - Enter _find_target_field_in_schema for base_path: '', schema_to_search keys: ['properties', 'type', '$$ref']
2025-05-26 14:59:51,833 - testcase.TC-ERROR-4001-BODY - DEBUG - Path: '', Resolved Schema Type: 'object', Keys: ['properties', 'type', '$$ref']
2025-05-26 14:59:51,833 - testcase.TC-ERROR-4001-BODY - DEBUG - Path: '', Type is 'object'. Checking properties: ['isSearchCount', 'query']
2025-05-26 14:59:51,833 - testcase.TC-ERROR-4001-BODY - DEBUG - Path: 'isSearchCount', Property Schema (Original): {'default': True, 'description': '是否统计总条数', 'type': 'boolean'}
2025-05-26 14:59:51,833 - testcase.TC-ERROR-4001-BODY - DEBUG - Path: 'isSearchCount', Property Schema (Resolved): {'default': True, 'description': '是否统计总条数', 'type': 'boolean'}
2025-05-26 14:59:51,833 - testcase.TC-ERROR-4001-BODY - DEBUG - Path: 'isSearchCount', Resolved Property Type: 'boolean'
2025-05-26 14:59:51,833 - testcase.TC-ERROR-4001-BODY - INFO - 目标字段(请求体): 'isSearchCount' (原始类型: 'boolean') FOUND!
2025-05-26 14:59:51,833 - testcase.TC-ERROR-4001-BODY - INFO - 类型不匹配测试的目标字段(请求体): isSearchCount原始类型: boolean
2025-05-26 14:59:51,833 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-ERROR-4001-BODY' (Error Code 4001 - Request Body Type Mismatch Validation) for endpoint 'POST /api/dms/{dms_instance_code}/v1/message/push/{schema}/{version}'
2025-05-26 14:59:51,833 - ddms_compliance_suite.test_orchestrator - INFO - [post__api_dms_dms_instance_code_v1_message_push_schema_version_135716] 开始为端点 POST_/api/dms/{dms_instance_code}/v1/message/push/{schema}/{version} 准备初始请求数据 (TC: TC-ERROR-4001-BODY)
2025-05-26 14:59:51,833 - ddms_compliance_suite.test_orchestrator - INFO - [post__api_dms_dms_instance_code_v1_message_push_schema_version_135716] 从缓存加载了端点 'POST_/api/dms/{dms_instance_code}/v1/message/push/{schema}/{version}' 的LLM参数。
2025-05-26 14:59:51,833 - ddms_compliance_suite.test_orchestrator - DEBUG - [post__api_dms_dms_instance_code_v1_message_push_schema_version_135716] (缓存加载) 准备的请求数据: method=POST, path_params={'dms_instance_code': 'example_dms_instance_code', 'schema': 'example_schema', 'version': 'example_version'}, query_params={}, headers=['Accept', 'Content-Type', 'tenant-id', 'Authorization'], body_type=dict
2025-05-26 14:59:51,833 - testcase.TC-ERROR-4001-BODY - DEBUG - TC-ERROR-4001-BODY is focused on request body, generate_query_params will not modify query parameters.
2025-05-26 14:59:51,833 - testcase.TC-ERROR-4001-BODY - DEBUG - Hook: generate_headers, current keys: ['Accept', 'Content-Type', 'tenant-id', 'Authorization']
2025-05-26 14:59:51,833 - testcase.TC-ERROR-4001-BODY - DEBUG - 准备修改请求体以测试类型不匹配。目标路径: ['isSearchCount'], 原始类型: boolean
2025-05-26 14:59:51,833 - testcase.TC-ERROR-4001-BODY - INFO - 在路径 ['isSearchCount'] (键 'isSearchCount') 处,将值从 'True' 修改为 'not-a-boolean' (原始类型: boolean)
2025-05-26 14:59:51,833 - testcase.TC-ERROR-4001-BODY - DEBUG - Hook: modify_request_url, original URL: http://127.0.0.1:4523/m1/6389742-6086420-default/api/dms/example_dms_instance_code/v1/message/push/example_schema/example_version
2025-05-26 14:59:51,833 - testcase.TC-ERROR-4001-BODY - DEBUG - Test case 'TC-ERROR-4001-BODY' did not modify the URL via modify_request_url hook.
2025-05-26 14:59:51,833 - testcase.TC-ERROR-4001-BODY - DEBUG - Hook: validate_request_url, url: http://127.0.0.1:4523/m1/6389742-6086420-default/api/dms/example_dms_instance_code/v1/message/push/example_schema/example_version
2025-05-26 14:59:51,833 - testcase.TC-ERROR-4001-BODY - DEBUG - Hook: validate_request_headers, header keys: ['Accept', 'Content-Type', 'tenant-id', 'Authorization']
2025-05-26 14:59:51,834 - testcase.TC-ERROR-4001-BODY - DEBUG - Hook: validate_request_body, body type: <class 'dict'>
2025-05-26 14:59:51,850 - testcase.TC-ERROR-4001-BODY - WARNING - TC-ERROR-4001-BODY: 类型不匹配测试失败。字段: body.isSearchCount, 期望状态码: [400, 422], 实际: 200。
2025-05-26 14:59:51,851 - testcase.TC-ERROR-4001-BODY - DEBUG - Hook: check_performance, elapsed: 0.016666889190673828
2025-05-26 14:59:51,851 - ddms_compliance_suite.test_orchestrator - DEBUG -  ❌ 测试用例 'TC-ERROR-4001-BODY' 执行失败。
2025-05-26 14:59:51,851 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-ERROR-4001-BODY' 执行完毕,状态: 失败
2025-05-26 14:59:51,851 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-ERROR-4003-BODY' for 'POST /api/dms/{dms_instance_code}/v1/message/push/{schema}/{version}'
2025-05-26 14:59:51,851 - ddms_compliance_suite.test_orchestrator - DEBUG - 成功通过 to_dict() 方法将类型为 <class 'ddms_compliance_suite.input_parser.parser.YAPIEndpoint'> 的 endpoint_spec 转换为字典。
2025-05-26 14:59:51,851 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: <class 'ddms_compliance_suite.input_parser.parser.ParsedYAPISpec'>) to dict using .spec attribute.
2025-05-26 14:59:51,851 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: MissingRequiredFieldBodyCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_yapi_id', '_yapi_raw_data', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['yapi_categories'])
2025-05-26 14:59:51,851 - testcase.TC-ERROR-4003-BODY - INFO - 在请求体 schema 中未找到可用于测试 "必填字段缺失" 的字段。
2025-05-26 14:59:51,851 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-ERROR-4003-BODY' (Error Code 4003 - Missing Required Request Body Field Validation) for endpoint 'POST /api/dms/{dms_instance_code}/v1/message/push/{schema}/{version}'
2025-05-26 14:59:51,851 - ddms_compliance_suite.test_orchestrator - INFO - [post__api_dms_dms_instance_code_v1_message_push_schema_version_135716] 开始为端点 POST_/api/dms/{dms_instance_code}/v1/message/push/{schema}/{version} 准备初始请求数据 (TC: TC-ERROR-4003-BODY)
2025-05-26 14:59:51,851 - ddms_compliance_suite.test_orchestrator - INFO - [post__api_dms_dms_instance_code_v1_message_push_schema_version_135716] 从缓存加载了端点 'POST_/api/dms/{dms_instance_code}/v1/message/push/{schema}/{version}' 的LLM参数。
2025-05-26 14:59:51,851 - ddms_compliance_suite.test_orchestrator - DEBUG - [post__api_dms_dms_instance_code_v1_message_push_schema_version_135716] (缓存加载) 准备的请求数据: method=POST, path_params={'dms_instance_code': 'example_dms_instance_code', 'schema': 'example_schema', 'version': 'example_version'}, query_params={}, headers=['Accept', 'Content-Type', 'tenant-id', 'Authorization'], body_type=dict
2025-05-26 14:59:51,872 - testcase.TC-ERROR-4003-BODY - INFO - 由于未识别到可移除的必填请求体字段,跳过此测试用例。
2025-05-26 14:59:51,872 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-ERROR-4003-BODY' 执行成功。
2025-05-26 14:59:51,872 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-ERROR-4003-BODY' 执行完毕,状态: 通过
2025-05-26 14:59:51,872 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-ERROR-4003-QUERY' for 'POST /api/dms/{dms_instance_code}/v1/message/push/{schema}/{version}'
2025-05-26 14:59:51,872 - ddms_compliance_suite.test_orchestrator - DEBUG - 成功通过 to_dict() 方法将类型为 <class 'ddms_compliance_suite.input_parser.parser.YAPIEndpoint'> 的 endpoint_spec 转换为字典。
2025-05-26 14:59:51,872 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: <class 'ddms_compliance_suite.input_parser.parser.ParsedYAPISpec'>) to dict using .spec attribute.
2025-05-26 14:59:51,872 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: MissingRequiredFieldQueryCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_yapi_id', '_yapi_raw_data', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['yapi_categories'])
2025-05-26 14:59:51,873 - testcase.TC-ERROR-4003-QUERY - INFO - 在此端点规范中未找到可用于测试 "必填查询参数缺失" 的字段。
2025-05-26 14:59:51,873 - testcase.TC-ERROR-4003-QUERY - INFO - 测试用例 TC-ERROR-4003-QUERY (Error Code 4003 - Missing Required Query Parameter Validation) 已针对端点 'POST /api/dms/{dms_instance_code}/v1/message/push/{schema}/{version}' 初始化。Target param to remove: None
2025-05-26 14:59:51,873 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-ERROR-4003-QUERY' (Error Code 4003 - Missing Required Query Parameter Validation) for endpoint 'POST /api/dms/{dms_instance_code}/v1/message/push/{schema}/{version}'
2025-05-26 14:59:51,873 - ddms_compliance_suite.test_orchestrator - INFO - [post__api_dms_dms_instance_code_v1_message_push_schema_version_135716] 开始为端点 POST_/api/dms/{dms_instance_code}/v1/message/push/{schema}/{version} 准备初始请求数据 (TC: TC-ERROR-4003-QUERY)
2025-05-26 14:59:51,873 - ddms_compliance_suite.test_orchestrator - INFO - [post__api_dms_dms_instance_code_v1_message_push_schema_version_135716] 从缓存加载了端点 'POST_/api/dms/{dms_instance_code}/v1/message/push/{schema}/{version}' 的LLM参数。
2025-05-26 14:59:51,873 - ddms_compliance_suite.test_orchestrator - DEBUG - [post__api_dms_dms_instance_code_v1_message_push_schema_version_135716] (缓存加载) 准备的请求数据: method=POST, path_params={'dms_instance_code': 'example_dms_instance_code', 'schema': 'example_schema', 'version': 'example_version'}, query_params={}, headers=['Accept', 'Content-Type', 'tenant-id', 'Authorization'], body_type=dict
2025-05-26 14:59:51,895 - testcase.TC-ERROR-4003-QUERY - INFO - 由于未识别到可移除的必填查询参数,跳过此测试用例。
2025-05-26 14:59:51,895 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-ERROR-4003-QUERY' 执行成功。
2025-05-26 14:59:51,895 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-ERROR-4003-QUERY' 执行完毕,状态: 通过
2025-05-26 14:59:51,896 - ddms_compliance_suite.test_orchestrator - INFO - 端点 'POST /api/dms/{dms_instance_code}/v1/message/push/{schema}/{version}' 测试完成,最终状态: 失败
2025-05-26 14:59:51,896 - ddms_compliance_suite.test_orchestrator - INFO - 开始为端点测试: POST /api/dms/{dms_instance_code}/v1/cd_geo_unit/{version} (地质单元列表查询)
2025-05-26 14:59:51,896 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-STATUS-001' 适用于端点 'POST /api/dms/{dms_instance_code}/v1/cd_geo_unit/{version}'。
2025-05-26 14:59:51,896 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-NORMATIVE-URL-LLM-COMPREHENSIVE-001' 适用于端点 'POST /api/dms/{dms_instance_code}/v1/cd_geo_unit/{version}'。
2025-05-26 14:59:51,896 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-CORE-FUNC-001' 适用于端点 'POST /api/dms/{dms_instance_code}/v1/cd_geo_unit/{version}'。
2025-05-26 14:59:51,896 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-SECURITY-001' 适用于端点 'POST /api/dms/{dms_instance_code}/v1/cd_geo_unit/{version}'。
2025-05-26 14:59:51,896 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4001-QUERY' 适用于端点 'POST /api/dms/{dms_instance_code}/v1/cd_geo_unit/{version}'。
2025-05-26 14:59:51,896 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4001-BODY' 适用于端点 'POST /api/dms/{dms_instance_code}/v1/cd_geo_unit/{version}'。
2025-05-26 14:59:51,896 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4003-BODY' 适用于端点 'POST /api/dms/{dms_instance_code}/v1/cd_geo_unit/{version}'。
2025-05-26 14:59:51,896 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4003-QUERY' 适用于端点 'POST /api/dms/{dms_instance_code}/v1/cd_geo_unit/{version}'。
2025-05-26 14:59:51,896 - ddms_compliance_suite.test_orchestrator - INFO - 端点 'POST /api/dms/{dms_instance_code}/v1/cd_geo_unit/{version}' 发现了 8 个适用的测试用例: ['TC-STATUS-001', 'TC-NORMATIVE-URL-LLM-COMPREHENSIVE-001', 'TC-CORE-FUNC-001', 'TC-SECURITY-001', 'TC-ERROR-4001-QUERY', 'TC-ERROR-4001-BODY', 'TC-ERROR-4003-BODY', 'TC-ERROR-4003-QUERY']
2025-05-26 14:59:51,896 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-STATUS-001' for 'POST /api/dms/{dms_instance_code}/v1/cd_geo_unit/{version}'
2025-05-26 14:59:51,897 - ddms_compliance_suite.test_orchestrator - DEBUG - 成功通过 to_dict() 方法将类型为 <class 'ddms_compliance_suite.input_parser.parser.YAPIEndpoint'> 的 endpoint_spec 转换为字典。
2025-05-26 14:59:51,897 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: <class 'ddms_compliance_suite.input_parser.parser.ParsedYAPISpec'>) to dict using .spec attribute.
2025-05-26 14:59:51,897 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: StatusCode200Check 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_yapi_id', '_yapi_raw_data', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['yapi_categories'])
2025-05-26 14:59:51,897 - testcase.TC-STATUS-001 - INFO - 测试用例 TC-STATUS-001 (基本状态码 200 检查) 已针对端点 'POST /api/dms/{dms_instance_code}/v1/cd_geo_unit/{version}' 初始化。
2025-05-26 14:59:51,897 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-STATUS-001' (基本状态码 200 检查) for endpoint 'POST /api/dms/{dms_instance_code}/v1/cd_geo_unit/{version}'
2025-05-26 14:59:51,897 - ddms_compliance_suite.test_orchestrator - INFO - [post__api_dms_dms_instance_code_v1_cd_geo_unit_version_135751] 开始为端点 POST_/api/dms/{dms_instance_code}/v1/cd_geo_unit/{version} 准备初始请求数据 (TC: TC-STATUS-001)
2025-05-26 14:59:51,897 - ddms_compliance_suite.test_orchestrator - INFO - [post__api_dms_dms_instance_code_v1_cd_geo_unit_version_135751] 端点 'POST_/api/dms/{dms_instance_code}/v1/cd_geo_unit/{version}' 的参数未在缓存中找到,开始生成。
2025-05-26 14:59:51,898 - ddms_compliance_suite.test_orchestrator - INFO - [post__api_dms_dms_instance_code_v1_cd_geo_unit_version_135751] 使用常规方法或LLM未启用为路径参数。
2025-05-26 14:59:51,898 - ddms_compliance_suite.test_orchestrator - INFO - [post__api_dms_dms_instance_code_v1_cd_geo_unit_version_135751] 使用常规方法生成 path 参数。
2025-05-26 14:59:51,898 - ddms_compliance_suite.test_orchestrator - DEBUG - [post__api_dms_dms_instance_code_v1_cd_geo_unit_version_135751] 使用 schema 中的 'example' 值 for (context: path parameter 'dms_instance_code'): example_dms_instance_code
2025-05-26 14:59:51,898 - ddms_compliance_suite.test_orchestrator - DEBUG - [post__api_dms_dms_instance_code_v1_cd_geo_unit_version_135751] 使用 schema 中的 'example' 值 for (context: path parameter 'version'): 1.0.0
2025-05-26 14:59:51,898 - ddms_compliance_suite.test_orchestrator - INFO - [post__api_dms_dms_instance_code_v1_cd_geo_unit_version_135751] 常规方法生成的 path 参数: {'dms_instance_code': 'example_dms_instance_code', 'version': '1.0.0'}
2025-05-26 14:59:51,899 - ddms_compliance_suite.test_orchestrator - INFO - [post__api_dms_dms_instance_code_v1_cd_geo_unit_version_135751] 使用常规方法或LLM未启用为查询参数。
2025-05-26 14:59:51,899 - ddms_compliance_suite.test_orchestrator - INFO - [post__api_dms_dms_instance_code_v1_cd_geo_unit_version_135751] 使用常规方法生成 query 参数。
2025-05-26 14:59:51,899 - ddms_compliance_suite.test_orchestrator - DEBUG - [post__api_dms_dms_instance_code_v1_cd_geo_unit_version_135751] 生成 string 类型数据 ('') for (context: query parameter 'pageNo'): example_string
2025-05-26 14:59:51,899 - ddms_compliance_suite.test_orchestrator - DEBUG - [post__api_dms_dms_instance_code_v1_cd_geo_unit_version_135751] 生成 string 类型数据 ('') for (context: query parameter 'pageSize'): example_string
2025-05-26 14:59:51,899 - ddms_compliance_suite.test_orchestrator - INFO - [post__api_dms_dms_instance_code_v1_cd_geo_unit_version_135751] 常规方法生成的 query 参数: {'pageNo': 'example_string', 'pageSize': 'example_string'}
2025-05-26 14:59:51,899 - ddms_compliance_suite.test_orchestrator - INFO - [post__api_dms_dms_instance_code_v1_cd_geo_unit_version_135751] 使用常规方法或LLM未启用为头部参数。
2025-05-26 14:59:51,899 - ddms_compliance_suite.test_orchestrator - INFO - [post__api_dms_dms_instance_code_v1_cd_geo_unit_version_135751] 使用常规方法生成 header 参数。
2025-05-26 14:59:51,899 - ddms_compliance_suite.test_orchestrator - DEBUG - [post__api_dms_dms_instance_code_v1_cd_geo_unit_version_135751] 生成 string 类型数据 ('') for (context: header parameter 'tenant-id'): example_string
2025-05-26 14:59:51,899 - ddms_compliance_suite.test_orchestrator - DEBUG - [post__api_dms_dms_instance_code_v1_cd_geo_unit_version_135751] 生成 string 类型数据 ('') for (context: header parameter 'Authorization'): example_string
2025-05-26 14:59:51,899 - ddms_compliance_suite.test_orchestrator - INFO - [post__api_dms_dms_instance_code_v1_cd_geo_unit_version_135751] 常规方法生成的 header 参数: {'tenant-id': 'example_string', 'Authorization': 'example_string'}
2025-05-26 14:59:51,899 - ddms_compliance_suite.test_orchestrator - INFO - [post__api_dms_dms_instance_code_v1_cd_geo_unit_version_135751] 使用常规方法或LLM未启用/不适用,为请求体。
2025-05-26 14:59:51,899 - ddms_compliance_suite.test_orchestrator - DEBUG - [post__api_dms_dms_instance_code_v1_cd_geo_unit_version_135751] 生成 object 类型数据 for (context: requestBody). Properties: ['isSearchCount', 'query']
2025-05-26 14:59:51,899 - ddms_compliance_suite.test_orchestrator - DEBUG - [post__api_dms_dms_instance_code_v1_cd_geo_unit_version_135751] 使用 schema 中的 'default' 值 for (context: requestBody.isSearchCount): True
2025-05-26 14:59:51,899 - ddms_compliance_suite.test_orchestrator - DEBUG - [post__api_dms_dms_instance_code_v1_cd_geo_unit_version_135751] 生成 object 类型数据 for (context: requestBody.query). Properties: ['dataRegions', 'fields', 'filter', 'groupFields', 'groupFilter', 'sort']
2025-05-26 14:59:51,899 - ddms_compliance_suite.test_orchestrator - DEBUG - [post__api_dms_dms_instance_code_v1_cd_geo_unit_version_135751] 生成 array 类型数据 for (context: requestBody.query.dataRegions). Items schema: {'description': '数据域JD、DG、TL', 'type': 'string'}, minItems: 1
2025-05-26 14:59:51,900 - ddms_compliance_suite.test_orchestrator - DEBUG - [post__api_dms_dms_instance_code_v1_cd_geo_unit_version_135751] 生成 string 类型数据 ('') for (context: requestBody.query.dataRegions[0]): example_string
2025-05-26 14:59:51,900 - ddms_compliance_suite.test_orchestrator - DEBUG - [post__api_dms_dms_instance_code_v1_cd_geo_unit_version_135751] 生成 array 类型数据 for (context: requestBody.query.fields). Items schema: {'description': '查询的字段', 'type': 'string'}, minItems: 1
2025-05-26 14:59:51,900 - ddms_compliance_suite.test_orchestrator - DEBUG - [post__api_dms_dms_instance_code_v1_cd_geo_unit_version_135751] 生成 string 类型数据 ('') for (context: requestBody.query.fields[0]): example_string
2025-05-26 14:59:51,900 - ddms_compliance_suite.test_orchestrator - DEBUG - [post__api_dms_dms_instance_code_v1_cd_geo_unit_version_135751] 生成 object 类型数据 for (context: requestBody.query.filter). Properties: ['key', 'logic', 'realValue', 'singleValue', 'subFilter', 'symbol']
2025-05-26 14:59:51,900 - ddms_compliance_suite.test_orchestrator - DEBUG - [post__api_dms_dms_instance_code_v1_cd_geo_unit_version_135751] 生成 string 类型数据 ('') for (context: requestBody.query.filter.key): example_string
2025-05-26 14:59:51,900 - ddms_compliance_suite.test_orchestrator - DEBUG - [post__api_dms_dms_instance_code_v1_cd_geo_unit_version_135751] 生成 string 类型数据 ('') for (context: requestBody.query.filter.logic): example_string
2025-05-26 14:59:51,900 - ddms_compliance_suite.test_orchestrator - DEBUG - [post__api_dms_dms_instance_code_v1_cd_geo_unit_version_135751] 生成 array 类型数据 for (context: requestBody.query.filter.realValue). Items schema: {'description': '条件值', 'type': 'object', 'properties': {}}, minItems: 1
2025-05-26 14:59:51,900 - ddms_compliance_suite.test_orchestrator - DEBUG - [post__api_dms_dms_instance_code_v1_cd_geo_unit_version_135751] 生成 object 类型数据 for (context: requestBody.query.filter.realValue[0]). Properties: []
2025-05-26 14:59:51,900 - ddms_compliance_suite.test_orchestrator - DEBUG - [post__api_dms_dms_instance_code_v1_cd_geo_unit_version_135751] 生成 object 类型数据 for (context: requestBody.query.filter.singleValue). Properties: []
2025-05-26 14:59:51,900 - ddms_compliance_suite.test_orchestrator - DEBUG - [post__api_dms_dms_instance_code_v1_cd_geo_unit_version_135751] 生成 array 类型数据 for (context: requestBody.query.filter.subFilter). Items schema: {'$ref': '#/components/schemas/FilterVO', 'type': 'string'}, minItems: 1
2025-05-26 14:59:51,900 - ddms_compliance_suite.test_orchestrator - DEBUG - [post__api_dms_dms_instance_code_v1_cd_geo_unit_version_135751] 生成 string 类型数据 ('') for (context: requestBody.query.filter.subFilter[0]): example_string
2025-05-26 14:59:51,900 - ddms_compliance_suite.test_orchestrator - DEBUG - [post__api_dms_dms_instance_code_v1_cd_geo_unit_version_135751] 生成 string 类型数据 ('') for (context: requestBody.query.filter.symbol): example_string
2025-05-26 14:59:51,900 - ddms_compliance_suite.test_orchestrator - DEBUG - [post__api_dms_dms_instance_code_v1_cd_geo_unit_version_135751] 生成 array 类型数据 for (context: requestBody.query.groupFields). Items schema: {'description': '分组字段group by', 'type': 'string'}, minItems: 1
2025-05-26 14:59:51,900 - ddms_compliance_suite.test_orchestrator - DEBUG - [post__api_dms_dms_instance_code_v1_cd_geo_unit_version_135751] 生成 string 类型数据 ('') for (context: requestBody.query.groupFields[0]): example_string
2025-05-26 14:59:51,900 - ddms_compliance_suite.test_orchestrator - DEBUG - [post__api_dms_dms_instance_code_v1_cd_geo_unit_version_135751] 生成 object 类型数据 for (context: requestBody.query.groupFilter). Properties: ['key', 'logic', 'realValue', 'singleValue', 'subFilter', 'symbol']
2025-05-26 14:59:51,900 - ddms_compliance_suite.test_orchestrator - DEBUG - [post__api_dms_dms_instance_code_v1_cd_geo_unit_version_135751] 生成 string 类型数据 ('') for (context: requestBody.query.groupFilter.key): example_string
2025-05-26 14:59:51,900 - ddms_compliance_suite.test_orchestrator - DEBUG - [post__api_dms_dms_instance_code_v1_cd_geo_unit_version_135751] 生成 string 类型数据 ('') for (context: requestBody.query.groupFilter.logic): example_string
2025-05-26 14:59:51,900 - ddms_compliance_suite.test_orchestrator - DEBUG - [post__api_dms_dms_instance_code_v1_cd_geo_unit_version_135751] 生成 array 类型数据 for (context: requestBody.query.groupFilter.realValue). Items schema: {'description': '条件值', 'type': 'object', 'properties': {}}, minItems: 1
2025-05-26 14:59:51,900 - ddms_compliance_suite.test_orchestrator - DEBUG - [post__api_dms_dms_instance_code_v1_cd_geo_unit_version_135751] 生成 object 类型数据 for (context: requestBody.query.groupFilter.realValue[0]). Properties: []
2025-05-26 14:59:51,900 - ddms_compliance_suite.test_orchestrator - DEBUG - [post__api_dms_dms_instance_code_v1_cd_geo_unit_version_135751] 生成 object 类型数据 for (context: requestBody.query.groupFilter.singleValue). Properties: []
2025-05-26 14:59:51,900 - ddms_compliance_suite.test_orchestrator - DEBUG - [post__api_dms_dms_instance_code_v1_cd_geo_unit_version_135751] 生成 array 类型数据 for (context: requestBody.query.groupFilter.subFilter). Items schema: {'$ref': '#/components/schemas/FilterVO', 'type': 'string'}, minItems: 1
2025-05-26 14:59:51,900 - ddms_compliance_suite.test_orchestrator - DEBUG - [post__api_dms_dms_instance_code_v1_cd_geo_unit_version_135751] 生成 string 类型数据 ('') for (context: requestBody.query.groupFilter.subFilter[0]): example_string
2025-05-26 14:59:51,900 - ddms_compliance_suite.test_orchestrator - DEBUG - [post__api_dms_dms_instance_code_v1_cd_geo_unit_version_135751] 生成 string 类型数据 ('') for (context: requestBody.query.groupFilter.symbol): example_string
2025-05-26 14:59:51,900 - ddms_compliance_suite.test_orchestrator - DEBUG - [post__api_dms_dms_instance_code_v1_cd_geo_unit_version_135751] 生成 object 类型数据 for (context: requestBody.query.sort). Properties: []
2025-05-26 14:59:51,901 - ddms_compliance_suite.test_orchestrator - INFO - [post__api_dms_dms_instance_code_v1_cd_geo_unit_version_135751] 端点 'POST_/api/dms/{dms_instance_code}/v1/cd_geo_unit/{version}' 的参数已生成并存入缓存。
2025-05-26 14:59:51,901 - ddms_compliance_suite.test_orchestrator - DEBUG - [post__api_dms_dms_instance_code_v1_cd_geo_unit_version_135751] (新生成) 准备的请求数据: method=POST, path_params={'dms_instance_code': 'example_dms_instance_code', 'version': '1.0.0'}, query_params={'pageNo': 'example_string', 'pageSize': 'example_string'}, headers=['Accept', 'Content-Type', 'tenant-id', 'Authorization'], body_type=dict
2025-05-26 14:59:51,919 - testcase.TC-STATUS-001 - INFO - 状态码验证通过: 200 == 200 for http://127.0.0.1:4523/m1/6389742-6086420-default/api/dms/example_dms_instance_code/v1/cd_geo_unit/1.0.0
2025-05-26 14:59:51,919 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-STATUS-001' 执行成功。
2025-05-26 14:59:51,919 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-STATUS-001' 执行完毕,状态: 通过
2025-05-26 14:59:51,919 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-NORMATIVE-URL-LLM-COMPREHENSIVE-001' for 'POST /api/dms/{dms_instance_code}/v1/cd_geo_unit/{version}'
2025-05-26 14:59:51,919 - ddms_compliance_suite.test_orchestrator - DEBUG - 成功通过 to_dict() 方法将类型为 <class 'ddms_compliance_suite.input_parser.parser.YAPIEndpoint'> 的 endpoint_spec 转换为字典。
2025-05-26 14:59:51,919 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: <class 'ddms_compliance_suite.input_parser.parser.ParsedYAPISpec'>) to dict using .spec attribute.
2025-05-26 14:59:51,919 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: ComprehensiveURLCheckLLMCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_yapi_id', '_yapi_raw_data', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['yapi_categories'])
2025-05-26 14:59:51,919 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-NORMATIVE-URL-LLM-COMPREHENSIVE-001' (综合URL规范与RESTful风格检查 (LLM)) for endpoint 'POST /api/dms/{dms_instance_code}/v1/cd_geo_unit/{version}'
2025-05-26 14:59:51,919 - ddms_compliance_suite.test_orchestrator - INFO - [post__api_dms_dms_instance_code_v1_cd_geo_unit_version_135751] 开始为端点 POST_/api/dms/{dms_instance_code}/v1/cd_geo_unit/{version} 准备初始请求数据 (TC: TC-NORMATIVE-URL-LLM-COMPREHENSIVE-001)
2025-05-26 14:59:51,919 - ddms_compliance_suite.test_orchestrator - INFO - [post__api_dms_dms_instance_code_v1_cd_geo_unit_version_135751] 从缓存加载了端点 'POST_/api/dms/{dms_instance_code}/v1/cd_geo_unit/{version}' 的LLM参数。
2025-05-26 14:59:51,919 - ddms_compliance_suite.test_orchestrator - DEBUG - [post__api_dms_dms_instance_code_v1_cd_geo_unit_version_135751] (缓存加载) 准备的请求数据: method=POST, path_params={'dms_instance_code': 'example_dms_instance_code', 'version': '1.0.0'}, query_params={'pageNo': 'example_string', 'pageSize': 'example_string'}, headers=['Accept', 'Content-Type', 'tenant-id', 'Authorization'], body_type=dict
2025-05-26 14:59:51,919 - testcase.TC-NORMATIVE-URL-LLM-COMPREHENSIVE-001 - INFO - 向LLM发送请求评估路径: /api/dms/{dms_instance_code}/v1/cd_geo_unit/{version} (POST)
2025-05-26 14:59:51,920 - ddms_compliance_suite.llm_utils.llm_service - DEBUG - LLM API Request Payload:
{
"model": "qwen-plus",
"messages": [
{
"role": "system",
"content": "你是一位API设计评审专家专注于评估API的URL规范性和RESTful风格。你的输出必须是严格的JSON格式。"
},
{
"role": "user",
"content": "\n请扮演一位资深的API设计评审员。我将提供一个API端点的路径模板、HTTP方法以及可能的接口名称。\n请根据以下石油行业API设计规范评估此API端点并以严格的JSON格式返回您的评估结果。\nJSON对象应包含一个名为 \"assessments\" 的键,其值为一个对象列表,每个对象代表对一个标准的评估,包含 \"standard_name\" (字符串), \"is_compliant\" (布尔值), 和 \"reason\" (字符串) 三个键。\n\nAPI端点信息:\n- HTTP方法: POST\n- 路径模板: /api/dms/{dms_instance_code}/v1/cd_geo_unit/{version}\n- 路径中提取的参数名: [dms_instance_code, version]\n\n评估标准:\n\n1. **接口名称规范 (接口名称需要你从路径模板中提取,一般是路径中除了参数名以外的最后的一个单词)**:\n - 规则: 采用'动词+名词'结构,明确业务语义 (例如: GetWellLog, SubmitSeismicJob)。\n - standard_name: \"interface_naming_convention\"\n\n2. **HTTP方法使用规范**:\n - 规则: 遵循RESTful规范GET用于数据检索, POST用于创建资源, PUT用于更新资源, DELETE用于删除资源。\n - standard_name: \"http_method_usage\"\n\n3. **URL路径结构规范**:\n - 规则: 格式为 `<前缀>/<专业领域>/v<版本号>/<资源类型>` (例如: /logging/v1.2/wells, /seismicprospecting/v1.0/datasets)。\n - 前缀: 示例: /api/dms\n - 专业领域: 专业领域示例: seismicprospecting, welllogging, reservoirevaluation\n - 版本号: 语义化版本,例如 v1, v1.0, v2.1.3。\n - 资源类型: 通常为名词复数。\n - standard_name: \"url_path_structure\"\n\n4. **URL路径参数命名规范**:\n - 规则: 路径参数(如果存在)必须使用全小写字母(可以是一个单词)或小写字母加下划线命名(这是多个单词的情况),并能反映资源的唯一标识 (例如: {well_id},{version},{schema})。\n - standard_name: \"url_path_parameter_naming\"\n\n5. **资源命名规范 (在路径中)**:\n - 规则: 资源集合应使用名词的复数形式表示 (例如 `/wells`, `/logs`);应优先使用石油行业的标准术语 (例如用 `trajectory` 而非 `path` 来表示井轨迹)。\n - standard_name: \"resource_naming_in_path\"\n - standard_name: \"resource\"\n - standard_name: \"schema\"\n - standard_name: \"version\"\n\n\n\n请确保您的输出是一个可以被 `json.loads()` 直接解析的JSON对象。\n例如:\n{\n \"assessments\": [\n {\n \"standard_name\": \"interface_naming_convention\",\n \"is_compliant\": true,\n \"reason\": \"接口名称 'GetWellboreTrajectory' 符合动词+名词结构。\"\n },\n {\n \"standard_name\": \"http_method_usage\",\n \"is_compliant\": true,\n \"reason\": \"GET方法用于检索资源符合规范。\"\n }\n // ... 其他标准的评估 ...\n ]\n}\n"
}
],
"max_tokens": 1024,
"temperature": 0.2
}
2025-05-26 15:00:11,869 - ddms_compliance_suite.llm_utils.llm_service - DEBUG - LLM API Response:
{
"choices": [
{
"message": {
"role": "assistant",
"content": "{\n \"assessments\": [\n {\n \"standard_name\": \"interface_naming_convention\",\n \"is_compliant\": false,\n \"reason\": \"接口名称 'cd_geo_unit' 不符合动词+名词结构,无法明确表达业务语义。\"\n },\n {\n \"standard_name\": \"http_method_usage\",\n \"is_compliant\": true,\n \"reason\": \"POST方法用于创建资源符合RESTful规范。\"\n },\n {\n \"standard_name\": \"url_path_structure\",\n \"is_compliant\": false,\n \"reason\": \"路径模板不符合 `<前缀>/<专业领域>/v<版本号>/<资源类型>` 的结构,其中 `cd_geo_unit` 不是石油行业的标准术语,且未明确表示资源集合的复数形式。\"\n },\n {\n \"standard_name\": \"url_path_parameter_naming\",\n \"is_compliant\": true,\n \"reason\": \"路径参数 `{dms_instance_code}` 和 `{version}` 均使用小写字母命名,符合命名规则。\"\n },\n {\n \"standard_name\": \"resource_naming_in_path\",\n \"is_compliant\": false,\n \"reason\": \"`cd_geo_unit` 应使用名词复数形式表示资源集合,并优先采用石油行业的标准术语。例如,可以考虑更改为 `geo_units` 或其他更具体的术语。\"\n }\n ]\n}"
},
"finish_reason": "stop",
"index": 0,
"logprobs": null
}
],
"object": "chat.completion",
"usage": {
"prompt_tokens": 807,
"completion_tokens": 298,
"total_tokens": 1105,
"prompt_tokens_details": {
"cached_tokens": 0
}
},
"created": 1748242812,
"system_fingerprint": null,
"model": "qwen-plus",
"id": "chatcmpl-3ce6bbde-e584-9c6f-9024-897fcdee1dad"
}
2025-05-26 15:00:11,874 - testcase.TC-NORMATIVE-URL-LLM-COMPREHENSIVE-001 - WARNING - LLM评估 - 标准 'interface_naming_convention' for '/api/dms/{dms_instance_code}/v1/cd_geo_unit/{version}': 不符合。原因: 接口名称 'cd_geo_unit' 不符合动词+名词结构,无法明确表达业务语义。
2025-05-26 15:00:11,875 - testcase.TC-NORMATIVE-URL-LLM-COMPREHENSIVE-001 - INFO - LLM评估 - 标准 'http_method_usage' for '/api/dms/{dms_instance_code}/v1/cd_geo_unit/{version}': 符合。原因: POST方法用于创建资源符合RESTful规范。
2025-05-26 15:00:11,875 - testcase.TC-NORMATIVE-URL-LLM-COMPREHENSIVE-001 - WARNING - LLM评估 - 标准 'url_path_structure' for '/api/dms/{dms_instance_code}/v1/cd_geo_unit/{version}': 不符合。原因: 路径模板不符合 `<前缀>/<专业领域>/v<版本号>/<资源类型>` 的结构,其中 `cd_geo_unit` 不是石油行业的标准术语,且未明确表示资源集合的复数形式。
2025-05-26 15:00:11,875 - testcase.TC-NORMATIVE-URL-LLM-COMPREHENSIVE-001 - INFO - LLM评估 - 标准 'url_path_parameter_naming' for '/api/dms/{dms_instance_code}/v1/cd_geo_unit/{version}': 符合。原因: 路径参数 `{dms_instance_code}` 和 `{version}` 均使用小写字母命名,符合命名规则。
2025-05-26 15:00:11,875 - testcase.TC-NORMATIVE-URL-LLM-COMPREHENSIVE-001 - WARNING - LLM评估 - 标准 'resource_naming_in_path' for '/api/dms/{dms_instance_code}/v1/cd_geo_unit/{version}': 不符合。原因: `cd_geo_unit` 应使用名词复数形式表示资源集合,并优先采用石油行业的标准术语。例如,可以考虑更改为 `geo_units` 或其他更具体的术语。
2025-05-26 15:00:11,957 - ddms_compliance_suite.test_orchestrator - DEBUG -  ❌ 测试用例 'TC-NORMATIVE-URL-LLM-COMPREHENSIVE-001' 执行失败。
2025-05-26 15:00:11,957 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-NORMATIVE-URL-LLM-COMPREHENSIVE-001' 执行完毕,状态: 失败
2025-05-26 15:00:11,957 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-CORE-FUNC-001' for 'POST /api/dms/{dms_instance_code}/v1/cd_geo_unit/{version}'
2025-05-26 15:00:11,957 - ddms_compliance_suite.test_orchestrator - DEBUG - 成功通过 to_dict() 方法将类型为 <class 'ddms_compliance_suite.input_parser.parser.YAPIEndpoint'> 的 endpoint_spec 转换为字典。
2025-05-26 15:00:11,957 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: <class 'ddms_compliance_suite.input_parser.parser.ParsedYAPISpec'>) to dict using .spec attribute.
2025-05-26 15:00:11,957 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: ResponseSchemaValidationCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_yapi_id', '_yapi_raw_data', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['yapi_categories'])
2025-05-26 15:00:11,957 - testcase.TC-CORE-FUNC-001 - INFO - 测试用例 'TC-CORE-FUNC-001' 已为端点 'POST /api/dms/{dms_instance_code}/v1/cd_geo_unit/{version}' 初始化。
2025-05-26 15:00:11,958 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-CORE-FUNC-001' (Response Body JSON Schema Validation) for endpoint 'POST /api/dms/{dms_instance_code}/v1/cd_geo_unit/{version}'
2025-05-26 15:00:11,958 - ddms_compliance_suite.test_orchestrator - INFO - [post__api_dms_dms_instance_code_v1_cd_geo_unit_version_135751] 开始为端点 POST_/api/dms/{dms_instance_code}/v1/cd_geo_unit/{version} 准备初始请求数据 (TC: TC-CORE-FUNC-001)
2025-05-26 15:00:11,958 - ddms_compliance_suite.test_orchestrator - INFO - [post__api_dms_dms_instance_code_v1_cd_geo_unit_version_135751] 从缓存加载了端点 'POST_/api/dms/{dms_instance_code}/v1/cd_geo_unit/{version}' 的LLM参数。
2025-05-26 15:00:11,958 - ddms_compliance_suite.test_orchestrator - DEBUG - [post__api_dms_dms_instance_code_v1_cd_geo_unit_version_135751] (缓存加载) 准备的请求数据: method=POST, path_params={'dms_instance_code': 'example_dms_instance_code', 'version': '1.0.0'}, query_params={'pageNo': 'example_string', 'pageSize': 'example_string'}, headers=['Accept', 'Content-Type', 'tenant-id', 'Authorization'], body_type=dict
2025-05-26 15:00:11,984 - testcase.TC-CORE-FUNC-001 - INFO - 响应包含JSON体但在API规范中未找到针对状态码 200 的JSON schema。跳过schema验证。
2025-05-26 15:00:11,984 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-CORE-FUNC-001' 执行成功。
2025-05-26 15:00:11,984 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-CORE-FUNC-001' 执行完毕,状态: 通过
2025-05-26 15:00:11,984 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-SECURITY-001' for 'POST /api/dms/{dms_instance_code}/v1/cd_geo_unit/{version}'
2025-05-26 15:00:11,984 - ddms_compliance_suite.test_orchestrator - DEBUG - 成功通过 to_dict() 方法将类型为 <class 'ddms_compliance_suite.input_parser.parser.YAPIEndpoint'> 的 endpoint_spec 转换为字典。
2025-05-26 15:00:11,984 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: <class 'ddms_compliance_suite.input_parser.parser.ParsedYAPISpec'>) to dict using .spec attribute.
2025-05-26 15:00:11,984 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: HTTPSMandatoryCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_yapi_id', '_yapi_raw_data', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['yapi_categories'])
2025-05-26 15:00:11,984 - testcase.TC-SECURITY-001 - INFO - 测试用例 'TC-SECURITY-001' 已为端点 'POST /api/dms/{dms_instance_code}/v1/cd_geo_unit/{version}' 初始化。
2025-05-26 15:00:11,985 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-SECURITY-001' (HTTPS Protocol Mandatory Verification) for endpoint 'POST /api/dms/{dms_instance_code}/v1/cd_geo_unit/{version}'
2025-05-26 15:00:11,985 - ddms_compliance_suite.test_orchestrator - INFO - [post__api_dms_dms_instance_code_v1_cd_geo_unit_version_135751] 开始为端点 POST_/api/dms/{dms_instance_code}/v1/cd_geo_unit/{version} 准备初始请求数据 (TC: TC-SECURITY-001)
2025-05-26 15:00:11,985 - ddms_compliance_suite.test_orchestrator - INFO - [post__api_dms_dms_instance_code_v1_cd_geo_unit_version_135751] 从缓存加载了端点 'POST_/api/dms/{dms_instance_code}/v1/cd_geo_unit/{version}' 的LLM参数。
2025-05-26 15:00:11,985 - ddms_compliance_suite.test_orchestrator - DEBUG - [post__api_dms_dms_instance_code_v1_cd_geo_unit_version_135751] (缓存加载) 准备的请求数据: method=POST, path_params={'dms_instance_code': 'example_dms_instance_code', 'version': '1.0.0'}, query_params={'pageNo': 'example_string', 'pageSize': 'example_string'}, headers=['Accept', 'Content-Type', 'tenant-id', 'Authorization'], body_type=dict
2025-05-26 15:00:11,985 - testcase.TC-SECURITY-001 - WARNING - 原始URL 'http://127.0.0.1:4523/m1/6389742-6086420-default/api/dms/example_dms_instance_code/v1/cd_geo_unit/1.0.0' 不是HTTPS。跳过此测试用例的URL修改。
2025-05-26 15:00:12,004 - testcase.TC-SECURITY-001 - ERROR - 安全漏洞API允许通过HTTP成功响应 (200)。
2025-05-26 15:00:12,004 - ddms_compliance_suite.test_orchestrator - DEBUG -  ❌ 测试用例 'TC-SECURITY-001' 执行失败。
2025-05-26 15:00:12,004 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-SECURITY-001' 执行完毕,状态: 失败
2025-05-26 15:00:12,004 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-ERROR-4001-QUERY' for 'POST /api/dms/{dms_instance_code}/v1/cd_geo_unit/{version}'
2025-05-26 15:00:12,004 - ddms_compliance_suite.test_orchestrator - DEBUG - 成功通过 to_dict() 方法将类型为 <class 'ddms_compliance_suite.input_parser.parser.YAPIEndpoint'> 的 endpoint_spec 转换为字典。
2025-05-26 15:00:12,004 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: <class 'ddms_compliance_suite.input_parser.parser.ParsedYAPISpec'>) to dict using .spec attribute.
2025-05-26 15:00:12,004 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: TypeMismatchQueryParamCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_yapi_id', '_yapi_raw_data', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['yapi_categories'])
2025-05-26 15:00:12,004 - testcase.TC-ERROR-4001-QUERY - DEBUG - Test case 'TC-ERROR-4001-QUERY' initialized for endpoint: POST /api/dms/{dms_instance_code}/v1/cd_geo_unit/{version}
2025-05-26 15:00:12,004 - testcase.TC-ERROR-4001-QUERY - CRITICAL - TC-ERROR-4001-QUERY _try_find_mismatch_target_in_query >>> STARTED
2025-05-26 15:00:12,004 - testcase.TC-ERROR-4001-QUERY - DEBUG - 开始为端点 POST /api/dms/{dms_instance_code}/v1/cd_geo_unit/{version} 初始化查询参数类型不匹配测试的目标字段查找。
2025-05-26 15:00:12,004 - testcase.TC-ERROR-4001-QUERY - CRITICAL - TC-ERROR-4001-QUERY _try_find_mismatch_target_in_query >>> Parameters to be processed: [{'name': 'dms_instance_code', 'in': 'path', 'required': True, 'description': '注册实例code\n井筒中心 well_kd_wellbore_ideas01', 'schema': {'type': 'string', 'example': 'example_dms_instance_code'}}, {'name': 'version', 'in': 'path', 'required': True, 'description': '交换模型版本', 'schema': {'type': 'string', 'example': '1.0.0'}}, {'name': 'pageNo', 'in': 'query', 'required': False, 'description': '页码(从1开始)', 'schema': {'type': 'string'}}, {'name': 'pageSize', 'in': 'query', 'required': False, 'description': '分页大小(最大值200)', 'schema': {'type': 'string'}}, {'name': 'tenant-id', 'in': 'header', 'required': True, 'description': 'tenant-id (Only:undefined)', 'schema': {'type': 'string'}}, {'name': 'Authorization', 'in': 'header', 'required': True, 'description': 'Authorization (Only:undefined)', 'schema': {'type': 'string'}}]
2025-05-26 15:00:12,005 - testcase.TC-ERROR-4001-QUERY - DEBUG - 传入的参数列表 (在 TC-ERROR-4001-QUERY中): [{'name': 'dms_instance_code', 'in': 'path', 'required': True, 'description': '注册实例code\n井筒中心 well_kd_wellbore_ideas01', 'schema': {'type': 'string', 'example': 'example_dms_instance_code'}}, {'name': 'version', 'in': 'path', 'required': True, 'description': '交换模型版本', 'schema': {'type': 'string', 'example': '1.0.0'}}, {'name': 'pageNo', 'in': 'query', 'required': False, 'description': '页码(从1开始)', 'schema': {'type': 'string'}}, {'name': 'pageSize', 'in': 'query', 'required': False, 'description': '分页大小(最大值200)', 'schema': {'type': 'string'}}, {'name': 'tenant-id', 'in': 'header', 'required': True, 'description': 'tenant-id (Only:undefined)', 'schema': {'type': 'string'}}, {'name': 'Authorization', 'in': 'header', 'required': True, 'description': 'Authorization (Only:undefined)', 'schema': {'type': 'string'}}]
2025-05-26 15:00:12,005 - testcase.TC-ERROR-4001-QUERY - DEBUG - 检查查询参数: 'pageNo'
2025-05-26 15:00:12,005 - testcase.TC-ERROR-4001-QUERY - DEBUG - 查询参数 'pageNo' 包含嵌套 schema尝试在其内部查找简单类型字段。
2025-05-26 15:00:12,005 - testcase.TC-ERROR-4001-QUERY - INFO - 目标字段(查询参数 - schema为简单类型): pageNo原始类型: string
2025-05-26 15:00:12,005 - testcase.TC-ERROR-4001-QUERY - CRITICAL - TC-ERROR-4001-QUERY __INIT__ >>> STARTED
2025-05-26 15:00:12,005 - testcase.TC-ERROR-4001-QUERY - DEBUG - 开始为端点 POST /api/dms/{dms_instance_code}/v1/cd_geo_unit/{version} 初始化查询参数类型不匹配测试的目标字段查找。
2025-05-26 15:00:12,005 - testcase.TC-ERROR-4001-QUERY - CRITICAL - TC-ERROR-4001-QUERY __INIT__ >>> Parameters to be processed: [{'name': 'dms_instance_code', 'in': 'path', 'required': True, 'description': '注册实例code\n井筒中心 well_kd_wellbore_ideas01', 'schema': {'type': 'string', 'example': 'example_dms_instance_code'}}, {'name': 'version', 'in': 'path', 'required': True, 'description': '交换模型版本', 'schema': {'type': 'string', 'example': '1.0.0'}}, {'name': 'pageNo', 'in': 'query', 'required': False, 'description': '页码(从1开始)', 'schema': {'type': 'string'}}, {'name': 'pageSize', 'in': 'query', 'required': False, 'description': '分页大小(最大值200)', 'schema': {'type': 'string'}}, {'name': 'tenant-id', 'in': 'header', 'required': True, 'description': 'tenant-id (Only:undefined)', 'schema': {'type': 'string'}}, {'name': 'Authorization', 'in': 'header', 'required': True, 'description': 'Authorization (Only:undefined)', 'schema': {'type': 'string'}}]
2025-05-26 15:00:12,005 - testcase.TC-ERROR-4001-QUERY - DEBUG - 传入的参数列表 (在 TC-ERROR-4001-QUERY中): [{'name': 'dms_instance_code', 'in': 'path', 'required': True, 'description': '注册实例code\n井筒中心 well_kd_wellbore_ideas01', 'schema': {'type': 'string', 'example': 'example_dms_instance_code'}}, {'name': 'version', 'in': 'path', 'required': True, 'description': '交换模型版本', 'schema': {'type': 'string', 'example': '1.0.0'}}, {'name': 'pageNo', 'in': 'query', 'required': False, 'description': '页码(从1开始)', 'schema': {'type': 'string'}}, {'name': 'pageSize', 'in': 'query', 'required': False, 'description': '分页大小(最大值200)', 'schema': {'type': 'string'}}, {'name': 'tenant-id', 'in': 'header', 'required': True, 'description': 'tenant-id (Only:undefined)', 'schema': {'type': 'string'}}, {'name': 'Authorization', 'in': 'header', 'required': True, 'description': 'Authorization (Only:undefined)', 'schema': {'type': 'string'}}]
2025-05-26 15:00:12,005 - testcase.TC-ERROR-4001-QUERY - DEBUG - 检查查询参数: 'pageNo'
2025-05-26 15:00:12,005 - testcase.TC-ERROR-4001-QUERY - DEBUG - 查询参数 'pageNo' 包含嵌套 schema尝试在其内部查找简单类型字段。
2025-05-26 15:00:12,005 - testcase.TC-ERROR-4001-QUERY - INFO - 目标字段(查询参数 - schema为简单类型): pageNo原始类型: string
2025-05-26 15:00:12,005 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-ERROR-4001-QUERY' (Error Code 4001 - Query Parameter Type Mismatch Validation) for endpoint 'POST /api/dms/{dms_instance_code}/v1/cd_geo_unit/{version}'
2025-05-26 15:00:12,005 - ddms_compliance_suite.test_orchestrator - INFO - [post__api_dms_dms_instance_code_v1_cd_geo_unit_version_135751] 开始为端点 POST_/api/dms/{dms_instance_code}/v1/cd_geo_unit/{version} 准备初始请求数据 (TC: TC-ERROR-4001-QUERY)
2025-05-26 15:00:12,005 - ddms_compliance_suite.test_orchestrator - INFO - [post__api_dms_dms_instance_code_v1_cd_geo_unit_version_135751] 从缓存加载了端点 'POST_/api/dms/{dms_instance_code}/v1/cd_geo_unit/{version}' 的LLM参数。
2025-05-26 15:00:12,005 - ddms_compliance_suite.test_orchestrator - DEBUG - [post__api_dms_dms_instance_code_v1_cd_geo_unit_version_135751] (缓存加载) 准备的请求数据: method=POST, path_params={'dms_instance_code': 'example_dms_instance_code', 'version': '1.0.0'}, query_params={'pageNo': 'example_string', 'pageSize': 'example_string'}, headers=['Accept', 'Content-Type', 'tenant-id', 'Authorization'], body_type=dict
2025-05-26 15:00:12,005 - testcase.TC-ERROR-4001-QUERY - DEBUG - 准备修改查询参数以测试类型不匹配。目标路径: ['pageNo'], 原始类型: string
2025-05-26 15:00:12,005 - testcase.TC-ERROR-4001-QUERY - INFO - 在查询参数路径 ['pageNo'] (键 'pageNo') 处,将值从 'example_string' 修改为 '12345' (原始类型: string)
2025-05-26 15:00:12,005 - testcase.TC-ERROR-4001-QUERY - DEBUG - Hook: generate_headers, current keys: ['Accept', 'Content-Type', 'tenant-id', 'Authorization']
2025-05-26 15:00:12,005 - testcase.TC-ERROR-4001-QUERY - DEBUG - TC-ERROR-4001-QUERY is focused on query parameters, generate_request_body will not modify the body.
2025-05-26 15:00:12,005 - testcase.TC-ERROR-4001-QUERY - DEBUG - Hook: modify_request_url, original URL: http://127.0.0.1:4523/m1/6389742-6086420-default/api/dms/example_dms_instance_code/v1/cd_geo_unit/1.0.0
2025-05-26 15:00:12,005 - testcase.TC-ERROR-4001-QUERY - DEBUG - Test case 'TC-ERROR-4001-QUERY' did not modify the URL via modify_request_url hook.
2025-05-26 15:00:12,005 - testcase.TC-ERROR-4001-QUERY - DEBUG - Hook: validate_request_url, url: http://127.0.0.1:4523/m1/6389742-6086420-default/api/dms/example_dms_instance_code/v1/cd_geo_unit/1.0.0
2025-05-26 15:00:12,005 - testcase.TC-ERROR-4001-QUERY - DEBUG - Hook: validate_request_headers, header keys: ['Accept', 'Content-Type', 'tenant-id', 'Authorization']
2025-05-26 15:00:12,005 - testcase.TC-ERROR-4001-QUERY - DEBUG - Hook: validate_request_body, body type: <class 'dict'>
2025-05-26 15:00:12,045 - testcase.TC-ERROR-4001-QUERY - WARNING - TC-ERROR-4001-QUERY: 类型不匹配测试失败。字段: query.pageNo, 期望状态码: [400, 422], 实际: 200。
2025-05-26 15:00:12,045 - testcase.TC-ERROR-4001-QUERY - DEBUG - Hook: check_performance, elapsed: 0.03896188735961914
2025-05-26 15:00:12,045 - ddms_compliance_suite.test_orchestrator - DEBUG -  ❌ 测试用例 'TC-ERROR-4001-QUERY' 执行失败。
2025-05-26 15:00:12,045 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-ERROR-4001-QUERY' 执行完毕,状态: 失败
2025-05-26 15:00:12,045 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-ERROR-4001-BODY' for 'POST /api/dms/{dms_instance_code}/v1/cd_geo_unit/{version}'
2025-05-26 15:00:12,045 - ddms_compliance_suite.test_orchestrator - DEBUG - 成功通过 to_dict() 方法将类型为 <class 'ddms_compliance_suite.input_parser.parser.YAPIEndpoint'> 的 endpoint_spec 转换为字典。
2025-05-26 15:00:12,045 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: <class 'ddms_compliance_suite.input_parser.parser.ParsedYAPISpec'>) to dict using .spec attribute.
2025-05-26 15:00:12,045 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: TypeMismatchBodyCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_yapi_id', '_yapi_raw_data', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['yapi_categories'])
2025-05-26 15:00:12,045 - testcase.TC-ERROR-4001-BODY - DEBUG - Test case 'TC-ERROR-4001-BODY' initialized for endpoint: POST /api/dms/{dms_instance_code}/v1/cd_geo_unit/{version}
2025-05-26 15:00:12,045 - testcase.TC-ERROR-4001-BODY - CRITICAL - TC-ERROR-4001-BODY __INIT__ >>> STARTED
2025-05-26 15:00:12,045 - testcase.TC-ERROR-4001-BODY - DEBUG - 开始为端点 POST /api/dms/{dms_instance_code}/v1/cd_geo_unit/{version} 初始化请求体类型不匹配测试的目标字段查找。
2025-05-26 15:00:12,045 - testcase.TC-ERROR-4001-BODY - DEBUG - 从顶层 'requestBody' 中获取到 schema: ['properties', 'type', '$$ref']
2025-05-26 15:00:12,045 - testcase.TC-ERROR-4001-BODY - DEBUG - 最终用于检查的请求体 schema: ['properties', 'type', '$$ref']
2025-05-26 15:00:12,045 - testcase.TC-ERROR-4001-BODY - DEBUG - Enter _find_target_field_in_schema for base_path: '', schema_to_search keys: ['properties', 'type', '$$ref']
2025-05-26 15:00:12,045 - testcase.TC-ERROR-4001-BODY - DEBUG - Path: '', Resolved Schema Type: 'object', Keys: ['properties', 'type', '$$ref']
2025-05-26 15:00:12,045 - testcase.TC-ERROR-4001-BODY - DEBUG - Path: '', Type is 'object'. Checking properties: ['isSearchCount', 'query']
2025-05-26 15:00:12,045 - testcase.TC-ERROR-4001-BODY - DEBUG - Path: 'isSearchCount', Property Schema (Original): {'default': True, 'description': '是否统计总条数', 'type': 'boolean'}
2025-05-26 15:00:12,045 - testcase.TC-ERROR-4001-BODY - DEBUG - Path: 'isSearchCount', Property Schema (Resolved): {'default': True, 'description': '是否统计总条数', 'type': 'boolean'}
2025-05-26 15:00:12,045 - testcase.TC-ERROR-4001-BODY - DEBUG - Path: 'isSearchCount', Resolved Property Type: 'boolean'
2025-05-26 15:00:12,045 - testcase.TC-ERROR-4001-BODY - INFO - 目标字段(请求体): 'isSearchCount' (原始类型: 'boolean') FOUND!
2025-05-26 15:00:12,045 - testcase.TC-ERROR-4001-BODY - INFO - 类型不匹配测试的目标字段(请求体): isSearchCount原始类型: boolean
2025-05-26 15:00:12,045 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-ERROR-4001-BODY' (Error Code 4001 - Request Body Type Mismatch Validation) for endpoint 'POST /api/dms/{dms_instance_code}/v1/cd_geo_unit/{version}'
2025-05-26 15:00:12,045 - ddms_compliance_suite.test_orchestrator - INFO - [post__api_dms_dms_instance_code_v1_cd_geo_unit_version_135751] 开始为端点 POST_/api/dms/{dms_instance_code}/v1/cd_geo_unit/{version} 准备初始请求数据 (TC: TC-ERROR-4001-BODY)
2025-05-26 15:00:12,045 - ddms_compliance_suite.test_orchestrator - INFO - [post__api_dms_dms_instance_code_v1_cd_geo_unit_version_135751] 从缓存加载了端点 'POST_/api/dms/{dms_instance_code}/v1/cd_geo_unit/{version}' 的LLM参数。
2025-05-26 15:00:12,045 - ddms_compliance_suite.test_orchestrator - DEBUG - [post__api_dms_dms_instance_code_v1_cd_geo_unit_version_135751] (缓存加载) 准备的请求数据: method=POST, path_params={'dms_instance_code': 'example_dms_instance_code', 'version': '1.0.0'}, query_params={'pageNo': 'example_string', 'pageSize': 'example_string'}, headers=['Accept', 'Content-Type', 'tenant-id', 'Authorization'], body_type=dict
2025-05-26 15:00:12,046 - testcase.TC-ERROR-4001-BODY - DEBUG - TC-ERROR-4001-BODY is focused on request body, generate_query_params will not modify query parameters.
2025-05-26 15:00:12,046 - testcase.TC-ERROR-4001-BODY - DEBUG - Hook: generate_headers, current keys: ['Accept', 'Content-Type', 'tenant-id', 'Authorization']
2025-05-26 15:00:12,046 - testcase.TC-ERROR-4001-BODY - DEBUG - 准备修改请求体以测试类型不匹配。目标路径: ['isSearchCount'], 原始类型: boolean
2025-05-26 15:00:12,046 - testcase.TC-ERROR-4001-BODY - INFO - 在路径 ['isSearchCount'] (键 'isSearchCount') 处,将值从 'True' 修改为 'not-a-boolean' (原始类型: boolean)
2025-05-26 15:00:12,046 - testcase.TC-ERROR-4001-BODY - DEBUG - Hook: modify_request_url, original URL: http://127.0.0.1:4523/m1/6389742-6086420-default/api/dms/example_dms_instance_code/v1/cd_geo_unit/1.0.0
2025-05-26 15:00:12,046 - testcase.TC-ERROR-4001-BODY - DEBUG - Test case 'TC-ERROR-4001-BODY' did not modify the URL via modify_request_url hook.
2025-05-26 15:00:12,046 - testcase.TC-ERROR-4001-BODY - DEBUG - Hook: validate_request_url, url: http://127.0.0.1:4523/m1/6389742-6086420-default/api/dms/example_dms_instance_code/v1/cd_geo_unit/1.0.0
2025-05-26 15:00:12,046 - testcase.TC-ERROR-4001-BODY - DEBUG - Hook: validate_request_headers, header keys: ['Accept', 'Content-Type', 'tenant-id', 'Authorization']
2025-05-26 15:00:12,046 - testcase.TC-ERROR-4001-BODY - DEBUG - Hook: validate_request_body, body type: <class 'dict'>
2025-05-26 15:00:12,063 - testcase.TC-ERROR-4001-BODY - WARNING - TC-ERROR-4001-BODY: 类型不匹配测试失败。字段: body.isSearchCount, 期望状态码: [400, 422], 实际: 200。
2025-05-26 15:00:12,063 - testcase.TC-ERROR-4001-BODY - DEBUG - Hook: check_performance, elapsed: 0.016969919204711914
2025-05-26 15:00:12,063 - ddms_compliance_suite.test_orchestrator - DEBUG -  ❌ 测试用例 'TC-ERROR-4001-BODY' 执行失败。
2025-05-26 15:00:12,063 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-ERROR-4001-BODY' 执行完毕,状态: 失败
2025-05-26 15:00:12,063 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-ERROR-4003-BODY' for 'POST /api/dms/{dms_instance_code}/v1/cd_geo_unit/{version}'
2025-05-26 15:00:12,063 - ddms_compliance_suite.test_orchestrator - DEBUG - 成功通过 to_dict() 方法将类型为 <class 'ddms_compliance_suite.input_parser.parser.YAPIEndpoint'> 的 endpoint_spec 转换为字典。
2025-05-26 15:00:12,063 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: <class 'ddms_compliance_suite.input_parser.parser.ParsedYAPISpec'>) to dict using .spec attribute.
2025-05-26 15:00:12,063 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: MissingRequiredFieldBodyCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_yapi_id', '_yapi_raw_data', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['yapi_categories'])
2025-05-26 15:00:12,064 - testcase.TC-ERROR-4003-BODY - INFO - 在请求体 schema 中未找到可用于测试 "必填字段缺失" 的字段。
2025-05-26 15:00:12,064 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-ERROR-4003-BODY' (Error Code 4003 - Missing Required Request Body Field Validation) for endpoint 'POST /api/dms/{dms_instance_code}/v1/cd_geo_unit/{version}'
2025-05-26 15:00:12,064 - ddms_compliance_suite.test_orchestrator - INFO - [post__api_dms_dms_instance_code_v1_cd_geo_unit_version_135751] 开始为端点 POST_/api/dms/{dms_instance_code}/v1/cd_geo_unit/{version} 准备初始请求数据 (TC: TC-ERROR-4003-BODY)
2025-05-26 15:00:12,064 - ddms_compliance_suite.test_orchestrator - INFO - [post__api_dms_dms_instance_code_v1_cd_geo_unit_version_135751] 从缓存加载了端点 'POST_/api/dms/{dms_instance_code}/v1/cd_geo_unit/{version}' 的LLM参数。
2025-05-26 15:00:12,064 - ddms_compliance_suite.test_orchestrator - DEBUG - [post__api_dms_dms_instance_code_v1_cd_geo_unit_version_135751] (缓存加载) 准备的请求数据: method=POST, path_params={'dms_instance_code': 'example_dms_instance_code', 'version': '1.0.0'}, query_params={'pageNo': 'example_string', 'pageSize': 'example_string'}, headers=['Accept', 'Content-Type', 'tenant-id', 'Authorization'], body_type=dict
2025-05-26 15:00:12,081 - testcase.TC-ERROR-4003-BODY - INFO - 由于未识别到可移除的必填请求体字段,跳过此测试用例。
2025-05-26 15:00:12,081 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-ERROR-4003-BODY' 执行成功。
2025-05-26 15:00:12,081 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-ERROR-4003-BODY' 执行完毕,状态: 通过
2025-05-26 15:00:12,081 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-ERROR-4003-QUERY' for 'POST /api/dms/{dms_instance_code}/v1/cd_geo_unit/{version}'
2025-05-26 15:00:12,081 - ddms_compliance_suite.test_orchestrator - DEBUG - 成功通过 to_dict() 方法将类型为 <class 'ddms_compliance_suite.input_parser.parser.YAPIEndpoint'> 的 endpoint_spec 转换为字典。
2025-05-26 15:00:12,081 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: <class 'ddms_compliance_suite.input_parser.parser.ParsedYAPISpec'>) to dict using .spec attribute.
2025-05-26 15:00:12,081 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: MissingRequiredFieldQueryCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_yapi_id', '_yapi_raw_data', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['yapi_categories'])
2025-05-26 15:00:12,081 - testcase.TC-ERROR-4003-QUERY - INFO - 在此端点规范中未找到可用于测试 "必填查询参数缺失" 的字段。
2025-05-26 15:00:12,081 - testcase.TC-ERROR-4003-QUERY - INFO - 测试用例 TC-ERROR-4003-QUERY (Error Code 4003 - Missing Required Query Parameter Validation) 已针对端点 'POST /api/dms/{dms_instance_code}/v1/cd_geo_unit/{version}' 初始化。Target param to remove: None
2025-05-26 15:00:12,081 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-ERROR-4003-QUERY' (Error Code 4003 - Missing Required Query Parameter Validation) for endpoint 'POST /api/dms/{dms_instance_code}/v1/cd_geo_unit/{version}'
2025-05-26 15:00:12,081 - ddms_compliance_suite.test_orchestrator - INFO - [post__api_dms_dms_instance_code_v1_cd_geo_unit_version_135751] 开始为端点 POST_/api/dms/{dms_instance_code}/v1/cd_geo_unit/{version} 准备初始请求数据 (TC: TC-ERROR-4003-QUERY)
2025-05-26 15:00:12,081 - ddms_compliance_suite.test_orchestrator - INFO - [post__api_dms_dms_instance_code_v1_cd_geo_unit_version_135751] 从缓存加载了端点 'POST_/api/dms/{dms_instance_code}/v1/cd_geo_unit/{version}' 的LLM参数。
2025-05-26 15:00:12,082 - ddms_compliance_suite.test_orchestrator - DEBUG - [post__api_dms_dms_instance_code_v1_cd_geo_unit_version_135751] (缓存加载) 准备的请求数据: method=POST, path_params={'dms_instance_code': 'example_dms_instance_code', 'version': '1.0.0'}, query_params={'pageNo': 'example_string', 'pageSize': 'example_string'}, headers=['Accept', 'Content-Type', 'tenant-id', 'Authorization'], body_type=dict
2025-05-26 15:00:12,098 - testcase.TC-ERROR-4003-QUERY - INFO - 由于未识别到可移除的必填查询参数,跳过此测试用例。
2025-05-26 15:00:12,098 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-ERROR-4003-QUERY' 执行成功。
2025-05-26 15:00:12,098 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-ERROR-4003-QUERY' 执行完毕,状态: 通过
2025-05-26 15:00:12,098 - ddms_compliance_suite.test_orchestrator - INFO - 端点 'POST /api/dms/{dms_instance_code}/v1/cd_geo_unit/{version}' 测试完成,最终状态: 失败
2025-05-26 15:00:12,098 - ddms_compliance_suite.test_orchestrator - INFO - 开始为端点测试: PUT /api/dms/{dms_instance_code}/v1/cd_geo_unit (地质单元数据修改)
2025-05-26 15:00:12,098 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-STATUS-001' 适用于端点 'PUT /api/dms/{dms_instance_code}/v1/cd_geo_unit'。
2025-05-26 15:00:12,098 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-NORMATIVE-URL-LLM-COMPREHENSIVE-001' 适用于端点 'PUT /api/dms/{dms_instance_code}/v1/cd_geo_unit'。
2025-05-26 15:00:12,098 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-CORE-FUNC-001' 适用于端点 'PUT /api/dms/{dms_instance_code}/v1/cd_geo_unit'。
2025-05-26 15:00:12,098 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-SECURITY-001' 适用于端点 'PUT /api/dms/{dms_instance_code}/v1/cd_geo_unit'。
2025-05-26 15:00:12,098 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4001-QUERY' 适用于端点 'PUT /api/dms/{dms_instance_code}/v1/cd_geo_unit'。
2025-05-26 15:00:12,098 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4001-BODY' 适用于端点 'PUT /api/dms/{dms_instance_code}/v1/cd_geo_unit'。
2025-05-26 15:00:12,098 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4003-BODY' 适用于端点 'PUT /api/dms/{dms_instance_code}/v1/cd_geo_unit'。
2025-05-26 15:00:12,098 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4003-QUERY' 适用于端点 'PUT /api/dms/{dms_instance_code}/v1/cd_geo_unit'。
2025-05-26 15:00:12,098 - ddms_compliance_suite.test_orchestrator - INFO - 端点 'PUT /api/dms/{dms_instance_code}/v1/cd_geo_unit' 发现了 8 个适用的测试用例: ['TC-STATUS-001', 'TC-NORMATIVE-URL-LLM-COMPREHENSIVE-001', 'TC-CORE-FUNC-001', 'TC-SECURITY-001', 'TC-ERROR-4001-QUERY', 'TC-ERROR-4001-BODY', 'TC-ERROR-4003-BODY', 'TC-ERROR-4003-QUERY']
2025-05-26 15:00:12,098 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-STATUS-001' for 'PUT /api/dms/{dms_instance_code}/v1/cd_geo_unit'
2025-05-26 15:00:12,098 - ddms_compliance_suite.test_orchestrator - DEBUG - 成功通过 to_dict() 方法将类型为 <class 'ddms_compliance_suite.input_parser.parser.YAPIEndpoint'> 的 endpoint_spec 转换为字典。
2025-05-26 15:00:12,098 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: <class 'ddms_compliance_suite.input_parser.parser.ParsedYAPISpec'>) to dict using .spec attribute.
2025-05-26 15:00:12,099 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: StatusCode200Check 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_yapi_id', '_yapi_raw_data', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['yapi_categories'])
2025-05-26 15:00:12,099 - testcase.TC-STATUS-001 - INFO - 测试用例 TC-STATUS-001 (基本状态码 200 检查) 已针对端点 'PUT /api/dms/{dms_instance_code}/v1/cd_geo_unit' 初始化。
2025-05-26 15:00:12,099 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-STATUS-001' (基本状态码 200 检查) for endpoint 'PUT /api/dms/{dms_instance_code}/v1/cd_geo_unit'
2025-05-26 15:00:12,099 - ddms_compliance_suite.test_orchestrator - INFO - [put__api_dms_dms_instance_code_v1_cd_geo_unit_135749] 开始为端点 PUT_/api/dms/{dms_instance_code}/v1/cd_geo_unit 准备初始请求数据 (TC: TC-STATUS-001)
2025-05-26 15:00:12,099 - ddms_compliance_suite.test_orchestrator - INFO - [put__api_dms_dms_instance_code_v1_cd_geo_unit_135749] 端点 'PUT_/api/dms/{dms_instance_code}/v1/cd_geo_unit' 的参数未在缓存中找到,开始生成。
2025-05-26 15:00:12,099 - ddms_compliance_suite.test_orchestrator - INFO - [put__api_dms_dms_instance_code_v1_cd_geo_unit_135749] 使用常规方法或LLM未启用为路径参数。
2025-05-26 15:00:12,099 - ddms_compliance_suite.test_orchestrator - INFO - [put__api_dms_dms_instance_code_v1_cd_geo_unit_135749] 使用常规方法生成 path 参数。
2025-05-26 15:00:12,099 - ddms_compliance_suite.test_orchestrator - DEBUG - [put__api_dms_dms_instance_code_v1_cd_geo_unit_135749] 使用 schema 中的 'example' 值 for (context: path parameter 'dms_instance_code'): example_dms_instance_code
2025-05-26 15:00:12,099 - ddms_compliance_suite.test_orchestrator - INFO - [put__api_dms_dms_instance_code_v1_cd_geo_unit_135749] 常规方法生成的 path 参数: {'dms_instance_code': 'example_dms_instance_code'}
2025-05-26 15:00:12,099 - ddms_compliance_suite.test_orchestrator - INFO - [put__api_dms_dms_instance_code_v1_cd_geo_unit_135749] 使用常规方法或LLM未启用为查询参数。
2025-05-26 15:00:12,099 - ddms_compliance_suite.test_orchestrator - INFO - [put__api_dms_dms_instance_code_v1_cd_geo_unit_135749] 使用常规方法生成 query 参数。
2025-05-26 15:00:12,099 - ddms_compliance_suite.test_orchestrator - DEBUG - [put__api_dms_dms_instance_code_v1_cd_geo_unit_135749] 使用 schema 中的 'example' 值 for (context: query parameter 'id'): dsid
2025-05-26 15:00:12,099 - ddms_compliance_suite.test_orchestrator - INFO - [put__api_dms_dms_instance_code_v1_cd_geo_unit_135749] 常规方法生成的 query 参数: {'id': 'dsid'}
2025-05-26 15:00:12,099 - ddms_compliance_suite.test_orchestrator - INFO - [put__api_dms_dms_instance_code_v1_cd_geo_unit_135749] 使用常规方法或LLM未启用为头部参数。
2025-05-26 15:00:12,099 - ddms_compliance_suite.test_orchestrator - INFO - [put__api_dms_dms_instance_code_v1_cd_geo_unit_135749] 使用常规方法生成 header 参数。
2025-05-26 15:00:12,099 - ddms_compliance_suite.test_orchestrator - DEBUG - [put__api_dms_dms_instance_code_v1_cd_geo_unit_135749] 生成 string 类型数据 ('') for (context: header parameter 'tenant-id'): example_string
2025-05-26 15:00:12,099 - ddms_compliance_suite.test_orchestrator - DEBUG - [put__api_dms_dms_instance_code_v1_cd_geo_unit_135749] 生成 string 类型数据 ('') for (context: header parameter 'Authorization'): example_string
2025-05-26 15:00:12,099 - ddms_compliance_suite.test_orchestrator - INFO - [put__api_dms_dms_instance_code_v1_cd_geo_unit_135749] 常规方法生成的 header 参数: {'tenant-id': 'example_string', 'Authorization': 'example_string'}
2025-05-26 15:00:12,099 - ddms_compliance_suite.test_orchestrator - INFO - [put__api_dms_dms_instance_code_v1_cd_geo_unit_135749] 使用常规方法或LLM未启用/不适用,为请求体。
2025-05-26 15:00:12,099 - ddms_compliance_suite.test_orchestrator - DEBUG - [put__api_dms_dms_instance_code_v1_cd_geo_unit_135749] 生成 object 类型数据 for (context: requestBody). Properties: ['version', 'data']
2025-05-26 15:00:12,099 - ddms_compliance_suite.test_orchestrator - DEBUG - [put__api_dms_dms_instance_code_v1_cd_geo_unit_135749] 生成 string 类型数据 ('') for (context: requestBody.version): example_string
2025-05-26 15:00:12,099 - ddms_compliance_suite.test_orchestrator - DEBUG - [put__api_dms_dms_instance_code_v1_cd_geo_unit_135749] 生成 array 类型数据 for (context: requestBody.data). Items schema: {'type': 'object', 'properties': {'bsflag': {'type': 'number'}, 'wellCommonName': {'type': 'string'}, 'wellId': {'type': 'string'}, 'dataRegion': {'type': 'string'}}, 'required': ['bsflag', 'wellCommonName', 'wellId', 'dataRegion']}, minItems: 1
2025-05-26 15:00:12,099 - ddms_compliance_suite.test_orchestrator - DEBUG - [put__api_dms_dms_instance_code_v1_cd_geo_unit_135749] 生成 object 类型数据 for (context: requestBody.data[0]). Properties: ['bsflag', 'wellCommonName', 'wellId', 'dataRegion']
2025-05-26 15:00:12,099 - ddms_compliance_suite.test_orchestrator - DEBUG - [put__api_dms_dms_instance_code_v1_cd_geo_unit_135749] 生成 number/integer 类型数据 for (context: requestBody.data[0].bsflag): 0.0
2025-05-26 15:00:12,099 - ddms_compliance_suite.test_orchestrator - DEBUG - [put__api_dms_dms_instance_code_v1_cd_geo_unit_135749] 生成 string 类型数据 ('') for (context: requestBody.data[0].wellCommonName): example_string
2025-05-26 15:00:12,099 - ddms_compliance_suite.test_orchestrator - DEBUG - [put__api_dms_dms_instance_code_v1_cd_geo_unit_135749] 生成 string 类型数据 ('') for (context: requestBody.data[0].wellId): example_string
2025-05-26 15:00:12,099 - ddms_compliance_suite.test_orchestrator - DEBUG - [put__api_dms_dms_instance_code_v1_cd_geo_unit_135749] 生成 string 类型数据 ('') for (context: requestBody.data[0].dataRegion): example_string
2025-05-26 15:00:12,099 - ddms_compliance_suite.test_orchestrator - INFO - [put__api_dms_dms_instance_code_v1_cd_geo_unit_135749] 端点 'PUT_/api/dms/{dms_instance_code}/v1/cd_geo_unit' 的参数已生成并存入缓存。
2025-05-26 15:00:12,099 - ddms_compliance_suite.test_orchestrator - DEBUG - [put__api_dms_dms_instance_code_v1_cd_geo_unit_135749] (新生成) 准备的请求数据: method=PUT, path_params={'dms_instance_code': 'example_dms_instance_code'}, query_params={'id': 'dsid'}, headers=['Accept', 'Content-Type', 'tenant-id', 'Authorization'], body_type=dict
2025-05-26 15:00:12,119 - testcase.TC-STATUS-001 - INFO - 状态码验证通过: 200 == 200 for http://127.0.0.1:4523/m1/6389742-6086420-default/api/dms/example_dms_instance_code/v1/cd_geo_unit
2025-05-26 15:00:12,119 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-STATUS-001' 执行成功。
2025-05-26 15:00:12,119 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-STATUS-001' 执行完毕,状态: 通过
2025-05-26 15:00:12,119 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-NORMATIVE-URL-LLM-COMPREHENSIVE-001' for 'PUT /api/dms/{dms_instance_code}/v1/cd_geo_unit'
2025-05-26 15:00:12,119 - ddms_compliance_suite.test_orchestrator - DEBUG - 成功通过 to_dict() 方法将类型为 <class 'ddms_compliance_suite.input_parser.parser.YAPIEndpoint'> 的 endpoint_spec 转换为字典。
2025-05-26 15:00:12,119 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: <class 'ddms_compliance_suite.input_parser.parser.ParsedYAPISpec'>) to dict using .spec attribute.
2025-05-26 15:00:12,119 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: ComprehensiveURLCheckLLMCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_yapi_id', '_yapi_raw_data', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['yapi_categories'])
2025-05-26 15:00:12,119 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-NORMATIVE-URL-LLM-COMPREHENSIVE-001' (综合URL规范与RESTful风格检查 (LLM)) for endpoint 'PUT /api/dms/{dms_instance_code}/v1/cd_geo_unit'
2025-05-26 15:00:12,119 - ddms_compliance_suite.test_orchestrator - INFO - [put__api_dms_dms_instance_code_v1_cd_geo_unit_135749] 开始为端点 PUT_/api/dms/{dms_instance_code}/v1/cd_geo_unit 准备初始请求数据 (TC: TC-NORMATIVE-URL-LLM-COMPREHENSIVE-001)
2025-05-26 15:00:12,119 - ddms_compliance_suite.test_orchestrator - INFO - [put__api_dms_dms_instance_code_v1_cd_geo_unit_135749] 从缓存加载了端点 'PUT_/api/dms/{dms_instance_code}/v1/cd_geo_unit' 的LLM参数。
2025-05-26 15:00:12,119 - ddms_compliance_suite.test_orchestrator - DEBUG - [put__api_dms_dms_instance_code_v1_cd_geo_unit_135749] (缓存加载) 准备的请求数据: method=PUT, path_params={'dms_instance_code': 'example_dms_instance_code'}, query_params={'id': 'dsid'}, headers=['Accept', 'Content-Type', 'tenant-id', 'Authorization'], body_type=dict
2025-05-26 15:00:12,119 - testcase.TC-NORMATIVE-URL-LLM-COMPREHENSIVE-001 - INFO - 向LLM发送请求评估路径: /api/dms/{dms_instance_code}/v1/cd_geo_unit (PUT)
2025-05-26 15:00:12,120 - ddms_compliance_suite.llm_utils.llm_service - DEBUG - LLM API Request Payload:
{
"model": "qwen-plus",
"messages": [
{
"role": "system",
"content": "你是一位API设计评审专家专注于评估API的URL规范性和RESTful风格。你的输出必须是严格的JSON格式。"
},
{
"role": "user",
"content": "\n请扮演一位资深的API设计评审员。我将提供一个API端点的路径模板、HTTP方法以及可能的接口名称。\n请根据以下石油行业API设计规范评估此API端点并以严格的JSON格式返回您的评估结果。\nJSON对象应包含一个名为 \"assessments\" 的键,其值为一个对象列表,每个对象代表对一个标准的评估,包含 \"standard_name\" (字符串), \"is_compliant\" (布尔值), 和 \"reason\" (字符串) 三个键。\n\nAPI端点信息:\n- HTTP方法: PUT\n- 路径模板: /api/dms/{dms_instance_code}/v1/cd_geo_unit\n- 路径中提取的参数名: [dms_instance_code]\n\n评估标准:\n\n1. **接口名称规范 (接口名称需要你从路径模板中提取,一般是路径中除了参数名以外的最后的一个单词)**:\n - 规则: 采用'动词+名词'结构,明确业务语义 (例如: GetWellLog, SubmitSeismicJob)。\n - standard_name: \"interface_naming_convention\"\n\n2. **HTTP方法使用规范**:\n - 规则: 遵循RESTful规范GET用于数据检索, POST用于创建资源, PUT用于更新资源, DELETE用于删除资源。\n - standard_name: \"http_method_usage\"\n\n3. **URL路径结构规范**:\n - 规则: 格式为 `<前缀>/<专业领域>/v<版本号>/<资源类型>` (例如: /logging/v1.2/wells, /seismicprospecting/v1.0/datasets)。\n - 前缀: 示例: /api/dms\n - 专业领域: 专业领域示例: seismicprospecting, welllogging, reservoirevaluation\n - 版本号: 语义化版本,例如 v1, v1.0, v2.1.3。\n - 资源类型: 通常为名词复数。\n - standard_name: \"url_path_structure\"\n\n4. **URL路径参数命名规范**:\n - 规则: 路径参数(如果存在)必须使用全小写字母(可以是一个单词)或小写字母加下划线命名(这是多个单词的情况),并能反映资源的唯一标识 (例如: {well_id},{version},{schema})。\n - standard_name: \"url_path_parameter_naming\"\n\n5. **资源命名规范 (在路径中)**:\n - 规则: 资源集合应使用名词的复数形式表示 (例如 `/wells`, `/logs`);应优先使用石油行业的标准术语 (例如用 `trajectory` 而非 `path` 来表示井轨迹)。\n - standard_name: \"resource_naming_in_path\"\n - standard_name: \"resource\"\n - standard_name: \"schema\"\n - standard_name: \"version\"\n\n\n\n请确保您的输出是一个可以被 `json.loads()` 直接解析的JSON对象。\n例如:\n{\n \"assessments\": [\n {\n \"standard_name\": \"interface_naming_convention\",\n \"is_compliant\": true,\n \"reason\": \"接口名称 'GetWellboreTrajectory' 符合动词+名词结构。\"\n },\n {\n \"standard_name\": \"http_method_usage\",\n \"is_compliant\": true,\n \"reason\": \"GET方法用于检索资源符合规范。\"\n }\n // ... 其他标准的评估 ...\n ]\n}\n"
}
],
"max_tokens": 1024,
"temperature": 0.2
}
2025-05-26 15:00:24,176 - ddms_compliance_suite.llm_utils.llm_service - DEBUG - LLM API Response:
{
"choices": [
{
"message": {
"role": "assistant",
"content": "{\n \"assessments\": [\n {\n \"standard_name\": \"interface_naming_convention\",\n \"is_compliant\": false,\n \"reason\": \"接口名称 'cd_geo_unit' 不符合动词+名词结构,无法明确表达业务语义。\"\n },\n {\n \"standard_name\": \"http_method_usage\",\n \"is_compliant\": true,\n \"reason\": \"PUT方法用于更新资源符合RESTful规范。\"\n },\n {\n \"standard_name\": \"url_path_structure\",\n \"is_compliant\": true,\n \"reason\": \"路径结构 '/api/dms/{dms_instance_code}/v1/cd_geo_unit' 符合 `<前缀>/<专业领域>/v<版本号>/<资源类型>` 的格式要求。\"\n },\n {\n \"standard_name\": \"url_path_parameter_naming\",\n \"is_compliant\": true,\n \"reason\": \"路径参数 '{dms_instance_code}' 使用了小写字母加下划线的命名方式,符合规范。\"\n },\n {\n \"standard_name\": \"resource_naming_in_path\",\n \"is_compliant\": false,\n \"reason\": \"'cd_geo_unit' 应使用复数形式表示资源集合,并且应优先使用石油行业的标准术语(例如 'geological_units')。\"\n }\n ]\n}"
},
"finish_reason": "stop",
"index": 0,
"logprobs": null
}
],
"object": "chat.completion",
"usage": {
"prompt_tokens": 803,
"completion_tokens": 285,
"total_tokens": 1088,
"prompt_tokens_details": {
"cached_tokens": 0
}
},
"created": 1748242824,
"system_fingerprint": null,
"model": "qwen-plus",
"id": "chatcmpl-432a0881-3667-9874-92bd-9a3c322cd4b6"
}
2025-05-26 15:00:24,177 - testcase.TC-NORMATIVE-URL-LLM-COMPREHENSIVE-001 - WARNING - LLM评估 - 标准 'interface_naming_convention' for '/api/dms/{dms_instance_code}/v1/cd_geo_unit': 不符合。原因: 接口名称 'cd_geo_unit' 不符合动词+名词结构,无法明确表达业务语义。
2025-05-26 15:00:24,177 - testcase.TC-NORMATIVE-URL-LLM-COMPREHENSIVE-001 - INFO - LLM评估 - 标准 'http_method_usage' for '/api/dms/{dms_instance_code}/v1/cd_geo_unit': 符合。原因: PUT方法用于更新资源符合RESTful规范。
2025-05-26 15:00:24,177 - testcase.TC-NORMATIVE-URL-LLM-COMPREHENSIVE-001 - INFO - LLM评估 - 标准 'url_path_structure' for '/api/dms/{dms_instance_code}/v1/cd_geo_unit': 符合。原因: 路径结构 '/api/dms/{dms_instance_code}/v1/cd_geo_unit' 符合 `<前缀>/<专业领域>/v<版本号>/<资源类型>` 的格式要求。
2025-05-26 15:00:24,177 - testcase.TC-NORMATIVE-URL-LLM-COMPREHENSIVE-001 - INFO - LLM评估 - 标准 'url_path_parameter_naming' for '/api/dms/{dms_instance_code}/v1/cd_geo_unit': 符合。原因: 路径参数 '{dms_instance_code}' 使用了小写字母加下划线的命名方式,符合规范。
2025-05-26 15:00:24,177 - testcase.TC-NORMATIVE-URL-LLM-COMPREHENSIVE-001 - WARNING - LLM评估 - 标准 'resource_naming_in_path' for '/api/dms/{dms_instance_code}/v1/cd_geo_unit': 不符合。原因: 'cd_geo_unit' 应使用复数形式表示资源集合,并且应优先使用石油行业的标准术语(例如 'geological_units')。
2025-05-26 15:00:24,250 - ddms_compliance_suite.test_orchestrator - DEBUG -  ❌ 测试用例 'TC-NORMATIVE-URL-LLM-COMPREHENSIVE-001' 执行失败。
2025-05-26 15:00:24,251 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-NORMATIVE-URL-LLM-COMPREHENSIVE-001' 执行完毕,状态: 失败
2025-05-26 15:00:24,251 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-CORE-FUNC-001' for 'PUT /api/dms/{dms_instance_code}/v1/cd_geo_unit'
2025-05-26 15:00:24,251 - ddms_compliance_suite.test_orchestrator - DEBUG - 成功通过 to_dict() 方法将类型为 <class 'ddms_compliance_suite.input_parser.parser.YAPIEndpoint'> 的 endpoint_spec 转换为字典。
2025-05-26 15:00:24,251 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: <class 'ddms_compliance_suite.input_parser.parser.ParsedYAPISpec'>) to dict using .spec attribute.
2025-05-26 15:00:24,251 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: ResponseSchemaValidationCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_yapi_id', '_yapi_raw_data', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['yapi_categories'])
2025-05-26 15:00:24,252 - testcase.TC-CORE-FUNC-001 - INFO - 测试用例 'TC-CORE-FUNC-001' 已为端点 'PUT /api/dms/{dms_instance_code}/v1/cd_geo_unit' 初始化。
2025-05-26 15:00:24,253 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-CORE-FUNC-001' (Response Body JSON Schema Validation) for endpoint 'PUT /api/dms/{dms_instance_code}/v1/cd_geo_unit'
2025-05-26 15:00:24,253 - ddms_compliance_suite.test_orchestrator - INFO - [put__api_dms_dms_instance_code_v1_cd_geo_unit_135749] 开始为端点 PUT_/api/dms/{dms_instance_code}/v1/cd_geo_unit 准备初始请求数据 (TC: TC-CORE-FUNC-001)
2025-05-26 15:00:24,254 - ddms_compliance_suite.test_orchestrator - INFO - [put__api_dms_dms_instance_code_v1_cd_geo_unit_135749] 从缓存加载了端点 'PUT_/api/dms/{dms_instance_code}/v1/cd_geo_unit' 的LLM参数。
2025-05-26 15:00:24,254 - ddms_compliance_suite.test_orchestrator - DEBUG - [put__api_dms_dms_instance_code_v1_cd_geo_unit_135749] (缓存加载) 准备的请求数据: method=PUT, path_params={'dms_instance_code': 'example_dms_instance_code'}, query_params={'id': 'dsid'}, headers=['Accept', 'Content-Type', 'tenant-id', 'Authorization'], body_type=dict
2025-05-26 15:00:24,289 - testcase.TC-CORE-FUNC-001 - INFO - 将根据路径 'responses.200.content.application/json.schema' 的schema验证响应体。
2025-05-26 15:00:24,296 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-CORE-FUNC-001' 执行成功。
2025-05-26 15:00:24,296 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-CORE-FUNC-001' 执行完毕,状态: 通过
2025-05-26 15:00:24,296 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-SECURITY-001' for 'PUT /api/dms/{dms_instance_code}/v1/cd_geo_unit'
2025-05-26 15:00:24,296 - ddms_compliance_suite.test_orchestrator - DEBUG - 成功通过 to_dict() 方法将类型为 <class 'ddms_compliance_suite.input_parser.parser.YAPIEndpoint'> 的 endpoint_spec 转换为字典。
2025-05-26 15:00:24,296 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: <class 'ddms_compliance_suite.input_parser.parser.ParsedYAPISpec'>) to dict using .spec attribute.
2025-05-26 15:00:24,297 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: HTTPSMandatoryCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_yapi_id', '_yapi_raw_data', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['yapi_categories'])
2025-05-26 15:00:24,297 - testcase.TC-SECURITY-001 - INFO - 测试用例 'TC-SECURITY-001' 已为端点 'PUT /api/dms/{dms_instance_code}/v1/cd_geo_unit' 初始化。
2025-05-26 15:00:24,297 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-SECURITY-001' (HTTPS Protocol Mandatory Verification) for endpoint 'PUT /api/dms/{dms_instance_code}/v1/cd_geo_unit'
2025-05-26 15:00:24,297 - ddms_compliance_suite.test_orchestrator - INFO - [put__api_dms_dms_instance_code_v1_cd_geo_unit_135749] 开始为端点 PUT_/api/dms/{dms_instance_code}/v1/cd_geo_unit 准备初始请求数据 (TC: TC-SECURITY-001)
2025-05-26 15:00:24,297 - ddms_compliance_suite.test_orchestrator - INFO - [put__api_dms_dms_instance_code_v1_cd_geo_unit_135749] 从缓存加载了端点 'PUT_/api/dms/{dms_instance_code}/v1/cd_geo_unit' 的LLM参数。
2025-05-26 15:00:24,297 - ddms_compliance_suite.test_orchestrator - DEBUG - [put__api_dms_dms_instance_code_v1_cd_geo_unit_135749] (缓存加载) 准备的请求数据: method=PUT, path_params={'dms_instance_code': 'example_dms_instance_code'}, query_params={'id': 'dsid'}, headers=['Accept', 'Content-Type', 'tenant-id', 'Authorization'], body_type=dict
2025-05-26 15:00:24,297 - testcase.TC-SECURITY-001 - WARNING - 原始URL 'http://127.0.0.1:4523/m1/6389742-6086420-default/api/dms/example_dms_instance_code/v1/cd_geo_unit' 不是HTTPS。跳过此测试用例的URL修改。
2025-05-26 15:00:24,322 - testcase.TC-SECURITY-001 - ERROR - 安全漏洞API允许通过HTTP成功响应 (200)。
2025-05-26 15:00:24,323 - ddms_compliance_suite.test_orchestrator - DEBUG -  ❌ 测试用例 'TC-SECURITY-001' 执行失败。
2025-05-26 15:00:24,323 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-SECURITY-001' 执行完毕,状态: 失败
2025-05-26 15:00:24,323 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-ERROR-4001-QUERY' for 'PUT /api/dms/{dms_instance_code}/v1/cd_geo_unit'
2025-05-26 15:00:24,323 - ddms_compliance_suite.test_orchestrator - DEBUG - 成功通过 to_dict() 方法将类型为 <class 'ddms_compliance_suite.input_parser.parser.YAPIEndpoint'> 的 endpoint_spec 转换为字典。
2025-05-26 15:00:24,323 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: <class 'ddms_compliance_suite.input_parser.parser.ParsedYAPISpec'>) to dict using .spec attribute.
2025-05-26 15:00:24,323 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: TypeMismatchQueryParamCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_yapi_id', '_yapi_raw_data', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['yapi_categories'])
2025-05-26 15:00:24,323 - testcase.TC-ERROR-4001-QUERY - DEBUG - Test case 'TC-ERROR-4001-QUERY' initialized for endpoint: PUT /api/dms/{dms_instance_code}/v1/cd_geo_unit
2025-05-26 15:00:24,323 - testcase.TC-ERROR-4001-QUERY - CRITICAL - TC-ERROR-4001-QUERY _try_find_mismatch_target_in_query >>> STARTED
2025-05-26 15:00:24,323 - testcase.TC-ERROR-4001-QUERY - DEBUG - 开始为端点 PUT /api/dms/{dms_instance_code}/v1/cd_geo_unit 初始化查询参数类型不匹配测试的目标字段查找。
2025-05-26 15:00:24,323 - testcase.TC-ERROR-4001-QUERY - CRITICAL - TC-ERROR-4001-QUERY _try_find_mismatch_target_in_query >>> Parameters to be processed: [{'name': 'dms_instance_code', 'in': 'path', 'required': True, 'description': '注册实例code\n井筒中心 well_kd_wellbore_ideas01', 'schema': {'type': 'string', 'example': 'example_dms_instance_code'}}, {'name': 'id', 'in': 'query', 'required': True, 'description': '主键id的key', 'schema': {'type': 'string', 'example': 'dsid'}}, {'name': 'tenant-id', 'in': 'header', 'required': True, 'description': 'tenant-id (Only:undefined)', 'schema': {'type': 'string'}}, {'name': 'Authorization', 'in': 'header', 'required': True, 'description': 'Authorization (Only:undefined)', 'schema': {'type': 'string'}}]
2025-05-26 15:00:24,323 - testcase.TC-ERROR-4001-QUERY - DEBUG - 传入的参数列表 (在 TC-ERROR-4001-QUERY中): [{'name': 'dms_instance_code', 'in': 'path', 'required': True, 'description': '注册实例code\n井筒中心 well_kd_wellbore_ideas01', 'schema': {'type': 'string', 'example': 'example_dms_instance_code'}}, {'name': 'id', 'in': 'query', 'required': True, 'description': '主键id的key', 'schema': {'type': 'string', 'example': 'dsid'}}, {'name': 'tenant-id', 'in': 'header', 'required': True, 'description': 'tenant-id (Only:undefined)', 'schema': {'type': 'string'}}, {'name': 'Authorization', 'in': 'header', 'required': True, 'description': 'Authorization (Only:undefined)', 'schema': {'type': 'string'}}]
2025-05-26 15:00:24,323 - testcase.TC-ERROR-4001-QUERY - DEBUG - 检查查询参数: 'id'
2025-05-26 15:00:24,323 - testcase.TC-ERROR-4001-QUERY - DEBUG - 查询参数 'id' 包含嵌套 schema尝试在其内部查找简单类型字段。
2025-05-26 15:00:24,323 - testcase.TC-ERROR-4001-QUERY - INFO - 目标字段(查询参数 - schema为简单类型): id原始类型: string
2025-05-26 15:00:24,323 - testcase.TC-ERROR-4001-QUERY - CRITICAL - TC-ERROR-4001-QUERY __INIT__ >>> STARTED
2025-05-26 15:00:24,323 - testcase.TC-ERROR-4001-QUERY - DEBUG - 开始为端点 PUT /api/dms/{dms_instance_code}/v1/cd_geo_unit 初始化查询参数类型不匹配测试的目标字段查找。
2025-05-26 15:00:24,323 - testcase.TC-ERROR-4001-QUERY - CRITICAL - TC-ERROR-4001-QUERY __INIT__ >>> Parameters to be processed: [{'name': 'dms_instance_code', 'in': 'path', 'required': True, 'description': '注册实例code\n井筒中心 well_kd_wellbore_ideas01', 'schema': {'type': 'string', 'example': 'example_dms_instance_code'}}, {'name': 'id', 'in': 'query', 'required': True, 'description': '主键id的key', 'schema': {'type': 'string', 'example': 'dsid'}}, {'name': 'tenant-id', 'in': 'header', 'required': True, 'description': 'tenant-id (Only:undefined)', 'schema': {'type': 'string'}}, {'name': 'Authorization', 'in': 'header', 'required': True, 'description': 'Authorization (Only:undefined)', 'schema': {'type': 'string'}}]
2025-05-26 15:00:24,323 - testcase.TC-ERROR-4001-QUERY - DEBUG - 传入的参数列表 (在 TC-ERROR-4001-QUERY中): [{'name': 'dms_instance_code', 'in': 'path', 'required': True, 'description': '注册实例code\n井筒中心 well_kd_wellbore_ideas01', 'schema': {'type': 'string', 'example': 'example_dms_instance_code'}}, {'name': 'id', 'in': 'query', 'required': True, 'description': '主键id的key', 'schema': {'type': 'string', 'example': 'dsid'}}, {'name': 'tenant-id', 'in': 'header', 'required': True, 'description': 'tenant-id (Only:undefined)', 'schema': {'type': 'string'}}, {'name': 'Authorization', 'in': 'header', 'required': True, 'description': 'Authorization (Only:undefined)', 'schema': {'type': 'string'}}]
2025-05-26 15:00:24,323 - testcase.TC-ERROR-4001-QUERY - DEBUG - 检查查询参数: 'id'
2025-05-26 15:00:24,323 - testcase.TC-ERROR-4001-QUERY - DEBUG - 查询参数 'id' 包含嵌套 schema尝试在其内部查找简单类型字段。
2025-05-26 15:00:24,323 - testcase.TC-ERROR-4001-QUERY - INFO - 目标字段(查询参数 - schema为简单类型): id原始类型: string
2025-05-26 15:00:24,323 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-ERROR-4001-QUERY' (Error Code 4001 - Query Parameter Type Mismatch Validation) for endpoint 'PUT /api/dms/{dms_instance_code}/v1/cd_geo_unit'
2025-05-26 15:00:24,323 - ddms_compliance_suite.test_orchestrator - INFO - [put__api_dms_dms_instance_code_v1_cd_geo_unit_135749] 开始为端点 PUT_/api/dms/{dms_instance_code}/v1/cd_geo_unit 准备初始请求数据 (TC: TC-ERROR-4001-QUERY)
2025-05-26 15:00:24,324 - ddms_compliance_suite.test_orchestrator - INFO - [put__api_dms_dms_instance_code_v1_cd_geo_unit_135749] 从缓存加载了端点 'PUT_/api/dms/{dms_instance_code}/v1/cd_geo_unit' 的LLM参数。
2025-05-26 15:00:24,324 - ddms_compliance_suite.test_orchestrator - DEBUG - [put__api_dms_dms_instance_code_v1_cd_geo_unit_135749] (缓存加载) 准备的请求数据: method=PUT, path_params={'dms_instance_code': 'example_dms_instance_code'}, query_params={'id': 'dsid'}, headers=['Accept', 'Content-Type', 'tenant-id', 'Authorization'], body_type=dict
2025-05-26 15:00:24,324 - testcase.TC-ERROR-4001-QUERY - DEBUG - 准备修改查询参数以测试类型不匹配。目标路径: ['id'], 原始类型: string
2025-05-26 15:00:24,324 - testcase.TC-ERROR-4001-QUERY - INFO - 在查询参数路径 ['id'] (键 'id') 处,将值从 'dsid' 修改为 '12345' (原始类型: string)
2025-05-26 15:00:24,324 - testcase.TC-ERROR-4001-QUERY - DEBUG - Hook: generate_headers, current keys: ['Accept', 'Content-Type', 'tenant-id', 'Authorization']
2025-05-26 15:00:24,324 - testcase.TC-ERROR-4001-QUERY - DEBUG - TC-ERROR-4001-QUERY is focused on query parameters, generate_request_body will not modify the body.
2025-05-26 15:00:24,324 - testcase.TC-ERROR-4001-QUERY - DEBUG - Hook: modify_request_url, original URL: http://127.0.0.1:4523/m1/6389742-6086420-default/api/dms/example_dms_instance_code/v1/cd_geo_unit
2025-05-26 15:00:24,324 - testcase.TC-ERROR-4001-QUERY - DEBUG - Test case 'TC-ERROR-4001-QUERY' did not modify the URL via modify_request_url hook.
2025-05-26 15:00:24,324 - testcase.TC-ERROR-4001-QUERY - DEBUG - Hook: validate_request_url, url: http://127.0.0.1:4523/m1/6389742-6086420-default/api/dms/example_dms_instance_code/v1/cd_geo_unit
2025-05-26 15:00:24,324 - testcase.TC-ERROR-4001-QUERY - DEBUG - Hook: validate_request_headers, header keys: ['Accept', 'Content-Type', 'tenant-id', 'Authorization']
2025-05-26 15:00:24,324 - testcase.TC-ERROR-4001-QUERY - DEBUG - Hook: validate_request_body, body type: <class 'dict'>
2025-05-26 15:00:24,348 - testcase.TC-ERROR-4001-QUERY - WARNING - TC-ERROR-4001-QUERY: 类型不匹配测试失败。字段: query.id, 期望状态码: [400, 422], 实际: 200。
2025-05-26 15:00:24,348 - testcase.TC-ERROR-4001-QUERY - DEBUG - Hook: check_performance, elapsed: 0.02383112907409668
2025-05-26 15:00:24,348 - ddms_compliance_suite.test_orchestrator - DEBUG -  ❌ 测试用例 'TC-ERROR-4001-QUERY' 执行失败。
2025-05-26 15:00:24,349 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-ERROR-4001-QUERY' 执行完毕,状态: 失败
2025-05-26 15:00:24,349 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-ERROR-4001-BODY' for 'PUT /api/dms/{dms_instance_code}/v1/cd_geo_unit'
2025-05-26 15:00:24,349 - ddms_compliance_suite.test_orchestrator - DEBUG - 成功通过 to_dict() 方法将类型为 <class 'ddms_compliance_suite.input_parser.parser.YAPIEndpoint'> 的 endpoint_spec 转换为字典。
2025-05-26 15:00:24,349 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: <class 'ddms_compliance_suite.input_parser.parser.ParsedYAPISpec'>) to dict using .spec attribute.
2025-05-26 15:00:24,349 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: TypeMismatchBodyCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_yapi_id', '_yapi_raw_data', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['yapi_categories'])
2025-05-26 15:00:24,349 - testcase.TC-ERROR-4001-BODY - DEBUG - Test case 'TC-ERROR-4001-BODY' initialized for endpoint: PUT /api/dms/{dms_instance_code}/v1/cd_geo_unit
2025-05-26 15:00:24,349 - testcase.TC-ERROR-4001-BODY - CRITICAL - TC-ERROR-4001-BODY __INIT__ >>> STARTED
2025-05-26 15:00:24,349 - testcase.TC-ERROR-4001-BODY - DEBUG - 开始为端点 PUT /api/dms/{dms_instance_code}/v1/cd_geo_unit 初始化请求体类型不匹配测试的目标字段查找。
2025-05-26 15:00:24,349 - testcase.TC-ERROR-4001-BODY - DEBUG - 从顶层 'requestBody' 中获取到 schema: ['$schema', 'type', 'properties']
2025-05-26 15:00:24,349 - testcase.TC-ERROR-4001-BODY - DEBUG - 最终用于检查的请求体 schema: ['$schema', 'type', 'properties']
2025-05-26 15:00:24,349 - testcase.TC-ERROR-4001-BODY - DEBUG - Enter _find_target_field_in_schema for base_path: '', schema_to_search keys: ['$schema', 'type', 'properties']
2025-05-26 15:00:24,349 - testcase.TC-ERROR-4001-BODY - DEBUG - Path: '', Resolved Schema Type: 'object', Keys: ['$schema', 'type', 'properties']
2025-05-26 15:00:24,350 - testcase.TC-ERROR-4001-BODY - DEBUG - Path: '', Type is 'object'. Checking properties: ['version', 'data']
2025-05-26 15:00:24,350 - testcase.TC-ERROR-4001-BODY - DEBUG - Path: 'version', Property Schema (Original): {'type': 'string'}
2025-05-26 15:00:24,350 - testcase.TC-ERROR-4001-BODY - DEBUG - Path: 'version', Property Schema (Resolved): {'type': 'string'}
2025-05-26 15:00:24,350 - testcase.TC-ERROR-4001-BODY - DEBUG - Path: 'version', Resolved Property Type: 'string'
2025-05-26 15:00:24,350 - testcase.TC-ERROR-4001-BODY - INFO - 目标字段(请求体): 'version' (原始类型: 'string') FOUND!
2025-05-26 15:00:24,350 - testcase.TC-ERROR-4001-BODY - INFO - 类型不匹配测试的目标字段(请求体): version原始类型: string
2025-05-26 15:00:24,350 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-ERROR-4001-BODY' (Error Code 4001 - Request Body Type Mismatch Validation) for endpoint 'PUT /api/dms/{dms_instance_code}/v1/cd_geo_unit'
2025-05-26 15:00:24,350 - ddms_compliance_suite.test_orchestrator - INFO - [put__api_dms_dms_instance_code_v1_cd_geo_unit_135749] 开始为端点 PUT_/api/dms/{dms_instance_code}/v1/cd_geo_unit 准备初始请求数据 (TC: TC-ERROR-4001-BODY)
2025-05-26 15:00:24,350 - ddms_compliance_suite.test_orchestrator - INFO - [put__api_dms_dms_instance_code_v1_cd_geo_unit_135749] 从缓存加载了端点 'PUT_/api/dms/{dms_instance_code}/v1/cd_geo_unit' 的LLM参数。
2025-05-26 15:00:24,350 - ddms_compliance_suite.test_orchestrator - DEBUG - [put__api_dms_dms_instance_code_v1_cd_geo_unit_135749] (缓存加载) 准备的请求数据: method=PUT, path_params={'dms_instance_code': 'example_dms_instance_code'}, query_params={'id': 'dsid'}, headers=['Accept', 'Content-Type', 'tenant-id', 'Authorization'], body_type=dict
2025-05-26 15:00:24,350 - testcase.TC-ERROR-4001-BODY - DEBUG - TC-ERROR-4001-BODY is focused on request body, generate_query_params will not modify query parameters.
2025-05-26 15:00:24,350 - testcase.TC-ERROR-4001-BODY - DEBUG - Hook: generate_headers, current keys: ['Accept', 'Content-Type', 'tenant-id', 'Authorization']
2025-05-26 15:00:24,350 - testcase.TC-ERROR-4001-BODY - DEBUG - 准备修改请求体以测试类型不匹配。目标路径: ['version'], 原始类型: string
2025-05-26 15:00:24,350 - testcase.TC-ERROR-4001-BODY - INFO - 在路径 ['version'] (键 'version') 处,将值从 'example_string' 修改为 '12345' (原始类型: string)
2025-05-26 15:00:24,350 - testcase.TC-ERROR-4001-BODY - DEBUG - Hook: modify_request_url, original URL: http://127.0.0.1:4523/m1/6389742-6086420-default/api/dms/example_dms_instance_code/v1/cd_geo_unit
2025-05-26 15:00:24,350 - testcase.TC-ERROR-4001-BODY - DEBUG - Test case 'TC-ERROR-4001-BODY' did not modify the URL via modify_request_url hook.
2025-05-26 15:00:24,350 - testcase.TC-ERROR-4001-BODY - DEBUG - Hook: validate_request_url, url: http://127.0.0.1:4523/m1/6389742-6086420-default/api/dms/example_dms_instance_code/v1/cd_geo_unit
2025-05-26 15:00:24,350 - testcase.TC-ERROR-4001-BODY - DEBUG - Hook: validate_request_headers, header keys: ['Accept', 'Content-Type', 'tenant-id', 'Authorization']
2025-05-26 15:00:24,350 - testcase.TC-ERROR-4001-BODY - DEBUG - Hook: validate_request_body, body type: <class 'dict'>
2025-05-26 15:00:24,378 - testcase.TC-ERROR-4001-BODY - WARNING - TC-ERROR-4001-BODY: 类型不匹配测试失败。字段: body.version, 期望状态码: [400, 422], 实际: 200。
2025-05-26 15:00:24,378 - testcase.TC-ERROR-4001-BODY - DEBUG - Hook: check_performance, elapsed: 0.026877880096435547
2025-05-26 15:00:24,378 - ddms_compliance_suite.test_orchestrator - DEBUG -  ❌ 测试用例 'TC-ERROR-4001-BODY' 执行失败。
2025-05-26 15:00:24,378 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-ERROR-4001-BODY' 执行完毕,状态: 失败
2025-05-26 15:00:24,378 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-ERROR-4003-BODY' for 'PUT /api/dms/{dms_instance_code}/v1/cd_geo_unit'
2025-05-26 15:00:24,378 - ddms_compliance_suite.test_orchestrator - DEBUG - 成功通过 to_dict() 方法将类型为 <class 'ddms_compliance_suite.input_parser.parser.YAPIEndpoint'> 的 endpoint_spec 转换为字典。
2025-05-26 15:00:24,378 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: <class 'ddms_compliance_suite.input_parser.parser.ParsedYAPISpec'>) to dict using .spec attribute.
2025-05-26 15:00:24,378 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: MissingRequiredFieldBodyCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_yapi_id', '_yapi_raw_data', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['yapi_categories'])
2025-05-26 15:00:24,378 - testcase.TC-ERROR-4003-BODY - INFO - 策略2: 在数组属性 'data' (路径 root) 的元素内找到必填字段: 'bsflag'. 将尝试移除路径: ['data', 0, 'bsflag']
2025-05-26 15:00:24,378 - testcase.TC-ERROR-4003-BODY - INFO - 必填字段缺失测试的目标字段 (请求体): 'data.0.bsflag'
2025-05-26 15:00:24,378 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-ERROR-4003-BODY' (Error Code 4003 - Missing Required Request Body Field Validation) for endpoint 'PUT /api/dms/{dms_instance_code}/v1/cd_geo_unit'
2025-05-26 15:00:24,378 - ddms_compliance_suite.test_orchestrator - INFO - [put__api_dms_dms_instance_code_v1_cd_geo_unit_135749] 开始为端点 PUT_/api/dms/{dms_instance_code}/v1/cd_geo_unit 准备初始请求数据 (TC: TC-ERROR-4003-BODY)
2025-05-26 15:00:24,378 - ddms_compliance_suite.test_orchestrator - INFO - [put__api_dms_dms_instance_code_v1_cd_geo_unit_135749] 从缓存加载了端点 'PUT_/api/dms/{dms_instance_code}/v1/cd_geo_unit' 的LLM参数。
2025-05-26 15:00:24,378 - ddms_compliance_suite.test_orchestrator - DEBUG - [put__api_dms_dms_instance_code_v1_cd_geo_unit_135749] (缓存加载) 准备的请求数据: method=PUT, path_params={'dms_instance_code': 'example_dms_instance_code'}, query_params={'id': 'dsid'}, headers=['Accept', 'Content-Type', 'tenant-id', 'Authorization'], body_type=dict
2025-05-26 15:00:24,378 - testcase.TC-ERROR-4003-BODY - INFO - 为进行必填字段缺失测试,已从请求体中移除字段路径 'data.0.bsflag' (原值: '0.0')。
2025-05-26 15:00:24,394 - testcase.TC-ERROR-4003-BODY - WARNING - 必填请求体字段缺失测试失败:期望状态码 [400, 422],实际为 200。移除的字段'body.data.0.bsflag'
2025-05-26 15:00:24,394 - ddms_compliance_suite.test_orchestrator - DEBUG -  ❌ 测试用例 'TC-ERROR-4003-BODY' 执行失败。
2025-05-26 15:00:24,394 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-ERROR-4003-BODY' 执行完毕,状态: 失败
2025-05-26 15:00:24,395 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-ERROR-4003-QUERY' for 'PUT /api/dms/{dms_instance_code}/v1/cd_geo_unit'
2025-05-26 15:00:24,395 - ddms_compliance_suite.test_orchestrator - DEBUG - 成功通过 to_dict() 方法将类型为 <class 'ddms_compliance_suite.input_parser.parser.YAPIEndpoint'> 的 endpoint_spec 转换为字典。
2025-05-26 15:00:24,395 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: <class 'ddms_compliance_suite.input_parser.parser.ParsedYAPISpec'>) to dict using .spec attribute.
2025-05-26 15:00:24,395 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: MissingRequiredFieldQueryCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_yapi_id', '_yapi_raw_data', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['yapi_categories'])
2025-05-26 15:00:24,395 - testcase.TC-ERROR-4003-QUERY - INFO - 必填字段缺失测试的目标字段 (查询参数): 'id'
2025-05-26 15:00:24,395 - testcase.TC-ERROR-4003-QUERY - INFO - 测试用例 TC-ERROR-4003-QUERY (Error Code 4003 - Missing Required Query Parameter Validation) 已针对端点 'PUT /api/dms/{dms_instance_code}/v1/cd_geo_unit' 初始化。Target param to remove: id
2025-05-26 15:00:24,395 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-ERROR-4003-QUERY' (Error Code 4003 - Missing Required Query Parameter Validation) for endpoint 'PUT /api/dms/{dms_instance_code}/v1/cd_geo_unit'
2025-05-26 15:00:24,395 - ddms_compliance_suite.test_orchestrator - INFO - [put__api_dms_dms_instance_code_v1_cd_geo_unit_135749] 开始为端点 PUT_/api/dms/{dms_instance_code}/v1/cd_geo_unit 准备初始请求数据 (TC: TC-ERROR-4003-QUERY)
2025-05-26 15:00:24,395 - ddms_compliance_suite.test_orchestrator - INFO - [put__api_dms_dms_instance_code_v1_cd_geo_unit_135749] 从缓存加载了端点 'PUT_/api/dms/{dms_instance_code}/v1/cd_geo_unit' 的LLM参数。
2025-05-26 15:00:24,396 - ddms_compliance_suite.test_orchestrator - DEBUG - [put__api_dms_dms_instance_code_v1_cd_geo_unit_135749] (缓存加载) 准备的请求数据: method=PUT, path_params={'dms_instance_code': 'example_dms_instance_code'}, query_params={'id': 'dsid'}, headers=['Accept', 'Content-Type', 'tenant-id', 'Authorization'], body_type=dict
2025-05-26 15:00:24,396 - testcase.TC-ERROR-4003-QUERY - INFO - 为进行必填查询参数缺失测试,已从查询参数中移除 'id' (原值: 'dsid')。
2025-05-26 15:00:24,414 - testcase.TC-ERROR-4003-QUERY - WARNING - 必填查询参数缺失测试失败:期望状态码 [400, 422],实际为 200。移除的参数'id'
2025-05-26 15:00:24,414 - ddms_compliance_suite.test_orchestrator - DEBUG -  ❌ 测试用例 'TC-ERROR-4003-QUERY' 执行失败。
2025-05-26 15:00:24,414 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-ERROR-4003-QUERY' 执行完毕,状态: 失败
2025-05-26 15:00:24,414 - ddms_compliance_suite.test_orchestrator - INFO - 端点 'PUT /api/dms/{dms_instance_code}/v1/cd_geo_unit' 测试完成,最终状态: 失败
2025-05-26 15:00:24,415 - ddms_compliance_suite.test_orchestrator - INFO - 开始为端点测试: DELETE /api/dms/{dms_instance_code}/v1/cd_geo_unit (地质单元数据删除)
2025-05-26 15:00:24,415 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-STATUS-001' 适用于端点 'DELETE /api/dms/{dms_instance_code}/v1/cd_geo_unit'。
2025-05-26 15:00:24,415 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-NORMATIVE-URL-LLM-COMPREHENSIVE-001' 适用于端点 'DELETE /api/dms/{dms_instance_code}/v1/cd_geo_unit'。
2025-05-26 15:00:24,415 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-CORE-FUNC-001' 适用于端点 'DELETE /api/dms/{dms_instance_code}/v1/cd_geo_unit'。
2025-05-26 15:00:24,415 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-SECURITY-001' 适用于端点 'DELETE /api/dms/{dms_instance_code}/v1/cd_geo_unit'。
2025-05-26 15:00:24,415 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4001-QUERY' 适用于端点 'DELETE /api/dms/{dms_instance_code}/v1/cd_geo_unit'。
2025-05-26 15:00:24,415 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4001-BODY' 适用于端点 'DELETE /api/dms/{dms_instance_code}/v1/cd_geo_unit'。
2025-05-26 15:00:24,415 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4003-BODY' 适用于端点 'DELETE /api/dms/{dms_instance_code}/v1/cd_geo_unit'。
2025-05-26 15:00:24,415 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4003-QUERY' 适用于端点 'DELETE /api/dms/{dms_instance_code}/v1/cd_geo_unit'。
2025-05-26 15:00:24,415 - ddms_compliance_suite.test_orchestrator - INFO - 端点 'DELETE /api/dms/{dms_instance_code}/v1/cd_geo_unit' 发现了 8 个适用的测试用例: ['TC-STATUS-001', 'TC-NORMATIVE-URL-LLM-COMPREHENSIVE-001', 'TC-CORE-FUNC-001', 'TC-SECURITY-001', 'TC-ERROR-4001-QUERY', 'TC-ERROR-4001-BODY', 'TC-ERROR-4003-BODY', 'TC-ERROR-4003-QUERY']
2025-05-26 15:00:24,415 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-STATUS-001' for 'DELETE /api/dms/{dms_instance_code}/v1/cd_geo_unit'
2025-05-26 15:00:24,415 - ddms_compliance_suite.test_orchestrator - DEBUG - 成功通过 to_dict() 方法将类型为 <class 'ddms_compliance_suite.input_parser.parser.YAPIEndpoint'> 的 endpoint_spec 转换为字典。
2025-05-26 15:00:24,415 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: <class 'ddms_compliance_suite.input_parser.parser.ParsedYAPISpec'>) to dict using .spec attribute.
2025-05-26 15:00:24,415 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: StatusCode200Check 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_yapi_id', '_yapi_raw_data', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['yapi_categories'])
2025-05-26 15:00:24,415 - testcase.TC-STATUS-001 - INFO - 测试用例 TC-STATUS-001 (基本状态码 200 检查) 已针对端点 'DELETE /api/dms/{dms_instance_code}/v1/cd_geo_unit' 初始化。
2025-05-26 15:00:24,415 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-STATUS-001' (基本状态码 200 检查) for endpoint 'DELETE /api/dms/{dms_instance_code}/v1/cd_geo_unit'
2025-05-26 15:00:24,415 - ddms_compliance_suite.test_orchestrator - INFO - [delete__api_dms_dms_instance_code_v1_cd_geo_unit_135750] 开始为端点 DELETE_/api/dms/{dms_instance_code}/v1/cd_geo_unit 准备初始请求数据 (TC: TC-STATUS-001)
2025-05-26 15:00:24,415 - ddms_compliance_suite.test_orchestrator - INFO - [delete__api_dms_dms_instance_code_v1_cd_geo_unit_135750] 端点 'DELETE_/api/dms/{dms_instance_code}/v1/cd_geo_unit' 的参数未在缓存中找到,开始生成。
2025-05-26 15:00:24,415 - ddms_compliance_suite.test_orchestrator - INFO - [delete__api_dms_dms_instance_code_v1_cd_geo_unit_135750] 使用常规方法或LLM未启用为路径参数。
2025-05-26 15:00:24,415 - ddms_compliance_suite.test_orchestrator - INFO - [delete__api_dms_dms_instance_code_v1_cd_geo_unit_135750] 使用常规方法生成 path 参数。
2025-05-26 15:00:24,415 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete__api_dms_dms_instance_code_v1_cd_geo_unit_135750] 使用 schema 中的 'example' 值 for (context: path parameter 'dms_instance_code'): example_dms_instance_code
2025-05-26 15:00:24,415 - ddms_compliance_suite.test_orchestrator - INFO - [delete__api_dms_dms_instance_code_v1_cd_geo_unit_135750] 常规方法生成的 path 参数: {'dms_instance_code': 'example_dms_instance_code'}
2025-05-26 15:00:24,415 - ddms_compliance_suite.test_orchestrator - INFO - [delete__api_dms_dms_instance_code_v1_cd_geo_unit_135750] 使用常规方法或LLM未启用为查询参数。
2025-05-26 15:00:24,416 - ddms_compliance_suite.test_orchestrator - INFO - [delete__api_dms_dms_instance_code_v1_cd_geo_unit_135750] 使用常规方法生成 query 参数。
2025-05-26 15:00:24,416 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete__api_dms_dms_instance_code_v1_cd_geo_unit_135750] 使用 schema 中的 'example' 值 for (context: query parameter 'id'): dsid
2025-05-26 15:00:24,416 - ddms_compliance_suite.test_orchestrator - INFO - [delete__api_dms_dms_instance_code_v1_cd_geo_unit_135750] 常规方法生成的 query 参数: {'id': 'dsid'}
2025-05-26 15:00:24,416 - ddms_compliance_suite.test_orchestrator - INFO - [delete__api_dms_dms_instance_code_v1_cd_geo_unit_135750] 使用常规方法或LLM未启用为头部参数。
2025-05-26 15:00:24,416 - ddms_compliance_suite.test_orchestrator - INFO - [delete__api_dms_dms_instance_code_v1_cd_geo_unit_135750] 使用常规方法生成 header 参数。
2025-05-26 15:00:24,416 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete__api_dms_dms_instance_code_v1_cd_geo_unit_135750] 生成 string 类型数据 ('') for (context: header parameter 'tenant-id'): example_string
2025-05-26 15:00:24,416 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete__api_dms_dms_instance_code_v1_cd_geo_unit_135750] 生成 string 类型数据 ('') for (context: header parameter 'Authorization'): example_string
2025-05-26 15:00:24,416 - ddms_compliance_suite.test_orchestrator - INFO - [delete__api_dms_dms_instance_code_v1_cd_geo_unit_135750] 常规方法生成的 header 参数: {'tenant-id': 'example_string', 'Authorization': 'example_string'}
2025-05-26 15:00:24,416 - ddms_compliance_suite.test_orchestrator - INFO - [delete__api_dms_dms_instance_code_v1_cd_geo_unit_135750] 使用常规方法或LLM未启用/不适用,为请求体。
2025-05-26 15:00:24,416 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete__api_dms_dms_instance_code_v1_cd_geo_unit_135750] 生成 object 类型数据 for (context: requestBody). Properties: ['version', 'data']
2025-05-26 15:00:24,416 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete__api_dms_dms_instance_code_v1_cd_geo_unit_135750] 生成 string 类型数据 ('') for (context: requestBody.version): example_string
2025-05-26 15:00:24,416 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete__api_dms_dms_instance_code_v1_cd_geo_unit_135750] 生成 array 类型数据 for (context: requestBody.data). Items schema: {'type': 'string'}, minItems: 1
2025-05-26 15:00:24,416 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete__api_dms_dms_instance_code_v1_cd_geo_unit_135750] 生成 string 类型数据 ('') for (context: requestBody.data[0]): example_string
2025-05-26 15:00:24,416 - ddms_compliance_suite.test_orchestrator - INFO - [delete__api_dms_dms_instance_code_v1_cd_geo_unit_135750] 端点 'DELETE_/api/dms/{dms_instance_code}/v1/cd_geo_unit' 的参数已生成并存入缓存。
2025-05-26 15:00:24,416 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete__api_dms_dms_instance_code_v1_cd_geo_unit_135750] (新生成) 准备的请求数据: method=DELETE, path_params={'dms_instance_code': 'example_dms_instance_code'}, query_params={'id': 'dsid'}, headers=['Accept', 'tenant-id', 'Authorization'], body_type=dict
2025-05-26 15:00:24,434 - testcase.TC-STATUS-001 - INFO - 状态码验证通过: 200 == 200 for http://127.0.0.1:4523/m1/6389742-6086420-default/api/dms/example_dms_instance_code/v1/cd_geo_unit
2025-05-26 15:00:24,435 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-STATUS-001' 执行成功。
2025-05-26 15:00:24,435 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-STATUS-001' 执行完毕,状态: 通过
2025-05-26 15:00:24,435 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-NORMATIVE-URL-LLM-COMPREHENSIVE-001' for 'DELETE /api/dms/{dms_instance_code}/v1/cd_geo_unit'
2025-05-26 15:00:24,435 - ddms_compliance_suite.test_orchestrator - DEBUG - 成功通过 to_dict() 方法将类型为 <class 'ddms_compliance_suite.input_parser.parser.YAPIEndpoint'> 的 endpoint_spec 转换为字典。
2025-05-26 15:00:24,435 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: <class 'ddms_compliance_suite.input_parser.parser.ParsedYAPISpec'>) to dict using .spec attribute.
2025-05-26 15:00:24,435 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: ComprehensiveURLCheckLLMCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_yapi_id', '_yapi_raw_data', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['yapi_categories'])
2025-05-26 15:00:24,435 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-NORMATIVE-URL-LLM-COMPREHENSIVE-001' (综合URL规范与RESTful风格检查 (LLM)) for endpoint 'DELETE /api/dms/{dms_instance_code}/v1/cd_geo_unit'
2025-05-26 15:00:24,435 - ddms_compliance_suite.test_orchestrator - INFO - [delete__api_dms_dms_instance_code_v1_cd_geo_unit_135750] 开始为端点 DELETE_/api/dms/{dms_instance_code}/v1/cd_geo_unit 准备初始请求数据 (TC: TC-NORMATIVE-URL-LLM-COMPREHENSIVE-001)
2025-05-26 15:00:24,435 - ddms_compliance_suite.test_orchestrator - INFO - [delete__api_dms_dms_instance_code_v1_cd_geo_unit_135750] 从缓存加载了端点 'DELETE_/api/dms/{dms_instance_code}/v1/cd_geo_unit' 的LLM参数。
2025-05-26 15:00:24,435 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete__api_dms_dms_instance_code_v1_cd_geo_unit_135750] (缓存加载) 准备的请求数据: method=DELETE, path_params={'dms_instance_code': 'example_dms_instance_code'}, query_params={'id': 'dsid'}, headers=['Accept', 'tenant-id', 'Authorization'], body_type=dict
2025-05-26 15:00:24,436 - testcase.TC-NORMATIVE-URL-LLM-COMPREHENSIVE-001 - INFO - 向LLM发送请求评估路径: /api/dms/{dms_instance_code}/v1/cd_geo_unit (DELETE)
2025-05-26 15:00:24,436 - ddms_compliance_suite.llm_utils.llm_service - DEBUG - LLM API Request Payload:
{
"model": "qwen-plus",
"messages": [
{
"role": "system",
"content": "你是一位API设计评审专家专注于评估API的URL规范性和RESTful风格。你的输出必须是严格的JSON格式。"
},
{
"role": "user",
"content": "\n请扮演一位资深的API设计评审员。我将提供一个API端点的路径模板、HTTP方法以及可能的接口名称。\n请根据以下石油行业API设计规范评估此API端点并以严格的JSON格式返回您的评估结果。\nJSON对象应包含一个名为 \"assessments\" 的键,其值为一个对象列表,每个对象代表对一个标准的评估,包含 \"standard_name\" (字符串), \"is_compliant\" (布尔值), 和 \"reason\" (字符串) 三个键。\n\nAPI端点信息:\n- HTTP方法: DELETE\n- 路径模板: /api/dms/{dms_instance_code}/v1/cd_geo_unit\n- 路径中提取的参数名: [dms_instance_code]\n\n评估标准:\n\n1. **接口名称规范 (接口名称需要你从路径模板中提取,一般是路径中除了参数名以外的最后的一个单词)**:\n - 规则: 采用'动词+名词'结构,明确业务语义 (例如: GetWellLog, SubmitSeismicJob)。\n - standard_name: \"interface_naming_convention\"\n\n2. **HTTP方法使用规范**:\n - 规则: 遵循RESTful规范GET用于数据检索, POST用于创建资源, PUT用于更新资源, DELETE用于删除资源。\n - standard_name: \"http_method_usage\"\n\n3. **URL路径结构规范**:\n - 规则: 格式为 `<前缀>/<专业领域>/v<版本号>/<资源类型>` (例如: /logging/v1.2/wells, /seismicprospecting/v1.0/datasets)。\n - 前缀: 示例: /api/dms\n - 专业领域: 专业领域示例: seismicprospecting, welllogging, reservoirevaluation\n - 版本号: 语义化版本,例如 v1, v1.0, v2.1.3。\n - 资源类型: 通常为名词复数。\n - standard_name: \"url_path_structure\"\n\n4. **URL路径参数命名规范**:\n - 规则: 路径参数(如果存在)必须使用全小写字母(可以是一个单词)或小写字母加下划线命名(这是多个单词的情况),并能反映资源的唯一标识 (例如: {well_id},{version},{schema})。\n - standard_name: \"url_path_parameter_naming\"\n\n5. **资源命名规范 (在路径中)**:\n - 规则: 资源集合应使用名词的复数形式表示 (例如 `/wells`, `/logs`);应优先使用石油行业的标准术语 (例如用 `trajectory` 而非 `path` 来表示井轨迹)。\n - standard_name: \"resource_naming_in_path\"\n - standard_name: \"resource\"\n - standard_name: \"schema\"\n - standard_name: \"version\"\n\n\n\n请确保您的输出是一个可以被 `json.loads()` 直接解析的JSON对象。\n例如:\n{\n \"assessments\": [\n {\n \"standard_name\": \"interface_naming_convention\",\n \"is_compliant\": true,\n \"reason\": \"接口名称 'GetWellboreTrajectory' 符合动词+名词结构。\"\n },\n {\n \"standard_name\": \"http_method_usage\",\n \"is_compliant\": true,\n \"reason\": \"GET方法用于检索资源符合规范。\"\n }\n // ... 其他标准的评估 ...\n ]\n}\n"
}
],
"max_tokens": 1024,
"temperature": 0.2
}
2025-05-26 15:00:48,176 - ddms_compliance_suite.llm_utils.llm_service - DEBUG - LLM API Response:
{
"choices": [
{
"message": {
"role": "assistant",
"content": "{\n \"assessments\": [\n {\n \"standard_name\": \"interface_naming_convention\",\n \"is_compliant\": false,\n \"reason\": \"接口名称 'cd_geo_unit' 不符合动词+名词结构,无法明确表达业务语义。\"\n },\n {\n \"standard_name\": \"http_method_usage\",\n \"is_compliant\": true,\n \"reason\": \"DELETE方法用于删除资源符合RESTful规范。\"\n },\n {\n \"standard_name\": \"url_path_structure\",\n \"is_compliant\": true,\n \"reason\": \"路径结构 '/api/dms/{dms_instance_code}/v1/cd_geo_unit' 符合 `<前缀>/<专业领域>/v<版本号>/<资源类型>` 的格式要求。\"\n },\n {\n \"standard_name\": \"url_path_parameter_naming\",\n \"is_compliant\": true,\n \"reason\": \"路径参数 '{dms_instance_code}' 使用了小写字母加下划线的命名方式,符合命名规范。\"\n },\n {\n \"standard_name\": \"resource_naming_in_path\",\n \"is_compliant\": false,\n \"reason\": \"资源名称 'cd_geo_unit' 应使用复数形式表示集合资源,并且建议使用更具体的石油行业术语(例如 'geological_units')。\"\n }\n ]\n}"
},
"finish_reason": "stop",
"index": 0,
"logprobs": null
}
],
"object": "chat.completion",
"usage": {
"prompt_tokens": 803,
"completion_tokens": 289,
"total_tokens": 1092,
"prompt_tokens_details": {
"cached_tokens": 0
}
},
"created": 1748242848,
"system_fingerprint": null,
"model": "qwen-plus",
"id": "chatcmpl-4879ac12-4f68-982c-be1d-85de8824af0f"
}
2025-05-26 15:00:48,177 - testcase.TC-NORMATIVE-URL-LLM-COMPREHENSIVE-001 - WARNING - LLM评估 - 标准 'interface_naming_convention' for '/api/dms/{dms_instance_code}/v1/cd_geo_unit': 不符合。原因: 接口名称 'cd_geo_unit' 不符合动词+名词结构,无法明确表达业务语义。
2025-05-26 15:00:48,178 - testcase.TC-NORMATIVE-URL-LLM-COMPREHENSIVE-001 - INFO - LLM评估 - 标准 'http_method_usage' for '/api/dms/{dms_instance_code}/v1/cd_geo_unit': 符合。原因: DELETE方法用于删除资源符合RESTful规范。
2025-05-26 15:00:48,178 - testcase.TC-NORMATIVE-URL-LLM-COMPREHENSIVE-001 - INFO - LLM评估 - 标准 'url_path_structure' for '/api/dms/{dms_instance_code}/v1/cd_geo_unit': 符合。原因: 路径结构 '/api/dms/{dms_instance_code}/v1/cd_geo_unit' 符合 `<前缀>/<专业领域>/v<版本号>/<资源类型>` 的格式要求。
2025-05-26 15:00:48,178 - testcase.TC-NORMATIVE-URL-LLM-COMPREHENSIVE-001 - INFO - LLM评估 - 标准 'url_path_parameter_naming' for '/api/dms/{dms_instance_code}/v1/cd_geo_unit': 符合。原因: 路径参数 '{dms_instance_code}' 使用了小写字母加下划线的命名方式,符合命名规范。
2025-05-26 15:00:48,178 - testcase.TC-NORMATIVE-URL-LLM-COMPREHENSIVE-001 - WARNING - LLM评估 - 标准 'resource_naming_in_path' for '/api/dms/{dms_instance_code}/v1/cd_geo_unit': 不符合。原因: 资源名称 'cd_geo_unit' 应使用复数形式表示集合资源,并且建议使用更具体的石油行业术语(例如 'geological_units')。
2025-05-26 15:00:48,298 - ddms_compliance_suite.test_orchestrator - DEBUG -  ❌ 测试用例 'TC-NORMATIVE-URL-LLM-COMPREHENSIVE-001' 执行失败。
2025-05-26 15:00:48,299 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-NORMATIVE-URL-LLM-COMPREHENSIVE-001' 执行完毕,状态: 失败
2025-05-26 15:00:48,299 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-CORE-FUNC-001' for 'DELETE /api/dms/{dms_instance_code}/v1/cd_geo_unit'
2025-05-26 15:00:48,299 - ddms_compliance_suite.test_orchestrator - DEBUG - 成功通过 to_dict() 方法将类型为 <class 'ddms_compliance_suite.input_parser.parser.YAPIEndpoint'> 的 endpoint_spec 转换为字典。
2025-05-26 15:00:48,299 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: <class 'ddms_compliance_suite.input_parser.parser.ParsedYAPISpec'>) to dict using .spec attribute.
2025-05-26 15:00:48,299 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: ResponseSchemaValidationCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_yapi_id', '_yapi_raw_data', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['yapi_categories'])
2025-05-26 15:00:48,299 - testcase.TC-CORE-FUNC-001 - INFO - 测试用例 'TC-CORE-FUNC-001' 已为端点 'DELETE /api/dms/{dms_instance_code}/v1/cd_geo_unit' 初始化。
2025-05-26 15:00:48,299 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-CORE-FUNC-001' (Response Body JSON Schema Validation) for endpoint 'DELETE /api/dms/{dms_instance_code}/v1/cd_geo_unit'
2025-05-26 15:00:48,299 - ddms_compliance_suite.test_orchestrator - INFO - [delete__api_dms_dms_instance_code_v1_cd_geo_unit_135750] 开始为端点 DELETE_/api/dms/{dms_instance_code}/v1/cd_geo_unit 准备初始请求数据 (TC: TC-CORE-FUNC-001)
2025-05-26 15:00:48,299 - ddms_compliance_suite.test_orchestrator - INFO - [delete__api_dms_dms_instance_code_v1_cd_geo_unit_135750] 从缓存加载了端点 'DELETE_/api/dms/{dms_instance_code}/v1/cd_geo_unit' 的LLM参数。
2025-05-26 15:00:48,299 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete__api_dms_dms_instance_code_v1_cd_geo_unit_135750] (缓存加载) 准备的请求数据: method=DELETE, path_params={'dms_instance_code': 'example_dms_instance_code'}, query_params={'id': 'dsid'}, headers=['Accept', 'tenant-id', 'Authorization'], body_type=dict
2025-05-26 15:00:48,324 - testcase.TC-CORE-FUNC-001 - INFO - 将根据路径 'responses.200.content.application/json.schema' 的schema验证响应体。
2025-05-26 15:00:48,324 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-CORE-FUNC-001' 执行成功。
2025-05-26 15:00:48,324 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-CORE-FUNC-001' 执行完毕,状态: 通过
2025-05-26 15:00:48,324 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-SECURITY-001' for 'DELETE /api/dms/{dms_instance_code}/v1/cd_geo_unit'
2025-05-26 15:00:48,324 - ddms_compliance_suite.test_orchestrator - DEBUG - 成功通过 to_dict() 方法将类型为 <class 'ddms_compliance_suite.input_parser.parser.YAPIEndpoint'> 的 endpoint_spec 转换为字典。
2025-05-26 15:00:48,324 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: <class 'ddms_compliance_suite.input_parser.parser.ParsedYAPISpec'>) to dict using .spec attribute.
2025-05-26 15:00:48,324 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: HTTPSMandatoryCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_yapi_id', '_yapi_raw_data', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['yapi_categories'])
2025-05-26 15:00:48,324 - testcase.TC-SECURITY-001 - INFO - 测试用例 'TC-SECURITY-001' 已为端点 'DELETE /api/dms/{dms_instance_code}/v1/cd_geo_unit' 初始化。
2025-05-26 15:00:48,324 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-SECURITY-001' (HTTPS Protocol Mandatory Verification) for endpoint 'DELETE /api/dms/{dms_instance_code}/v1/cd_geo_unit'
2025-05-26 15:00:48,324 - ddms_compliance_suite.test_orchestrator - INFO - [delete__api_dms_dms_instance_code_v1_cd_geo_unit_135750] 开始为端点 DELETE_/api/dms/{dms_instance_code}/v1/cd_geo_unit 准备初始请求数据 (TC: TC-SECURITY-001)
2025-05-26 15:00:48,324 - ddms_compliance_suite.test_orchestrator - INFO - [delete__api_dms_dms_instance_code_v1_cd_geo_unit_135750] 从缓存加载了端点 'DELETE_/api/dms/{dms_instance_code}/v1/cd_geo_unit' 的LLM参数。
2025-05-26 15:00:48,324 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete__api_dms_dms_instance_code_v1_cd_geo_unit_135750] (缓存加载) 准备的请求数据: method=DELETE, path_params={'dms_instance_code': 'example_dms_instance_code'}, query_params={'id': 'dsid'}, headers=['Accept', 'tenant-id', 'Authorization'], body_type=dict
2025-05-26 15:00:48,324 - testcase.TC-SECURITY-001 - WARNING - 原始URL 'http://127.0.0.1:4523/m1/6389742-6086420-default/api/dms/example_dms_instance_code/v1/cd_geo_unit' 不是HTTPS。跳过此测试用例的URL修改。
2025-05-26 15:00:48,351 - testcase.TC-SECURITY-001 - ERROR - 安全漏洞API允许通过HTTP成功响应 (200)。
2025-05-26 15:00:48,351 - ddms_compliance_suite.test_orchestrator - DEBUG -  ❌ 测试用例 'TC-SECURITY-001' 执行失败。
2025-05-26 15:00:48,351 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-SECURITY-001' 执行完毕,状态: 失败
2025-05-26 15:00:48,351 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-ERROR-4001-QUERY' for 'DELETE /api/dms/{dms_instance_code}/v1/cd_geo_unit'
2025-05-26 15:00:48,351 - ddms_compliance_suite.test_orchestrator - DEBUG - 成功通过 to_dict() 方法将类型为 <class 'ddms_compliance_suite.input_parser.parser.YAPIEndpoint'> 的 endpoint_spec 转换为字典。
2025-05-26 15:00:48,351 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: <class 'ddms_compliance_suite.input_parser.parser.ParsedYAPISpec'>) to dict using .spec attribute.
2025-05-26 15:00:48,351 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: TypeMismatchQueryParamCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_yapi_id', '_yapi_raw_data', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['yapi_categories'])
2025-05-26 15:00:48,351 - testcase.TC-ERROR-4001-QUERY - DEBUG - Test case 'TC-ERROR-4001-QUERY' initialized for endpoint: DELETE /api/dms/{dms_instance_code}/v1/cd_geo_unit
2025-05-26 15:00:48,351 - testcase.TC-ERROR-4001-QUERY - CRITICAL - TC-ERROR-4001-QUERY _try_find_mismatch_target_in_query >>> STARTED
2025-05-26 15:00:48,352 - testcase.TC-ERROR-4001-QUERY - DEBUG - 开始为端点 DELETE /api/dms/{dms_instance_code}/v1/cd_geo_unit 初始化查询参数类型不匹配测试的目标字段查找。
2025-05-26 15:00:48,352 - testcase.TC-ERROR-4001-QUERY - CRITICAL - TC-ERROR-4001-QUERY _try_find_mismatch_target_in_query >>> Parameters to be processed: [{'name': 'dms_instance_code', 'in': 'path', 'required': True, 'description': '注册实例code\n井筒中心 well_kd_wellbore_ideas01', 'schema': {'type': 'string', 'example': 'example_dms_instance_code'}}, {'name': 'id', 'in': 'query', 'required': True, 'description': '主键id的key', 'schema': {'type': 'string', 'example': 'dsid'}}, {'name': 'tenant-id', 'in': 'header', 'required': True, 'description': 'tenant-id (Only:undefined)', 'schema': {'type': 'string'}}, {'name': 'Authorization', 'in': 'header', 'required': True, 'description': 'Authorization (Only:undefined)', 'schema': {'type': 'string'}}]
2025-05-26 15:00:48,352 - testcase.TC-ERROR-4001-QUERY - DEBUG - 传入的参数列表 (在 TC-ERROR-4001-QUERY中): [{'name': 'dms_instance_code', 'in': 'path', 'required': True, 'description': '注册实例code\n井筒中心 well_kd_wellbore_ideas01', 'schema': {'type': 'string', 'example': 'example_dms_instance_code'}}, {'name': 'id', 'in': 'query', 'required': True, 'description': '主键id的key', 'schema': {'type': 'string', 'example': 'dsid'}}, {'name': 'tenant-id', 'in': 'header', 'required': True, 'description': 'tenant-id (Only:undefined)', 'schema': {'type': 'string'}}, {'name': 'Authorization', 'in': 'header', 'required': True, 'description': 'Authorization (Only:undefined)', 'schema': {'type': 'string'}}]
2025-05-26 15:00:48,352 - testcase.TC-ERROR-4001-QUERY - DEBUG - 检查查询参数: 'id'
2025-05-26 15:00:48,352 - testcase.TC-ERROR-4001-QUERY - DEBUG - 查询参数 'id' 包含嵌套 schema尝试在其内部查找简单类型字段。
2025-05-26 15:00:48,352 - testcase.TC-ERROR-4001-QUERY - INFO - 目标字段(查询参数 - schema为简单类型): id原始类型: string
2025-05-26 15:00:48,352 - testcase.TC-ERROR-4001-QUERY - CRITICAL - TC-ERROR-4001-QUERY __INIT__ >>> STARTED
2025-05-26 15:00:48,352 - testcase.TC-ERROR-4001-QUERY - DEBUG - 开始为端点 DELETE /api/dms/{dms_instance_code}/v1/cd_geo_unit 初始化查询参数类型不匹配测试的目标字段查找。
2025-05-26 15:00:48,352 - testcase.TC-ERROR-4001-QUERY - CRITICAL - TC-ERROR-4001-QUERY __INIT__ >>> Parameters to be processed: [{'name': 'dms_instance_code', 'in': 'path', 'required': True, 'description': '注册实例code\n井筒中心 well_kd_wellbore_ideas01', 'schema': {'type': 'string', 'example': 'example_dms_instance_code'}}, {'name': 'id', 'in': 'query', 'required': True, 'description': '主键id的key', 'schema': {'type': 'string', 'example': 'dsid'}}, {'name': 'tenant-id', 'in': 'header', 'required': True, 'description': 'tenant-id (Only:undefined)', 'schema': {'type': 'string'}}, {'name': 'Authorization', 'in': 'header', 'required': True, 'description': 'Authorization (Only:undefined)', 'schema': {'type': 'string'}}]
2025-05-26 15:00:48,352 - testcase.TC-ERROR-4001-QUERY - DEBUG - 传入的参数列表 (在 TC-ERROR-4001-QUERY中): [{'name': 'dms_instance_code', 'in': 'path', 'required': True, 'description': '注册实例code\n井筒中心 well_kd_wellbore_ideas01', 'schema': {'type': 'string', 'example': 'example_dms_instance_code'}}, {'name': 'id', 'in': 'query', 'required': True, 'description': '主键id的key', 'schema': {'type': 'string', 'example': 'dsid'}}, {'name': 'tenant-id', 'in': 'header', 'required': True, 'description': 'tenant-id (Only:undefined)', 'schema': {'type': 'string'}}, {'name': 'Authorization', 'in': 'header', 'required': True, 'description': 'Authorization (Only:undefined)', 'schema': {'type': 'string'}}]
2025-05-26 15:00:48,352 - testcase.TC-ERROR-4001-QUERY - DEBUG - 检查查询参数: 'id'
2025-05-26 15:00:48,352 - testcase.TC-ERROR-4001-QUERY - DEBUG - 查询参数 'id' 包含嵌套 schema尝试在其内部查找简单类型字段。
2025-05-26 15:00:48,352 - testcase.TC-ERROR-4001-QUERY - INFO - 目标字段(查询参数 - schema为简单类型): id原始类型: string
2025-05-26 15:00:48,352 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-ERROR-4001-QUERY' (Error Code 4001 - Query Parameter Type Mismatch Validation) for endpoint 'DELETE /api/dms/{dms_instance_code}/v1/cd_geo_unit'
2025-05-26 15:00:48,352 - ddms_compliance_suite.test_orchestrator - INFO - [delete__api_dms_dms_instance_code_v1_cd_geo_unit_135750] 开始为端点 DELETE_/api/dms/{dms_instance_code}/v1/cd_geo_unit 准备初始请求数据 (TC: TC-ERROR-4001-QUERY)
2025-05-26 15:00:48,352 - ddms_compliance_suite.test_orchestrator - INFO - [delete__api_dms_dms_instance_code_v1_cd_geo_unit_135750] 从缓存加载了端点 'DELETE_/api/dms/{dms_instance_code}/v1/cd_geo_unit' 的LLM参数。
2025-05-26 15:00:48,352 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete__api_dms_dms_instance_code_v1_cd_geo_unit_135750] (缓存加载) 准备的请求数据: method=DELETE, path_params={'dms_instance_code': 'example_dms_instance_code'}, query_params={'id': 'dsid'}, headers=['Accept', 'tenant-id', 'Authorization'], body_type=dict
2025-05-26 15:00:48,352 - testcase.TC-ERROR-4001-QUERY - DEBUG - 准备修改查询参数以测试类型不匹配。目标路径: ['id'], 原始类型: string
2025-05-26 15:00:48,352 - testcase.TC-ERROR-4001-QUERY - INFO - 在查询参数路径 ['id'] (键 'id') 处,将值从 'dsid' 修改为 '12345' (原始类型: string)
2025-05-26 15:00:48,352 - testcase.TC-ERROR-4001-QUERY - DEBUG - Hook: generate_headers, current keys: ['Accept', 'tenant-id', 'Authorization']
2025-05-26 15:00:48,352 - testcase.TC-ERROR-4001-QUERY - DEBUG - TC-ERROR-4001-QUERY is focused on query parameters, generate_request_body will not modify the body.
2025-05-26 15:00:48,352 - testcase.TC-ERROR-4001-QUERY - DEBUG - Hook: modify_request_url, original URL: http://127.0.0.1:4523/m1/6389742-6086420-default/api/dms/example_dms_instance_code/v1/cd_geo_unit
2025-05-26 15:00:48,352 - testcase.TC-ERROR-4001-QUERY - DEBUG - Test case 'TC-ERROR-4001-QUERY' did not modify the URL via modify_request_url hook.
2025-05-26 15:00:48,352 - testcase.TC-ERROR-4001-QUERY - DEBUG - Hook: validate_request_url, url: http://127.0.0.1:4523/m1/6389742-6086420-default/api/dms/example_dms_instance_code/v1/cd_geo_unit
2025-05-26 15:00:48,352 - testcase.TC-ERROR-4001-QUERY - DEBUG - Hook: validate_request_headers, header keys: ['Accept', 'tenant-id', 'Authorization']
2025-05-26 15:00:48,352 - testcase.TC-ERROR-4001-QUERY - DEBUG - Hook: validate_request_body, body type: <class 'dict'>
2025-05-26 15:00:48,376 - testcase.TC-ERROR-4001-QUERY - WARNING - TC-ERROR-4001-QUERY: 类型不匹配测试失败。字段: query.id, 期望状态码: [400, 422], 实际: 200。
2025-05-26 15:00:48,376 - testcase.TC-ERROR-4001-QUERY - DEBUG - Hook: check_performance, elapsed: 0.024329185485839844
2025-05-26 15:00:48,376 - ddms_compliance_suite.test_orchestrator - DEBUG -  ❌ 测试用例 'TC-ERROR-4001-QUERY' 执行失败。
2025-05-26 15:00:48,376 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-ERROR-4001-QUERY' 执行完毕,状态: 失败
2025-05-26 15:00:48,376 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-ERROR-4001-BODY' for 'DELETE /api/dms/{dms_instance_code}/v1/cd_geo_unit'
2025-05-26 15:00:48,376 - ddms_compliance_suite.test_orchestrator - DEBUG - 成功通过 to_dict() 方法将类型为 <class 'ddms_compliance_suite.input_parser.parser.YAPIEndpoint'> 的 endpoint_spec 转换为字典。
2025-05-26 15:00:48,376 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: <class 'ddms_compliance_suite.input_parser.parser.ParsedYAPISpec'>) to dict using .spec attribute.
2025-05-26 15:00:48,376 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: TypeMismatchBodyCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_yapi_id', '_yapi_raw_data', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['yapi_categories'])
2025-05-26 15:00:48,377 - testcase.TC-ERROR-4001-BODY - DEBUG - Test case 'TC-ERROR-4001-BODY' initialized for endpoint: DELETE /api/dms/{dms_instance_code}/v1/cd_geo_unit
2025-05-26 15:00:48,377 - testcase.TC-ERROR-4001-BODY - CRITICAL - TC-ERROR-4001-BODY __INIT__ >>> STARTED
2025-05-26 15:00:48,377 - testcase.TC-ERROR-4001-BODY - DEBUG - 开始为端点 DELETE /api/dms/{dms_instance_code}/v1/cd_geo_unit 初始化请求体类型不匹配测试的目标字段查找。
2025-05-26 15:00:48,377 - testcase.TC-ERROR-4001-BODY - DEBUG - 从顶层 'requestBody' 中获取到 schema: ['$schema', 'type', 'properties']
2025-05-26 15:00:48,377 - testcase.TC-ERROR-4001-BODY - DEBUG - 最终用于检查的请求体 schema: ['$schema', 'type', 'properties']
2025-05-26 15:00:48,377 - testcase.TC-ERROR-4001-BODY - DEBUG - Enter _find_target_field_in_schema for base_path: '', schema_to_search keys: ['$schema', 'type', 'properties']
2025-05-26 15:00:48,377 - testcase.TC-ERROR-4001-BODY - DEBUG - Path: '', Resolved Schema Type: 'object', Keys: ['$schema', 'type', 'properties']
2025-05-26 15:00:48,377 - testcase.TC-ERROR-4001-BODY - DEBUG - Path: '', Type is 'object'. Checking properties: ['version', 'data']
2025-05-26 15:00:48,377 - testcase.TC-ERROR-4001-BODY - DEBUG - Path: 'version', Property Schema (Original): {'type': 'string', 'title': '版本号'}
2025-05-26 15:00:48,377 - testcase.TC-ERROR-4001-BODY - DEBUG - Path: 'version', Property Schema (Resolved): {'type': 'string', 'title': '版本号'}
2025-05-26 15:00:48,377 - testcase.TC-ERROR-4001-BODY - DEBUG - Path: 'version', Resolved Property Type: 'string'
2025-05-26 15:00:48,377 - testcase.TC-ERROR-4001-BODY - INFO - 目标字段(请求体): 'version' (原始类型: 'string') FOUND!
2025-05-26 15:00:48,377 - testcase.TC-ERROR-4001-BODY - INFO - 类型不匹配测试的目标字段(请求体): version原始类型: string
2025-05-26 15:00:48,377 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-ERROR-4001-BODY' (Error Code 4001 - Request Body Type Mismatch Validation) for endpoint 'DELETE /api/dms/{dms_instance_code}/v1/cd_geo_unit'
2025-05-26 15:00:48,377 - ddms_compliance_suite.test_orchestrator - INFO - [delete__api_dms_dms_instance_code_v1_cd_geo_unit_135750] 开始为端点 DELETE_/api/dms/{dms_instance_code}/v1/cd_geo_unit 准备初始请求数据 (TC: TC-ERROR-4001-BODY)
2025-05-26 15:00:48,377 - ddms_compliance_suite.test_orchestrator - INFO - [delete__api_dms_dms_instance_code_v1_cd_geo_unit_135750] 从缓存加载了端点 'DELETE_/api/dms/{dms_instance_code}/v1/cd_geo_unit' 的LLM参数。
2025-05-26 15:00:48,377 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete__api_dms_dms_instance_code_v1_cd_geo_unit_135750] (缓存加载) 准备的请求数据: method=DELETE, path_params={'dms_instance_code': 'example_dms_instance_code'}, query_params={'id': 'dsid'}, headers=['Accept', 'tenant-id', 'Authorization'], body_type=dict
2025-05-26 15:00:48,377 - testcase.TC-ERROR-4001-BODY - DEBUG - TC-ERROR-4001-BODY is focused on request body, generate_query_params will not modify query parameters.
2025-05-26 15:00:48,377 - testcase.TC-ERROR-4001-BODY - DEBUG - Hook: generate_headers, current keys: ['Accept', 'tenant-id', 'Authorization']
2025-05-26 15:00:48,377 - testcase.TC-ERROR-4001-BODY - DEBUG - 准备修改请求体以测试类型不匹配。目标路径: ['version'], 原始类型: string
2025-05-26 15:00:48,377 - testcase.TC-ERROR-4001-BODY - INFO - 在路径 ['version'] (键 'version') 处,将值从 'example_string' 修改为 '12345' (原始类型: string)
2025-05-26 15:00:48,377 - testcase.TC-ERROR-4001-BODY - DEBUG - Hook: modify_request_url, original URL: http://127.0.0.1:4523/m1/6389742-6086420-default/api/dms/example_dms_instance_code/v1/cd_geo_unit
2025-05-26 15:00:48,377 - testcase.TC-ERROR-4001-BODY - DEBUG - Test case 'TC-ERROR-4001-BODY' did not modify the URL via modify_request_url hook.
2025-05-26 15:00:48,377 - testcase.TC-ERROR-4001-BODY - DEBUG - Hook: validate_request_url, url: http://127.0.0.1:4523/m1/6389742-6086420-default/api/dms/example_dms_instance_code/v1/cd_geo_unit
2025-05-26 15:00:48,377 - testcase.TC-ERROR-4001-BODY - DEBUG - Hook: validate_request_headers, header keys: ['Accept', 'tenant-id', 'Authorization']
2025-05-26 15:00:48,377 - testcase.TC-ERROR-4001-BODY - DEBUG - Hook: validate_request_body, body type: <class 'dict'>
2025-05-26 15:00:48,428 - testcase.TC-ERROR-4001-BODY - WARNING - TC-ERROR-4001-BODY: 类型不匹配测试失败。字段: body.version, 期望状态码: [400, 422], 实际: 200。
2025-05-26 15:00:48,428 - testcase.TC-ERROR-4001-BODY - DEBUG - Hook: check_performance, elapsed: 0.05131697654724121
2025-05-26 15:00:48,429 - ddms_compliance_suite.test_orchestrator - DEBUG -  ❌ 测试用例 'TC-ERROR-4001-BODY' 执行失败。
2025-05-26 15:00:48,429 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-ERROR-4001-BODY' 执行完毕,状态: 失败
2025-05-26 15:00:48,429 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-ERROR-4003-BODY' for 'DELETE /api/dms/{dms_instance_code}/v1/cd_geo_unit'
2025-05-26 15:00:48,429 - ddms_compliance_suite.test_orchestrator - DEBUG - 成功通过 to_dict() 方法将类型为 <class 'ddms_compliance_suite.input_parser.parser.YAPIEndpoint'> 的 endpoint_spec 转换为字典。
2025-05-26 15:00:48,429 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: <class 'ddms_compliance_suite.input_parser.parser.ParsedYAPISpec'>) to dict using .spec attribute.
2025-05-26 15:00:48,429 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: MissingRequiredFieldBodyCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_yapi_id', '_yapi_raw_data', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['yapi_categories'])
2025-05-26 15:00:48,429 - testcase.TC-ERROR-4003-BODY - INFO - 在请求体 schema 中未找到可用于测试 "必填字段缺失" 的字段。
2025-05-26 15:00:48,429 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-ERROR-4003-BODY' (Error Code 4003 - Missing Required Request Body Field Validation) for endpoint 'DELETE /api/dms/{dms_instance_code}/v1/cd_geo_unit'
2025-05-26 15:00:48,429 - ddms_compliance_suite.test_orchestrator - INFO - [delete__api_dms_dms_instance_code_v1_cd_geo_unit_135750] 开始为端点 DELETE_/api/dms/{dms_instance_code}/v1/cd_geo_unit 准备初始请求数据 (TC: TC-ERROR-4003-BODY)
2025-05-26 15:00:48,429 - ddms_compliance_suite.test_orchestrator - INFO - [delete__api_dms_dms_instance_code_v1_cd_geo_unit_135750] 从缓存加载了端点 'DELETE_/api/dms/{dms_instance_code}/v1/cd_geo_unit' 的LLM参数。
2025-05-26 15:00:48,429 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete__api_dms_dms_instance_code_v1_cd_geo_unit_135750] (缓存加载) 准备的请求数据: method=DELETE, path_params={'dms_instance_code': 'example_dms_instance_code'}, query_params={'id': 'dsid'}, headers=['Accept', 'tenant-id', 'Authorization'], body_type=dict
2025-05-26 15:00:48,484 - testcase.TC-ERROR-4003-BODY - INFO - 由于未识别到可移除的必填请求体字段,跳过此测试用例。
2025-05-26 15:00:48,484 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-ERROR-4003-BODY' 执行成功。
2025-05-26 15:00:48,484 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-ERROR-4003-BODY' 执行完毕,状态: 通过
2025-05-26 15:00:48,484 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-ERROR-4003-QUERY' for 'DELETE /api/dms/{dms_instance_code}/v1/cd_geo_unit'
2025-05-26 15:00:48,484 - ddms_compliance_suite.test_orchestrator - DEBUG - 成功通过 to_dict() 方法将类型为 <class 'ddms_compliance_suite.input_parser.parser.YAPIEndpoint'> 的 endpoint_spec 转换为字典。
2025-05-26 15:00:48,484 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: <class 'ddms_compliance_suite.input_parser.parser.ParsedYAPISpec'>) to dict using .spec attribute.
2025-05-26 15:00:48,484 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: MissingRequiredFieldQueryCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_yapi_id', '_yapi_raw_data', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['yapi_categories'])
2025-05-26 15:00:48,484 - testcase.TC-ERROR-4003-QUERY - INFO - 必填字段缺失测试的目标字段 (查询参数): 'id'
2025-05-26 15:00:48,484 - testcase.TC-ERROR-4003-QUERY - INFO - 测试用例 TC-ERROR-4003-QUERY (Error Code 4003 - Missing Required Query Parameter Validation) 已针对端点 'DELETE /api/dms/{dms_instance_code}/v1/cd_geo_unit' 初始化。Target param to remove: id
2025-05-26 15:00:48,484 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-ERROR-4003-QUERY' (Error Code 4003 - Missing Required Query Parameter Validation) for endpoint 'DELETE /api/dms/{dms_instance_code}/v1/cd_geo_unit'
2025-05-26 15:00:48,484 - ddms_compliance_suite.test_orchestrator - INFO - [delete__api_dms_dms_instance_code_v1_cd_geo_unit_135750] 开始为端点 DELETE_/api/dms/{dms_instance_code}/v1/cd_geo_unit 准备初始请求数据 (TC: TC-ERROR-4003-QUERY)
2025-05-26 15:00:48,484 - ddms_compliance_suite.test_orchestrator - INFO - [delete__api_dms_dms_instance_code_v1_cd_geo_unit_135750] 从缓存加载了端点 'DELETE_/api/dms/{dms_instance_code}/v1/cd_geo_unit' 的LLM参数。
2025-05-26 15:00:48,484 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete__api_dms_dms_instance_code_v1_cd_geo_unit_135750] (缓存加载) 准备的请求数据: method=DELETE, path_params={'dms_instance_code': 'example_dms_instance_code'}, query_params={'id': 'dsid'}, headers=['Accept', 'tenant-id', 'Authorization'], body_type=dict
2025-05-26 15:00:48,484 - testcase.TC-ERROR-4003-QUERY - INFO - 为进行必填查询参数缺失测试,已从查询参数中移除 'id' (原值: 'dsid')。
2025-05-26 15:00:48,501 - testcase.TC-ERROR-4003-QUERY - WARNING - 必填查询参数缺失测试失败:期望状态码 [400, 422],实际为 200。移除的参数'id'
2025-05-26 15:00:48,501 - ddms_compliance_suite.test_orchestrator - DEBUG -  ❌ 测试用例 'TC-ERROR-4003-QUERY' 执行失败。
2025-05-26 15:00:48,501 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-ERROR-4003-QUERY' 执行完毕,状态: 失败
2025-05-26 15:00:48,501 - ddms_compliance_suite.test_orchestrator - INFO - 端点 'DELETE /api/dms/{dms_instance_code}/v1/cd_geo_unit' 测试完成,最终状态: 失败
2025-05-26 15:00:48,502 - ddms_compliance_suite.test_orchestrator - INFO - 开始为端点测试: POST /api/dms/{dms_instance_code}/v1/cd_geo_unit (地质单元数据添加)
2025-05-26 15:00:48,502 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-STATUS-001' 适用于端点 'POST /api/dms/{dms_instance_code}/v1/cd_geo_unit'。
2025-05-26 15:00:48,502 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-NORMATIVE-URL-LLM-COMPREHENSIVE-001' 适用于端点 'POST /api/dms/{dms_instance_code}/v1/cd_geo_unit'。
2025-05-26 15:00:48,502 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-CORE-FUNC-001' 适用于端点 'POST /api/dms/{dms_instance_code}/v1/cd_geo_unit'。
2025-05-26 15:00:48,502 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-SECURITY-001' 适用于端点 'POST /api/dms/{dms_instance_code}/v1/cd_geo_unit'。
2025-05-26 15:00:48,502 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4001-QUERY' 适用于端点 'POST /api/dms/{dms_instance_code}/v1/cd_geo_unit'。
2025-05-26 15:00:48,502 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4001-BODY' 适用于端点 'POST /api/dms/{dms_instance_code}/v1/cd_geo_unit'。
2025-05-26 15:00:48,502 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4003-BODY' 适用于端点 'POST /api/dms/{dms_instance_code}/v1/cd_geo_unit'。
2025-05-26 15:00:48,502 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4003-QUERY' 适用于端点 'POST /api/dms/{dms_instance_code}/v1/cd_geo_unit'。
2025-05-26 15:00:48,502 - ddms_compliance_suite.test_orchestrator - INFO - 端点 'POST /api/dms/{dms_instance_code}/v1/cd_geo_unit' 发现了 8 个适用的测试用例: ['TC-STATUS-001', 'TC-NORMATIVE-URL-LLM-COMPREHENSIVE-001', 'TC-CORE-FUNC-001', 'TC-SECURITY-001', 'TC-ERROR-4001-QUERY', 'TC-ERROR-4001-BODY', 'TC-ERROR-4003-BODY', 'TC-ERROR-4003-QUERY']
2025-05-26 15:00:48,502 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-STATUS-001' for 'POST /api/dms/{dms_instance_code}/v1/cd_geo_unit'
2025-05-26 15:00:48,502 - ddms_compliance_suite.test_orchestrator - DEBUG - 成功通过 to_dict() 方法将类型为 <class 'ddms_compliance_suite.input_parser.parser.YAPIEndpoint'> 的 endpoint_spec 转换为字典。
2025-05-26 15:00:48,502 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: <class 'ddms_compliance_suite.input_parser.parser.ParsedYAPISpec'>) to dict using .spec attribute.
2025-05-26 15:00:48,502 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: StatusCode200Check 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_yapi_id', '_yapi_raw_data', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['yapi_categories'])
2025-05-26 15:00:48,502 - testcase.TC-STATUS-001 - INFO - 测试用例 TC-STATUS-001 (基本状态码 200 检查) 已针对端点 'POST /api/dms/{dms_instance_code}/v1/cd_geo_unit' 初始化。
2025-05-26 15:00:48,502 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-STATUS-001' (基本状态码 200 检查) for endpoint 'POST /api/dms/{dms_instance_code}/v1/cd_geo_unit'
2025-05-26 15:00:48,502 - ddms_compliance_suite.test_orchestrator - INFO - [post__api_dms_dms_instance_code_v1_cd_geo_unit_135748] 开始为端点 POST_/api/dms/{dms_instance_code}/v1/cd_geo_unit 准备初始请求数据 (TC: TC-STATUS-001)
2025-05-26 15:00:48,502 - ddms_compliance_suite.test_orchestrator - INFO - [post__api_dms_dms_instance_code_v1_cd_geo_unit_135748] 端点 'POST_/api/dms/{dms_instance_code}/v1/cd_geo_unit' 的参数未在缓存中找到,开始生成。
2025-05-26 15:00:48,502 - ddms_compliance_suite.test_orchestrator - INFO - [post__api_dms_dms_instance_code_v1_cd_geo_unit_135748] 使用常规方法或LLM未启用为路径参数。
2025-05-26 15:00:48,502 - ddms_compliance_suite.test_orchestrator - INFO - [post__api_dms_dms_instance_code_v1_cd_geo_unit_135748] 使用常规方法生成 path 参数。
2025-05-26 15:00:48,502 - ddms_compliance_suite.test_orchestrator - DEBUG - [post__api_dms_dms_instance_code_v1_cd_geo_unit_135748] 使用 schema 中的 'example' 值 for (context: path parameter 'dms_instance_code'): example_dms_instance_code
2025-05-26 15:00:48,502 - ddms_compliance_suite.test_orchestrator - INFO - [post__api_dms_dms_instance_code_v1_cd_geo_unit_135748] 常规方法生成的 path 参数: {'dms_instance_code': 'example_dms_instance_code'}
2025-05-26 15:00:48,502 - ddms_compliance_suite.test_orchestrator - INFO - [post__api_dms_dms_instance_code_v1_cd_geo_unit_135748] 没有定义 query 参数。
2025-05-26 15:00:48,502 - ddms_compliance_suite.test_orchestrator - INFO - [post__api_dms_dms_instance_code_v1_cd_geo_unit_135748] 使用常规方法或LLM未启用为头部参数。
2025-05-26 15:00:48,502 - ddms_compliance_suite.test_orchestrator - INFO - [post__api_dms_dms_instance_code_v1_cd_geo_unit_135748] 使用常规方法生成 header 参数。
2025-05-26 15:00:48,502 - ddms_compliance_suite.test_orchestrator - DEBUG - [post__api_dms_dms_instance_code_v1_cd_geo_unit_135748] 生成 string 类型数据 ('') for (context: header parameter 'tenant-id'): example_string
2025-05-26 15:00:48,502 - ddms_compliance_suite.test_orchestrator - DEBUG - [post__api_dms_dms_instance_code_v1_cd_geo_unit_135748] 生成 string 类型数据 ('') for (context: header parameter 'Authorization'): example_string
2025-05-26 15:00:48,502 - ddms_compliance_suite.test_orchestrator - INFO - [post__api_dms_dms_instance_code_v1_cd_geo_unit_135748] 常规方法生成的 header 参数: {'tenant-id': 'example_string', 'Authorization': 'example_string'}
2025-05-26 15:00:48,502 - ddms_compliance_suite.test_orchestrator - INFO - [post__api_dms_dms_instance_code_v1_cd_geo_unit_135748] 使用常规方法或LLM未启用/不适用,为请求体。
2025-05-26 15:00:48,502 - ddms_compliance_suite.test_orchestrator - DEBUG - [post__api_dms_dms_instance_code_v1_cd_geo_unit_135748] 生成 object 类型数据 for (context: requestBody). Properties: ['version', 'data']
2025-05-26 15:00:48,502 - ddms_compliance_suite.test_orchestrator - DEBUG - [post__api_dms_dms_instance_code_v1_cd_geo_unit_135748] 生成 string 类型数据 ('') for (context: requestBody.version): example_string
2025-05-26 15:00:48,502 - ddms_compliance_suite.test_orchestrator - DEBUG - [post__api_dms_dms_instance_code_v1_cd_geo_unit_135748] 生成 array 类型数据 for (context: requestBody.data). Items schema: {'type': 'object', 'properties': {'bsflag': {'type': 'number', 'title': '必填字段删除标记'}, 'wellCommonName': {'type': 'string'}, 'wellId': {'type': 'string'}, 'dataRegion': {'type': 'string'}}, 'required': ['bsflag', 'wellCommonName', 'wellId', 'dataRegion']}, minItems: 1
2025-05-26 15:00:48,502 - ddms_compliance_suite.test_orchestrator - DEBUG - [post__api_dms_dms_instance_code_v1_cd_geo_unit_135748] 生成 object 类型数据 for (context: requestBody.data[0]). Properties: ['bsflag', 'wellCommonName', 'wellId', 'dataRegion']
2025-05-26 15:00:48,502 - ddms_compliance_suite.test_orchestrator - DEBUG - [post__api_dms_dms_instance_code_v1_cd_geo_unit_135748] 生成 number/integer 类型数据 for (context: requestBody.data[0].bsflag): 0.0
2025-05-26 15:00:48,502 - ddms_compliance_suite.test_orchestrator - DEBUG - [post__api_dms_dms_instance_code_v1_cd_geo_unit_135748] 生成 string 类型数据 ('') for (context: requestBody.data[0].wellCommonName): example_string
2025-05-26 15:00:48,502 - ddms_compliance_suite.test_orchestrator - DEBUG - [post__api_dms_dms_instance_code_v1_cd_geo_unit_135748] 生成 string 类型数据 ('') for (context: requestBody.data[0].wellId): example_string
2025-05-26 15:00:48,502 - ddms_compliance_suite.test_orchestrator - DEBUG - [post__api_dms_dms_instance_code_v1_cd_geo_unit_135748] 生成 string 类型数据 ('') for (context: requestBody.data[0].dataRegion): example_string
2025-05-26 15:00:48,502 - ddms_compliance_suite.test_orchestrator - INFO - [post__api_dms_dms_instance_code_v1_cd_geo_unit_135748] 端点 'POST_/api/dms/{dms_instance_code}/v1/cd_geo_unit' 的参数已生成并存入缓存。
2025-05-26 15:00:48,502 - ddms_compliance_suite.test_orchestrator - DEBUG - [post__api_dms_dms_instance_code_v1_cd_geo_unit_135748] (新生成) 准备的请求数据: method=POST, path_params={'dms_instance_code': 'example_dms_instance_code'}, query_params={}, headers=['Accept', 'Content-Type', 'tenant-id', 'Authorization'], body_type=dict
2025-05-26 15:00:48,522 - testcase.TC-STATUS-001 - INFO - 状态码验证通过: 200 == 200 for http://127.0.0.1:4523/m1/6389742-6086420-default/api/dms/example_dms_instance_code/v1/cd_geo_unit
2025-05-26 15:00:48,522 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-STATUS-001' 执行成功。
2025-05-26 15:00:48,522 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-STATUS-001' 执行完毕,状态: 通过
2025-05-26 15:00:48,522 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-NORMATIVE-URL-LLM-COMPREHENSIVE-001' for 'POST /api/dms/{dms_instance_code}/v1/cd_geo_unit'
2025-05-26 15:00:48,522 - ddms_compliance_suite.test_orchestrator - DEBUG - 成功通过 to_dict() 方法将类型为 <class 'ddms_compliance_suite.input_parser.parser.YAPIEndpoint'> 的 endpoint_spec 转换为字典。
2025-05-26 15:00:48,522 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: <class 'ddms_compliance_suite.input_parser.parser.ParsedYAPISpec'>) to dict using .spec attribute.
2025-05-26 15:00:48,522 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: ComprehensiveURLCheckLLMCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_yapi_id', '_yapi_raw_data', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['yapi_categories'])
2025-05-26 15:00:48,522 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-NORMATIVE-URL-LLM-COMPREHENSIVE-001' (综合URL规范与RESTful风格检查 (LLM)) for endpoint 'POST /api/dms/{dms_instance_code}/v1/cd_geo_unit'
2025-05-26 15:00:48,522 - ddms_compliance_suite.test_orchestrator - INFO - [post__api_dms_dms_instance_code_v1_cd_geo_unit_135748] 开始为端点 POST_/api/dms/{dms_instance_code}/v1/cd_geo_unit 准备初始请求数据 (TC: TC-NORMATIVE-URL-LLM-COMPREHENSIVE-001)
2025-05-26 15:00:48,522 - ddms_compliance_suite.test_orchestrator - INFO - [post__api_dms_dms_instance_code_v1_cd_geo_unit_135748] 从缓存加载了端点 'POST_/api/dms/{dms_instance_code}/v1/cd_geo_unit' 的LLM参数。
2025-05-26 15:00:48,522 - ddms_compliance_suite.test_orchestrator - DEBUG - [post__api_dms_dms_instance_code_v1_cd_geo_unit_135748] (缓存加载) 准备的请求数据: method=POST, path_params={'dms_instance_code': 'example_dms_instance_code'}, query_params={}, headers=['Accept', 'Content-Type', 'tenant-id', 'Authorization'], body_type=dict
2025-05-26 15:00:48,522 - testcase.TC-NORMATIVE-URL-LLM-COMPREHENSIVE-001 - INFO - 向LLM发送请求评估路径: /api/dms/{dms_instance_code}/v1/cd_geo_unit (POST)
2025-05-26 15:00:48,522 - ddms_compliance_suite.llm_utils.llm_service - DEBUG - LLM API Request Payload:
{
"model": "qwen-plus",
"messages": [
{
"role": "system",
"content": "你是一位API设计评审专家专注于评估API的URL规范性和RESTful风格。你的输出必须是严格的JSON格式。"
},
{
"role": "user",
"content": "\n请扮演一位资深的API设计评审员。我将提供一个API端点的路径模板、HTTP方法以及可能的接口名称。\n请根据以下石油行业API设计规范评估此API端点并以严格的JSON格式返回您的评估结果。\nJSON对象应包含一个名为 \"assessments\" 的键,其值为一个对象列表,每个对象代表对一个标准的评估,包含 \"standard_name\" (字符串), \"is_compliant\" (布尔值), 和 \"reason\" (字符串) 三个键。\n\nAPI端点信息:\n- HTTP方法: POST\n- 路径模板: /api/dms/{dms_instance_code}/v1/cd_geo_unit\n- 路径中提取的参数名: [dms_instance_code]\n\n评估标准:\n\n1. **接口名称规范 (接口名称需要你从路径模板中提取,一般是路径中除了参数名以外的最后的一个单词)**:\n - 规则: 采用'动词+名词'结构,明确业务语义 (例如: GetWellLog, SubmitSeismicJob)。\n - standard_name: \"interface_naming_convention\"\n\n2. **HTTP方法使用规范**:\n - 规则: 遵循RESTful规范GET用于数据检索, POST用于创建资源, PUT用于更新资源, DELETE用于删除资源。\n - standard_name: \"http_method_usage\"\n\n3. **URL路径结构规范**:\n - 规则: 格式为 `<前缀>/<专业领域>/v<版本号>/<资源类型>` (例如: /logging/v1.2/wells, /seismicprospecting/v1.0/datasets)。\n - 前缀: 示例: /api/dms\n - 专业领域: 专业领域示例: seismicprospecting, welllogging, reservoirevaluation\n - 版本号: 语义化版本,例如 v1, v1.0, v2.1.3。\n - 资源类型: 通常为名词复数。\n - standard_name: \"url_path_structure\"\n\n4. **URL路径参数命名规范**:\n - 规则: 路径参数(如果存在)必须使用全小写字母(可以是一个单词)或小写字母加下划线命名(这是多个单词的情况),并能反映资源的唯一标识 (例如: {well_id},{version},{schema})。\n - standard_name: \"url_path_parameter_naming\"\n\n5. **资源命名规范 (在路径中)**:\n - 规则: 资源集合应使用名词的复数形式表示 (例如 `/wells`, `/logs`);应优先使用石油行业的标准术语 (例如用 `trajectory` 而非 `path` 来表示井轨迹)。\n - standard_name: \"resource_naming_in_path\"\n - standard_name: \"resource\"\n - standard_name: \"schema\"\n - standard_name: \"version\"\n\n\n\n请确保您的输出是一个可以被 `json.loads()` 直接解析的JSON对象。\n例如:\n{\n \"assessments\": [\n {\n \"standard_name\": \"interface_naming_convention\",\n \"is_compliant\": true,\n \"reason\": \"接口名称 'GetWellboreTrajectory' 符合动词+名词结构。\"\n },\n {\n \"standard_name\": \"http_method_usage\",\n \"is_compliant\": true,\n \"reason\": \"GET方法用于检索资源符合规范。\"\n }\n // ... 其他标准的评估 ...\n ]\n}\n"
}
],
"max_tokens": 1024,
"temperature": 0.2
}