Consumption Reader Startup Gate Implementation Plan

执行要求:使用 executing-plans 按任务实施。仓库 Git 操作限制为只读,因此不包含暂存或提交步骤。

目标:一卡通 USB 读卡器完成协议初始化前,不得进入或运行消费业务。

架构:ConsumptionStartActivity 通过专用启动控制器发现设备、申请权限并初始化协议,成功后才启动 ConsumptionActivity。纯状态门禁负责可测试的弹框、等待和退出决策;所有消费入口统一经过启动页。消费页自身仅在读卡器进入寻卡状态后启动餐盘识别,并在可用性丢失时立即关闭餐盘入口。

技术栈:Android Java、USB Host API、NewcapecUsbCardReader、SingleTipPop、JUnit 4、JDK 8 Gradle。

任务 1:纯启动门禁状态机

JAVA_HOME=$(/usr/libexec/java_home -v 1.8) bash gradlew :app:testDebugUnitTest --tests '*ConsumptionReaderStartupGateTest'

任务 2:生命周期安全的启动控制器

JAVA_HOME=$(/usr/libexec/java_home -v 1.8) bash gradlew :app:compileDebugJavaWithJavac

任务 3:启动页门禁与弹框

任务 4:统一消费入口

JAVA_HOME=$(/usr/libexec/java_home -v 1.8) bash gradlew :app:testDebugUnitTest --tests '*FunctionSelectionRouterTest' --tests '*ModeTargetResolverTest' --tests '*SettingReturnRouterTest'

任务 5:运行期撤销餐盘及新业务资格

JAVA_HOME=$(/usr/libexec/java_home -v 1.8) bash gradlew :app:testDebugUnitTest --tests '*ReaderInitializationRetryGateTest' --tests '*ConsumptionFlowStateMachineTest' --tests '*ConsumptionTransactionGateTest'

任务 6:文档和完整验证

JAVA_HOME=$(/usr/libexec/java_home -v 1.8) bash gradlew :app:testDebugUnitTest --rerun-tasks
JAVA_HOME=$(/usr/libexec/java_home -v 1.8) bash gradlew :app:assembleDebug
shasum -a 256 app/build/outputs/apk/debug/app-debug.apk

现场验收边界

需要真机验证 USB 接入、授权、协议初始化、设置返回时重新校验、取消退出,以及消费运行期间拔出读卡器后的业务阻断。