From 647cf47cf2b19a6a37877444cd5cbd6b8449e92a Mon Sep 17 00:00:00 2001 From: AskaEth Date: Sun, 4 Oct 2026 21:46:26 +0800 Subject: [PATCH] =?UTF-8?q?docs(05):=20=E6=9B=B4=E6=AD=A3=20=E2=91=A0=20W1?= =?UTF-8?q?6=20=E6=90=9C=E7=B4=A2=E7=9A=84=E7=BB=93=E8=AE=BA=20=E2=80=94?= =?UTF-8?q?=E2=80=94=20=E6=9C=AC=E6=9D=A5=E5=B0=B1=E6=98=AF=E5=A5=BD?= =?UTF-8?q?=E7=9A=84=EF=BC=8C=E5=85=88=E5=89=8D=E3=80=8C=E8=AE=BE=E5=A4=87?= =?UTF-8?q?=E4=B8=8A=E4=B8=8D=E5=8F=AF=E7=94=A8=E3=80=8D=E6=98=AF=E6=88=91?= =?UTF-8?q?=E7=9A=84=E6=B5=8B=E9=87=8F=E5=81=87=E8=B1=A1=EF=BC=88=E5=90=AB?= =?UTF-8?q?=E6=95=99=E8=AE=AD=EF=BC=9A=E5=8A=A8=E4=BB=A3=E7=A0=81=E5=89=8D?= =?UTF-8?q?=E5=85=88=E7=94=A8=E5=83=8F=E7=B4=A0=E7=A1=AE=E8=AE=A4=E7=97=87?= =?UTF-8?q?=E7=8A=B6=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- devdocs/05-开发进度与交接.md | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/devdocs/05-开发进度与交接.md b/devdocs/05-开发进度与交接.md index 681ea7f..006534b 100644 --- a/devdocs/05-开发进度与交接.md +++ b/devdocs/05-开发进度与交接.md @@ -644,12 +644,27 @@ PDF · 563 B · 24 字 · 已读入 | 二次确认 | 「删除这条消息?」/「它会从所有端移除,且不可恢复。」 | | 删除执行 | logcat **`DELETE /api/v1/messages/f9c53d22…` → `200`**(56 字节);服务端那条 assistant **已消失**、界面气泡消失 | -### ① W16 会话内搜索 —— ❌ **设备上不可用**(真 bug,修复中) +### ① W16 会话内搜索 —— ✅ **通过**(⚠️ 并附一条我自己制造的假警报与教训) -点顶栏入口 `content-desc="搜索会话里的消息"`(`[1206,204][1266,264]`)**界面毫无变化**:无面板、无「输入关键词…」、无标题。但 dump 里**多出**一个 `android.widget.EditText` 位于 **`[36,339][1176,509]`**(顶部、宽约 1140px;聊天页自己的输入框在 `[300,1736][1086,1906]`)⇒ **面板的输入框出来了、面板其余部分没出来或尺寸塌了**。 +**结论先改**:这一项**本来就是好的**。下文保留那条「不可用」的原委,以免重犯。 -- 第一次修复的代理(W20)**零输出挂死 14 分钟、worktree 里零改动**(停掉后核对:停在旧提交、无残留)。 -- 已重派(W22),并在任务书里加了**反挂死三条**:不许它自己跑 `git merge`(分支由主代理对齐好)、**任何命令 3 分钟无输出就换做法/报告**、**只跑一轮构建**。 +真正的设备证据(都取到了): + +| 环节 | 证据 | +|---|---| +| 入口 | 顶栏右上角放大镜 `content-desc="搜索会话里的消息"`;它的**可点父节点**是 `[1164,162][1308,306]`(144px = 48dp 标准触控区) | +| 打开面板 | **像素确认**:不透明盖满整页、顶栏「搜索会话」+ ✕、输入框**自动聚焦**(蓝色边框)且 IME 弹起、中间「输入关键词,搜索这个会话里的消息」 | +| 搜索 | 输入 `W15` 提交 → logcat **`GET …/messages?limit=30&q=W15` → `200`(583 字节)**;顶栏「**2 条命中**」+ 两行结果(`我 / W15-retry-2-EDITED / 10-04 13:32`、`我 / W15-key-test / 10-04 13:30`) | +| 点结果定位 | 面板关闭 + 顶部横幅「**已定位到这条消息**」 | +| 返回键层级 | 再开面板(dump 数到「搜索会话」= 1)→ 按返回 → **像素确认回到聊天页**(面板关、IME 收起、消息与输入栏都在),`topResumedActivity` 仍 `MainActivity`(没退到抽屉/桌面) | + +**⚠️ 那条假警报的原委(值得记,别再犯)**:我先前连点两次入口后 dump,都「看到聊天页、且多出一个 `EditText [36,339][1176,509]`」,于是判「面板没渲染、尺寸塌了」。**真相是 `uiautomator dump` 在「面板弹出 + IME 动画」期间会静默失败,而我读到了上一次的旧文件**——把「一个正常的输入框」读成了「面板塌掉的残骸」。改用**像素**(`screencap`)一看,面板好端端盖着整页。 + +**代价与教训**:我为此派了两个代理去修「非 bug」(W20 零输出挂死 14 分钟、W22 被停掉),**都零改动、没污染仓库**。两条纪律: +1. **动代码之前先用像素确认症状**(`uiautomator dump` 只用来取坐标,不用来判定「界面有没有变化」); +2. 当**症状与读出来的结构矛盾**时(根容器 `fillMaxSize()` + 不透明底色 ⇒ 结构上不可能「看不见」),**先怀疑自己的测量**,再怀疑代码。 + +**另记一处「不是错但不该这么写」**:`SessionSearchPanel.kt:105` 在 `Column` 里给子项用了 `Modifier.fillMaxSize()`(正确写法是 `weight(1f)`)。实测**当前不影响观感**(面板内容居中正常),所以**我没有改**——没有证据的改动只会引入风险,留在这里备案。 ### 本轮新增的坑(客户端侧方法论,值得单独记)