Files
zclaw_openfang/docs/test-results/DEFECT_LIST.md
iven a458e3f7d8
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
docs: add pre-launch audit defect list and release readiness assessment
DEFECT_LIST.md: 38 active defects (0 P0, 6 P1, 23 P2, 9 P3)
- 13 V12 issues confirmed fixed
- 4 new issues discovered during testing

RELEASE_READINESS.md: Overall health 73→79 (+6)
- 2 blocking items: classroom model hardcode + LLM API concurrency
- T5-T8 modules at 78-91/100 (low risk)
- Recommended: fix 2 blockers then release as Beta
2026-04-05 18:52:39 +08:00

133 lines
6.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# ZCLAW 上线前功能审计 — 缺陷清单
> **审计日期**: 2026-04-05 | **审计范围**: T1-T8 模块 | **基线**: V12 审计
## 统计总览
| 严重度 | V12 遗留 | 新发现 | 已修复 | 当前活跃 |
|--------|---------|--------|--------|---------|
| **P0** | 1 | 0 | 1 | **0** |
| **P1** | 11 | 2 | 7 | **6** |
| **P2** | 25 | 2 | 4 | **23** |
| **P3** | 10 | 0 | 1 | **9** |
| **合计** | **47** | **4** | **13** | **38** |
---
## P0 缺陷0 个 — 全部已修复)
| ID | 原V12 ID | 模块 | 描述 | 状态 |
|----|---------|------|------|------|
| ~~P0-01~~ | M4-01 | T2 | 双数据库PersistentMemoryStore vs SqliteStorage | ✅ 已修复 |
---
## P1 缺陷6 个)
| ID | 原V12 ID | 模块 | 描述 | 文件 | 状态 |
|----|---------|------|------|------|------|
| P1-01 | M3-02 | T1 | Browser Hand 返回 pending_execution 不实际执行 | hands/browser.rs | ⚠️ 未修复 |
| P1-02 | M4-03 | T2 | Heartbeat 不自动初始化,需手动 heartbeat_init | heartbeat.rs | ⚠️ 未修复 |
| P1-03 | TC-1-D01 | T1 | LLM API 并发 500 DATABASE_ERROR4/5 并发失败) | saas/relay | ⚠️ 新发现 |
| P1-04 | TC-4-D01 | T4 | GenerationPipeline 硬编码 model="default"SaaS relay 404 | zclaw-kernel/generation/mod.rs:416 | ⚠️ **新发现** |
| P1-05 | M2-05 | T3 | 删除活跃 Agent 无警告,无自动切换 | kernel_commands/agent.rs | ⚠️ 未修复 |
| P1-06 | M2-01 | T3 | agent_get 不返回 soul/system_prompt/temperature/max_tokens | kernel_commands/agent.rs | ⚠️ 部分修复 |
---
## P2 缺陷23 个)
### T1 Hands (5)
| ID | 原V12 ID | 描述 | 状态 |
|----|---------|------|------|
| P2-01 | M3-04 | max_concurrent 未实现5 个并发全被接受) | ⚠️ 未修复 |
| P2-02 | M3-05 | timeout_secs 未实现(无超时保护) | ⚠️ 未修复 |
| P2-03 | M3-10 | toolCount/metricCount 硬编码为 0 | ⚠️ 未修复 |
| P2-04 | TC-1-D03 | Quiz Hand 无输入长度限制100K 字符被接受) | ⚠️ 新发现 |
| P2-05 | M2-08 | max_tokens=0 未被 agent_create 拒绝 | ⚠️ 部分修复 |
### T2 Intelligence (4)
| ID | 原V12 ID | 描述 | 状态 |
|----|---------|------|------|
| P2-06 | M4-08 | heartbeat_init 无最小间隔验证0.001分钟被接受) | ⚠️ 未修复 |
| P2-07 | M4-02 | 反思引擎可能仍基于规则而非 LLMnew_memories=0 | ⚠️ 需确认 |
| P2-08 | TC-2-D01 | identity_propose_change 参数不透明 | ⚠️ 新发现 |
| P2-09 | M4-14/15 | reflection/identity 命令参数名与文档不一致 | ⚠️ 确认 |
### T4 Classroom (2)
| ID | 原V12 ID | 描述 | 状态 |
|----|---------|------|------|
| P2-10 | M11-04 | LLM 失败静默 fallback 到 placeholder无标记 | ⚠️ 未修复 |
| P2-11 | M11-05 | 课堂生成完成强制打开 player不尊重手动关闭 | ⚠️ 未修复 |
### T5 Pipeline (5)
| ID | 原V12 ID | 描述 | 状态 |
|----|---------|------|------|
| P2-12 | M6-03 | pipeline_create 硬编码 Action::HandLLM/Parallel/Condition 丢失 | ⚠️ 未修复 |
| P2-13 | M6-04 | workflowStore steps: p.inputs.length 语义错误 | ⚠️ 未修复 |
| P2-14 | M6-05 | getWorkflow inputs→steps 映射语义错误 | ⚠️ 未修复 |
| P2-15 | M6-06 | 管道操作符 `\|` 在 context.resolve() 中不支持 | ❓ 未验证 |
| P2-16 | M6-07 | 模板中 `{{mustache}}``${inputs}` 混用 | ⚠️ 未修复 |
### T6 SaaS Desktop (2)
| ID | 原V12 ID | 描述 | 状态 |
|----|---------|------|------|
| P2-17 | M7-01 | 前端密码最少 6 字符 vs 后端 8 字符不一致 | ⚠️ 未修复 |
| P2-18 | M7-03 | TOTP QR 码通过外部服务生成,密钥明文传输 | ❓ 未验证 |
### T7 Skills (2)
| ID | 原V12 ID | 描述 | 状态 |
|----|---------|------|------|
| P2-19 | M5-02 | SKILL.md tools 字段未解析75 个技能 tools 被忽略 | ❓ 未验证 |
| P2-20 | M5-03 | Python 技能硬编码 python3Windows 无此命令 | ❓ 未验证 |
### T8 Chat (3)
| ID | 原V12 ID | 描述 | 状态 |
|----|---------|------|------|
| P2-21 | M1-01 | GeminiDriver API Key 在 URL query 参数中 | ❓ 未验证 |
| P2-22 | M1-02 | ToolOutputGuard 只 warn 不 block 敏感信息 | ❓ 未验证 |
| P2-23 | M1-03/04 | Mutex::unwrap() 在 async 中可能 panic | ❓ 未验证 |
---
## P3 缺陷9 个)
| ID | 原V12 ID | 模块 | 描述 | 状态 |
|----|---------|------|------|------|
| P3-01 | TC-2-D02 | T2 | memory_store entry ID 重复 (knowledge/knowledge) | ⚠️ 新发现 |
| P3-02 | M11-07 | T4 | 白板两套渲染实现未统一SceneRenderer SVG + WhiteboardCanvas | ⚠️ 未修复 |
| P3-03 | M11-08 | T4 | HTML export 只渲染 title+duration缺少 key_points | ⚠️ 未修复 |
| P3-04 | M6-08 | T5 | get_progress() 百分比只有 0/50/100 三档 | ⚠️ 未修复 |
| P3-05 | M7-05 | T6 | saveSaaSSession fire-and-forget失败静默 | ❓ 未验证 |
| P3-06 | M7-06 | T6 | chatStream 不传 sessionKey/agentId | ❓ 未验证 |
| P3-07 | M5-04 | T7 | YAML triggers 引号只处理双引号 | ❓ 未验证 |
| P3-08 | M5-05 | T7 | ShellSkill duration_ms 未设置 | ❓ 未验证 |
| P3-09 | M5-06 | T7 | CATEGORY_CONFIG 仅覆盖 9 分类75 技能全为 null | ⚠️ 未修复 |
---
## 修复确认清单
| 原V12 ID | 模块 | 描述 | 修复证据 |
|----------|------|------|---------|
| M4-01 P0 | T2 | 双数据库统一 | unified-client.ts isTauriRuntime() 路由到 SqliteStorage |
| M3-01 P1 | T1 | run_id 丢失 | hand_execute 返回 runId 字段 |
| M3-06 P1 | T1 | 返回值类型不匹配 | {success, output, error, durationMs, runId} |
| M6-01 P1 | T5 | route_intent 未注册 | lib.rs:220 已注册 |
| M6-02 P1 | T5 | v1/v2 解析器分裂 | helpers.rs:93-115 fallback 到 v2 |
| M7-02 P1 | T6 | PUT 布尔值路径参数 | ConfigMigrationWizard.tsx:118 使用 existing.id |
| M7-04 P1 | T6 | refreshToken 未传 body | saas-auth.ts:70-71 发送 refresh_token |
| M11-01 P1 | T4 | blocking_lock 死锁 | generate.rs:141-147 改用 try_lock() |
| M11-02 P1 | T4 | LLM 无 map_err | mod.rs:431-434 .map_err() |
| M11-03 P1 | T4 | 数据仅存内存 | persist.rs SQLite 持久化 |
| M11-06 P2 | T4 | Chat Message ID Date.now() | classroomStore.ts:176 crypto.randomUUID() |
| M2-08 P2 | T3 | 部分参数验证 | 空 name + temperature 越界已拒绝 |
| M5-01 P1 | T7 | tags→triggers 误映射 | skill-discovery.ts:117 优先使用 backend.triggers |