Files
aerologic-app/CHANGELOG.md
YANG JIANKUAN 436202f15b fix: 出港运抵手机端对照设计稿review修正与重置弹框适配
- 状态重置弹框改手机底部弹层:dialog 布局同名双变体(Pad 移 layout-sw600dp),
  弹出位置按形态切 DIALOG_TYPE_BOTTOM/CENTER,为弹框适配首例
- 主列表补空态(文案按 Tab 切换)、回执页补「暂无回执内容」兜底
- 分单明细长按浮层按设计稿补「回执」按钮;底部统计加分母「已选 N / M 项」
- Tab 角标初始显示 0
- PhoneStatusTab/PhoneFilterPanel 补 dispatchSave/RestoreInstanceState 状态屏蔽(历史遗漏)
- 双端实机验证:手机端各修正点与设计稿一致且 crash=0;平板端列表与批量重置弹框回归无变化

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-30 23:21:33 +08:00

218 lines
13 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 版本变更日志 (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 无申报状态查询参数)
- 「出港运抵」对照设计稿 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但这同时是 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 编辑链路,保存后留在本页)、手机专属新页「运单详情」
`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