diff --git a/.claude/skills/d8d-dev/journey-mode.md b/.claude/skills/d8d-dev/journey-mode.md index e26a98f..4f1b714 100644 --- a/.claude/skills/d8d-dev/journey-mode.md +++ b/.claude/skills/d8d-dev/journey-mode.md @@ -394,7 +394,14 @@ Story 验证全部通过 ≠ 用户能正常使用系统。旅程模式弥补这 3. 证据阶段(⛔ 强制,不得跳过): - browser_take_screenshot → 保存最终截图到 tests/e2e/screenshots/journey-epic{N}-{M}-final.png - - browser_network_requests → 检查无 localhost API 调用 + - browser_network_requests(static=false) → 检查无 localhost API 调用 + - ⛔ **资源加载状态检查**(新增 — 每条旅程必须执行): + - `browser_network_requests(static=true, filter="\\.(jpg|jpeg|png|gif|webp|svg|mp4|webm|mov)$")` + - 过滤图片/视频资源请求,检查 HTTP 状态码 + - 任何 403/404 → 标记 `resource_status_check.found = FOUND` + 触发修复 + - 常见 403 原因:MinIO 私有 bucket 未用 presigned URL、防盗链、CORS + - 常见 404 原因:资源路径错误、文件未上传 + - 记录到 pipeline-state.yaml 的 `verification_detail.resource_status_check` 4. 修复阶段(⛔ 以下任一条件满足时必须执行,不得跳过): diff --git a/.claude/skills/d8d-dev/reference/platform-nextjs.md b/.claude/skills/d8d-dev/reference/platform-nextjs.md index f0cb19b..6026419 100644 --- a/.claude/skills/d8d-dev/reference/platform-nextjs.md +++ b/.claude/skills/d8d-dev/reference/platform-nextjs.md @@ -282,3 +282,37 @@ getPublicDownloadUrl(key) → getSignedUrl(s3Public, ...) // host=minio-xxx.dev K8S ingress 会将 HTTP 升级为 HTTPS。`S3_PUBLIC_URL` 必须使用 `https://`, 否则 presigned URL 签名会因重定向而失效。 + +--- + +## 9. 资源 URL 可访问性检查(⛔ 强制) + +### 问题描述 + +MinIO bucket 默认私有,所有通过 URL 直接访问的资源(图片、视频)都会返回 403。 +前端 `` 或 `