# QA 验收报告 - Subnautica2Maps SDK Clean 09 Final Re-QA

- URL: https://subnautica2maps.com/
- 地图 URL: https://subnautica2maps.com/map/
- 日期: 2026-05-21 UTC
- 验收人: 墨测
- 任务: t_d8108746
- 复测 commit: 8ce854a0d97f19d734b18e42051ec41a04440827
- 结论: QA_NO_GO

## 0. 结论

QA_NO_GO。

前一轮主要工程 blocker 已明显改善：`/map/` Lighthouse 达标，`/privacy` 与 `/terms` 已 308 跳转，Plausible 脚本与 map 事件调用链存在，真实用户地图任务可跑通，390px 与 1440px 视觉较上一轮改善。

但仍有上线前 P1：
1. `subnautica2maps.com` 仍无 MX，生产页仍公开 `hello@subnautica2maps.com`，联系邮箱不可验证可收信。
2. 生产 `/map/` 在 Playwright/Chrome pageerror 中重复出现 React hydration/text mismatch：`Minified React error #418`。site-qa 要求 console/page errors = 0。

已创建返修卡：
- t_f7ab6ccc：墨界修 React hydration/page errors，并复核移动/桌面视觉不回退。
- t_171f29bf：墨运配置 MX 或替换为可收信站点域名邮箱。

## 1. 构建 / 版本 / 冒烟

| 项目 | 状态 | 证据 |
|---|---|---|
| Git commit | PASS | `/root/projects/subnautica2maps` HEAD = `8ce854a0d97f19d734b18e42051ec41a04440827` |
| Git 工作区 | PASS | `git status --short` 无输出 |
| npm verify | PASS | `Site verification passed: 9 sitemap URLs checked.` |
| npm build | PASS | Next.js build 成功，生成 14 static pages |
| 生产路径冒烟 | PASS | `/`, `/map/`, `/robots.txt`, `/sitemap.xml`, `/favicon.ico`, `/privacy-policy/`, `/terms-of-service/` 200；`/privacy` -> `/privacy-policy/` 308；`/terms` -> `/terms-of-service/` 308 |
| Console/page errors | FAIL | Playwright production run 捕获多次 `Minified React error #418` pageerror |

## 2. 前一轮 blocker 复测

| ID | 前一轮问题 | 本轮状态 | 证据 |
|---|---|---|---|
| QA-001 | `/map/` Lighthouse Performance <80 / CLS >0.1 | PASS | Production Lighthouse `/map/`: Performance 92, CLS 0, LCP 2.3s |
| QA-002 | analytics 脚本缺失 / 事件无接收端 | PASS_WITH_LIMIT | Production HTML 有 `https://plausible.shipsolo.io/js/script.js`、`data-domain="subnautica2maps.com"`、`window.plausible`；`trackEvent` dispatch `subnautica2maps:event` 并调用 `window.plausible(name,{props})`；Chrome performance entries 观察到 `plausible.shipsolo.io/api/event`；未验证 Plausible dashboard 入库 |
| QA-003 | 域名邮箱无 MX | FAIL P1 | `dig +short MX subnautica2maps.com` 空；页面仍公开 `hello@subnautica2maps.com` |
| QA-004 | 390px hero overlap / 右侧裁切 / bottom sheet 拥挤 | PARTIAL P2 | Playwright 390px 截图无 hero overlap、无水平滚动、Reset 未裁切；bottom sheet 仍占下方视口且详情内容需继续向下滚动，作为 P2 polish 交墨界复核 |
| QA-005 | `/privacy`、`/terms` 404 | PASS | `/privacy` 308 -> `/privacy-policy/`；`/terms` 308 -> `/terms-of-service/` |
| QA-006 | 1440px desktop map crowding | PASS_WITH_P2 | 1440px 三栏 map-first 成立，详情可读；marker cluster 仍偏密但未阻断核心任务，保留 P2 |

## 3. 真实用户任务

| 用户任务 | 状态 | 证据 |
|---|---|---|
| 打开地图 | PASS | `/map/?q=silver` 正常渲染 tactical feed + map + selected signal |
| 搜索资源 | PASS | 输入 `copper` 后列表/地图内容更新；可见 copper 相关 POI/资源结果 |
| 筛选 marker | PASS | Black Boxes / POIs / Resources chips 可点击并改变结果集 |
| 打开 marker/detail | PASS | 选择 `Cicada Wreck - Lander Garage` 后右侧/底部详情更新，展示 coordinates/depth/biome/source/updated/confidence |
| 路线计算 | PASS | 输入坐标后 `Calculate approximate route` 显示方向和距离，例如 `NORTH-WEST · 323°` / `~518,621 units total` |
| Pan/Zoom | PASS | `+` 控件可用；DOM transform/视觉状态变化可观察 |
| Local found | PASS | `Mark Local Found` 写入 localStorage `s2-found`，事件不包含 raw current coordinates |
| 移动 bottom sheet | PASS_WITH_P2 | 390px 可读可操作，但仍拥挤 |

## 4. 响应式 / UI

自动断点：1920 / 1440 / 1280 / 1024 / 768 / 430 / 390 / 360 / 320。

| 项目 | 状态 | 证据 |
|---|---|---|
| 水平滚动 | PASS | 9 个断点 `overflowX=false` |
| 搜索框 | PASS | 9 个断点搜索框可见 |
| 390px hero overlap | PASS | `09-map-390.png` 中 label/title 无重叠 |
| 390px right-edge clipping | PASS | map 宽度在 viewport 内，Reset 控件未裁切 |
| 390px bottom sheet | P2 | 可读但占据下方视口，详情内容折叠到首屏以下 |
| 1440px desktop map | PASS_WITH_P2 | map-first 三栏成立，右侧详情可读；marker cluster 仍密集 |
| 占位/半成品文案 | PASS | 可见 body 未检出 prototype / coming soon / fallback / placeholder |

截图：
- 390px: `/root/.hermes/kanban/boards/site-factory/workspaces/t_d8108746/reports/site-pipeline/site-rerun-subnautica2maps-20260520-stitch-sdk-clean/subnautica2maps/09-map-390.png`
- 1440px: `/root/.hermes/kanban/boards/site-factory/workspaces/t_d8108746/reports/site-pipeline/site-rerun-subnautica2maps-20260520-stitch-sdk-clean/subnautica2maps/09-map-1440.png`

## 5. 性能

| 页面 | Performance | Accessibility | Best Practices | SEO | LCP | CLS | TBT | 状态 |
|---|---:|---:|---:|---:|---|---|---|---|
| `/map/` | 92 | 100 | 100 | 100 | 2.3s | 0 | 300ms | PASS |

原始 Lighthouse：
- `/root/.hermes/kanban/boards/site-factory/workspaces/t_d8108746/reports/site-pipeline/site-rerun-subnautica2maps-20260520-stitch-sdk-clean/subnautica2maps/09-lighthouse-map.json`

## 6. SEO / 合规 / 安全

| 项目 | 状态 | 证据 |
|---|---|---|
| title/meta/canonical/OG | PASS | 核心页面存在 title；上一轮 SEO 基础件未见回退 |
| robots/sitemap | PASS | `/robots.txt`、`/sitemap.xml` 200；verify 检查 9 URLs 通过 |
| Privacy/Terms | PASS | `/privacy-policy/`、`/terms-of-service/` 200；短路径 308 |
| No affiliation | PASS | 首页/map/policy 仍有 fan-made / not affiliated / not endorsed 口径 |
| Gmail 占位 | PASS | 生产 HTML 未检出 gmail.com |
| 域名邮箱 | FAIL P1 | 无 MX，`hello@subnautica2maps.com` 不可验证可收信 |

## 7. 埋点验收

| 项目 | 状态 | 证据 |
|---|---|---|
| Plausible script | PASS | 生产 `/`, `/map/`, `/privacy-policy/`, `/terms-of-service/` HTML 均检出 `plausible.shipsolo.io/js/script.js` |
| 自定义事件 | PASS_WITH_LIMIT | `map_search` / `map_filter_toggle` / `marker_open` / `route_calculate` / `local_progress_toggle` 均 dispatch 本地事件并调用 Plausible；未登录 dashboard，未验证最终入库 |
| GA4 / Clarity / Ahrefs | N/A | 当前实现只接 Plausible，Privacy 已按 Plausible 披露；如后续接入 GA4/Clarity/Ahrefs 需同步 Privacy |

## 8. 阻断问题

| ID | 严重性 | 描述 | 责任人 | 返修卡 |
|---|---|---|---|---|
| QA-003 | P1 | `subnautica2maps.com` 无 MX，但生产 Footer/Privacy 使用 `hello@subnautica2maps.com` | 墨运/Host | t_171f29bf |
| QA-007 | P1 | 生产 `/map/` Playwright/Chrome pageerror 重复出现 React hydration/text mismatch `Minified React error #418` | 墨界 | t_f7ab6ccc |
| QA-004R | P2 | 390px bottom sheet 仍偏拥挤，详情内容首屏未完整露出 | 墨界 | t_f7ab6ccc |
| QA-006R | P2 | 1440px marker cluster 偏密，map-first 体验仍可再压实 | 墨界 | t_f7ab6ccc |

## 9. 建议修复顺序

1. 墨界先定位 React #418：检查服务端/客户端文本不一致、不可稳定渲染的 glyph/icon、URL/query 初始状态、客户端专有状态是否参与首屏 hydration。
2. 墨运/Host 配置 MX，或替换为已验证可收信的站点域名邮箱。
3. 墨界顺手复核 390px bottom sheet 与 1440px marker cluster，但不要大改结构，避免回归性能和核心地图交互。
4. 返修后重新跑本报告中的 smoke + Lighthouse + Playwright real-user + 9 断点截图。

## 10. 原始产物

- Playwright 结果 JSON: `/root/.hermes/kanban/boards/site-factory/workspaces/t_d8108746/reports/site-pipeline/site-rerun-subnautica2maps-20260520-stitch-sdk-clean/subnautica2maps/09-playwright-results.json`
- Lighthouse JSON: `/root/.hermes/kanban/boards/site-factory/workspaces/t_d8108746/reports/site-pipeline/site-rerun-subnautica2maps-20260520-stitch-sdk-clean/subnautica2maps/09-lighthouse-map.json`
- Playwright script: `/root/.hermes/kanban/boards/site-factory/workspaces/t_d8108746/reqa-playwright.js`
