- 主列表新增待运抵/已运抵 Tab(客户端按申报状态拆分)+ 卡片长按浮层(补充/重置/回执) - 新增分单明细页:复用主列表已加载数据,零新增请求 - 新增回执内容只读页 - 新增补充信息页:参照 Pad 端收发货人信息批量应用模式(后端接口暂缺,已登记问题清单) - 手机首页「国际」Tab 增加「出港运抵」入口 - 修复两个平台坑:RecyclerView 内 GONE 不塌陷高度;Serializable Intent 传递 遇 @Transient 字段反序列化为 null 导致的崩溃 - 登记后端接口缺口 2 项(#19~#20)至问题清单 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
206 lines
12 KiB
Markdown
206 lines
12 KiB
Markdown
# 版本变更日志 (Changelog)
|
||
|
||
本文档记录 AirLogistics 项目的所有重要变更。
|
||
|
||
格式基于 [Keep a Changelog](https://keepachangelog.com/zh-CN/1.0.0/),
|
||
版本号遵循 [语义化版本](https://semver.org/lang/zh-CN/)。
|
||
|
||
## [Unreleased]
|
||
|
||
### 新增 (Added)
|
||
- 「出港运抵」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 无申报状态查询参数)
|
||
|
||
### 修复 (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),但这同时是 JVM `transient`
|
||
修饰符,Java 序列化(Intent 传递机制)会跳过其恢复,反序列化后为 null,切换选中状态时
|
||
NullPointerException 崩溃。修复:接收方 `initOnCreated` 对列表 `.map { it.copy() }` 重新
|
||
触发类体初始化补上(已实机崩溃复现并验证修复)
|
||
|
||
### 验证 (Verified)
|
||
- 出港运抵双端实机验证通过:手机端 Tab 切换(角标/卡片双向正确)/全选/单选/长按菜单/查看分单
|
||
/分单明细全选与长按重置/补充信息(真实数据回填+下拉字典+提交请求体完整+后端404如实呈现)/
|
||
回执页 全链路 crash=0、方向无闪屏;平板端布局与交互(4 搜索条+分单内嵌展开+底部 5 元素操作栏)
|
||
与改造前逐项一致
|
||
- 「出港计重」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
|