Some checks failed
CI / Lint & TypeCheck (push) Has been cancelled
CI / Unit Tests (push) Has been cancelled
CI / Build Frontend (push) Has been cancelled
CI / Rust Check (push) Has been cancelled
CI / Security Scan (push) Has been cancelled
CI / E2E Tests (push) Has been cancelled
Storyline 1 (医院行政小李) results: - 1.1 SKIP (非首次安装) - 1.2 PASS (首次对话科室识别) - 1.3 PASS (会议纪要) - 1.4 NOT TESTED (Collector Hand) - Found BUG-003 (require→import), BUG-004 (health formula), BUG-008 (no history)
43 lines
2.4 KiB
Markdown
43 lines
2.4 KiB
Markdown
# Bug 跟踪汇总
|
|
|
|
> 日期: 2026-04-09
|
|
> 来源: 预发布探索性测试 (4条故事线 + 模块矩阵)
|
|
|
|
| Bug ID | 场景 | 严重度 | 标题 | 状态 | 修复提交 |
|
|
|--------|------|--------|------|------|----------|
|
|
| BUG-001 | Relay 全场景 | P0 | SaaS Relay DATABASE_ERROR: SUM(token_count) 返回 NUMERIC 而非 bigint | FIXED | bd6cf8e |
|
|
| BUG-002 | 场景1.2 | P2 | 旧对话错误消息缓存: 修复后刷新页面旧错误仍显示,需点"重试"或新建对话 | WONTFIX | — |
|
|
| BUG-003 | 启动 | P1 | saasStore.ts fetchAvailableModels 使用 require() 导致模型同步失败 | FIXED | require → await import |
|
|
| BUG-004 | Health | P1 | Health check 连接池使用率公式错误 (max-idle 而非 size-idle) | FIXED | pool.size() 替代 max_connections |
|
|
| BUG-005 | 启动 | P2 | OfflineStore 无模型配置时重连循环过于频繁 | KNOWN | 首次启动预期行为 |
|
|
| BUG-006 | 启动 | P2 | WebMCP 注册失败 TypeError: Required member is undefined | KNOWN | 需 Chrome 146+ flag |
|
|
| BUG-007 | Admin | P2 | Admin V2 authStore 测试 19 个失败 (113 passed) | OPEN | 测试代码与实现不同步 |
|
|
| BUG-008 | 场景1.6 | P1 | SaaS Relay 模式只发送当前消息,不发送对话历史 (无上下文记忆) | OPEN | saas-relay-client.ts:125 |
|
|
|
|
## BUG-001 详细
|
|
|
|
**根因**: PostgreSQL `SUM(bigint)` 返回 `NUMERIC` 类型,但 sqlx Rust 绑定期望 `i64` (INT8)。`key_pool.rs` 的 `select_best_key()` 查询中 `COALESCE(SUM(uw.token_count), 0)` 缺少 `::bigint` 转换。
|
|
|
|
**影响**: 所有 SaaS Relay 聊天请求 100% 失败,返回 `500 DATABASE_ERROR`。
|
|
|
|
**修复**: 4 处 SUM() 添加 `::bigint` 转换:
|
|
- `relay/key_pool.rs` — 根因
|
|
- `relay/service.rs` — sort_candidates_by_quota
|
|
- `account/handlers.rs` — dashboard stats
|
|
- `workers/aggregate_usage.rs` — usage aggregation
|
|
|
|
## BUG-002 详细
|
|
|
|
**现象**: 修复 BUG-001 后刷新页面,旧对话仍显示 "Relay error: 500 DATABASE_ERROR"。需手动点"重试"或新建对话才能恢复正常。
|
|
|
|
**原因**: 前端 IndexedDB 缓存了历史错误消息,刷新不会自动清除。
|
|
|
|
**决定**: WONTFIX — 这是预期行为(保留历史消息真实性),用户可通过"重试"恢复。
|
|
|
|
## 测试通过场景
|
|
|
|
| 场景 | 结果 | 备注 |
|
|
|------|------|------|
|
|
| 1.2 首次对话 (医务科) | PASS | Relay 完整链路: Desktop→SaaS→Key Pool→kimi-for-coding |
|
|
| 离线队列恢复 | PASS | "已恢复连接, 发送中 4 条" 自动重发 |
|