For agentic workers: REQUIRED SUB-SKILL: Use superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (
- [ ]) syntax for tracking.
Goal: 接口 C 的零元和正金额反馈都携带当前餐盘会话锁定的设备编号。
Architecture: ConsumptionActivity 在识别餐盘时读取、校验并锁定设备编号,同一值用于接口 B 获取订单和接口 C 反馈。OneCardDebitReportRequest 只负责校验、持有和序列化显式传入的 equipmentCode,完整请求 JSON 入队后由后台补传原样复用。
Tech Stack: Android Java、Gson、Retrofit、JUnit 4、Markdown/HTML 文档镜像。
Files:
Modify: app/src/test/java/com/zhct/traybinding/network/request/OneCardDebitReportRequestTest.java
Modify: app/src/test/java/com/zhct/traybinding/consumption/report/ConsumptionReportJsonCodecTest.java
Step 1: 增加失败测试
零元与正金额请求都断言存在 equipment_code,同时断言空设备编号被拒绝;落库编解码断言设备编号原样保留。
Step 2: 运行定向测试并确认旧实现失败
Run: JAVA_HOME=/Users/liang/Library/Java/JavaVirtualMachines/corretto-1.8.0_482/Contents/Home bash gradlew :app:testDebugUnitTest --tests '*OneCardDebitReportRequestTest' --tests '*ConsumptionReportJsonCodecTest'
Expected: FAIL,旧工厂方法没有 equipmentCode 参数。
Files:
Modify: app/src/main/java/com/zhct/traybinding/network/request/OneCardDebitReportRequest.java
Modify: app/src/main/java/com/zhct/traybinding/main/ConsumptionActivity.java
Step 1: 扩展接口 C 请求对象
增加 @SerializedName("equipment_code") private final String equipmentCode;,构造时拒绝空值,并为两个请求工厂增加显式参数。
Step 2: 锁定餐盘会话设备编号
在餐盘识别时把 SETTING_TERMINAL_CODE 规范化后写入 currentEquipmentCode,同一值传给接口 B 与接口 C;终态复位时清空。
Step 3: 运行定向测试
Run: JAVA_HOME=/Users/liang/Library/Java/JavaVirtualMachines/corretto-1.8.0_482/Contents/Home bash gradlew :app:testDebugUnitTest --tests '*OneCardDebitReportRequestTest' --tests '*ConsumptionReportJsonCodecTest'
Expected: BUILD SUCCESSFUL。
Files:
Modify: docs/2026-08-27-consumption-product-requirements.md
Modify: docs/2026-08-27-consumption-code-implementation-design.md
Modify: docs/2026-08-27-interface-c-contract-test-matrix.md
Create: change_records/2026-08-29-one-card-report-equipment-code.md
Generate: 上述 Markdown 对应的同名 HTML 文件。
Step 1: 更新接口 C 顶层字段及会话一致性规则
文档明确 equipment_code 必填,取餐盘会话开始时锁定的设备编号,接口 B、接口 C 和后台补传保持一致。
Step 2: 记录代码影响、验证范围和回退边界
只记录本次 DTO、Activity、测试和文档变更;不执行任何 Git 写操作。