Commit Graph
76 Commits
Author SHA1 Message Date
lvmeng c76164fa66 feat(inbound): 添加规格下拉选择功能
- 新增 SpecOption 数据模型定义
- 在 GlobalData 中添加 specOptionList 全局变量
- 实现 InboundApiService 中的 getSpecOptions 接口
- 添加 InboundRepository 中的 getSpecOptions 方法
- 在 StoreViewModel 中添加 specOptions 相关状态管理
- 在 StoreActivity 预加载规格选项数据
- 将入库规格字段从文本框改为下拉选择框
- 修复代码中的空字符串初始化问题
2026-06-08 14:38:03 +08:00
mazengfei 74fcd65f1b fix(inbound): 修正入库时间处理逻辑并添加保质期时间戳
- 提取入库时间变量避免重复计算
- 为保质期字段添加时间部分,格式化为日期+时间
- 确保时间格式与系统ISO标准保持一致
- 优化参数传递过程中的数据处理流程
2026-06-04 18:09:54 +08:00
mazengfei 0dfe84898b chore(app): 更新应用名称
- 将应用名称从"入库客户端"更改为"入库新"
2026-06-04 11:20:26 +08:00
mazengfei 5284cebf5e 修改包名 2026-06-03 18:09:59 +08:00
lvmeng 15e1f87913 refactor(network): 重构网络请求配置以支持动态环境切换
- 将布局文件中的 Button 替换为 AppCompatButton 组件
- 更新环境切换对话框中的 URL 映射关系
- 添加 LOCAL_BASE_URL 和修改 TEST_BASE_URL 的常量定义
- 启用并实现环境切换功能的时间点击事件处理
- 在 API 接口定义中使用 @Url 注解实现动态 URL 设置
- 创建 DynamicBaseUrlInterceptor 拦截器实现实时域名替换
- 更新依赖注入模块以使用新的拦截器和全局基础 URL
- 修改仓库层调用以使用具名参数传递
2026-06-03 16:48:50 +08:00
lvmeng ee84189fdf refactor(form): 重构表单字段模型和映射逻辑
- 移除 FormField 中的 submitValueId 和 valueId 字段
- 在 DictType 中添加操作符函数支持字段名取值
- 简化下拉框选择时的 extraValues 映射逻辑
- 更新日期选择器只保存显示格式值
- 调整表单提交时的参数构建逻辑
- 为入库时间和操作时间字段移除 ISO 格式提交配置
- 添加 materId 参数到入库提交数据中
2026-06-02 17:17:06 +08:00
lvmeng 285238ed9c fix(inbound): 修复入库商品存储对话框返回逻辑
- 移除商品为空时自动关闭活动页面的逻辑
- 防止在对话框取消时意外结束父页面
- 确保页面导航的一致性体验
2026-05-27 15:32:37 +08:00
lvmeng aa24059caa feat(inbound): 新增入库秤毛菜/净菜入库功能完整实现
- StoreActivity 进入时统一弹出 InboundGoodsSearchDialog,关闭后退出页面
- InboundGoodsStoreDialog 支持 goods 可空,适配无溯源码直接入库场景
- FormField 新增 extraApiKeys/extraValues 支持下拉多字段提交(供应商id+type、区域id+name)
- DictType 新增 type 字段,供应商选项携带类型信息
- FormFieldAdapter 下拉选中时按 extraApiKeys 映射写入 extraValues
- InboundApiService 使用 @JvmSuppressWildcards 修复 Retrofit Map 泛型通配符异常
- BaseActivity 改为继承 AppCompatActivity,主题切换为 MaterialComponents
- 日期格式统一为 yyyy-MM-dd HH:mm:ss(去除 ISO 8601 的 T 分隔符)
- 搜索列表选中逻辑修复,改用 notifyDataSetChanged 触发刷新
2026-05-27 15:24:37 +08:00
lvmeng e63078dfd0 fix(inbound): 修复API响应码类型不匹配问题
- 将InboundApiResponse中的code字段从Int类型改为String?类型
- 更新isSuccess方法判断逻辑,由code == 200改为code == "00000"
- 修改错误处理中返回的响应码格式,统一使用字符串"-1"
2026-05-27 09:23:07 +08:00
lvmeng 8b0f850d27 feat(activity): StoreActivity 进入时直接弹出入库弹窗,关闭后退出页面
- InboundGoodsStoreDialog.goods 改为可空类型,支持毛菜无需预搜索直接录入
- StoreActivity 根据 storeType 自动弹出对应弹窗(毛菜→录入弹窗,净菜→检索弹窗)
- GoodsListActivity.recognizeFood 标记为 open,StoreActivity override 为空以关闭识别
- 修复相机预览被 cvImageBg 白色遮罩遮挡的问题
2026-05-27 09:21:39 +08:00
lvmeng 080f505c5d refactor(inbound): 将净材相关功能调整为净菜入库功能
- 将界面中的"净材"文本全部替换为"净菜"
- 更新按钮ID命名从btnOrderPurchase改为btnCleanDishStore
- 更新毛菜按钮ID从btnOrderSelfProcurement改为btnRawDishStore
- 修改入库弹窗类注释说明,将净材改为净菜
- 更新storeType参数说明,将净材改为净菜
- 重构动态表单字段配置,统一字段提示文本为"请输入/请选择"格式
- 将净菜类型字段设置为固定类型并添加规格下拉选项
- 更新RecyclerView设置方式,优化代码结构
- 调整标题显示逻辑,根据入库类型动态显示净菜或毛菜入库
- 优化相机预览布局,隐藏图片背景视图
- 更新StoreActivity中关于净菜类型的注释说明
2026-05-27 09:08:18 +08:00
lvmeng 37289d43f3 fix(ui): 将表单布局从 FlexboxLayoutManager 改为 GridLayoutManager 两列,溯源码改为必填 2026-05-26 21:34:38 +08:00
lvmengandClaude Sonnet 4.6 fabc4d780a feat(inbound): 新增入库秤毛菜/净材入库功能
- 新增入库专用网络层(InboundApiService、InboundRepository、InboundNetworkModule、InboundInterceptor)
- 新增入库相关数据模型(IngredientByTrace、SupplierOption、ZoneOption、GoodsSearchModel、CleanInboundParam、RawInboundParam、InboundApiResponse)
- 新增 FormField 动态表单模型(FieldType 枚举、apiKey 字段映射、submitValueId 控制提交值)
- 新增 FormFieldAdapter,基于 FlexboxLayoutManager 实现两列自动换行表单,支持五种字段类型
- 新增 InboundGoodsSearchDialog(溯源码检索食材)和 InboundGoodsStoreDialog(入库录入,表单转 Map 提交)
- 新增 StoreViewModel,提交接口入参改为 Map<String, Any>
- 重构 StoreActivity:注入 StoreViewModel,onResume 预加载供应商/区域列表到 GlobalData
- 修改 GoodsListActivity:抽取 onGoodsSearchRequested() 供子类重写
- 修改 GoodsRecognizeDialog:StoreActivity 场景下打开 InboundGoodsStoreDialog
- GlobalData 新增 inboundSupplierList / inboundZoneList 全局缓存
- build.gradle.kts 新增 flexbox:3.0.0 依赖

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-26 21:18:09 +08:00
lvmengandClaude Sonnet 4.6 ac9494a0f3 feat: 新增首页净材/毛菜入口按钮及StoreActivity称重识别页面
- 首页新增净材、毛菜两个渐变色按钮(蓝/橙),隐藏原ImageView入口
- 新增StoreActivity,继承GoodsListActivity,复用秤监听、相机、识别弹窗能力
- GoodsListActivity.replaceIncludeContent()新增else分支,非采购/自采页面隐藏flContainer
- BaseDialog设备列表提取为常量,优化小屏幕判断逻辑
- 更新本地测试环境地址及环境切换弹窗文案

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-26 18:54:30 +08:00
lvmeng fa58304ca1 refactor(network): 移除设备认证和登录相关API接口
- 注释掉设备获取token的API接口和服务端点
- 移除设备信息查询相关的API接口和服务端点
- 删除登录功能的API接口和服务端点
- 移除部分收货功能的API接口和服务端点
- 注释掉添加物品采购单位的API接口和服务端点
- 相应移除ViewModel中的设备认证和登录逻辑
- 删除Repository中对应的网络请求方法
2026-05-26 14:10:00 +08:00
mazengfei 1092a7c43d 接口报错显示具体信息 2026-05-25 10:33:33 +08:00
mazengfei 0c0aba2aeb 接口报错显示具体信息 2026-05-20 14:21:03 +08:00
mazengfei e81df4f55c 优化 2026-05-13 09:55:11 +08:00
lvmeng 07e0a1996f 入库单数据提交入库新增采购单号字段purCode 2026-05-11 18:20:35 +08:00
lvmeng 79f58a36e3 fix(activity): 修复拿走物品后识别弹窗未自动关闭的问题
- 将关闭阈值从 weight < 10 调整为 weight < 20,覆盖轻微零点漂移
- 将 size == 1 判断改为 none { isShowing && it != goodsRecognizeDialog },避免 DialogManager 中存在幽灵条目时导致关闭逻辑失效
- GoodsStoreDialog:无论 funcType 值,均拍照上传图片以增加样本数据
- BaseViewModel:recognizeGoodsList 增加异常捕获,异常时回调空列表
2026-05-09 15:44:05 +08:00
lvmeng 7c5278bc88 Merge remote-tracking branch 'origin/main_lvmeng_0131' into main_lvmeng_0131
# Conflicts:
#	app/src/main/assets/best_embedding_model_mobile.pt
#	app/src/main/assets/data/class_info.json
#	app/src/main/assets/data/embeddings.json
#	app/src/main/assets/data/labels.json
2026-04-28 15:42:47 +08:00
lvmeng c995daf48d 优化已采集页面数据统计、更新初始化页面加载动画资源、替换新识别模型 2026-04-28 15:29:53 +08:00
mazengfeiandClaude Sonnet 4.6 d95a00b8a9 feat(global): 更新UAT端口并在切换环境时自动重置本地数据库及识别模型
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-22 16:03:45 +08:00
mazengfei 13f893cd0c 生产域名配置 2026-03-31 19:46:39 +08:00
lvmengandClaude Sonnet 4.6 8eae8c2b3c feat(global): 新增多环境切换弹窗及启动时自动读取已保存环境配置
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-31 09:25:16 +08:00
lvmeng 532f840a78 feat(model): 添加移动端嵌入模型文件
- 新增 best_embedding_model_mobile.pt 模型文件
- 该模型用于移动端设备的嵌入计算功能
- 文件大小约为 431 行二进制数据
2026-03-26 09:15:09 +08:00
mazengfei 21b9b03014 测试配置 2026-03-23 10:20:17 +08:00
mazengfei 4047cd67d8 Merge remote-tracking branch 'origin/main_lvmeng_0131' into main_lvmeng_0131 2026-03-23 10:12:23 +08:00
mazengfei 441d40b584 增加异常日志记录,接口报错提示,app启动时有网络不再进行倒计时处理 2026-03-23 10:12:11 +08:00
lvmeng 915e20cd23 Merge remote-tracking branch 'origin/main_lvmeng_0131' into main_lvmeng_0131 2026-03-20 15:58:40 +08:00
lvmeng d0fa46a8c8 增加测试环境配置 2026-03-20 15:58:30 +08:00
mazengfei 8a83de3238 优化 2026-03-16 10:33:09 +08:00
lvmeng 4b241ba81b feat(activity): 新增 InitActivity 初始化页面,实现网络检测和倒计时功能 2026-03-13 17:36:46 +08:00
lvmeng 75306af483 fix: 修正 Toast 扩展方法导入和更新下载地址
- 恢复 ToastUtils.kt 为原始注释状态(Compose 版本)
- 修正 FunActivity 导入,使用 Common.kt 中已定义的 Context.toast 扩展方法
- 更新下载地址为真实的资源包地址
2026-03-13 14:16:16 +08:00
lvmeng c697b4aa65 feat(activity): 添加 Zip 文件下载解压工具和趣味页面
- 新增 ZipDownloadUtils:支持大文件下载、进度回调、断点续传
- 新增 ZipExtractUtils:支持 Zip 文件解压、进度回调、自动创建目录
- 新增 ModelResourceManager:高层资源管理器,协调下载和解压流程
- 新增 FunActivity:趣味测试页面,包含 3 个按钮
  - 按钮 1:下载 Zip 文件
  - 按钮 2:解压 Zip 文件
  - 按钮 3:读取 JSON 并保存到 ObjectBox 数据库
- 新增 activity_fun.xml:趣味页面布局
- 新增 ZipToolsUsageExample:工具使用示例文档
- 改进 ToastUtils:改为 Context 扩展方法 (toast/toastLong)
- 暂时注释 HomeActivity 中 tvTime 的点击事件
2026-03-13 11:27:53 +08:00
lvmeng baee019444 ObjectBox数据库操作增加线程资源清理 2026-03-12 17:25:23 +08:00
lvmeng e50d6ceb60 入库列表页增加采集入库,方法采集完成直接入库和验证识别效果 2026-03-12 14:39:41 +08:00
lvmengandClaude Sonnet 4.6 7563209cf1 refactor(activity): 优化 FoodCollectionActivity 性能与稳定性
- 修复 runBlocking 阻塞主线程,改为 lifecycleScope.launch 协程异步执行
- 耗时操作(I/O、图像裁剪、TFLite 推理、ObjectBox 读写)全部切换至 Dispatchers.IO
- 修复 bitmap 内存泄漏:用 try/finally 保证所有退出路径均回收
- 修复 uriToBitmap 返回 null 时 loading 转圈永不消失的 Bug
- 修复 DbException 块、index==-1 分支缺少 hideWaitingDialog() 的 Bug
- 移除重复 ReceiptViewModel,统一使用单例;移除空 initBox() 函数
- 新增 searchJob 取消上一次未完成搜索,修复 clearData() 遗漏取消的 Bug
- 提取 createWaitingDialog() 消除 dialog 创建代码重复
- 修复 clearCoilCache() 使用新实例无法清缓存,改用 context.imageLoader 单例
- upload() 两处强制解包 !! 改为安全调用,避免 NPE 崩溃
- 清理无用注释、废弃代码块、冗余注解及无用 import

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-11 18:04:21 +08:00
mazengfei 05015a7a18 优化采购的数据的重量清除问题 2026-03-10 17:24:25 +08:00
lvmeng 1cc2358d72 优化向量查询,替换新模型 2026-03-10 13:33:31 +08:00
lvmeng 1206ecd575 优化向量查询结果数据 2026-03-10 13:00:45 +08:00
lvmeng f53669d048 优化统计 2026-03-10 11:24:39 +08:00
lvmeng 244013f99f 填充采购单数据并对优化显示格式 2026-03-09 10:16:21 +08:00
lvmengandClaude Sonnet 4.6 a14c2c3348 refactor(utils): 移除 onSuccess 冗余回调并优化 ObjectBox 数据库操作
- PhotoCaptureHelper: 删除构造参数 onSuccess,成功回调统一由 callbackList 分发
- CameraUtils: 同步移除 initCaptureHelper 中的 onSuccess = {} 空参数
- ObjectBox: 使用 QueryBuilder 替代全量内存过滤(count/filter/remove),提升查询性能
- ObjectBox: 修复 isStorageAvailable 错误检查外部存储状态,改为仅检查内部存储
- ObjectBox: boxStore 添加 @Volatile 注解保证多线程可见性
- ObjectBox: copyAndGzipDatabaseFileTo 增加 IOException 捕获,避免文件异常崩溃
- ObjectBox: safeDbOp 中使用安全调用替代 !! 断言,避免 NPE

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-06 16:52:19 +08:00
lvmengandClaude Sonnet 4.6 26d9eabc5f feat(activity): 优化图片加载为协程并新增大图左右切换功能
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-06 14:41:39 +08:00
lvmengandClaude Sonnet 4.6 301b91581b feat(activity): 新增本地图片预览功能及大图查看入口
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-06 14:22:38 +08:00
lvmengandClaude Sonnet 4.6 8a6a6dfa2d chore(assets): 替换嵌入模型及更新对应数据文件
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-06 09:58:10 +08:00
lvmengandClaude Sonnet 4.6 2c3ebd86f9 refactor: 注释移除 Compose 相关代码,统一入口替换为 HomeActivity
- 注释掉全部 Compose UI 代码(ui/、theme/、NavController、MainActivity、InitActivity 等)
- BorderExt、TextExt、ToastUtils、LoadingState 中的 Compose 逻辑全部注释
- LoadingState 保留 show()/hide() 空方法避免编译报错
- 注释 SensorScaleUtils、BaseViewModel、DeviceViewModel 中的 ToastUtils 调用
- BootReceiver、CrashHandler 中 MainActivity 替换为 HomeActivity
- UserViewModel、PurchaseOrderActivity 删除残余 Compose import
- build.gradle.kts 替换为非 Compose 的 activity-ktx 和 coil 依赖

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-06 09:28:55 +08:00
lvmengandClaude Sonnet 4.6 b6c7570efd feat(activity): 新增 BaseActivity 沉浸式基类和 HomeActivity 首页,统一 Activity 继承关系
- 新增 BaseActivity:继承 ComponentActivity,隐藏状态栏和导航栏,底部上滑可临时唤出导航栏
- 新增 HomeActivity(XML 版本)及对应布局 activity_home.xml,作为应用启动入口
- GoodsListActivity、FoodCollectionActivity、LocalImagePreviewActivity、PurchaseOrderActivity 统一改为继承 BaseActivity
- 更新 AndroidManifest.xml:HomeActivity 注册为启动入口

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-05 18:54:01 +08:00
lvmeng d50b11c9aa 采购单入库商品默认显示采购单信息;采集数据显示优化 2026-03-05 16:26:38 +08:00