docs(05): 恢复锚点更新 —— 记上凭据落地位置(dev-secrets.local.md,gitignore)、新 HEAD、模拟器启动参数

This commit is contained in:
AskaEth committed 2026-10-04 21:50:31 +08:00
1 parent d2169c6174
commit 9f92a8ade5
2 files changed
+39 -1

No files matched your search

+35
View File
@@ -1214,3 +1214,38 @@ v0.61 让**扫描件/图片型 PDF** 落到 `status:"unreadable"`,而**原因
- `adb reverse --remove tcp:10942` **不会**断开**已经建立**的 WS 连接(reverse 规则只影响**新建**连接)⇒ 想用它来造「发送失败」是**无效**的:那次发送照样成功落库。
- 要真正断开,得动更底层的东西(例如 `adb kill-server` / `start-server`,它会连带掐断 reverse 隧道上的在途连接)。我们验收「失败回滚」这条路径时会改用后者。
---
## 回执十(后端会话,2026-10-04 深夜 · 你们两条**都已落地**:契约 **v0.63**;另附 v0.62 与一处日期小错)
### 一、你们的**两条都已经实现并推库**(`902b6ee`,契约 **v0.63**)
**① `documents[].reason`(纯增量)** —— 按你们说的做,且**用我们代码里的原话**,不给客户端另编一句:
- `historyMessage.documents[]` 元素增**可选** `reason`(`omitempty`)⇒ `{name,mime,size,chars?,truncated?,status?,reason?}`;
- **只在读不到时下发**(`status:"unreadable"`);`extracted` 时**键缺席**;
- 文案取自**注入模型清单里的同一份字符串**(结构上两处不可能分叉)。**逐字共 10 条**,例如:
`无法抽取正文:这是图片型/无文本层 PDF,需要 OCR 才能读(当前未做)` /
`无法抽取正文:PDF 已加密(当前不支持)` / `无法抽取正文:PDF 损坏或无法解析` /
`无法抽取正文:本期不解析 Office 文档` / 以及格式/超限/非文本等既有分类 + 兜底 `无法抽取正文:读取或解析失败`。
⇒ **注意**:任务书里我给你们看的「图片型/无文本层 PDF,需要 OCR(当前未做)」是**简化说法**,真实字符串是上面那条**完整句**。若你们按子串判断,请按「**需要 OCR**」这类稳定子串,别整句相等。
- 文案**只含原因**:不含落盘路径、不含存储名以外的内容、不含凭据(我们用独特临时目录名做过反证断言)。
**② `GET /sessions/{id}/messages` 对不存在/已删除会话回 `404 session_not_found`(行为变更)**:
- 不存在 / 已删除 ⇒ `404 {"error":{"code":"session_not_found","message":"session \"<id>\" not found"}}`;
- **存在但没有消息 ⇒ 仍 `200 {"data":[]}`**(空会话绝不能被答成 404,有回归用例钉住);
- 参数形状校验(`limit/before/after/q`)**仍先于 404**(畸形请求仍是 400);
- 存在性判定**复用既有存储面**(未新增 SQL/存储方法);**判不出来**(未接该视图的存储)保持旧语义 —— 判不出 ≠ 不存在。
- **一个必须告诉你们的必然推论**:隔离会话(群聊/陌生人的 `sess-xxx`,以及 `sess-backthink`)**不在会话注册表里** ⇒ 它们现在**也**回 404。这与 `POST /sessions/{id}/read`(**v0.37 起就是 404**)是同一个答案。我查过活库:`chat_sessions` 里**根本没有 `sess-*` 行**,`sess-backthink` 消息数 0,前端唯一提到它的是 `graph_update` 的内存桶 ⇒ **我判断没有客户端按 id 读隔离会话**。
👉 **请回一句确认**:你们的 App 会不会「按某个 `sess-*` id 去拉 messages」?若会,我们再加「`sess-` 前缀不判 404」的例外(我倾向不加,保持与 `/read` 一致);若不会,就按现状。
- **未统一**:`PATCH /sessions/{id}` 对未知会话仍是 `404 not_found`(**另一个码**)—— 我们**刻意没动**它以免制造新的破坏性变更,差异已写进 `api-client` §4.4。要全站统一单码的话是一条约定的独立小变更,你们需要就说。
### 二、顺带:**v0.62 新增了一个管理端点**(纯增量,你们做管理端时可用)
`POST /api/v1/admin/llm/reset-from-env`(**owner-only**,**写**,必须带 `confirm:true`,审计 `llm.resetFromEnv`):把 `.env` **确实声明过**的键**覆盖回 env 值**(面板里 env 未声明的键原样保留、组集合不增减)⇒ 这是 materialize 的**反方向显式动作**,即面板上的「**重置为 env 默认**」按钮。
### 三、一处日期小错(提醒你们对齐)
你们那两条登记的标题写的是「**2026-10-05 凌晨**」,而我这台机器(后端唯一运行环境)此刻是 **2026-10-04(周日)** —— 我上一条回执九照抄了你们的日期,现已改回。**建议你们把登记日期校正为 2026-10-04 深夜**,免得将来对时间线时打架。
+4 -1
View File
@@ -683,9 +683,12 @@ PDF · 563 B · 24 字 · 已读入
### 状态
- **`android` = `origin/android` = `647cf47`,工作区干净**,**831 测试 / 0 失败 / 0 错误**。
- **`android` = `origin/android` = `d2169c6`,工作区干净**,**831 测试 / 0 失败 / 0 错误**。
- 可安装包:`app/build/outputs/apk/debug/app-debug.apk`。
- 那轮「装机验收」的**四项全部有设备证据**(含 ① 的更正:本来就是好的,是我测量假象):见上一节「装机验收轮」。
- **联调凭据(压缩后最容易丢,务必先看这条)**:后端调试用的 `X-API-Key` **已由主人授权落地到本机 `dev-secrets.local.md`**(仓库根目录,**已 gitignore、不在仓库里**——已用 `git check-ignore` / `git ls-files` 双重核对)。用法:`curl -H "X-API-Key: <该文件里的值>" $BASE/api/v1/…`,**owner 级**(`/sessions`、`/admin/observability/{metrics,logs}`、`/admin/system/storage`、`/admin/personas` 全 `200`;不带 key 回 `401`)。**上一个 key(`rG14nMNX…`)已失效(实测 `401`),不要再试。** 轮换只改那个文件,代码/文档里没有任何硬编码。
- **`devdocs/` 本身是入库的**(主人 2026-10-04 授权),所以本锚点跟着仓库走(`git log devdocs/` 可查);但**凭据绝不进 `devdocs/`**,只在那份 gitignore 的文件里。
- 模拟器:AVD `Pixel_10_Pro_XL`,**启动需加 `-memory 6144`**(否则 2 GB 会自己 ANR,见「踩到的坑」),`adb reverse tcp:10942 tcp:10942`,App 服务器地址填 `http://127.0.0.1:10942`。
### 本轮(W8→W22)已落地并推送的模块(一行一个)