# OCDP 未修复问题清单 **最后更新:** 2026-05-14 (Round 3 回归测试) **测试覆盖:** 3 轮测试 (Round 1: v1 基线, Round 2: 配额+YAML, Round 3: 回归+新功能) --- ## 已知未修复 Bug (15 个) ### P1 — 高优先级 (1) | # | 标题 | 严重度 | 描述 | Round | |----|------|--------|------|-------| | 1 | Detail API 返回 replicas: 0 | **P1** | `GET /instances/{id}` 始终返回 `replicas: 0`,与 List API 不一致 | R3 NEW | ### P2 — 中优先级 (8) | # | 标题 | 严重度 | 描述 | Round | |----|------|--------|------|-------| | 2 | List API 移除 values 字段 | **P2** | List instances 不再返回 `values`,仅在详情API返回。可能是性能优化,但属于 API 行为变更 | R3 NEW | | 3 | API 层无配额预检查 | **P2** | 后端接受所有部署请求(返回200),不验证是否超配额。K8s ResourceQuota 在 pod 级阻止,但 Helm release 仍创建 | R2 | | 4 | Values 冲突时无警告 | **P2** | 同时提供 `values` JSON 和 `valuesYaml` 时,JSON 静默覆盖 YAML,无任何警告 | R2 | | 5 | Tags 端点缺失 | **P2** | `GET /registries/{id}/repositories/{repo}/tags` 返回 404 | R1 | | 6 | Metrics API 缺失 | **P2** | `GET /monitoring/clusters/{id}/metrics` 返回 404 | R1 | | 7 | Stats API 缺失 | **P2** | `GET /clusters/{id}/stats` 返回 404 | R1 | | 8 | Kubeconfig API 缺失 | **P2** | `GET /clusters/{id}/kubeconfig` 返回 404 | R1 | | 9 | Namespace 静默覆盖 + HTTP 200 | **P2** | 用户部署到他人的 namespace 时,API 返回 201 但 namespace 被静默改为自己的。应返回 403 | R1 | ### P3 — 低优先级 (6) | # | 标题 | 严重度 | 描述 | Round | |----|------|--------|------|-------| | 10 | 用户枚举漏洞 | **P3** | 不存在用户 "user not found" vs 存在用户 "invalid password",错误消息不同 | R1 | | 11 | 无登录速率限制 | **P3** | 10 次快速失败全部返回 401,无 429 或锁定 | R1 | | 12 | Nginx 版本泄露 | **P3** | `Server: nginx/1.27.5` 响应头暴露精确版本 | R1 | | 13 | CORS: * | **P3** | `Access-Control-Allow-Origin: *` 允许任意跨域 | R1 | | 14 | 缺少安全响应头 | **P3** | 无 HSTS, X-Frame-Options, CSP, X-Content-Type-Options | R1 | | 15 | `/health` 端点返回 SPA HTML | **P3** | 健康检查返回 index.html 而非 `{"status":"ok"}` | R1 | --- ## 已修复 (Round 3 验证通过) | 原 Bug ID | 描述 | 修复后行为 | |-----------|------|-----------| | BUG-001 | Launch 按钮无反应 (P0) | ✅ 部署端到端正常 | | BUG-002 | SPA 旧路由空白页 (P0) | ✅ 所有旧路由返回 SPA | | BUG-003 | DELETE 返回 404 (P1) | ✅ 返回 HTTP 204 | | BUG-004 | DELETE 空响应体 (P1) | ✅ HTTP 204 No Content | | — | InstanceCard 无 scaling UI | ✅ +/- 按钮 + K8s API | | — | ModifyModal values 为空 | ✅ Full Helm values + diff | | — | Per-card Refresh button | ✅ 移除,改为 page-level | --- ## 修复优先级排序 ``` 立即修复 (P1): 1. Detail API replicas=0 → 从 K8s live state 同步 短期修复 (P2): 2. API 层配额预检查 → POST instances 时验证 3. Values 冲突警告 → 两者同时提供时返回 warning 4. Namespace 拒绝而非覆盖 → 返回 403 5. 缺失端点实现 (tags/stats/metrics/kubeconfig) 安全加固 (P3): 6. 登录错误消息统一 → "Invalid username or password" 7. 速率限制 → max 5/min per IP 8. Nginx: server_tokens off + 安全头 9. CORS 收紧 → 具体域名 10. /health → JSON 响应 ```