# 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 响应
```
