 lvmengandClaude Sonnet 4.6
|
f3d57177b8
|
feat(activity): 制作/提交按钮增加二次确认弹窗,调整弹窗标题颜色及列表项背景属性
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
2026-04-23 17:41:26 +08:00 |
|
 lvmengandClaude Sonnet 4.6
|
267628411a
|
fix(viewmodel): 修复切换 tab 返回后数据消失及 loading 不消失的问题
切换 tab 时重置对方的 StateFlow 状态为初始值,避免 repeatOnLifecycle
重启后 replay 残留状态导致 UI 异常覆盖或 loading 无法关闭
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
2026-04-23 17:41:12 +08:00 |
|
lvmeng
|
58fb78c7bd
|
feat(activity): 新增已采集食材列表页,支持搜索、删除及空视图展示
|
2026-04-23 16:51:57 +08:00 |
|
lvmeng
|
9f0671410f
|
feat(ui): 将采集页红色主题图标统一替换为绿色
|
2026-04-23 14:39:49 +08:00 |
|
 lvmengandClaude Sonnet 4.6
|
0243fe0dc8
|
refactor(viewmodel): 将回调方式统一改为 StateFlow + UiState,消除竞态问题
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
2026-04-23 14:01:24 +08:00 |
|
 lvmengandClaude Sonnet 4.6
|
df0580d68f
|
refactor(viewmodel): 统一 DbViewModel 初始化并拆分 DAO 结构
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
2026-04-23 11:58:14 +08:00 |
|
 lvmengandClaude Sonnet 4.6
|
deab289747
|
refactor(rename): 将 AppRepository 重命名为 DbRepository,AppViewModel 重命名为 DbViewModel
- DatabaseRepository.kt → DbRepository.kt,类名 AppRepository → DbRepository
- AppViewModel.kt → DbViewModel.kt,类名 AppViewModel → DbViewModel
- VMFactory 构造参数与创建类型同步更新
- 所有引用文件(UI 层、Fragment、ViewModel 工厂)批量更新 import 与使用处
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
2026-04-23 11:06:59 +08:00 |
|
lvmeng
|
debc7a0740
|
refactor(viewmodel): 封装调料槽位读写至 AppViewModel,消除页面直接调用 DAO 的情况
|
2026-04-23 10:54:59 +08:00 |
|
lvmeng
|
441cffe4da
|
fix(submit): 移除调料数据为空的检查限制
- 注释掉调味料数据为空时的验证逻辑
- 允许在没有调料信息的情况下继续提交流程
- 保持原有的数据转换和追加功能不变
|
2026-04-23 10:31:02 +08:00 |
|
lvmeng
|
3581975ab0
|
refactor(viewmodel): 新增 seasoningSlotState 替代 loadSeasoning,将 getSamplingList 迁移至 StateFlow
|
2026-04-23 10:29:17 +08:00 |
|
lvmeng
|
9e99e6ef6d
|
refactor(viewmodel): 将 searchFoodList/getCookFoodList 迁移至 StateFlow,DishListFragment 改用 combine 并行合并数据并修复分页本地数据混入问题
|
2026-04-23 09:54:34 +08:00 |
|
 lvmengandClaude Sonnet 4.6
|
16fe64e9fe
|
refactor(viewmodel): 修复 loadSeasoning 防重入缺陷并移除 BaseActivity 网络包装方法
- AppViewModel.loadSeasoning 用 Mutex 替换 isProcessing 标志位,避免异常时状态永久锁死
- 删除 BaseActivity 中 queryGoodsList / querySeasoningList 包装方法,减少隐式依赖
- FoodSearchDialog / SeasoningSearchDialog 改为直接调用 activity.netViewModel.xxx()
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
2026-04-23 08:56:13 +08:00 |
|
 lvmengandClaude Sonnet 4.6
|
75830b9204
|
refactor(network): 引入 RemoteRepository 隔离网络层,AppRepository 支持调料槽位查询
- 新增 RemoteRepository,将 NetViewModel 中直接调用 apiService 的逻辑下沉至仓库层
- NetViewModel 改为依赖注入 RemoteRepository,不再直接接触 apiService
- AppRepository 构造函数增加 SeasoningSlotDao 参数,新增 hasSeasoningSlotConfig() 方法
- AppViewModel 新增 hasSeasoningSlotConfig() 方法,明确区分"调料数据"与"槽位配置"语义
- 同步更新 6 个 Activity 的 AppFactory 构造调用,传入 seasoningSlotDao
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
2026-04-22 18:31:38 +08:00 |
|
lvmeng
|
0498501b33
|
style(ui): 统一界面组件样式并优化设置页面交互
- 为所有列表项和设置面板应用统一的白色圆角背景样式
- 为可点击区域添加波纹效果提升用户体验
- 修复布局文件中ID命名不规范的问题
- 在设置页面添加右上角功能按钮并实现跳转逻辑
- 导入页面跳转扩展函数支持快速导航到主秤配置页面
- 优化布局参数确保界面元素正确显示和交互响应
|
2026-04-22 17:35:26 +08:00 |
|
lvmeng
|
8c709a3f5f
|
fix(fragment): 修复 CollectFragment 首次打开相机预览不显示的问题
|
2026-04-22 17:09:33 +08:00 |
|
lvmeng
|
9ba6443f4f
|
refactor(setting): 重构设置页面界面和功能结构
- 将底部导航菜单替换为三个独立的功能卡片布局
- 添加餐品模式、调料区设置和食材采样功能入口
- 移除原有的Fragment容器和标签页切换逻辑
- 更新CollectFragment以使用新的SingleFragmentActivity架构
- 修改相机权限检查逻辑并添加权限拒绝提示对话框
- 简化DeviceConfigFragment和SeasoningConfigFragment的依赖导入
- 在设置页面添加当前模式显示和跳转功能
- 重构调料配置页面的日志记录和高亮逻辑
|
2026-04-22 14:55:09 +08:00 |
|
lvmeng
|
04e4efe1fc
|
feat(activity): 新增 SingleFragmentActivity 通用 Fragment 容器页
|
2026-04-22 13:39:52 +08:00 |
|
 lvmengandClaude Sonnet 4.6
|
bce9675b0f
|
feat(activity): SubmitFoodActivity 支持制作中菜品调料历史数据加载与新增叠加
- SeasoningWeightAdapter 改继承 BaseQuickAdapter
- item_seasoning_weight 左右间距改为 32dp
- isCooking=true 时从数据库查询 goodsList 并预填充调料历史数据
- refreshAdapterByName 叠加历史用量,修复新增用量覆盖历史数据问题
- 返回键拦截,弹窗提示保存数据
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
2026-04-22 11:47:13 +08:00 |
|
lvmeng
|
f25108360b
|
feat(ui): CommonDialog 支持垂直3按钮布局(iOS风格)
|
2026-04-22 11:39:37 +08:00 |
|
lvmeng
|
4ec02ac2bc
|
feat(MasterScaleActivity): 添加秤名称显示功能
- 在UI界面上增加tvName文本视图用于显示秤的名称
- 当秤名称不为空时显示实际名称,否则显示默认值"-"
- 优化了秤信息展示的完整性,补充了名称字段的显示逻辑
|
2026-04-22 09:34:04 +08:00 |
|
lvmeng
|
97b357850c
|
refactor(layout): 优化布局尺寸计算逻辑并提取公共工具类
- 添加 SizeTool 工具类统一管理 Flexbox 布局尺寸计算
- 在 MasterScaleActivity 中使用 SizeTool 替代硬编码计算
- 在 SeasoningConfigFragment 中使用 SizeTool 重构尺寸计算
- 在 SlaveActivity 中应用统一的尺寸计算方法
- 更新 Seasoning18GridAdapter 和 Seasoning22GridAdapter 使用现代化布局参数设置
- 调整 fragment_seasoning_config.xml 中的边距和内边距数值
- 为布局文件添加 tools:itemCount 属性支持预览功能
|
2026-04-22 09:28:07 +08:00 |
|
 lvmengandClaude Sonnet 4.6
|
b6b5088107
|
feat(ui): 新增油盆配置区,子设备1调料名改为动态配置
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
2026-04-21 18:18:22 +08:00 |
|
lvmeng
|
bbdebc0c9c
|
feat(activity): 新增同名调料用量聚合合并展示逻辑
- SubmitFoodActivity 新增 rawWeightMap 记录各秤槽位原始用量
- 每次秤数据更新后按 goodsName 聚合求和,同名调料只展示一条
- SeasoningWeightAdapter 改为按 goodsName 作为唯一标识匹配更新/移除
- SlaveActivity 简化高亮触发条件判断
|
2026-04-21 17:50:02 +08:00 |
|
lvmeng
|
0a90a8b368
|
feat(activity): 重构 SubmitFoodActivity 调料展示,改用子设备实时秤数据
|
2026-04-21 17:08:34 +08:00 |
|
lvmeng
|
07eb626e12
|
feat(layout): 更新秤数据列表项布局样式
- 将布局高度从120dp增加到340dp
- 调整布局方向为垂直排列并居中对齐
- 添加商品名称显示文本框
- 调整字体大小和颜色配置
- 修改权重布局为包裹内容模式
- 更新内边距设置以优化显示效果
|
2026-04-21 16:57:55 +08:00 |
|
lvmeng
|
736e4820dd
|
fix(fragment): 修复 triggerHighlight 因设备判断用 != 导致主设备秤误触发调料格子高亮
|
2026-04-21 16:52:23 +08:00 |
|
 lvmengandClaude Sonnet 4.6
|
3fc54d5f52
|
refactor(ui): 重构 Scale2VH 使用 XML 布局,优化秤总览界面样式
- list_type_scale2.xml 替换动态格子为 include list_item_scale22_row,Scale2VH 删除 makeScaleCell/updateScaleCell/makeCellText
- list_type_scale1.xml 布局调整为垂直居中,新增 tvName 展示调料名称
- list_type_scale18/22.xml 移除分割线
- SeasoningSelectDialog 搜索列表改为3列,扩充模拟调料数据
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
2026-04-21 15:54:04 +08:00 |
|
 lvmengandClaude Sonnet 4.6
|
b16d7d19cd
|
feat(scale): 实现调料槽位配置持久化及主从设备数据同步
- 新增 SeasoningSlotEntity / SeasoningSlotDao,独立存储格子调料配置
- AppDatabase 升级至版本 8,添加 MIGRATION_7_8
- ScaleEvent 新增 TYPE_SEASONING_CONFIG 和 SlotConfig,用于主从同步
- SeasoningConfigFragment 选择调料后写 Room 并通过 wsClient 推送给子设备
- ScaleWebSocketClient 新增 sendToAllSlaves / sendToDevice / onDeviceConnected
- ScaleWebSocketServer 扩展 onMessage 支持接收主设备下发的配置事件
- ScaleServiceManager 暴露 sendSeasoningConfig / onSeasoningConfig;子设备连接时自动推送全量配置
- MasterScaleActivity 启动时从 Room 加载 slotNameMap,注入 ScaleData.name 展示调料名
- SlaveActivity 新增 slotNameMap 防止重量回调覆盖调料名;监听 onSeasoningConfig 写 Room 并刷新 adapter
- Adapter 新增 tvAddress 和 showAddress 参数,仅 MasterScaleActivity 显示秤地址行;tvName 空值统一显示"-"
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
2026-04-21 15:27:28 +08:00 |
|
 lvmengandClaude Sonnet 4.6
|
a81e914b63
|
refactor(adapter): 合并 Scale18/22GridAdapter 为 Seasoning18/22GridAdapter,统一支持调料配置和秤总览双模式
- ScaleData 新增可空 name 字段,用于承载调料名称
- Seasoning18/22GridAdapter 改用 ScaleData,新增 showNameOnly 参数区分页面模式
- showNameOnly=true(调料配置):仅显示名称,无名称显示"-"
- showNameOnly=false(秤总览):显示名称+重量+状态,无名称显示秤地址编号
- update() 恢复差量更新逻辑,避免 submitList 动画期间点击失效
- MasterScaleActivity、SlaveActivity 改用新 Adapter,删除旧 Scale18/22GridAdapter
- 删除 Scale22GridActivity 及其布局和 Manifest 注册
- list_item_scale22_row.xml 中 tvAddr 重命名为 tvName
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
2026-04-21 11:59:59 +08:00 |
|
lvmeng
|
ffdf364ee8
|
style(ui): 调料配置界面布局优化
- 添加了整体容器的圆角背景样式
- 新增了顶部标题区域,包含主标题和操作提示文字
- 统一调整了上下层调料区标题的文字大小为28sp
- 优化了RecyclerView的边距设置
- 改善了整体界面的视觉层次和用户体验
|
2026-04-21 10:51:34 +08:00 |
|
 lvmengandClaude Sonnet 4.6
|
6d3bb96d61
|
fix(activity): 修复 SlaveActivity 负值清零后误触发高亮的问题
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
2026-04-21 10:41:42 +08:00 |
|
 lvmengandClaude Sonnet 4.6
|
da712ed25a
|
fix(activity): 修复 FoodRecognizeActivity 称重更新导致 useWeight 异常的问题
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
2026-04-21 10:11:10 +08:00 |
|
lvmeng
|
6b312ec689
|
fix(prepareCook): 修复食材选择和数据处理逻辑
- 修复了食材选择回调中的变量命名问题,统一使用 entity 替代 item
- 改进了食材名称解析逻辑,正确提取 WP 标识符和食材名称
- 为食材 ID 提取添加了边界情况处理,避免数组越界异常
- 添加了调试日志以便追踪食材查询结果
- 优化了食材列表数据结构的构建过程
|
2026-04-21 09:46:15 +08:00 |
|
lvmeng
|
e175893790
|
refactor(FoodRecognizeActivity): 重构食材识别页面返回逻辑和数据传递机制
- 移除废弃的 Uri 导入并添加 Activity 兼容性支持
- 新增手动取消标识常量 IS_MANUAL_CANCEL 用于区分正常选择和手动取消
- 将启动方法参数 onResult 重命名为 finishCallback 并支持取消状态回调
- 使用 IntentCompat 替代已弃用的 getSerializableExtra 方法
- 在标题栏和返回键添加手动返回功能,统一处理页面关闭逻辑
- 修改 finishWithResult 方法支持传递取消状态,仅在非取消状态下传递选中数据
- 更新 PrepareCookActivity 中的重量阈值从 5 改为 15
- 重构识别控制变量,使用 showRecognizePage 和 manualCancelFlag 替代原有变量
- 调整页面生命周期中的识别启用逻辑,确保正确的状态管理
- 修改食材识别启动回调,集成手动取消状态处理机制
|
2026-04-21 09:29:26 +08:00 |
|
 lvmengandClaude Sonnet 4.6
|
82217b4fb1
|
feat(activity): 合并采集功能至 PrepareCookActivity 并优化识别页重量处理逻辑
- 将 DishSamplingActivity 逻辑合并至 PrepareCookActivity,根据 cookMode 区分采集/制作模式
- 布局替换:activity_prepare_cook 第一子 View 改为搜索栏(etInputDish + ivDishSearch),删除第二个子 LinearLayout
- InitActivity / HomeActivity / SamplingListActivity 改用 PrepareCookActivity 替代 DishSamplingActivity
- FoodRecognizeActivity 新增 selectedPosition 字段,避免通过 isClicked 线性查找索引
- 优化重量更新逻辑:重量增加立即同步,重量减少延迟 3 秒更新,防止关页前误覆盖用量
- foodSelectCallback 改为累加同 goodsId 的 useWeight,不再限制重复添加
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
2026-04-20 18:26:20 +08:00 |
|
 lvmengandClaude Sonnet 4.6
|
72ecc8fcd6
|
fix(scale): 修复 RS485 多联秤地址 ≥ 10 时清零命令发送到错误设备的问题
- 新增 FixedSensorScale 继承 SensorScale,通过反射重写 zeroTwo/tareTwo
- 修复根因:SDK 将 int 地址直接拼接为十进制字符串再按十六进制解析,
导致地址 10 发送字节 0x10(=16号秤)而非 0x0A(=10号秤)
- 修复方式:String.format("%02X", address) 确保正确的十六进制编码
- Weigher2 替换 mSensorScale 字段类型为 FixedSensorScale
- WeightUtil.tareTwo 移除 isTaring 防重复逻辑,简化为直接调用 zeroTwo
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
2026-04-20 14:58:27 +08:00 |
|
lvmeng
|
99d670390a
|
fix(scale): 解决称重设备清零功能问题
- 修复了ScaleServiceManager中的WeightUtil引用路径错误
- 添加了WebSocket服务器中设备ID验证失败的日志记录
- 修复了Weigher2中字符串比较的错误写法,使用equals方法替代==
- 更新了WeightUtil中清零操作的日志记录和异常处理机制
|
2026-04-20 10:01:05 +08:00 |
|
lvmeng
|
d3b69c4e46
|
fix(fragment): 修复 weightSnapshot key 因 Int 溢出导致主设备高亮失效的问题
将 snapshotKey 从 Int(address + hashCode*1000 易溢出)改为 String(deviceId#address),
避免不同设备的基准值互相覆盖,导致 delta 永远无法正确计算
|
2026-04-20 09:08:50 +08:00 |
|
lvmeng
|
193acff1e0
|
feat(activity): 为子设备 SlaveActivity 添加调料秤重量增加高亮提醒功能
检测本机秤稳定后重量增加超过10g,高亮对应格子(红底白字),15秒后自动恢复
|
2026-04-20 09:08:44 +08:00 |
|
lvmeng
|
87bf11454c
|
feat(fragment): 实现调料秤重量增加高亮提醒功能
主设备订阅 allScales StateFlow 检测所有子设备秤重量变化,
超过10g且秤稳定时高亮对应格子,15秒后自动恢复
|
2026-04-17 16:56:36 +08:00 |
|
 lvmengandClaude Sonnet 4.6
|
768bde79a1
|
feat(fragment): 新增调料选择弹窗并绑定格子点击交互
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
2026-04-17 15:43:11 +08:00 |
|
lvmeng
|
c61b1c8ef7
|
feat(seasoning): 添加调料配置网格适配器功能
- 创建调料配置格子布局文件,仅显示调料名称
- 实现调料配置下层18格网格适配器,使用GridLayoutManager排列
- 实现调料配置上层22格网格适配器,使用FlexboxLayoutManager排列
- 添加不同行列的边距控制和字体大小自适应
- 实现按预设顺序更新数据的功能,空位用哨兵填充
- 预留点击回调接口,暂不处理点击事件
|
2026-04-17 14:23:57 +08:00 |
|
lvmeng
|
77df4a4d82
|
refactor(ui): 移除设备配置页面并重构调料配置界面
- 移除 DeviceConfigActivity 页面及相关 AndroidManifest 注册
- 将调料配置从单页网格改为上下两层 RecyclerView 结构
- 上层使用 FlexboxLayoutManager 显示 22 格调料位
- 下层使用 GridLayoutManager 显示 18 格调料位
- 更新存储工具类 SpTool 中烹饪模式的访问方式
- 修改首页和初始化页面中烹饪模式的读取逻辑
- 更新 WebSocket 客户端连接逻辑中的重复连接处理
|
2026-04-17 14:23:44 +08:00 |
|
lvmeng
|
c35572dc41
|
feat(setting): 添加调料配置功能并优化界面布局
- 在设置页面添加调料配置按钮和设备切换功能
- 将设备配置页面标题从"设备配置"改为"设备切换"
- 新增SeasoningConfigFragment调料配置片段
- 将秤数据监控按钮可见性从gone改为visible
- 优化collectFragment布局加载方式
- 在DeviceConfigActivity中添加调试日志输出
- 重构SettingActivity中的按钮样式管理逻辑
- 调整fragment列表顺序和点击事件处理
- 修改列表项高度以改善界面显示效果
- 注释掉DeviceConfigFragment中未使用的viewModel相关代码
|
2026-04-17 11:45:08 +08:00 |
|
lvmeng
|
1ca25e6a1d
|
fix(ui): 修复菜品清空图标显示和日志记录问题
- 将菜品清空图标从tools:src改为android:src以确保正常显示
- 在点击清空图标时添加菜品数据的JSON日志输出便于调试
- 移除isOriginalData状态重置避免影响菜品原始数据标记
|
2026-04-17 09:00:42 +08:00 |
|
lvmeng
|
7373ccacbb
|
feat(activity): 新增食材识别页面,重构识别流程并优化多设备布局适配
|
2026-04-16 18:05:46 +08:00 |
|
lvmeng
|
ad63639f66
|
refactor(dialog): 重构 CommonDialog 为链式调用 API,内置 title/content,全量替换旧调用方
|
2026-04-16 15:02:33 +08:00 |
|
lvmeng
|
c3f3b1215b
|
refactor(scale): 提取 Scale22/18GridAdapter 到 adapter 包,SlaveActivity 复用网格布局
|
2026-04-16 14:26:34 +08:00 |
|
lvmeng
|
cba5bda757
|
fix(scale): 子设备断线时从聚合器移除数据,修复列表不消失的问题
- ScaleWebSocketClient 新增 onDeviceDisconnected 回调,在 onFailure/onClosed 时触发
- ScaleServiceManager 绑定回调,断线时调用 aggregator.removeDevice() 清除缓存
- 重连成功后数据重新推送,UI 列表自动恢复
|
2026-04-16 13:52:11 +08:00 |
|
lvmeng
|
7fd2f02b87
|
feat(activity): 为 MasterScaleActivity 各秤格子新增清零点击事件,修复高频数据更新导致点击失效的问题
|
2026-04-16 13:45:39 +08:00 |
|