docs(changelog): record the App-Plus batch and the build:app false green

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-07-26 00:03:06 +08:00
co-authored by Claude Opus 5
parent 4fc0c1f5f8
commit 29bb10e1fa
+25 -1
View File
@@ -4,7 +4,31 @@
## Unreleased
- 暂无。
- 2026-07-25 23:56–23:59 的 App-Plus 批次已提交但**尚未发布**:未构建云打包 App、未发布 H5、未发布后端 JAR、未重启服务。见下节。
## 2026-07-25 23:56–2026-07-26 00:02|App-Plus 实时对练与构建链修复
### 构建链修复(本批最重要)
- **2026-07-25 23:56**(`a3a5cf94`):修复 `npm --prefix mobile-uni run build:app` 长期**假绿**。`@dcloudio/uni-app-plus` 从未被声明为依赖,缺少该编译器时 `uni build -p app` 不报错、退出码 `0`、照样打印 `DONE Build complete.`,但产物只有 `index.html`(仍带 H5 的 `/h5/assets/...` 基路径)、字体和一个 `704` 字节 preload 片段,没有 `app-service.js`、`app-renderjs.js`、`manifest.json`。
- **2026-07-25 23:56**:因 `docs/MOBILE_APP_PACKAGING.md` 把该命令列为本地验证步骤,本批 renderjs 实时对练代码在装上编译器之前**从未经过 App 编译器**,却曾被当作已验证。本次已按同版本 `3.0.0-alpha-5020120260710001` 声明编译器,在 `tests/app-packaging.test.mjs` 加版本对齐闸门,并在打包文档写明:判定 `build:app` 成功只看产物是否含 `app-service.js`、`app-renderjs.js`、`manifest.json`,不看 `DONE Build complete.`。
### 功能与修复
- **2026-07-25 23:58**(`5cf7ce58`):实时对练支持 App-Plus。媒体与 WebRTC 引擎移入 `realtime-browser-engine.js`,由 `components/practice/RealtimePracticeAppBridge.vue` 的 renderjs 脚本在系统 WebView 内执行;认证的 SDP 交换与 `search_knowledge` 工具调用仍留在逻辑层代理,access token 不下放视图层。H5 路径行为不变。
- **2026-07-25 23:56**(`27f4cdac`):部分 uni-app 平台忽略 `uni.request` 的 `timeout`,导致 Promise 永挂、页面无错误出口。改为本地驱动超时,单次 `finish` 守卫保证只 settle 一次,超时先 `task.abort()` 再 reject。
- **2026-07-25 23:57**(`3055d2be`):替换 App-Plus 不支持的两个 API。`URLSearchParams` 在 App-Plus JS core 缺失,`toLocaleDateString('sv-SE', { timeZone: 'Asia/Shanghai' })` 依赖 App 运行时未附带的完整 ICU 数据,二者曾让工作成果页拼出错误查询串或取到设备本地日期。改为 `encodeURIComponent`,业务日统一走 `currentShanghaiDate()` 固定 UTC+8 偏移;Asia/Shanghai 无夏令时,固定偏移是精确值而非近似。
- **2026-07-25 23:58**(`73712994`):原生 App 不再预生成答案 TTS。此前消息以 `preparing` 建立,文字被卡在等待一次 TTS 往返之后;改为原生端标记 `unavailable` 让文字与引用立即渲染,语音由既有 `unavailable` 分支的播放按钮按需触发,不是取消语音。H5 仍保留预生成。
- **2026-07-25 23:58**(`7b014765`):Agent 追问不再答成澄清。规划器在无关键词命中且模型规划不可用/不合法时回落 `CLARIFY`,导致「如果我要报销,一般需要查哪几个文件?」这类已有上下文的追问被要求澄清。现非媒体请求带 `conversationId` 且 `contextVersion > 0` 时改走 `KNOWLEDGE_QA` 接地检索。**取舍**:第二轮起对「你看着办」「帮我处理一下」这类刻意模糊表述的主动澄清也一并被抑制,会改为执行知识检索;空输入仍由 `requireQuestion` 提前拒绝。
- **2026-07-25 23:58**(`c9f5271d`):补记 `30ef6a8f` 已发布的 `/api/aihr/org/sync-changes` 增量同步契约到 `AGENTS.md` 与 `docs/API_INTEGRATION.md`(稳定 `employee.id` 主体键、先 `dryRun=true` 后同起点 `dryRun=false`、全量 `/sync` 对脱敏手机号与重复成员关系 fail-closed)。仅文档,无代码变更。
- **2026-07-25 23:59**(`4fc0c1f5`):App 版本升至 `0.1.5`(`versionCode 105`)。原生权限与插件未变,属常规云打包重建。
### 验证与边界
- **2026-07-26 00:01**:`vue-tsc --noEmit` 通过;前端单测 `162/162`、后端 `694/694` 通过。后端须显式加 `-DskipTests=false`——`backend/pom.xml` 第 60 行把 `skipTests` 默认设为 `true`,不带该参数的 `mvn test` 是空跑且照样输出 `BUILD SUCCESS`,与上面 `build:app` 是同类假绿。
- **2026-07-26 00:01**:`build:app` 在补齐编译器后产出真实 App 包,并按产物核实分层:`RTCPeerConnection` 与 `getUserMedia` 只出现在 `app-renderjs.js`,`realtime/sdp` 端点只出现在 `app-service.js`,renderjs 侧 `0` 命中。
- **2026-07-26 00:02**:以上仅证明 App 平台可正确编译且分层正确。麦克风授权、实时转写、远端语音播放、前后台切换、断线降级只能在真机 WebView 验证,**未验证**;口径已写入 `docs/MOBILE_APP_PACKAGING.md` 与 `docs/MOBILE_APP_DEVICE_ACCEPTANCE.md`。
- **2026-07-26 00:02**:本批完成层级为「已实现、已本地验证、已提交」。**未构建云打包 App、未发布 H5、未发布后端 JAR、未重启服务、未执行 schema 迁移**;`7b014765` 的 Agent 追问修复需后端 JAR 发布后才在生产生效。
## 2026-07-25 15:40–16:15|组织姓名与考试发布修复