fix: 出库交接交接状态参数名改为handoverState并完成内网验证

- 按 api-doc 接口文档修正交接状态入参 hoState → handoverState(原参数被后端
  静默忽略,两个 Tab 返回同一批数据);内网实机验证 0/1 过滤与 App 端到端链路
  均生效,平板端回归无影响
- 新增《后端接口对接问题清单.xlsx》:按模块/页面/接口定义/接口地址索引的后端
  对接文档,含 5 项待处理缺口(移库缺航班字段/操作人姓名/数据不回填、交接缺
  交接人入参、pageQueryTotal 出参恒 0)+ 1 项已验证归档
- phone-adapt skill 新增 references/api-doc.md(api-doc MCP 核对流程 + 内网
  直调验证技巧),阶段 2 改为「先查接口文档再问用户」,修正 verification.md
  中「后端不认 hoState」的过时误判结论
- CLAUDE.md / CHANGELOG.md 同步走查与验证结论

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
2026-07-29 15:13:43 +08:00
parent db062c8ee3
commit bbc29ca2e1
7 changed files with 143 additions and 16 deletions

View File

@@ -54,12 +54,22 @@ python3 $S/design_shots.py --html "…/出库交接.html" --out /tmp/design \
把设计稿的每个筛选项/Tab/字段,对照平板 ViewModel 已有的字段:
- **已有字段** → 直接复用(如出港移库的 Tab 直接绑既有 `moveState`
- **平板没有的新维度**(新 Tab 状态、新下拉、新排序)→ **停下来问用户**要用什么接口参数名
连带问数据源(如「交接人」用 `DictUtils.getWHSUserList()`
- **平板没有的新维度**(新 Tab 状态、新下拉、新排序)→ **先查 api-doc MCP 拿权威参数名**
流程见 `references/api-doc.md`(连接方式 + 5 个工具 + 逐接口核对清单)。
文档里查不到、或业务语义拿不准(如数据源该用哪个 `DictUtils` 方法)才用 `AskUserQuestion` 问用户
这一步不能猜。出库交接就是实测发现后端 `pageQuery` 根本不认 `hoState`,两个 Tab 返回同一批数据——
参数名对不对只有后端知道。用 `AskUserQuestion` 一次问清,并在阶段 5 用真实请求体验证是否生效;
**没生效就在交付说明里如实标注**,不要让它看起来是通的
这一步不能猜,也**不要拿「实测不生效」当结论**。出库交接第一版猜了 `hoState`实测两个 Tab
返回同一批数据,一度误判为「后端不支持」;后查 api-doc 才发现正确参数名是 `handoverState`——
后端对不认识的参数是**静默忽略**,不报错,实测只能证明「这个名字不对」,证不出「后端没这能力」
核对完把结论落两处(模板与格式见 `references/api-doc.md`
- 后端真实缺口(缺入参/缺出参/数据不回填)→ 记入 `documents/后端接口对接问题清单.xlsx`
这是与后端对接的正式文档,按「模块 → 页面 → 接口定义 → 接口地址」索引,**每个页面适配完都要维护**
- 参数名/字段绑定错误这类前端问题 → 直接改代码
阶段 5 仍要用真实请求体验证新参数确实生效;没生效就在清单文档与交付说明里如实标注,
不要让它看起来是通的。
### 开工前对齐方案
@@ -121,7 +131,7 @@ visibility 即可Bean 上加个只读计算属性如 `isHandovered` 让 XML
val handoverState = MutableLiveData("") // 平板布局无对应控件 → 恒为空 → 不进请求
val filterParams = mapOf(
/* 原有字段… */
"hoState" to handoverState.value?.ifEmpty { null },
"handoverState" to handoverState.value?.ifEmpty { null }, // 参数名以 api-doc 为准
)
// 手机专属的额外请求Tab 角标计数、新下拉字典)用内部开关控制
@@ -252,11 +262,13 @@ binding.rv.postDelayed({
## 收尾:文档与交付说明
代码之外还要落处文档,否则下一个人会重复踩坑:
代码之外还要落处文档,否则下一个人会重复踩坑:
- 新增了公共组件/资源 → 更新 `CLAUDE.md`「手机版公共组件库」表 + `references/components.md`
- 踩到新坑(崩溃、静默失效、环境问题)→ 写进 `CLAUDE.md`「常见编译错误速查」和本 skill 的
对应 reference把**定位手法**也写上,不只写结论
- 接口有后端缺口(阶段 2 / 阶段 5 发现的)→ 维护 `documents/后端接口对接问题清单.xlsx`
已确认的字段语义追加到 `references/api-doc.md` 的「已核对过的语义」,别让下个页面再查一遍
- `CHANGELOG.md` 追加条目(新增 / 改进 / 修复 / 验证 四段),记忆文件
`phone-5.5inch-adaptation.md` 同步
@@ -270,6 +282,7 @@ binding.rv.postDelayed({
## 参考文件
- `references/api-doc.md` — api-doc MCP 连接与逐接口核对流程、后端缺口记录规范、已核对字段语义(阶段 2 前读)
- `references/components.md` — 7 个手机版公共组件的属性表、用法与封装新组件的规矩(写布局前读)
- `references/pad-safety.md` — 布局变体约束、Pad 零破坏模式、易崩点(写代码前读)
- `references/verification.md` — 双端 adb 命令、登录与直启、已知环境坑(验证前读)