{ "schemaVersion": 1, "id": "test_appsystem_10", "name": "组件测试 10 · 音频【手动】", "description": "手动测试:先阅读测试说明。默认不开启执行开关,不能把组件返回成功当作功能通过。", "enabled": true, "trigger": { "type": "manual", "label": "手动运行" }, "variables": [], "nodes": [ { "id": "t10_1", "componentId": "Trigger.Manual", "label": "人工发起", "position": { "x": 220, "y": 80 }, "values": { "entryName": "开始组件测试" }, "options": { "timeoutMs": 15000, "retryCount": 0, "logException": false } }, { "id": "t10_2", "componentId": "Basic_SetVariable", "label": "初始化失败计数", "position": { "x": 220, "y": 222 }, "values": { "value": 0 }, "options": { "timeoutMs": 15000, "retryCount": 0, "logException": false, "outputVar": "failures" } }, { "id": "t10_3", "componentId": "Basic_SetVariable", "label": "初始化待确认计数", "position": { "x": 220, "y": 364 }, "values": { "value": 0 }, "options": { "timeoutMs": 15000, "retryCount": 0, "logException": false, "outputVar": "pending" } }, { "id": "t10_4", "componentId": "Basic_SetVariable", "label": "初始化阻塞计数", "position": { "x": 220, "y": 506 }, "values": { "value": 0 }, "options": { "timeoutMs": 15000, "retryCount": 0, "logException": false, "outputVar": "blocked" } }, { "id": "t10_5", "componentId": "Basic_SetVariable", "label": "手动执行开关:确认环境后才可改为 true", "position": { "x": 220, "y": 648 }, "values": { "value": false }, "options": { "timeoutMs": 15000, "retryCount": 0, "logException": false, "outputVar": "manualEnabled" } }, { "id": "t10_6", "componentId": "System_ExecuteCommand", "label": "准备 0.3 秒低音量测试音", "position": { "x": 220, "y": 790 }, "values": { "action": "$dir=Join-Path ([IO.Path]::GetTempPath()) ('RPA-AppSystem-Tests\\'+[Guid]::NewGuid().ToString('N')); [IO.Directory]::CreateDirectory($dir) | Out-Null; $wav=Join-Path $dir 'tone.wav'; [IO.File]::WriteAllBytes($wav,[Convert]::FromBase64String('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')); $wav" }, "options": { "timeoutMs": 15000, "retryCount": 0, "logException": false, "outputVar": "audioPath" } }, { "id": "t10_7", "componentId": "logic_control_try_catch", "label": "10-01 · System_PlaySound", "position": { "x": 220, "y": 932 }, "values": {}, "options": { "timeoutMs": 15000, "retryCount": 0, "logException": false } }, { "id": "t10_8", "componentId": "logic_control_if_else", "label": "手动执行保护", "position": { "x": 220, "y": 1340 }, "values": { "condition": "${manualEnabled === true}" }, "options": { "timeoutMs": 15000, "retryCount": 0, "logException": false }, "parentId": "t10_7", "slot": "try_fn" }, { "id": "t10_9", "componentId": "ExceptionUtil_Throws", "label": "默认不执行系统状态操作", "position": { "x": 220, "y": 1340 }, "values": { "msg": "待人工确认:执行开关未开启" }, "options": { "timeoutMs": 15000, "retryCount": 0, "logException": false }, "parentId": "t10_8", "slot": "statement_else" }, { "id": "t10_10", "componentId": "System_PlaySound", "label": "System_PlaySound", "position": { "x": 220, "y": 1340 }, "values": { "audio": "${audioPath}" }, "options": { "timeoutMs": 15000, "retryCount": 0, "logException": false, "outputVar": "actual_1" }, "parentId": "t10_8", "slot": "statement_if" }, { "id": "t10_11", "componentId": "Basic_SetVariable", "label": "记录实际值与判定", "position": { "x": 220, "y": 1340 }, "values": { "value": "${[\"10-01\", \"System_PlaySound\", \"MANUAL\", \"{\\\"audio\\\":\\\"${audioPath}\\\"}\", \"听到一次短提示音;没有声音不能算通过\", actual_1]}" }, "options": { "timeoutMs": 15000, "retryCount": 0, "logException": false, "outputVar": "case_1" }, "parentId": "t10_8", "slot": "statement_if" }, { "id": "t10_12", "componentId": "Basic_SetVariable", "label": "累计失败数", "position": { "x": 220, "y": 1340 }, "values": { "value": "${failures + (case_1[2] === \"FAIL\" ? 1 : 0)}" }, "options": { "timeoutMs": 15000, "retryCount": 0, "logException": false, "outputVar": "failures" }, "parentId": "t10_8", "slot": "statement_if" }, { "id": "t10_13", "componentId": "Basic_SetVariable", "label": "累计待人工确认数", "position": { "x": 220, "y": 1340 }, "values": { "value": "${pending + (case_1[2] === \"MANUAL\" ? 1 : 0)}" }, "options": { "timeoutMs": 15000, "retryCount": 0, "logException": false, "outputVar": "pending" }, "parentId": "t10_8", "slot": "statement_if" }, { "id": "t10_14", "componentId": "Basic_SetVariable", "label": "记录异常结果", "position": { "x": 220, "y": 1340 }, "values": { "value": "${[\"10-01\", \"System_PlaySound\", manualEnabled === true ? \"FAIL\" : \"MANUAL\", \"{\\\"audio\\\":\\\"${audioPath}\\\"}\", \"听到一次短提示音;没有声音不能算通过\", error.reason]}" }, "options": { "timeoutMs": 15000, "retryCount": 0, "logException": false, "outputVar": "case_1" }, "parentId": "t10_7", "slot": "except_fn" }, { "id": "t10_15", "componentId": "Basic_SetVariable", "label": "异常累计失败数", "position": { "x": 220, "y": 1340 }, "values": { "value": "${failures + (case_1[2] === \"FAIL\" ? 1 : 0)}" }, "options": { "timeoutMs": 15000, "retryCount": 0, "logException": false, "outputVar": "failures" }, "parentId": "t10_7", "slot": "except_fn" }, { "id": "t10_16", "componentId": "Basic_SetVariable", "label": "异常累计待确认数", "position": { "x": 220, "y": 1340 }, "values": { "value": "${pending + (case_1[2] === \"MANUAL\" ? 1 : 0)}" }, "options": { "timeoutMs": 15000, "retryCount": 0, "logException": false, "outputVar": "pending" }, "parentId": "t10_7", "slot": "except_fn" }, { "id": "t10_17", "componentId": "Log_Info", "label": "输出测试结果", "position": { "x": 220, "y": 1436 }, "values": { "msg": "用例结果:${json(case_1)}" }, "options": { "timeoutMs": 15000, "retryCount": 0, "logException": false } }, { "id": "t10_18", "componentId": "Log_Info", "label": "输出测试结果", "position": { "x": 220, "y": 1578 }, "values": { "msg": "本组汇总:失败 ${failures} 项,阻塞 ${blocked} 项,待人工确认 ${pending} 项。" }, "options": { "timeoutMs": 15000, "retryCount": 0, "logException": false } }, { "id": "t10_19", "componentId": "logic_control_if_else", "label": "汇总判定", "position": { "x": 220, "y": 1720 }, "values": { "condition": "${failures > 0 || pending > 0 || blocked > 0}" }, "options": { "timeoutMs": 15000, "retryCount": 0, "logException": false } }, { "id": "t10_20", "componentId": "ExceptionUtil_Throws", "label": "如实标记未通过", "position": { "x": 220, "y": 1880 }, "values": { "msg": "组件测试未全部通过:失败 ${failures} 项,阻塞 ${blocked} 项,待人工确认 ${pending} 项。请查看日志。" }, "options": { "timeoutMs": 15000, "retryCount": 0, "logException": false }, "parentId": "t10_19", "slot": "statement_if" }, { "id": "t10_21", "componentId": "Log_Info", "label": "输出测试结果", "position": { "x": 220, "y": 1880 }, "values": { "msg": "本组全部通过。" }, "options": { "timeoutMs": 15000, "retryCount": 0, "logException": false }, "parentId": "t10_19", "slot": "statement_else" } ], "edges": [ { "id": "e_t10_2", "source": "t10_1", "target": "t10_2" }, { "id": "e_t10_3", "source": "t10_2", "target": "t10_3" }, { "id": "e_t10_4", "source": "t10_3", "target": "t10_4" }, { "id": "e_t10_5", "source": "t10_4", "target": "t10_5" }, { "id": "e_t10_6", "source": "t10_5", "target": "t10_6" }, { "id": "e_t10_7", "source": "t10_6", "target": "t10_7" }, { "id": "e_t10_17", "source": "t10_7", "target": "t10_17" }, { "id": "e_t10_18", "source": "t10_17", "target": "t10_18" }, { "id": "e_t10_19", "source": "t10_18", "target": "t10_19" } ], "meta": { "createdAt": "2026-10-30T00:00:00.000Z", "updatedAt": "2026-10-30T00:00:00.000Z", "appVersion": "0.1.0" } }