对齐移动扫码失败决策语义

共享决策改为记录现有扫码稳定错误消息

确认移动扫码权限异常仍保留宿主日志
This commit is contained in:
2026-06-20 21:54:31 +08:00
parent 9e9f8c8fcb
commit a945f9af3d
@@ -3052,7 +3052,7 @@
## 2026-06-20 移动扫码权限请求失败不可静默
- 背景:Expo 移动壳 `scanner.scanQrCode` 会通过真实 `expo-camera` 权限 API 启动扫码;如果权限请求 API 自身失败后只返回通用 `host_error` 而不记录原始错误,用户会看到扫码不可用但开发侧难以区分系统拒绝、原生模块异常或设备能力问题。
- 决策:`QrScannerOverlay``Camera.requestCameraPermissionsAsync()` reject 路径必须调用 `logQrScannerPermissionFailure(...)` 输出 `mobile QR scanner permission request failed` 日志,再通过 `failQrCodeScan('camera permission unavailable')` 结束当前请求;`QrScannerOverlay.test.tsx` 必须覆盖该 reject 路径,移动壳配置检查反查日志 helper 和测试断言。
- 决策:`QrScannerOverlay``Camera.requestCameraPermissionsAsync()` reject 路径必须调用 `logQrScannerPermissionFailure(...)` 输出 `mobile QR scanner permission request failed` 日志,再通过 `failQrCodeScan()` 以稳定 `host_error: qr scanner unavailable` 结束当前请求;`QrScannerOverlay.test.tsx` 必须覆盖该 reject 路径,移动壳配置检查反查日志 helper、稳定错误语义和测试断言。
- 影响范围:`apps/mobile-shell/src/shell/QrScannerOverlay.tsx``apps/mobile-shell/src/shell/QrScannerOverlay.test.tsx``apps/mobile-shell/scripts/check-config.mjs`
- 验证方式:`npm run mobile-shell:test -- src/shell/QrScannerOverlay.test.tsx``npm run mobile-shell:typecheck``npm run check:native-shells``npm run check:encoding``git diff --check`