Files
aerologic-app/CHANGELOG.md
YANG JIANKUAN a33776d959 feat: 完成进港查询与进港移库页面5.5寸手机端适配(设计稿11页全部完成)
进港查询(10,06出港查询的进港镜像):
- IntImpQueryActivity 手机布局:搜索行 + 三格统计(总票数/已入库/已出库客户端计数)
  + 状态标签卡片(dlvTime/inDate 前端推断)+ 筛选弹层9项(入参全部经api-doc核对存在)
- 详情页与运单追踪复用08/06已适配页零新增;平板侧滑筛选面板判空守卫,Pad端零变化
- 修复代理人空值兜底:转换器将JSON null归一为空串致DataBinding `??` 失效,
  改用Bean计算属性 agentDisplay(06出港查询同步修正)

进港移库(11,首个后端整模块缺失的设计稿页):
- 全新手机专属3页:列表(双Tab+角标/筛选4项/多选批量移库/卡片长按拍照浮层)
  + 运单详情(三卡片,Intent传bean零请求)+ 拍照上传(复用ImageSelectNewViewHolder,
  pic/originalPic/picNumber三字段规范)
- 后端无IntImpMove模块(api-doc核对),按IntExpMove同名约定预接四接口
  + 预定义权限串AppIntImpMove,后端交付后前端零改动生效(缺口#31)

其他:手机首页国际Tab新增进港查询/进港移库入口;新增资源bg_phone_btn_green/
bg_phone_card_header_orange/bg_phone_photo_add/phone_amber;问题清单登记#30~#31;
双端模拟器验证零崩溃(手机Map Local mock全交互链路,平板回归零变化)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-31 22:35:56 +08:00

28 KiB
Raw Blame History

版本变更日志 (Changelog)

本文档记录 AirLogistics 项目的所有重要变更。

格式基于 Keep a Changelog, 版本号遵循 语义化版本

[Unreleased]

新增 (Added)

  • 「进港查询」5.5 寸手机端适配(设计稿 10_进港查询06 出港查询的进港镜像;详情页与运单追踪 复用 08/06 已适配页零新增):列表 IntImpQueryActivitymodule_gjj首页菜单实际跳转页 旧版 GjjQueryListActivity 路由已注释弃用)手机布局 = PhoneSearchBar运单号+扫码+筛选)+ 三格统计(总票数/已入库/已出库,已入库/已出库为已加载数据客户端计数,pageQueryTotal 无分项 出参,缺口 #30+ 状态标签卡片(前端推断:dlvTime 非空=已出库绿 / inDate 非空=已入库橙 / 兜底未入库灰)+ 卡片字段件数(inPc)/重量(inWeight)/代理人/特码;筛选弹层 9 项 (航班日期起止/航班号/代理/特码/始发站/运单类型/业务类型/品名中,全部经 api-doc 核对为 pageQuery 真实入参无缺口平板侧滑筛选面板代码判空守卫Pad 端行为零变化
  • 「进港移库」5.5 寸手机端全新页面(设计稿 11_进港移库首个后端整模块缺失的适配页 api-doc 确认无 IntImpMove 模块、权限体系无对应 key缺口 #31 IntImpMoveActivity(待移库/已移库 Tab + 角标、搜索/扫码、筛选弹层 4 项(航班日期/航班号/ 特码/运单类型)、多选 + 全选 + 批量移库ConfirmDialogModel 确认)、卡片长按浮层「拍照」)+ IntImpMoveDetailActivity(运单详情三卡片:蓝头基本信息/绿头移库信息(仅已移库)/橙头异常照片, Intent 传 bean 零请求)+ IntImpMovePhotoActivity(拍照上传:图片网格复用 module_base ImageSelectNewViewHolder,提交走 pic/originalPic/picNumber 三字段规范); 接口按 IntExpMove 同名约定预接四个pageQuery/pageQueryTotal/move/uploadPic权限串 AppIntImpMove 预定义后端交付后前端零改动生效权限串下发前手机首页无入口debug 直启验证)
  • 新增 IntImpMoveBean(镜像 GjcMove + 航班/照片字段 + isMoved/flightInfo/orDash 计算属性); IntImpQueryBean 新增 isQueryOutbound/isQueryStored/orDash/agentDisplay 计算属性; 手机首页「国际」Tab 增加「进港查询」(图标 gjj_query_icon与「进港移库」图标复用 gjc_yi_ku_icon入口
  • 新增手机版资源:bg_phone_btn_green(绿色主按钮)、bg_phone_card_header_orange(橙色详情卡 表头)、bg_phone_photo_add(虚线加号槽位)、色值 phone_amber

修复 (Fixed)

  • 出港查询/进港查询卡片「代理人」空值兜底失效:转换器把 JSON null 归一成空串DataBinding ?? 只判 null 不判空串导致 agentCode 回退永不生效;改用 Bean 计算属性 agentDisplay isNullOrEmpty 双兜底),已同步修正 06 出港查询(item_gjc_query.xml

验证 (Verified)

  • 进港查询手机端Map Local mock 验证三格统计计数、三种状态标签、空值 "--" 兜底、筛选弹层 9 项收缩滚动;平板端回归横排搜索条/侧滑筛选面板/底部统计栏零变化;全程崩溃数 0

  • 进港移库手机端Map Local mock 验证双 Tab 角标、双形态卡片、单选/全选联动计数、空选拦截、 移库确认弹框、长按拍照浮层、运单详情、拍照上传页;全程崩溃数 0后端模块缺失接口联调待 后端交付,见问题清单 #31

  • 「提取出库」5.5 寸手机端适配(设计稿 09_提取出库列表 IntImpPickUpDLVActivitymodule_gjj 手机布局 = PhoneSearchBar运单号+扫码+筛选)+ PhoneStatusTab 待出库/已出库outState 为 pageQuery 文档定义入参 0/1Tab 真实过滤 + 角标双 pageQueryTotal抓包证实携带+ 双形态卡片(待出库:圆形勾选框+橙标签+库位行;已出库:绿 √ 标签+出库人·出库时间行, isPickedUp = dlvTime 非空)+ 卡片内 PhoneStatBox 三列(代理人/件数/重量)+「查看详情」链接 + PhoneBottomBar全选+已选 N 项+出库,仅待出库 Tab 显示,复用既有 confirmOutbound 筛选弹层 4 项(航班日期为 pageQuery 未定义入参预留;航班号 fno代理人/特码下拉); 手机端进入时清空平板默认「当天缴费日期」查全量initPhoneExtras平板默认值不变

  • 手机专属新页「运单详情」IntImpPickUpDetailActivity:蓝头运单卡(红标签国际进港+品名大标题+ 两列 KV+库位橙标签)+ 绿头提货信息卡(柜台办理人/时间,已出库追加出库人/出库时间行), 数据直接 Intent 传列表 beanSerializable零新增请求

  • IntImpPickUpDLVBean 新增 isPickedUp 计算属性手机首页「国际」Tab 增加「提取出库」入口 (权限 AppIntImpPickUpDLV 对应权限串,图标复用 Pad 端 gjj_chu_ku_icon

  • 后端缺口 2 项登记问题清单 #28~#29pageQuery 无 fdate 入参、出参无车牌/目的港/业务类型; outState 过滤与 dlvName=出库人语义待内网实测)

  • 「进港仓库」5.5 寸手机端适配(设计稿 08_进港仓库07 出港仓库的进港镜像 + 进港详情页首次适配): 列表 IntImpStorageUseActivitymodule_gjj首页菜单实际跳转页旧版 GjjWareHouseActivity 路由已注释弃用)手机布局 = PhoneSearchBarplaceholder「搜索运单号/航班号」,phoneSearchClick 分流含字母→fno、其余→wbNo实机抓包证实+ 三格统计(总票数/未清仓/已清仓clearNormal=0/1 双 total+ 卡片四操作按钮(清仓/修改库位/出库/入库,已清仓置灰)+ 卡片字段件数/重量/航班号/ 始发站bean.dep出港为目的站筛选弹层 8 项(始发站走 fdep 入参;代理/特码/运单类型/ 业务类型/品名中 5 项为后端未定义入参,预留传参)

  • 进港详情页 IntImpQueryDetailsActivity + 3 Fragment运单/仓库/库位信息)首次手机适配: 移植 06 出港详情手机布局,报文区按设计稿 3 项(原始舱单 mftStatus/理货报告 tallyStatus/ 海关放行 command件重区直取 detail 出参 awbPc/awbWeight/cashWeight/inPc/inWeight 进港自带无需求和库位卡片优先显示中文姓名inOpName/outOpName ViewModel 增加 str/strOr/dec 取值帮助(与出港同口径)

  • 进港版 3 个操作弹框双变体化(清仓/入库/修改库位,手机底部弹层);修改库位手机版增加 「原库位」单选且只列未出库库位(沿用平板「已出库不允许修改」校验,卡片级操作时全部已出库 toast 拦截),单库位默认选中

  • 手机首页「国际」Tab 增加「进港仓库」入口(权限 AppGjjWareHouse=Constant.AuthName.GjjWareHouseActivity 对应权限串,图标复用出港仓库同款)

  • 后端缺口 3 项登记问题清单 #25~#27pageQuery 无代理/特码/运单类型/业务类型/品名中 5 项筛选 入参clearNormal 分项统计待实测detail 出参 dep/dest1/dest/unNumber/opDate 字段待实测确认)

  • 「出港仓库」5.5 寸手机端适配(设计稿 07_出港仓库详情/运单追踪复用已适配页零新增): 列表 IntExpStorageUseActivity 手机布局 = PhoneSearchBar运单号 + 扫码 + 筛选)+ 三格统计 (总票数/未清仓/已清仓,彩色左边条卡片;分项计数按同条件 + clearNormal=0/1 各调一次 pageQueryTotal,仅手机形态发起)+ 状态标签卡片(已清仓绿/未清仓橙,clearNormal=="1" 判定); 卡片级四操作按钮(清仓/修改库位/出库/入库,已清仓时清仓置灰拦截)取代平板的勾选+底部批量条, 语义等价于「勾选该主单+全部库位」复用既有 performClear/performModifyStorage/performOutStorage/ performInStorage 请求链路;卡片点击进详情(复用出港查询详情 GjcQueryDetailsActivity 3 Tab 运单/仓库/库位信息,运单追踪同样复用 LogDetailActivity);筛选弹层 8 项按设计稿完整实现 (航班日期/航班号/代理/特码/目的站/运单类型/业务类型/品名中,后三项为后端未定义入参,预留传参)

  • 清仓/入库/修改库位三个操作弹框(IntExpMoveClearDialogModel/IntExpInStorageDialogModel/ IntExpModifyStorageDialogModel双变体化手机底部弹层PhoneDataLayout+ 平板居中弹框不变, 弹出位置按 DeviceUtil.isPhone() 切换;修改库位弹框手机版新增「原库位」单选 (卡片级操作时运单可能有多个库位,构造参数 sourceStorageList 传入,单库位默认选中,平板路径不受影响)

  • 出库二次确认由系统 AlertDialog 改为项目规范的 ConfirmDialogModel(平板批量出库与手机卡片出库共用)

  • 手机首页「国际」Tab 增加「出港仓库」入口(权限 AppIntExpStorageUse图标复用 Pad 端 gjc_cang_ku_icon

  • GjcMaWb 新增 isCleared 手机版计算属性;新增手机版资源 bg_phone_btn_disabled(灰底禁用按钮)

  • 后端缺口 2 项登记问题清单 #23~#24pageQuery/pageQueryTotal 无 awbType/businessType/goodsCn 筛选入参pageQueryTotal 的 clearNormal 分项统计过滤待内网 A/B 实测确认)

  • 「出港查询」5.5 寸手机端适配(设计稿 06_出港查询含列表/详情/运单追踪三页): 列表 GjcQueryActivity 手机布局 = PhoneSearchBar运单号 + 扫码 + 筛选)+ 三格统计 (总票数/已入库/已离港,彩色左边条卡片)+ 状态标签卡片(已离港绿/已入库橙/未入库灰, 前端推断口径fclose 非空=已离港,否则 opDate 非空=已入库);筛选弹层 9 项(平板搜索行的 日期起止/代理并入弹层,特码按设计稿改下拉,字典 getSpecialCodeList(flag=1, ieFlag="") 仅手机形态经 initPhoneExtras() 加载);详情 GjcQueryDetailsActivity 3 Tab 全部复用 ViewPager2 + Fragment手机变体以 PhoneKvItem 网格呈现「基本信息/件重信息/回执信息」, 比平板多展示承运人/始发站/中转站/目的站/UN编号入库件数/入库重量 = warehouseList 各批次求和; 仓库/库位 Tab 改批次/库位卡片;「运单追踪」为公共页 LogDetailActivity 双变体首例—— 手机竖排流转时间线Activity buildVerticalSteps 动态构建,节点绿=已达/灰=未达 + 环节时间), 平板横向步骤条零改动,手机标题按形态显示「运单追踪」

  • 手机首页「国际」Tab 增加「出港查询」入口(权限 AppIntExpSearch图标复用 Pad 端 gjc_query_icon

  • PhoneKvItem 新增 tagColor 属性("green" 绿色高亮,海关放行正常态;默认 "orange" 且占位符 "-"/"--" 不再套高亮标签底

  • GjcMaWb 新增 isQueryDeparted/isQueryStored/orDash 手机版计算属性

  • 新增手机版资源:ic_phone_package(件数)、ic_phone_tag(特码)、bg_phone_dot_blue/gray

  • 后端缺口 2 项登记问题清单 #21~#22isFclose 入参实测被 pageQuery/pageQueryTotal 静默忽略且 无已入库/已离港分项统计出参detail 出参无锁定状态/计费重量字段)

修复 (Fixed)

  • 提取出库手机版底部条「已选 N 项」在点全选后不更新:checkAllClick 只改勾选状态未同步 selectedCountText(卡片单选走 FlowBus→updateCheckAllStatus 正常),补同步后实测「已选 3 项」正确
  • PhoneFilterPanel 底部按钮被挤出屏幕:面板高度 wrap_content 且内容插槽无滚动,筛选项多 (出港查询 9 项)时「重置/确认」按钮直接超出屏幕外且无任何报错。修复:内容插槽外包 ScrollViewweight=1筛选项少时行为不变超屏时内容区收缩滚动、按钮始终可见 (已回归出港计重 4 项弹层,行为不变)

验证 (Verified)

  • 提取出库双端验证通过2026-07-31Proxyman Map Local mock 口径):手机端菜单入口、 Tab 角标(双 total、双形态卡片含库位空值兜底、单选/全选与「已选 N 项」联动、 出库 ConfirmDialogModel、待出库/已出库两种详情页形态(出库人行按需显隐)、筛选弹层 4 项、 Tab 切换请求体抓包证实 outState=1 正确携带、冷启动方向恒竖屏、崩溃 0 平板端回归:缴费日期默认当天/5 搜索条/全选/底部统计/确认出库与改造前一致,崩溃 0。 待内网补测outState 过滤 A/B、dlvName=出库人语义、出库真实提交链路
  • 进港仓库双端验证通过2026-07-31同出港仓库为 Proxyman Map Local mock 口径): 手机端登录→国际 Tab→进港仓库菜单入口、三格统计、三种卡片形态含空值 "--" 兜底)、 详情 3 Tab 全字段(锁定状态转中文、库位中文姓名、时间截断、空值兜底)、四操作弹框、 已出库库位过滤(双库位卡片原库位仅列未出库项并默认选中)、无库位/已清仓拦截、 筛选弹层 8 项、搜索分流实机抓包证实(输入 MU1111 → 请求体 fno="MU1111"、wbNo=null、 冷启动方向恒竖屏、崩溃 0平板端回归5 搜索条/全选/底部统计/4 批量按钮与改造前一致,崩溃 0。 待内网补测clearNormal 分项统计 A/B、detail 推断字段dep/dest1/dest/unNumber/opDate、 四操作真实提交链路
  • 出港仓库双端验证通过2026-07-31开发机不在内网 → 全程 Proxyman Map Local mock 口径): 手机端登录→国际 Tab→出港仓库菜单入口、三格统计渲染、三种卡片形态已清仓置灰清仓/未清仓/ 全空字段 "--" 兜底)、四操作按钮(清仓/入库底部弹层、修改库位弹层含原库位默认选中、 出库 ConfirmDialogModel 文案带运单号与库位数、无库位卡片 toast 拦截、已清仓清仓点击拦截)、 筛选弹层 8 项滚动 + 底部按钮可见、卡片点击进详情Proxyman flow 证实 maWbId 正确传参且 detail mock 命中、详情右上运单追踪跳转、冷启动方向恒竖屏ROTATION_0×3 采样)、崩溃 0 平板端同页面回归5 搜索条/全选/底部统计/4 批量按钮与改造前一致,崩溃 0。 待内网补测clearNormal 分项统计 A/B、agentCode/spCode/dest 筛选实测、四操作真实提交链路
  • 出港查询双端实机验证通过2026-07-31内网真实数据 2026-06-09 共 14 票): 手机端登录→国际 Tab→出港查询菜单入口、列表加载/状态标签/三格统计10+4=14 与卡片一致)、 筛选弹层(日期滚轮、特码/代理下拉真实取数、重置、确认后重新查询)、运单号搜索、扫码拉起、 详情 3 Tab含仓库批次卡与库位空态、运单追踪时间线、冷启动方向恒竖屏mRotation=0×8 采样)、 全程 FATAL 0平板端回归列表 5 搜索条 + 底部统计 + 侧滑筛选面板 + 详情表格样式均与改造前一致
  • 「出港运抵」5.5 寸手机端适配(主列表 + 3 个手机专属新页,设计稿 04_出港运抵 主列表 IntExpArriveActivity 新增「待运抵/已运抵」Tab客户端按 declareStatus 是否为空拆分数据集, 接口无此查询参数)+ 卡片长按浮层(待运抵→补充、已运抵→重置+回执,纯 UI 长按)+ 底部全选/已选/申报 (仅待运抵 Tab 显示,选中范围独立于 Pad 全量选择逻辑);新增「分单明细」IntExpArriveSubOrderActivity (数据直接复用主列表已加载的 haWbList零新增请求长按单条重置 + 底部批量申报);新增「回执内容」 IntExpArriveReceiptActivity(只读页,复用 haWbList[].response + arrivalOpDate新增「补充信息」 IntExpArriveSupplementActivity(参照 Pad 端国际进港「收发货人信息」批量应用模式,对整个运单的 haWbList 批量应用同一份表单,后端接口不存在,已实机确认 404见问题清单 #19
  • 手机首页「国际」Tab 增加「出港运抵」入口
  • GjcMaWb/GjcHaWb 新增 isPending/declareTagColor/haWbTagColor/arrivalOpDateText 等 手机版专属计算属性;GjcHaWb 补充 Serializable 实现(供 Intent 跨页传递分单列表)
  • 新增手机版资源:bg_phone_tag_indigo/bg_phone_tag_amber(申报状态三色标签)、 bg_phone_fab_purple/bg_phone_fab_amber/bg_phone_fab_green(长按浮层圆形操作按钮)
  • 后端缺口 2 项登记问题清单 #19~#20分单补充信息保存接口不存在、Tab 无申报状态查询参数)
  • 「出港运抵」对照设计稿 review 修正:状态重置弹框手机端改为设计稿底部弹层 弹框适配首个先例dialog_int_exp_arrive_reset.xml 同名布局双变体Pad 版移至 layout-sw600dp/IntExpArriveResetDialogModel 构造参数按 DeviceUtil.isPhone()DIALOG_TYPE_BOTTOM/CENTER);主列表补空态(图标 + 文案按 Tab 切换「暂无待/已运抵的运单」); 回执页补空态兜底「暂无回执内容」(单分单入口常无回执,避免纯白屏);分单明细长按浮层按设计稿 补「回执」按钮(单分单跳回执页);分单页底部统计加分母「已选 N / M 项」Tab 角标初始显示 0

修复 (Fixed)

  • RecyclerView + Tab 过滤新坑:给 item 根节点加 visibility="@{...}" 切 Tab 会在列表里 留下空白——RecyclerView/LinearLayoutManager 不像普通 ViewGroup 那样让 GONE 子项自动塌陷为 0 高度。改为在 ViewModel 数据层维护完整列表Tab 切换时把过滤后的子集整体 refresh() 给 adapter已实机截图验证空白消失、卡片数与角标一致
  • Serializable Intent + @Transient 崩溃新坑GjcMaWb/GjcHaWbchecked 等 UI 状态 字段标了 @Transient(避免 Gson 序列化 ObservableBoolean但这同时是 JVM transient 修饰符Java 序列化Intent 传递机制)会跳过其恢复,反序列化后为 null切换选中状态时 NullPointerException 崩溃。修复:接收方 initOnCreated 对列表 .map { it.copy() } 重新 触发类体初始化补上(已实机崩溃复现并验证修复)
  • PhoneStatusTab/PhoneFilterPanel 补上遗漏的 dispatchSaveInstanceState/ dispatchRestoreInstanceState 屏蔽覆写(其余 5 个手机版复合组件均已重写,这两个是历史遗漏; 同页多实例时子控件状态可能按 id 跨实例串档)

验证 (Verified)

  • 出港运抵双端实机验证通过:手机端 Tab 切换(角标/卡片双向正确)/全选/单选/长按菜单/查看分单 /分单明细全选与长按重置/补充信息(真实数据回填+下拉字典+提交请求体完整+后端404如实呈现/ 回执页 全链路 crash=0、方向无闪屏平板端布局与交互4 搜索条+分单内嵌展开+底部 5 元素操作栏) 与改造前逐项一致
  • 出港运抵 review 修正双端实机验证通过:手机端重置底部弹层(长按→重置→下拉展开选项)/主列表空态 /回执页空态/分单浮层重置+回执双按钮/「已选 0 / 2 项」分母 全部与设计稿一致且 crash=0 平板端回归:列表、批量「状态重置」弹框仍为居中 Pad 样式,行为与改造前一致
  • 「出港计重」5.5 寸手机端适配(首个全链路 4+1 页模块,设计稿 03_出港计重 待计重列表(三格统计 总票数/待计重/计重中 + 卡片状态标签 未计重/计重中 + 卡片内单票「提前运抵」+ FAB 进计重记录 + 筛选弹层 通道号/承运人/运单类型/代理人)、开始计重(头部预配统计卡 + PhoneFormRow 表单, 托盘数量/托盘自重按设计稿手输)、计重记录(三格统计 + 卡片地磅图标进明细/「查看详情」进运单详情 + 筛选弹层 入库日期起止/代理人/特码/目的站/计重人)、计重明细(汇总卡含托盘总重 + 记录卡「修改」→ 全屏「修改记录」覆层,复用平板 isEditMode 编辑链路,保存后留在本页)、手机专属新页「运单详情」 GjcWeighingWbDetailActivity12 字段只读网格手机首页「国际」Tab 增「出港计重」入口
  • 新增手机版公共资源:bg_phone_btn_weak(浅蓝弱按钮)、bg_phone_card_top_accent(卡片顶部主色描边条)、 ic_phone_clipboardic_phone_weight
  • GjcMaWb 预留 palletNumber/carWeight 字段、GjcCheckInRecordcarWeightStr 双向绑定属性 (均为手机版专属,平板请求体零变化);后端缺口 7 项登记问题清单 #12~#18 checkIn 过滤不生效、主列表筛选三入参、入库日期范围、通道号出参、计重人姓名、arriveFlag 不回填、 托盘数量/自重入参)

修复 (Fixed)

  • 出港计重手机版搜索分流按实测修正:likeNo 并非任意模糊(按 8 位 no 匹配), 11 位全号改走 wbNo 精确查询,含字母走 fno

验证 (Verified)

  • 出港计重双端实机验证通过:手机端 待计重列表/筛选/开始计重(必填校验)/计重记录/记录筛选/运单详情/ 计重明细/修改覆层保存/单票提前运抵 全链路 crash=0、方向无闪屏、请求体新参数全部正确携带 平板端 待计重/计重记录/开始计重 三页回归无变化横屏、5 搜索条、日期默认今天、地磅区/托盘车号/浮动按钮组均在)
  • 「ULD管理」5.5 寸手机端适配app 模块首个适配页):列表卡片(三色状态标签)+ 筛选弹层(入库时间/进港航班号/所属航司/来源)+ 右下角浮动新增 + 底部全选/批量删除(循环调用单条删除接口)+ 一套 activity_uld_edit 手机布局覆盖 新增/修改/详情 三态 (详情态右上铅笔进入修改、状态底部选择面板、所在港默认 HFE、必填校验仅手机生效
  • 新增手机版公共组件 PhoneFormRow行式表单项INPUT/SELECT/DATE/TEXT 四形态SELECT 内置底部选择面板); PhoneBottomBar 增加 actionDanger 危险按钮样式;新增 bg_phone_fabbg_phone_btn_dangerbg_phone_tag_red_lightic_phone_trashic_phone_edit 等资源
  • ULDBean 补解析接口既有出参 ifNo/efNo/checkInDate/checkOutDate 并预留 source;后端缺口 5 项 (状态三态、来源字段、筛选入参、批量删除接口、字段语义)登记问题清单 #7~#11

验证 (Verified)

  • ULD管理双端实机验证通过手机端列表/筛选/详情/修改/新增/单选全选/批删确认全链路 crash=0、方向无闪屏 平板端列表与详情回归无变化

修复 (Fixed)

  • 出库交接手机版「待/已交接」Tab 与角标计数的过滤参数名修正:hoStatehandoverState (以 api-doc 接口文档为准;此前误传 hoState 被后端静默忽略,两个 Tab 返回同一批数据)。 2026-07-29 内网实机验证通过fdate=2026-07-16 下待交接/已交接 Tab 分别精确返回对应板箱,与后端直调结果一致。 验证中发现 IntExpOutHandover/pageQueryTotal 出参恒 0后端缺陷致 Tab 角标与平板底部统计为 0已记录问题清单 #6

新增 (Added)

  • 新增《后端接口对接问题清单》(documents/后端接口对接问题清单.xlsx):手机端适配走查发现的接口缺口 (移库列表缺航班字段、缺操作人姓名、opId/opdate/businessType 不回填、出库交接查询缺「交接人」入参), 按模块/页面/接口定义/接口地址索引,作为与后端对接的持续维护文档
  • phone-adapt skill 新增 references/api-doc.mdapi-doc MCP 连接与逐接口核对流程,接口对齐从「问用户」升级为「先查接口文档」

[1.9.0] - 2026-07-29

新增 (Added)

  • 5.5 寸手持端双形态适配框架:同名布局 + 资源限定符(layout/ 手机、layout-sw600dp/ 平板自动切换业务逻辑ViewModel/ViewHolder零改动
  • 新增 DeviceUtil 设备形态判定工具,及手机版公共组件库(PhoneSearchBarPhoneStatusTabPhoneDataLayoutPhoneFilterPanelPhoneBottomBarPhoneStatBoxPhoneKvItem
  • 完成「国际出港移库」「国际出港出库交接」两个页面的手机端适配,含各自的详情页(IntExpMoveDetailActivityIntExpOutHandoverDetailActivity
  • 手机端首页菜单接入「出港移库」「出库交接」入口

修复 (Fixed)

  • 修复手机端进入页面时「先横屏、约 1 秒后转竖屏」的闪屏问题Manifest 统一改为 android:screenOrientation="unspecified"(全项目 192 处),由 BaseActivity.applyDeviceOrientation() 按设备形态在运行时锁定方向,避免系统建窗口时用错误方向
  • 修复平板端因中间方案(@integer/screen_orientation 资源限定符)引入的回归:先竖屏再转横屏,且交互后 UI 整体放大约 1.6 倍AutoSize 误选平板竖屏基准所致);验证系统解析 Manifest 属性不套用设备限定符,恢复为 unspecified 方案后两端方向与缩放均恢复正常
  • AutoSize 增加手机竖屏专用设计基准 390×844dp避免手机端沿用平板竖屏 720dp 基准导致 UI 压缩

技术栈

  • Kotlin 1.6.21
  • Android Gradle Plugin 7.2.0
  • Gradle 7.3.3
  • minSdk 24, targetSdk 30, compileSdk 31

[1.8.4] - 2024-12-02

新增 (Added)

  • 完善 Claude Code 配置,添加 Android 开发权限
  • 创建 8 个快捷命令 (/build-debug, /install, /logs 等)
  • 定制 CLAUDE.md 为 Android 项目专用开发指南
  • 添加 CONTRIBUTING.md 贡献指南文档
  • 添加 CHANGELOG.md 版本变更日志

改进 (Changed)

  • 优化首页菜单交互体验
  • 改进 UI 界面显示效果

技术栈

  • Kotlin 1.6.21
  • Android Gradle Plugin 7.2.0
  • Gradle 7.3.3
  • minSdk 24, targetSdk 30, compileSdk 31

[1.8.x] - 之前版本

主要功能

  • 国内出港业务模块 (货物收运、复磅称重、转运管理、出库装机)
  • 国内进港业务模块 (舱单管理、卸机入库、出库提货、移库管理)
  • 国际出港业务模块 (国际货物收运、板箱组装、ULD容器管理)
  • 国际进港业务模块 (国际舱单管理、报文解析、理货管理)
  • 航班管理模块 (航班查询、航班统计)
  • 货物追踪模块 (货物状态追踪、运输日志)
  • 监装监卸模块 (监装监卸管理)
  • PDA功能模块 (PDA专用功能)
  • 蓝牙打印模块 (佳博打印机集成)

核心架构

  • MVVM 架构模式
  • 组件化模块设计 (11个业务模块 + 1个基础库)
  • DataBinding 双向绑定
  • Kotlin Coroutines + Flow 异步处理
  • ARouter 模块间通信
  • Retrofit + OkHttp 网络请求
  • Glide 图片加载
  • MPAndroidChart 图表展示

开发基础设施

  • BaseActivity/BaseBindingActivity 基类
  • BaseViewModel/BasePageViewModel 基类
  • CommonAdapter + BaseViewHolder 列表适配
  • PadSearchLayout/PadDataLayout 自定义组件
  • 完整的 Kotlin 扩展函数库
  • DataBinding 适配器集合

版本说明

版本号规则

  • Major.Minor.Patch (例: 1.8.4)
  • Major: 重大架构变更或不兼容的 API 修改
  • Minor: 新功能添加,向下兼容
  • Patch: Bug 修复和小的改进

变更类型

  • Added: 新增功能
  • Changed: 功能改进或变更
  • Deprecated: 即将废弃的功能
  • Removed: 已移除的功能
  • Fixed: Bug 修复
  • Security: 安全性修复

未来计划

待开发功能

  • 优化数据同步机制
  • 增强离线模式支持
  • 改进用户权限管理
  • 优化蓝牙打印稳定性
  • 添加数据导出功能
  • 性能监控和分析

技术改进

  • 升级到 Kotlin 2.0
  • 迁移到 Jetpack Compose
  • 优化构建速度
  • 完善单元测试覆盖
  • 添加 UI 自动化测试

维护: 本文档应在每次版本发布时更新。 负责人: 项目维护团队 最后更新: 2026-07-29