report.md 21 KB

FWH MCP Server 非写操作接口测试报告

生成时间: 2026-08-26 00:34:41

SKIP / FAIL 的逐条根因分析、代码定位与修复建议见 ANALYSIS.md。

工具覆盖率(按工具去重,主口径)

被测工具 102 个 | ✅ 已覆盖(PASS) 79 | ❌ FAIL 0 | ⏭️ 未覆盖(SKIP) 23

覆盖率: 77.5%(79/102 工具至少有一次成功调用)

说明:一个工具可能在多个阶段被调用(自动冒烟因缺参 SKIP、样本/级联阶段 PASS)。 上表按工具去重,只要该工具有任一次 PASS 即计为“已覆盖”,避免同一工具重复计数。 下方“执行记录”为全部调用流水(含重复),供追溯过程。

执行记录统计(流水口径,含重复)

总执行 173 次 | PASS 101 | FAIL 0 | SKIP 72

分层汇总(执行流水)

层级 PASS FAIL SKIP
L0 5 0 0
L1 14 0 0
L2 34 0 67
L2S 21 0 0
L2C 12 0 5
L2X 7 0 0
L3RW 4 0 0
L4 4 0 0

执行明细

编号 层级 工具 结果 耗时 备注
L0-1 L0 - PASS 191ms name=fwh-tools version=2.0.0 proto=2025-11-25
L0-2 L0 - PASS 3ms 共 119 个工具
L0-3 L0 - PASS 0ms 全部前缀合法
L0-4 L0 - PASS 0ms schema 完整
L0-5 L0 no_such_tool PASS 0ms 正确拒绝未知工具
L1-1 L1 util_parse_sn PASS 0ms SN 解析字段正确
L1-3 L1 util_parse_sn PASS 0ms 正确返回参数校验错误
L1-4 L1 util_parse_sn PASS 0ms 正确返回参数校验错误
L1-5 L1 service_site_query_info PASS 0ms 正确返回参数校验错误
L1-6 L1 service_site_power_flow PASS 0ms 正确返回参数校验错误
L1-7 L1 service_sim_monthly_data PASS 0ms 正确返回参数校验错误
L1-8 L1 data_mongo_find PASS 0ms 正确返回参数校验错误
L1-9 L1 data_mongo_find PASS 0ms 正确返回参数校验错误
L1-10 L1 data_redis_exists PASS 0ms 正确返回参数校验错误
L1-11 L1 data_redis_get PASS 0ms 正确返回参数校验错误
L1-12 L1 storage_minio_list_objects PASS 0ms 正确返回参数校验错误
L1-13 L1 data_emspara_vid_info PASS 0ms 正确返回参数校验错误
L1-14 L1 data_pgsql_query_snapshot_data PASS 0ms 正确返回参数校验错误
L1-16 L1 service_feedback_create PASS 0ms 正确返回参数校验错误
L2-R1 L2 data_redis_exists PASS 0ms 返回合法结果 (39B)
L2-R2 L2 data_redis_get PASS 0ms 返回合法结果 (67B)
L2-M1 L2 data_mongo_count PASS 18ms 返回合法结果 (58B)
L2-M2 L2 data_mongo_find PASS 0ms 返回合法结果 (2278B)
L2-M3 L2 data_mongo_count PASS 0ms 返回合法结果 (51B)
L2-S1 L2 storage_minio_list_objects PASS 54ms 返回合法结果 (1133B)
L2-S3 L2 storage_file_list PASS 0ms 返回合法结果 (27B)
L2-PL1 L2 plane_list_workspaces PASS 27ms 返回合法结果 (1730B)
L2-PL2 L2 plane_list_projects SKIP 0ms 返回错误: 参数 workspace_slug 必填
L2-PL4 L2 plane_list_labels SKIP 0ms 返回错误: 参数 workspace_slug 必填
L2-PL5 L2 plane_list_states SKIP 0ms 返回错误: 参数 workspace_slug 必填
L2-PL6 L2 service_feedback_history PASS 32ms 返回合法结果 (506B)
L2-B1 L2 service_site_search PASS 20ms 返回合法结果 (7270B)
L2-B2 L2 service_sim_search PASS 171ms 返回合法结果 (1193B)
L2-B3 L2 service_monitor_alarm_stats SKIP 0ms 依赖不可用/凭据: 查询告警统计失败: mongo: no documents in result
L2-B4 L2 service_monitor_shutdown_stats PASS 0ms 返回合法结果 (700B)
L2-B5 L2 service_dashboard_shutdown_date PASS 0ms 返回合法结果 (10B)
L2-B6 L2 service_dashboard_shutdown_detail PASS 11ms 返回合法结果 (2541B)
L2-B7 L2 service_dashboard_alarm_detail SKIP 0ms 依赖不可用/凭据: 查询告警详情失败: mongo: no documents in result
L2-B8 L2 service_tou_template_list PASS 2061ms 返回合法结果 (1352B)
L2-B9 L2 service_background_task_list SKIP 0ms 依赖不可用/凭据: 查询后台任务列表失败: inspector not initialized
L2-B10 L2 service_site_monitor_config_list PASS 8ms 返回合法结果 (2500B)
L2-B11 L2 service_site_monitor_name_list PASS 0ms 返回合法结果 (280B)
L2-B12 L2 service_site_info_update_status PASS 0ms 返回合法结果 (165B)
L2-B13 L2 service_site_info_tags_list PASS 1ms 返回合法结果 (63B)
L2-B14 L2 service_auto_update_get_options PASS 0ms 返回合法结果 (260B)
L2-B15 L2 service_auto_update_get_apower_version PASS 0ms 返回合法结果 (70B)
L2-B16 L2 service_auto_update_file_list PASS 0ms 返回合法结果 (746B)
L2-B17 L2 service_batch_download_list PASS 1ms 返回合法结果 (1676B)
L2-B18 L2 service_site_analysis_list PASS 4ms 返回合法结果 (1024B)
L2-F8a L2 data_emspara_vid_info PASS 0ms 返回合法结果 (37B)
L2-F8b L2 data_emspara_pid_info PASS 0ms 返回合法结果 (37B)
L2-auto L2 data_fwh_query_ahub_update_log SKIP 0ms 需必填参数,缺测试样本: sn
L2-auto L2 data_fwh_query_alarm_snapshot SKIP 0ms 需必填参数,缺测试样本: sn,date
L2-auto1 L2 data_fwh_query_alarm_statistics PASS 3027ms 返回合法结果 (2537B)
L2-auto L2 data_fwh_query_alarm_statistics_from_code SKIP 0ms 需必填参数,缺测试样本: alarm_code
L2-auto L2 data_fwh_query_ems_log_record SKIP 0ms 需必填参数,缺测试样本: sn
L2-auto L2 data_fwh_query_event_alarm_list SKIP 0ms 需必填参数,缺测试样本: sn,start_time,end_time
L2-auto2 L2 data_fwh_query_fault_record_call_record_list PASS 305ms 返回合法结果 (18469B)
L2-auto L2 data_fwh_query_fault_record_callable_list SKIP 0ms 需必填参数,缺测试样本: sn
L2-auto L2 data_fwh_query_fault_record_list SKIP 0ms 需必填参数,缺测试样本: sn,start_time,end_time
L2-auto L2 data_fwh_query_fault_record_sub_list SKIP 0ms 需必填参数,缺测试样本: fault_id
L2-auto L2 data_fwh_query_mqtt_log_list SKIP 0ms 需必填参数,缺测试样本: sn,cmd_type,start_time,end_time
L2-auto L2 data_fwh_query_shutdown_list SKIP 0ms 需必填参数,缺测试样本: date
L2-auto L2 data_fwh_query_site_alarm_list SKIP 0ms 需必填参数,缺测试样本: sn
L2-auto3 L2 data_fwh_query_site_base_info_list PASS 636ms 返回合法结果 (8422B)
L2-auto4 L2 data_fwh_query_site_list PASS 1786ms 返回合法结果 (2620B)
L2-auto L2 data_fwh_query_site_mode_info SKIP 0ms 需必填参数,缺测试样本: sn
L2-auto L2 data_fwh_query_site_power_flow SKIP 0ms 需必填参数,缺测试样本: sn,date
L2-auto L2 data_fwh_query_system_update_log SKIP 0ms 需必填参数,缺测试样本: sn
L2-auto L2 data_fwh_query_system_update_log_detail SKIP 0ms 需必填参数,缺测试样本: order_id
L2-auto L2 data_fwh_query_tou_template_detail SKIP 0ms 需必填参数,缺测试样本: id
L2-auto5 L2 data_fwh_query_tou_template_list PASS 567ms 返回合法结果 (8596B)
L2-auto L2 data_pgsql_query_snapshot_data SKIP 0ms 需必填参数,缺测试样本: sn,date
L2-auto L2 data_pgsql_query_snapshot_file_record SKIP 0ms 需必填参数,缺测试样本: file_name
L2-auto L2 data_sim_acceleronix_batch_data_info SKIP 0ms 需必填参数,缺测试样本: iccid_list,month
L2-auto L2 data_sim_acceleronix_card_info SKIP 0ms 需必填参数,缺测试样本: iccid
L2-auto6 L2 data_sim_acceleronix_card_list PASS 341ms 返回合法结果 (10611B)
L2-auto7 L2 data_sim_acceleronix_data_pool_list PASS 414ms 返回合法结果 (2839B)
L2-auto L2 data_sim_acceleronix_data_pool_sim_info SKIP 0ms 需必填参数,缺测试样本: data_pool_id
L2-auto8 L2 data_sim_smarthub_batch_info PASS 1479ms 返回合法结果 (13264B)
L2-auto L2 data_sim_smarthub_card_info SKIP 0ms 需必填参数,缺测试样本: giccid
L2-auto L2 plane_get_cycle SKIP 0ms 需必填参数,缺测试样本: workspace_slug,project_id,cycle_id
L2-auto L2 plane_get_intake_issue SKIP 0ms 需必填参数,缺测试样本: workspace_slug,project_id,issue_id
L2-auto L2 plane_get_issue SKIP 0ms 需必填参数,缺测试样本: workspace_slug,project_id,issue_id
L2-auto L2 plane_get_issue_activity SKIP 0ms 需必填参数,缺测试样本: workspace_slug,project_id,issue_id
L2-auto L2 plane_get_module SKIP 0ms 需必填参数,缺测试样本: workspace_slug,project_id,module_id
L2-auto L2 plane_get_page SKIP 0ms 需必填参数,缺测试样本: workspace_slug,project_id,page_id
L2-auto L2 plane_get_page_description SKIP 0ms 需必填参数,缺测试样本: workspace_slug,project_id,page_id
L2-auto L2 plane_get_project SKIP 0ms 需必填参数,缺测试样本: workspace_slug,project_id
L2-auto L2 plane_get_sub_issues SKIP 0ms 需必填参数,缺测试样本: workspace_slug,project_id,issue_id
L2-auto L2 plane_get_workspace SKIP 0ms 需必填参数,缺测试样本: workspace_slug
L2-auto L2 plane_list_cycles SKIP 0ms 需必填参数,缺测试样本: workspace_slug,project_id
L2-auto L2 plane_list_intake_issues SKIP 0ms 需必填参数,缺测试样本: workspace_slug,project_id
L2-auto L2 plane_list_issues SKIP 0ms 需必填参数,缺测试样本: workspace_slug,project_id
L2-auto L2 plane_list_modules SKIP 0ms 需必填参数,缺测试样本: workspace_slug,project_id
L2-auto L2 plane_list_pages SKIP 0ms 需必填参数,缺测试样本: workspace_slug,project_id
L2-auto L2 plane_list_project_members SKIP 0ms 需必填参数,缺测试样本: workspace_slug,project_id
L2-auto L2 plane_list_stickies SKIP 0ms 需必填参数,缺测试样本: workspace_slug
L2-auto L2 plane_list_workspace_members SKIP 0ms 需必填参数,缺测试样本: workspace_slug
L2-auto L2 service_auto_update_get_config SKIP 0ms 需必填参数,缺测试样本: agate_version
L2-auto L2 service_auto_update_get_package SKIP 0ms 需必填参数,缺测试样本: file_name
L2-auto L2 service_batch_download_file_tree SKIP 0ms 需必填参数,缺测试样本: file_path
L2-auto L2 service_batch_download_path SKIP 0ms 需必填参数,缺测试样本: id
L2-auto L2 service_sim_monthly_data SKIP 0ms 需必填参数,缺测试样本: giccid,month
L2-auto L2 service_sim_query SKIP 0ms 需必填参数,缺测试样本: giccid
L2-auto L2 service_site_analysis_data SKIP 0ms 需必填参数,缺测试样本: id
L2-auto L2 service_site_analysis_get_config SKIP 0ms 需必填参数,缺测试样本: id
L2-auto L2 service_site_monitor_alarm_list SKIP 0ms 需必填参数,缺测试样本: sn
L2-auto L2 service_site_monitor_base_info SKIP 0ms 需必填参数,缺测试样本: site_list
L2-auto L2 service_site_monitor_config_get SKIP 0ms 需必填参数,缺测试样本: name
L2-auto L2 service_site_monitor_mode_info SKIP 0ms 需必填参数,缺测试样本: sn
L2-auto L2 service_site_power_flow SKIP 0ms 需必填参数,缺测试样本: sn,date
L2-auto L2 service_site_query_info SKIP 0ms 需必填参数,缺测试样本: sn
L2-auto L2 service_tou_template_detail SKIP 0ms 需必填参数,缺测试样本: id
L2-auto L2 storage_file_read SKIP 0ms 需必填参数,缺测试样本: path
L2-auto L2 storage_file_read_to_local SKIP 0ms 需必填参数,缺测试样本: path
L2-auto L2 storage_file_upload SKIP 0ms 需必填参数,缺测试样本: localPath
L2-auto L2 storage_file_write SKIP 0ms 需必填参数,缺测试样本: path,content
L2-auto L2 storage_minio_read_object SKIP 0ms 需必填参数,缺测试样本: bucket,key
L2-auto L2 util_parse_sn SKIP 0ms 需必填参数,缺测试样本: sn
L4-2 L4 service_site_search PASS 22ms 无明文 PII; 保留字段命中: sn
L4-4 L4 service_sim_search PASS 268ms 无明文 PII; 保留字段命中: giccid
L4-5 L4 data_mongo_find PASS 1ms 无明文 PII; 保留字段命中: _id
L4-6 L4 data_mongo_find PASS 0ms 无明文 PII; 保留字段命中: _id
L2S-1 L2S service_site_query_info PASS 5411ms 无明文 PII; 保留:sn
L2S-2 L2S service_site_power_flow PASS 393ms 返回合法结果 (2508B)
L2S-3 L2S data_fwh_query_site_mode_info PASS 638ms 返回合法结果 (961B)
L2S-4 L2S data_fwh_query_site_alarm_list PASS 560ms 返回合法结果 (97B)
L2S-5 L2S data_fwh_query_system_update_log PASS 1788ms 返回合法结果 (766B)
L2S-6 L2S service_site_monitor_mode_info PASS 611ms 返回合法结果 (961B)
L2S-7 L2S service_site_monitor_alarm_list PASS 220ms 返回合法结果 (97B)
L2S-8 L2S service_site_monitor_base_info PASS 565ms 返回合法结果 (520B)
L2S-10 L2S service_sim_query PASS 1ms 无明文 PII; 保留:giccid
L2S-11 L2S service_sim_monthly_data PASS 1ms 返回合法结果 (3150B)
L2S-12 L2S data_sim_smarthub_card_info PASS 91ms 无明文 PII; 保留:
L2S-20 L2S plane_list_projects PASS 35ms 返回合法结果 (834B)
L2S-21 L2S plane_get_project PASS 62ms 返回合法结果 (1530B)
L2S-22 L2S plane_list_issues PASS 55ms 返回合法结果 (285B)
L2S-23 L2S plane_list_labels PASS 27ms 返回合法结果 (809B)
L2S-24 L2S plane_list_states PASS 27ms 返回合法结果 (1682B)
L2S-25 L2S plane_list_cycles PASS 31ms 返回合法结果 (2B)
L2S-26 L2S plane_list_modules PASS 52ms 返回合法结果 (2B)
L2S-27 L2S plane_list_intake_issues PASS 32ms 返回合法结果 (1785B)
L2S-28 L2S plane_list_project_members PASS 25ms 返回合法结果 (516B)
L2S-29 L2S plane_list_workspace_members PASS 26ms 返回合法结果 (5465B)
L3RW-1 L3RW storage_file_write PASS 5ms 写入成功 path=/uploads/mcp_test_1787675676.txt
L3RW-2 L3RW storage_file_list PASS 0ms 列表返回
L3RW-3 L3RW storage_file_read PASS 1ms 读回内容一致
L3RW-4 L3RW storage_minio_list_objects PASS 55ms MinIO 可列出对象
L2C-1 L2C service_auto_update_get_package PASS 0ms 级联 file_name=IBG_SYS.bz2 → 93B
L2C-2 L2C service_auto_update_get_config PASS 0ms 级联 agate_version=aGate1.0 → 677B
L2C-3 L2C service_tou_template_detail PASS 574ms 级联 id=4576 → 13072B
L2C-4 L2C data_fwh_query_tou_template_detail PASS 223ms 级联 id=4576 → 13072B
L2C-5 L2C service_site_analysis_get_config PASS 65ms 级联 id=6a83d29d26 → 2587B
L2C-6 L2C service_site_analysis_data PASS 58ms 级联 id=6a83d29d26 → 2576B
L2C-7 L2C service_batch_download_path PASS 0ms 级联 id=6a8d660f11 → 1140B
L2C-8 L2C service_site_monitor_config_get PASS 3ms 级联 name=SUNRUN → 32330B
L2C-9 L2C data_sim_acceleronix_card_info PASS 114ms 级联 iccid=89330125107800459910 → 869B
L2C-10 L2C data_sim_acceleronix_data_pool_sim_info PASS 87ms 级联 data_pool_id=DP0100M0O905802 → 8181B
L2C-11 L2C data_fwh_query_system_update_log_detail SKIP 201ms order_id=72395 依赖/空: 查询升级详情失败: [QuerySystemUpdateLogDetail] [HttpPost] Response faile…
L2C-12 L2C storage_minio_read_object PASS 0ms 校验行为正常(拒绝大/非文本文件): 参数 key 格式错误: 文件过大 (2429176 bytes),仅…
L2C-13 L2C plane_get_issue SKIP 0ms 源 plane_list_issues 无可用数据(路径 results[0].id 为空)
L2C-14 L2C plane_get_cycle SKIP 0ms 源 plane_list_cycles 无可用数据(路径 [0].id 为空)
L2C-15 L2C plane_get_module SKIP 0ms 源 plane_list_modules 无可用数据(路径 [0].id 为空)
L2C-16 L2C plane_get_page SKIP 0ms 源 plane_list_pages 无可用数据(路径 [0].id 为空)
L2C-17 L2C plane_get_intake_issue PASS 33ms 级联 issue_id=6e7fa7b4-39c5-414a-a2fd-… → 1728B
L2X-1 L2X data_fwh_query_site_power_flow PASS 741ms 返回合法结果 (2508B)
L2X-2 L2X plane_get_workspace PASS 24ms 返回合法结果 (494B)
L2X-3 L2X plane_list_pages PASS 34ms 返回合法结果 (2B)
L2X-4 L2X plane_list_stickies PASS 25ms 返回合法结果 (281B)
L2X-5 L2X service_batch_download_file_tree PASS 12ms 级联 file_path=BatchDownloadData/10060001A04F24160088/E… → 196B
L2X-6 L2X storage_file_read_to_local PASS 0ms 写入后下载到本地成功
L2X-7 L2X storage_file_upload PASS 2ms 本地文件上传成功

FAIL 用例(需关注)

无

SKIP 逐条分析(每个工具缺什么 / 如何补)

以下为排除已在其它阶段 PASS 后、仍未覆盖的 23 个工具。已在别处 PASS 的工具(如 service_site_query_info、planelist* 等)不再列出。

分组:A=可级联/自造补测(无需外部样本)|B=需“确有数据”的样本|C=需环境或代码改动|D=环境数据为空。

B 组 · 需“确有数据”的样本(要你提供)

工具 缺什么 / 如何补
data_fwh_query_ahub_update_log 缺“有 aHub 升级记录”的 sn。
data_fwh_query_alarm_snapshot 缺“确实有告警快照”的 sn+date 组合(普通 SN 当天不一定有快照)。
data_fwh_query_alarm_statistics_from_code 缺一个真实的 alarm_code(告警码)。
data_fwh_query_ems_log_record 缺“有 EMS 日志”的 sn(现有样本 SN 试过为空)。
data_fwh_query_event_alarm_list 缺“该时段确有事件/告警”的 sn+start_time+end_time。
data_fwh_query_fault_record_callable_list 缺“有可召唤故障录波”的 sn。
data_fwh_query_fault_record_list 缺“确有故障录波”的 sn+时间范围(现有 SN 上游返回 Response failed=无记录)。
data_fwh_query_fault_record_sub_list 缺 fault_id(需先有 fault_record_list 返回数据才能级联)。
data_fwh_query_mqtt_log_list 缺有效的 cmd_type 取值 + 有 MQTT 日志的 sn 与时间范围。
data_fwh_query_shutdown_list 缺“该日期确有停机记录”的 date。
data_fwh_query_system_update_log_detail order_id 已能级联获取,但上游对该 order 无详情(Response failed)。需一个确有升级详情的 order。
data_pgsql_query_snapshot_file_record 缺一个已知存在的快照 file_name(PgSQL 记录,列表接口无法级联获取)。
data_sim_acceleronix_batch_data_info iccid 可级联,但需配一个“确有用量数据”的 month。

C 组 · 需环境或代码改动

工具 缺什么 / 如何补
service_background_task_list 缺 asynq 任务队列 inspector 初始化。需在 cmd/mcp/main.go 初始化队列 inspector(代码改动),或该能力在 MCP 场景不启用。

D 组 · 环境数据为空(非缺陷,需造/等数据)

工具 缺什么 / 如何补
service_monitor_alarm_stats 缺当日告警统计数据(StatisticsAlarm 集合无文档)。需等有数据的日期或造数据;工具逻辑正常(同族 shutdown 已 PASS)。
service_dashboard_alarm_detail 同上,缺 StatisticsAlarm 当日文档。
plane_get_cycle 缺 cycle:plane_list_cycles 返回空。需项目里有周期。
plane_get_issue 缺可用 issue:plane_list_issues 当前返回空(该 project 无工作项)。需项目里有 issue。
plane_get_issue_activity 同上,需存在 issue。
plane_get_module 缺 module:plane_list_modules 返回空。需项目里有模块。
plane_get_page 缺 page:plane_list_pages 返回空。需项目里有页面。
plane_get_page_description 同上,需存在 page。
plane_get_sub_issues 同上,需存在带子项的 issue。