OnecardDemo 用户信息每批 1000 条实施计划
For agentic workers: REQUIRED SUB-SKILL: Use executing-plans to implement this plan task-by-task. Steps use checkbox (
- [ ]) syntax for tracking.
Goal: 将“获取全部用户信息”的自动分页大小集中到 Constants 并设置为每批 1000 条,为后续可配置化保留单一取值入口。
Architecture: 在现有 Constants 增加一卡通用户分页常量,OnecardWebServiceClient 删除私有的 200 条常量并统一引用公共常量。现有 Math.min(分页大小, 剩余数量) 和 最大 CUSTOMERID + 1 游标规则保持不变。
Tech Stack: Java、Android、JUnit 4、Gradle
Task 1:用测试固定 1000 条默认值
Files:
Create:
/Users/liang/AndroidStudioProjects/OnecardDemo/app/src/test/java/com/cpt/onecarddemo/ConstantsTest.javaModify:
/Users/liang/AndroidStudioProjects/OnecardDemo/app/src/main/java/com/cpt/onecarddemo/Constants.javaStep 1:编写失败测试
package com.cpt.onecarddemo;
import org.junit.Test;
import static org.junit.Assert.assertEquals;
public class ConstantsTest {
@Test
public void customerBatchSizeDefaultsToOneThousand() {
assertEquals(1000, Constants.ONE_CARD_CUSTOMER_BATCH_SIZE);
}
}
- Step 2:运行测试并确认 RED
Run: ./gradlew testDebugUnitTest --tests com.cpt.onecarddemo.ConstantsTest
Expected: 编译失败,提示 ONE_CARD_CUSTOMER_BATCH_SIZE 不存在。
- Step 3:在统一常量类增加分页默认值
在一卡通相关常量区域增加:
public static final int ONE_CARD_CUSTOMER_BATCH_SIZE = 1000;
- Step 4:运行测试并确认 GREEN
Run: ./gradlew testDebugUnitTest --tests com.cpt.onecarddemo.ConstantsTest
Expected: BUILD SUCCESSFUL,测试通过。
Task 2:WebService 客户端改为读取统一常量
Files:
Modify:
/Users/liang/AndroidStudioProjects/OnecardDemo/app/src/main/java/com/cpt/onecarddemo/server/OnecardWebServiceClient.javaStep 1:删除客户端私有分页常量并导入统一常量
删除:
private static final int CUSTOMER_BATCH_SIZE = 200;
增加:
import com.cpt.onecarddemo.Constants;
- Step 2:分页计算改为读取公共常量
int size = Math.min(Constants.ONE_CARD_CUSTOMER_BATCH_SIZE, remaining);
现有 getCustomers(startingCustomerId, size)、返回 CUSTOMERID 解析和下一批游标计算保持不变。
- Step 3:运行服务器相关和完整 JVM 测试
Run: ./gradlew testDebugUnitTest
Expected: BUILD SUCCESSFUL,0 failure、0 error。
Task 3:同步文档和变更记录
Files:
Modify:
/Users/liang/AndroidStudioProjects/zhct/zhctprompt/work_android/OnecardDemo/designs/2026-08-24-用户信息每批1000条设计.mdModify:
/Users/liang/AndroidStudioProjects/zhct/zhctprompt/work_android/OnecardDemo/protocols/Change单点功能与字段说明.mdModify:
/Users/liang/AndroidStudioProjects/zhct/zhctprompt/work_android/OnecardDemo/change_records/CHANGELOG.mdRegenerate: 上述文档和本实施计划的同名
.htmlStep 1:更新设计状态
将设计状态更新为“已实施,待现场验证”,并保留“后续可配置化时替换取值来源”的边界。
- Step 2:修正协议说明
将“每段最多 200 条”改为:
当前 Android 自动分页每批 1000 条,最后一批按剩余数量;该值来自 Constants,是实现策略,不是厂家文档规定的服务端硬上限。
- Step 3:增加独立变更记录
记录常量位置、客户端引用、测试证据、构建结果、现场验证状态和未执行 Git 写操作。
- Step 4:生成并核对 Markdown/HTML 文档对
确认标题、1000 条分页口径、后续可配置化边界和验证状态在两种格式中一致。
Task 4:完整构建验证
Files:
Verify:
/Users/liang/AndroidStudioProjects/OnecardDemoStep 1:运行完整验证
Run: ./gradlew testDebugUnitTest assembleDebug lintDebug --rerun-tasks
Expected: BUILD SUCCESSFUL;JVM 测试 0 failure、0 error;Lint 0 error。
- Step 2:静态核对分页值只有一个业务来源
Run: rg -n "CUSTOMER_BATCH_SIZE|每段最多 200|每批 1000" app/src/main zhctprompt/work_android/OnecardDemo
Expected: Java 业务实现只通过 Constants.ONE_CARD_CUSTOMER_BATCH_SIZE 读取 1000;协议说明不再把 200 描述为当前分页大小。
- Step 3:交付现场验证
安装 Debug APK 后连接现场 WebService,执行“获取全部用户信息”,核对分页请求没有超时、返回用户总数与 GetCustomerCount 一致。
执行约束
- 本计划在当前会话内联执行,不调度子代理。
- 不执行 Git 暂存、提交、推送、分支切换或其他 Git 写操作。
- 本次不增加页面配置项、SharedPreferences 或远程配置;只保留后续可配置化入口。