diff --git a/wiki/known-issues.md b/wiki/known-issues.md index 79d8871..4c07972 100644 --- a/wiki/known-issues.md +++ b/wiki/known-issues.md @@ -1,6 +1,6 @@ --- title: 已知问题 -updated: 2026-04-15 +updated: 2026-04-16 status: active tags: [issues, bugs] --- @@ -38,6 +38,41 @@ tags: [issues, bugs] | V13-GAP-05 | Structured Data Source 无 Admin UI | ✅ Admin Knowledge 新增"结构化数据"Tab | | V13-GAP-06 | PersistentMemoryStore 遗留模块 | ✅ 全量移除 — persistent.rs 611→57 行 | +## Heartbeat 参数名修复 (2026-04-16) + +| 问题 | 级别 | 状态 | +|------|------|------| +| Tauri invoke 参数名 snake_case 错误 | P1 | ✅ 已修复 | + +**根因**: Tauri 2.x `#[tauri::command]` 默认 `rename_all = "camelCase"`,前端 invoke 必须用 camelCase(`agentId` 不是 `agent_id`)。`intelligence-client.ts` 中 3 处 invoke 调用使用了错误的 snake_case。 + +**修复**: commit `f6c5dd2` — 3 处参数名修正 + HealthPanel.tsx 恢复正确命名。 + +**教训**: 所有 Tauri invoke 调用的参数名必须用 camelCase,与 Rust 端 snake_case 参数名对应。参见 `browser-client.ts` 中已有的正确示例。 + +## Relay API Key 解密自愈 (2026-04-16) + +| 问题 | 级别 | 状态 | +|------|------|------| +| Provider Key 解密失败导致整个 relay 500 | P1 | ✅ 已修复 | + +**根因**: `key_pool.rs` 的 `select_best_key` 遍历 key 时,第一个解密失败的 key 就通过 `?` 直接返回 500,不会尝试下一个。如果 DB 中有旧的加密 key(密钥已变更),整个 relay 请求被阻断。重新保存只能临时解决,旧 key 仍在 DB 中。 + +**修复**: commit `b69dc61`: +- 解密失败时 `warn + continue` 跳到下一个 key +- 启动自愈 `heal_provider_keys()`: 逐个解密并重新加密,无法解密的标记 inactive + +**教训**: 密钥池选择应容错(skip bad keys),而不是 fail-fast。加密数据迁移应自动化。 + +## 设置页面清理 (2026-04-16) + +| 变更 | 说明 | +|------|------| +| 删除"用量统计"页面 | 与"订阅与计费"功能重复 | +| 删除"积分详情"页面 | 与"订阅与计费"功能重复 | + +commit `7dea456` — 移除 UsageStats + Credits 组件及菜单项。 + ## 三端联调测试 V2 (2026-04-15) 通过 Chrome DevTools MCP + Tauri MCP 实际界面操作验证。 diff --git a/wiki/log.md b/wiki/log.md index fdb2f34..6778f80 100644 --- a/wiki/log.md +++ b/wiki/log.md @@ -1,6 +1,6 @@ --- title: 变更日志 -updated: 2026-04-15 +updated: 2026-04-16 status: active tags: [log, history] --- @@ -9,6 +9,17 @@ tags: [log, history] > Append-only 操作记录。格式: `## [日期] 类型 | 描述` +## 2026-04-16 fix | Heartbeat 参数名 + Relay 解密自愈 + 设置清理 + +- **fix(heartbeat)**: Tauri invoke 参数名修正 snake_case → camelCase (`f6c5dd2`) + - intelligence-client.ts 3 处 invoke 调用: agentId/taskCount/totalEntries 等 + - 教训: Tauri 2.x 默认 rename_all=camelCase +- **fix(relay)**: API Key 解密失败自愈 — 启动迁移 + 容错跳过 (`b69dc61`) + - key_pool: 解密失败 skip 到下一个 key (不再 500) + - key_pool: heal_provider_keys() 启动自愈迁移 +- **chore(settings)**: 删除用量统计和积分详情页面 (`7dea456`) + - 与"订阅与计费"功能重复,-240 行 + ## 2026-04-15 feat | Heartbeat 统一健康系统 - **feat(runtime)**: health_snapshot.rs — 统一健康快照收集器 (LLM连接/记忆/会话/系统资源)