281 lines
8.5 KiB
Markdown
281 lines
8.5 KiB
Markdown
# 05-验收证据
|
||
|
||
## 验收范围
|
||
|
||
本轮验收覆盖:
|
||
|
||
- Run 条件不具备时可点击并提示原因。
|
||
- Run 条件满足后进入 task/HAL 执行。
|
||
- Stop、Pause、Resume、Step、Home 按钮驱动 task/HAL runtime。
|
||
- 按钮状态来自 LinuxCNC task policy 和 task/HAL status,而不是固定 UI 状态。
|
||
|
||
## 命令证据
|
||
|
||
### 1. 构建 task/HAL WASM
|
||
|
||
命令:
|
||
|
||
```bash
|
||
bash wasm-port/tools/build_task_hal_wasm.sh
|
||
```
|
||
|
||
结果:
|
||
|
||
```text
|
||
linuxcnc_task_hal_wasm_build=ok
|
||
```
|
||
|
||
### 2. WASM task/HAL runtime 测试
|
||
|
||
命令:
|
||
|
||
```bash
|
||
node wasm-port/tests/wasm/node/verify_task_hal_wasm.mjs
|
||
```
|
||
|
||
结果:
|
||
|
||
```text
|
||
linuxcnc_task_runtime_smoke=ok
|
||
task_status_from_linuxcnc_runtime=ok
|
||
task_commands_drive_motion_runtime=ok
|
||
mdi_jog_task_motion_hal_sync=ok
|
||
```
|
||
|
||
### 3. Web store + task/HAL runtime 测试
|
||
|
||
命令:
|
||
|
||
```bash
|
||
node web-rtcp-5axis-sim-plan/tests/node/verify_linuxcnc_task_hal_runtime.mjs
|
||
```
|
||
|
||
结果:
|
||
|
||
```text
|
||
linuxcnc_task_hal_runtime_smoke=ok
|
||
task_hal_machine_file_smoke=ok
|
||
switchkins_remap_hal_sync_smoke=ok
|
||
browser_task_hal_worker_smoke=ok
|
||
```
|
||
|
||
覆盖点:
|
||
|
||
- Run task/HAL feedback。
|
||
- MDI `M428` 后 `switchkinsType=1`。
|
||
- Home 后 Jog 保持坐标连续。
|
||
- Pause 后 `interpState=paused`。
|
||
- Resume 后 `interpState=reading`。
|
||
- Step 后 `singleStepping=true`。
|
||
- Stop 后 `motion.aborted=true`。
|
||
|
||
### 4. Run preconditions 测试
|
||
|
||
命令:
|
||
|
||
```bash
|
||
node web-rtcp-5axis-sim-plan/tests/node/verify_run_preconditions.mjs
|
||
```
|
||
|
||
结果:
|
||
|
||
```text
|
||
run_preconditions_ini_profile_smoke=ok
|
||
run_preconditions_kinematics_smoke=ok
|
||
run_preconditions_machine_file_smoke=ok
|
||
```
|
||
|
||
覆盖点:
|
||
|
||
- LinuxCNC INI 未加载时阻止 Run。
|
||
- task/HAL runtime 未就绪时阻止 Run。
|
||
- 未开机、未 AUTO、未 Home 时阻止 Run。
|
||
- 未选择 machine-file G-code 时阻止 Run。
|
||
|
||
### 5. Store 回归测试
|
||
|
||
命令:
|
||
|
||
```bash
|
||
node web-rtcp-5axis-sim-plan/tests/node/verify_rtcp_store.mjs
|
||
```
|
||
|
||
结果:
|
||
|
||
```text
|
||
rtcp_store_smoke=ok
|
||
```
|
||
|
||
### 6. 浏览器 smoke 测试
|
||
|
||
命令:
|
||
|
||
```bash
|
||
bash web-rtcp-5axis-sim-plan/tests/browser/verify_gmoccapy_shell_browser.sh
|
||
```
|
||
|
||
结果:
|
||
|
||
```text
|
||
gmoccapy_shell_smoke=ok
|
||
```
|
||
|
||
覆盖点:
|
||
|
||
- 页面渲染完整。
|
||
- task/HAL runtime worker 就绪。
|
||
- blocked Run 按钮不 disabled。
|
||
- blocked Run 按钮有 `data-command-ready=false` 和 `aria-disabled=true`。
|
||
- 点击 blocked Run 后输出 blocked 原因。
|
||
- Pause/Resume browser workflow 正常。
|
||
|
||
### 7. 浏览器按钮流程截图取证
|
||
|
||
命令:
|
||
|
||
```bash
|
||
node --check qa/web-rtcp-5axis-site-test/capture-button-control-evidence.mjs
|
||
node qa/web-rtcp-5axis-site-test/capture-button-control-evidence.mjs
|
||
```
|
||
|
||
结果:
|
||
|
||
```text
|
||
button_control_evidence_status=PASS
|
||
button_control_evidence_job_id=btn-20260623091525-b35869f1
|
||
button_control_evidence_report_id=report-btn-20260623091525-b35869f1
|
||
button_control_evidence_json=/home/meswork/cnc_wams/qa/web-rtcp-5axis-site-test/output/button-control-evidence-report.json
|
||
button_control_evidence_pdf=/home/meswork/cnc_wams/qa/web-rtcp-5axis-site-test/output/button-control-evidence-report.pdf
|
||
button_control_evidence_screenshots=/home/meswork/cnc_wams/qa/web-rtcp-5axis-site-test/screenshots/button-control-evidence
|
||
```
|
||
|
||
覆盖点:
|
||
|
||
- Home 后 `allHomed=true`,保持 manual/idle 状态。
|
||
- Run 后 `runState=running`,runtime feedback 来源为 `linuxcnc-task-motion-hal-wasm`。
|
||
- Pause 后 `runState=paused`,`taskPaused=true`。
|
||
- Resume 后恢复 `runState=running` 和 `interpState=reading`。
|
||
- Step 后 `singleStepping=true`,并保持 paused。
|
||
- Stop 后 `runState=stopped`,`motion.aborted=true`。
|
||
- 14 张截图非空,且每一步记录 `RUN/STOP/PAUSE/RESUME/STEP/HOME` 的 readiness 属性。
|
||
|
||
### 8. 云端部署与按钮流程验收
|
||
|
||
部署命令摘要:
|
||
|
||
```bash
|
||
bash wasm-port/tools/build_task_hal_wasm.sh
|
||
npm --prefix web-rtcp-5axis-sim-plan/app run build
|
||
tar -C web-rtcp-5axis-sim-plan/app/dist -czf /tmp/web-rtcp-5axis-sim-8092-working1.tar.gz .
|
||
```
|
||
|
||
云端发布:
|
||
|
||
```text
|
||
host=82.156.24.101
|
||
user=ubuntu
|
||
nginx root=/var/www/web-rtcp-5axis-sim
|
||
remote tar=/home/ubuntu/tmp/web-rtcp-5axis-sim-8092-working1-20260623051405.tar.gz
|
||
remote staging=/home/ubuntu/tmp/web-rtcp-5axis-sim-8092-working1-20260623051405
|
||
remote backup=/home/ubuntu/tmp/web-rtcp-backups/web-rtcp-5axis-sim-before-working1-20260623051405
|
||
```
|
||
|
||
云端验证:
|
||
|
||
```text
|
||
sudo nginx -t -> nginx: configuration file /etc/nginx/nginx.conf test is successful
|
||
curl -k -I https://127.0.0.1:8092/ -> HTTP/2 200
|
||
```
|
||
|
||
公网按钮流程取证命令:
|
||
|
||
```bash
|
||
TARGET_URL='https://82.156.24.101:8092/' \
|
||
EVIDENCE_SCOPE='cloud-button-control-evidence' \
|
||
node qa/web-rtcp-5axis-site-test/capture-button-control-evidence.mjs
|
||
```
|
||
|
||
结果:
|
||
|
||
```text
|
||
button_control_evidence_status=PASS
|
||
button_control_evidence_job_id=btn-20260623091811-c291e49b
|
||
button_control_evidence_report_id=report-btn-20260623091811-c291e49b
|
||
button_control_evidence_json=/home/meswork/cnc_wams/qa/web-rtcp-5axis-site-test/output/cloud-button-control-evidence-report.json
|
||
button_control_evidence_pdf=/home/meswork/cnc_wams/qa/web-rtcp-5axis-site-test/output/cloud-button-control-evidence-report.pdf
|
||
button_control_evidence_screenshots=/home/meswork/cnc_wams/qa/web-rtcp-5axis-site-test/screenshots/cloud-button-control-evidence
|
||
```
|
||
|
||
### 9. LinuxCNC native task/HAL 对照报告
|
||
|
||
命令:
|
||
|
||
```bash
|
||
bash wasm-port/tests/native/verify_task_hal_phase0.sh
|
||
node web-rtcp-5axis-sim-plan/tests/node/verify_native_task_hal_audit.mjs
|
||
node --check qa/web-rtcp-5axis-site-test/capture-native-task-hal-comparison.mjs
|
||
node qa/web-rtcp-5axis-site-test/capture-native-task-hal-comparison.mjs
|
||
```
|
||
|
||
结果:
|
||
|
||
```text
|
||
task_hal_phase0_native_probe_gate=ok
|
||
native_task_hal_source_artifact_audit=ok
|
||
native_task_hal_comparison_status=PASS_WITH_HOST_NATIVE_RUNTIME_BLOCKER
|
||
native_task_hal_comparison_json=/home/meswork/cnc_wams/qa/web-rtcp-5axis-site-test/output/native-task-hal-comparison-report.json
|
||
native_task_hal_comparison_markdown=/home/meswork/cnc_wams/qa/web-rtcp-5axis-site-test/output/native-task-hal-comparison-report.md
|
||
native_task_hal_transition_log_available=0
|
||
native_task_hal_host_blocker_count=15
|
||
```
|
||
|
||
阻塞证据摘要:
|
||
|
||
- `linuxcnc/scripts/linuxcnc` 和 `linuxcnc/scripts/rip-environment` 硬编码旧路径 `/home/cnc/桌面/cnc_wams/linuxcnc`。
|
||
- `linuxcnc/bin/halcmd` 要求当前主机没有的 `GLIBC_2.38`。
|
||
- `linuxcnc/bin/rs274` 要求当前主机没有的 `GLIBC_2.38`、`GLIBCXX_3.4.31` 和 `libpython3.13.so.1.0`。
|
||
- 当前主机 glibc 为 `Ubuntu GLIBC 2.35`,`libstdc++` 只到 `GLIBCXX_3.4.30`。
|
||
|
||
结论:BTN-013 已形成可复核 native/source 对照和 host-native blocker 证据;不声明 native task 状态转换日志已生成。
|
||
|
||
## 页面证据
|
||
|
||
本轮执行的是本地和云端 browser 验收:
|
||
|
||
- 页面入口:`web-rtcp-5axis-sim-plan/app/index.html`
|
||
- 云端入口:`https://82.156.24.101:8092/`
|
||
- 浏览器验证脚本:`web-rtcp-5axis-sim-plan/tests/browser/verify_gmoccapy_shell_browser.sh`
|
||
- 按钮流程取证脚本:`qa/web-rtcp-5axis-site-test/capture-button-control-evidence.mjs`
|
||
- 按钮流程 JSON:`qa/web-rtcp-5axis-site-test/output/button-control-evidence-report.json`
|
||
- 按钮流程 PDF:`qa/web-rtcp-5axis-site-test/output/button-control-evidence-report.pdf`
|
||
- 按钮流程截图目录:`qa/web-rtcp-5axis-site-test/screenshots/button-control-evidence/`
|
||
- 云端按钮流程 JSON:`qa/web-rtcp-5axis-site-test/output/cloud-button-control-evidence-report.json`
|
||
- 云端按钮流程 PDF:`qa/web-rtcp-5axis-site-test/output/cloud-button-control-evidence-report.pdf`
|
||
- 云端按钮流程截图目录:`qa/web-rtcp-5axis-site-test/screenshots/cloud-button-control-evidence/`
|
||
- Native 对照 JSON:`qa/web-rtcp-5axis-site-test/output/native-task-hal-comparison-report.json`
|
||
- Native 对照 Markdown:`qa/web-rtcp-5axis-site-test/output/native-task-hal-comparison-report.md`
|
||
|
||
## 文件证据
|
||
|
||
实现文件:
|
||
|
||
- `wasm-port/runtime/core/linuxcnc_wrap/linuxcnc_motion_runtime.c`
|
||
- `wasm-port/runtime/core/linuxcnc_wrap/linuxcnc_task_hal_wasm.cpp`
|
||
- `web-rtcp-5axis-sim-plan/app/src/state/store.js`
|
||
- `web-rtcp-5axis-sim-plan/app/src/ui/gmoccapy-shell.js`
|
||
|
||
测试文件:
|
||
|
||
- `web-rtcp-5axis-sim-plan/tests/browser/gmoccapy_shell_smoke.html`
|
||
- `web-rtcp-5axis-sim-plan/tests/node/verify_linuxcnc_task_hal_runtime.mjs`
|
||
- `qa/web-rtcp-5axis-site-test/capture-button-control-evidence.mjs`
|
||
- `qa/web-rtcp-5axis-site-test/capture-native-task-hal-comparison.mjs`
|
||
|
||
过程日志:
|
||
|
||
- `web-rtcp-5axis-sim-plan/gptlog-process/gpdlog.md`
|
||
|
||
## 验收结论
|
||
|
||
本轮功能已通过 WASM、Node、browser 三层验证。按钮行为已从单纯 UI 操作提升为 LinuxCNC task/HAL 状态驱动的控制流程。
|