- 列表/详情/运单追踪三页同名布局双变体(平板移 layout-sw600dp/,Kotlin 零设备分支) - 列表:搜索行 + 三格统计(总票数/已入库/已离港,已加载数据客户端计数)+ 状态标签卡片 (已离港/已入库/未入库,前端按 fclose/opDate 推断)+ 9 项底部筛选弹层(特码改下拉) - 详情:3 Tab 复用 ViewPager2+Fragment,PhoneKvItem 网格;入库件数/重量按 warehouseList 求和 - 运单追踪:公共页 LogDetailActivity 双变体首例,手机竖排时间线动态构建,平板横向步骤条不动 - 修复 PhoneFilterPanel 筛选项超屏时底部按钮被挤出屏幕(内容插槽加 ScrollView) - PhoneKvItem 新增 tagColor 绿色高亮(海关放行),占位符不套标签底 - 手机首页国际 Tab 加出港查询入口;后端缺口 #21/#22 登记问题清单 - 双端实机验证通过(内网真实数据 + Proxyman Map Local 补验未入库兜底态) - skill 新增 references/proxyman.md:抓包/直调 A/B/Mock 与 api-doc 配合规范 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
16 KiB
16 KiB
版本变更日志 (Changelog)
本文档记录 AirLogistics 项目的所有重要变更。
格式基于 Keep a Changelog, 版本号遵循 语义化版本。
[Unreleased]
新增 (Added)
- 「出港查询」5.5 寸手机端适配(设计稿 06_出港查询,含列表/详情/运单追踪三页):
列表
GjcQueryActivity手机布局 = PhoneSearchBar(运单号 + 扫码 + 筛选)+ 三格统计 (总票数/已入库/已离港,彩色左边条卡片)+ 状态标签卡片(已离港绿/已入库橙/未入库灰, 前端推断口径:fclose 非空=已离港,否则 opDate 非空=已入库);筛选弹层 9 项(平板搜索行的 日期起止/代理并入弹层,特码按设计稿改下拉,字典getSpecialCodeList(flag=1, ieFlag=""), 仅手机形态经initPhoneExtras()加载);详情GjcQueryDetailsActivity3 Tab 全部复用 ViewPager2 + Fragment,手机变体以 PhoneKvItem 网格呈现「基本信息/件重信息/回执信息」, 比平板多展示承运人/始发站/中转站/目的站/UN编号,入库件数/入库重量 = warehouseList 各批次求和; 仓库/库位 Tab 改批次/库位卡片;「运单追踪」为公共页LogDetailActivity双变体首例—— 手机竖排流转时间线(ActivitybuildVerticalSteps动态构建,节点绿=已达/灰=未达 + 环节时间), 平板横向步骤条零改动,手机标题按形态显示「运单追踪」 - 手机首页「国际」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~#22(isFclose 入参实测被 pageQuery/pageQueryTotal 静默忽略且 无已入库/已离港分项统计出参;detail 出参无锁定状态/计费重量字段)
修复 (Fixed)
PhoneFilterPanel底部按钮被挤出屏幕:面板高度 wrap_content 且内容插槽无滚动,筛选项多 (出港查询 9 项)时「重置/确认」按钮直接超出屏幕外且无任何报错。修复:内容插槽外包 ScrollView(weight=1),筛选项少时行为不变,超屏时内容区收缩滚动、按钮始终可见 (已回归出港计重 4 项弹层,行为不变)
验证 (Verified)
- 出港查询双端实机验证通过(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/GjcHaWb的checked等 UI 状态 字段标了@Transient(避免 Gson 序列化 ObservableBoolean),但这同时是 JVMtransient修饰符,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 编辑链路,保存后留在本页)、手机专属新页「运单详情」
GjcWeighingWbDetailActivity(12 字段只读网格);手机首页「国际」Tab 增「出港计重」入口 - 新增手机版公共资源:
bg_phone_btn_weak(浅蓝弱按钮)、bg_phone_card_top_accent(卡片顶部主色描边条)、ic_phone_clipboard、ic_phone_weight GjcMaWb预留palletNumber/carWeight字段、GjcCheckInRecord增carWeightStr双向绑定属性 (均为手机版专属,平板请求体零变化);后端缺口 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_fab、bg_phone_btn_danger、bg_phone_tag_red_light、ic_phone_trash、ic_phone_edit等资源 ULDBean补解析接口既有出参ifNo/efNo/checkInDate/checkOutDate并预留source;后端缺口 5 项 (状态三态、来源字段、筛选入参、批量删除接口、字段语义)登记问题清单 #7~#11
验证 (Verified)
- ULD管理双端实机验证通过:手机端列表/筛选/详情/修改/新增/单选全选/批删确认全链路 crash=0、方向无闪屏; 平板端列表与详情回归无变化
修复 (Fixed)
- 出库交接手机版「待/已交接」Tab 与角标计数的过滤参数名修正:
hoState→handoverState(以 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.md:api-doc MCP 连接与逐接口核对流程,接口对齐从「问用户」升级为「先查接口文档」
[1.9.0] - 2026-07-29
新增 (Added)
- 5.5 寸手持端双形态适配框架:同名布局 + 资源限定符(
layout/手机、layout-sw600dp/平板)自动切换,业务逻辑(ViewModel/ViewHolder)零改动 - 新增
DeviceUtil设备形态判定工具,及手机版公共组件库(PhoneSearchBar、PhoneStatusTab、PhoneDataLayout、PhoneFilterPanel、PhoneBottomBar、PhoneStatBox、PhoneKvItem) - 完成「国际出港移库」「国际出港出库交接」两个页面的手机端适配,含各自的详情页(
IntExpMoveDetailActivity、IntExpOutHandoverDetailActivity) - 手机端首页菜单接入「出港移库」「出库交接」入口
修复 (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