重庆环卫称重页面改版实施计划
目标:在不修改现有打餐页面的前提下,为余额模式新增重庆环卫专用打餐前、打餐时页面,并接入新 Logo、星币单位、疾病标签和累计取用展示。
架构:新页面全部放在 com.zhct.traybinding.fragment.chongqinghuanwei 包中,使用独立布局和资源;现有三套 Fragment 保持不变。WeightMainActivity 只在模式 1路由到新页面,并在扫码结束读取新页面的本次取用重量。
文件结构
- 新增计算器、疾病标签 View、共享菜品头部 Binder、打餐前 Fragment、打餐时 Fragment。
- 新增两份页面布局、一份标签布局、专用面板/卡片/图标资源和优化 Logo。
- 修改人员营养响应模型、主页面路由、公共标题栏及命名颜色、尺寸、文案。
- 现有三套打餐 Fragment 及其 XML 不修改。
Task 1:锁定展示计算规则
- 先写每 100g 换算、负数归零、累计取用、默认建议取用测试并确认失败。
- 新增
ChongqingHuanweiDisplayCalculator,集中管理数值边界。
- 运行目标测试并确认通过。
累计取用 = max(0, 服务端初始值) + max(0, 本次取餐重量)
本次取餐重量 = max(0, 起始重量 - 当前重量)
每100g营养 = max(0, 每克营养) × 100
Task 2:增加服务端累计取用预留字段
- 在
GetStaffNutritionDetails 新增 currentDishTableCumulativeWeight,默认 0f,暂不添加 SerializedName。
- 增加默认值测试;后续服务端字段确定时只补注解。
Task 3:建立视觉资源与公共标签组件
- 颜色、尺寸、单位和提示文案统一使用
chongqing_huanwei_ 前缀资源。
- 疾病标签名称使用接口值;
green/red/yellow 映射推荐绿、慎用红、适量黄;未知颜色使用中性青色。
- 共享 Binder 统一绑定菜名、每 100g 单价和最多四个疾病标签。
- Logo 等比例缩小到 240px 高并放入
drawable-nodpi,保留旧通知栏图标。
Task 4:实现打餐前新页面
- 独立布局展示菜名、标签、单价、每 100g 能量和三大营养素。
- 复用 MMKV 中现有每克营养缓存,不改变菜品接口。
- 保留旧页面的小波动过滤、告警间隔、防逃单优先和 WarnPop 防重复规则。
- 监听菜品更新并正确处理 EventBus 生命周期。
Task 5:实现打餐时新页面
- 左侧展示菜品、营养、建议取用 0g;右侧展示人员、重量、消费和余额。
- 解析服务端累计消费、余额、累计热量和累计取用初始值。
- 实时重量变化统一刷新本次/累计重量、本次/累计消费、余额和营养。
- 保留忽略前三包、波动过滤、未绑盘提示和资源释放规则。
- 暴露纯数字本次重量 TextView,供原上传链路读取。
Task 6:接入 Logo 与余额模式路由
- 公共 Logo 保持 60dp 高,宽度自适应,ID 与点击监听不变。
- 模式 1使用重庆环卫新页面;模式 2、模式 3使用原页面。
- 扫码结束的 Fragment 类型判断加入新打餐时 Fragment,确保真实取餐重量进入原上传链路。
- 为
HomeDisplayMode 增加 getValue(),不在 Activity 中硬编码模式数字。
Task 7:验证与记录
- 运行重庆环卫目标测试、完整 Debug 单元测试、Debug 构建和
git diff --check。
- 确认旧 Fragment 无 diff,新布局没有重复单位和直接颜色字面量。
- 真机核验三种模式、Logo、0/1/4 标签、累计公式、星币单位和上传重量。
- 在提示词工程创建同名 Markdown + HTML 变更记录并更新 CHANGELOG。
- 不执行 Git 暂存、提交、推送或分支切换。