Files
cnc_wams/work/working1/05-验收证据.md
2026-07-02 08:01:34 -04:00

281 lines
8.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
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.
# 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/mes123456/cnc_wams/qa/web-rtcp-5axis-site-test/output/button-control-evidence-report.json
button_control_evidence_pdf=/home/mes123456/cnc_wams/qa/web-rtcp-5axis-site-test/output/button-control-evidence-report.pdf
button_control_evidence_screenshots=/home/mes123456/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/mes123456/cnc_wams/qa/web-rtcp-5axis-site-test/output/cloud-button-control-evidence-report.json
button_control_evidence_pdf=/home/mes123456/cnc_wams/qa/web-rtcp-5axis-site-test/output/cloud-button-control-evidence-report.pdf
button_control_evidence_screenshots=/home/mes123456/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/mes123456/cnc_wams/qa/web-rtcp-5axis-site-test/output/native-task-hal-comparison-report.json
native_task_hal_comparison_markdown=/home/mes123456/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 状态驱动的控制流程。