# getaiemail 整站完成度复核 QA

- Task: t_dfe6de85
- Tenant: site-review-20260602-rerun-1700
- URL: https://getaiemail.com/
- Date: 2026-06-02
- Tester: 墨测
- Scope: 功能 / 桌面+390 移动端 / 数据脚本+事件请求 / SEO / Pricing / 法务页 / 禁词
- 结论: BLOCK

## 结论

BLOCK。P0=0，P1=2，P2=2。

站点主体完成度已明显闭环：核心页面可访问，9 个 scenario 路由可访问，核心 Generate Draft 流程可达，结果可 Copy，Pricing 三档逻辑清楚，移动端 390 无横向滚动，SEO 基础件基本正常。

阻断点集中在数据链路：Plausible runtime 与 `/api/events` 事件请求已验证，但 GA4 和 Microsoft Clarity 在真实浏览器 runtime 中不存在；这不满足本任务“GA4/Clarity/Plausible runtime 不能只看 HTML”的验收要求。

## P0 / P1 / P2

| ID | 级别 | 状态 | 证据 | 建议 |
|---|---|---|---|---|
| QA-P1-001 | P1 | 未通过 | Browser runtime: `typeof window.plausible === function`，但 `typeof window.gtag === undefined`、`window.dataLayer === null`；scripts 只有 `https://plausible.io/js/script.js`，无 `googletagmanager` / GA4 collect 请求。 | 接入 GA4 runtime，真实触发 page_view + `generate`/`pricing_click` 等核心事件后复测。 |
| QA-P1-002 | P1 | 未通过 | Browser runtime: `typeof window.clarity === undefined`，scripts 无 `clarity.ms`，Network 无 Clarity 请求。HTML 内只存在“如果 window.clarity 则调用”的 wrapper，不等于已加载 Clarity。 | 接入 Microsoft Clarity runtime，并验证至少一次真实 session/recording 请求。 |
| QA-P2-001 | P2 | 待确认 | `/auth` 返回 404；`/login` 和 `/api/auth/login?returnTo=/` 正常，后者 302 到 Google OAuth。任务写了 checkout/login/auth，若无公开 `/auth` 页面可接受；若 PRD 要求 `/auth`，需补 route/redirect。 | 明确 `/auth` 是否是公开路由；否则不用暴露。 |
| QA-P2-002 | P2 | 建议优化 | 首页响应头缺少 HSTS/CSP 等显式安全头；HTTPS/TLS 正常，Cloudflare 可用。 | 上线前补 `Strict-Transport-Security`、基础 CSP/permissions-policy。 |

## 路由与可达性

| Route | HTTP | SEO/Robots | H1 | 备注 |
|---|---:|---|---:|---|
| `/` | 200 | canonical `https://getaiemail.com` | 1 | 首页正常 |
| `/cold-email-generator` | 200 | `index, follow` | 1 | scenario 正常 |
| `/follow-up-email-generator` | 200 | `index, follow` | 1 | scenario 正常 |
| `/professional-email-generator` | 200 | `index, follow` | 1 | scenario 正常 |
| `/sales-email-generator` | 200 | `index, follow` | 1 | scenario 正常 |
| `/reply-email-generator` | 200 | `index, follow` | 1 | scenario 正常 |
| `/thank-you-email-generator` | 200 | `index, follow` | 1 | scenario 正常 |
| `/apology-email-generator` | 200 | `index, follow` | 1 | scenario 正常 |
| `/meeting-email-generator` | 200 | `index, follow` | 1 | scenario 正常 |
| `/resignation-email-generator` | 200 | `noindex, follow` | 1 | 已从 sitemap 排除；robots disallow |
| `/checkout` | 200 | `noindex, nofollow` | 1 | Pro checkout 页面正常 |
| `/login` | 200 | `noindex, nofollow` | 1 | Google OAuth 入口正常 |
| `/auth` | 404 | `noindex` | 0 | 见 QA-P2-001 |
| `/privacy` | 200 | canonical 正常 | 1 | 法务页正常 |
| `/terms` | 200 | canonical 正常 | 1 | 法务页正常 |
| `/cookie-policy` | 200 | canonical 正常 | 1 | 法务页正常 |
| `/refund-policy` | 200 | canonical 正常 | 1 | 法务页正常 |
| `/robots.txt` | 200 | Allow `/`; disallow resignation/login/checkout | - | 正常 |
| `/sitemap.xml` | 200 | 13 URLs | - | 不含 resignation |

## 核心功能

| 项目 | 结果 | 证据 |
|---|---|---|
| Generate Draft 可达 | PASS | 首页 workbench 可见；点击 `GENERATE DRAFT` 后产生 Draft Ready 区域。后续 QA 会话达到 3/3 免费额度后，`/api/generate` 返回 429，并显示友好额度提示。 |
| 结果 Copy | PASS | Browser monkeypatch 验证 `Copy subject` / `Copy body` 调用了 `navigator.clipboard.writeText`；复制文本可读。 |
| 额度与错误态 | PASS | `/api/usage` 返回 `{"plan":"free","used":3,"limit":3,"remaining":0}`；超额时 UI 显示 `Free preview allows 3 draft generations per day...`，非白屏。 |
| 登录入口 | PASS | `/login` 200；`/api/auth/login?returnTo=/` 302 到 Google OAuth，回调 `https://getaiemail.com/api/auth/callback/google`，cookie `gae_oauth_state` 为 Secure/HttpOnly/SameSite=Lax。未实际授权 Google 登录。 |
| Checkout 页面 | PASS | `/checkout` 200，显示 Pro annual、$7.99/mo equivalent、billed $95.88/year、Stripe Checkout 文案。未执行真实支付。 |

## Pricing

PASS。

移动端和桌面均显示三档：
- Free: $0，3 drafts/day。
- Pro: $7.99/mo equivalent，billed $95.88/year，800 credits/month，Stripe Checkout。
- Team: Contact，明确 “Team billing is not self-serve yet; we contact you before enabling seats.”

Team/Business 未实装支付时未误导为可自助付款。当前可见的是 Team waitlist，不是 checkout。

## 移动端 / 响应式

| Viewport | 结果 | 证据 |
|---|---|---|
| Desktop 1440x1000 | PASS | `scrollWidth=1440`, `clientWidth=1440`, overflow=false；截图 `evidence/browser/desktop.png`。 |
| Mobile 390x844 | PASS | `scrollWidth=390`, `clientWidth=390`, overflow=false；截图 `evidence/browser/mobile390.png`。 |

390px 视觉复核：Hero 单列可读，Sign in/Generate 可见，主 CTA 可见，generator form 可输入，结果卡片和 Copy 按钮可见，scenario cards 单列，Pricing 三档可读，FAQ/footer 可达。未发现横向滚动、文字重叠或关键按钮丢失。

注意：390px 下主 nav 中 Cold/Follow-up/Reply/Pricing/FAQ 的 rect 为 0，顶部只保留 logo + Sign in + Generate；scenario rail 在正文中可达。当前不是阻断，但如果要求移动端顶部完整导航，需要补 hamburger/drawer。

## 数据脚本与事件请求

| 项目 | 结果 | 证据 |
|---|---|---|
| Plausible runtime | PASS | `typeof window.plausible === function`; script `https://plausible.io/js/script.js`; Network 有 `https://plausible.io/api/event`。 |
| 自定义事件 | PASS | 点击 Generate 后捕获 `navigator.sendBeacon('/api/events')`，Network 有 `POST https://getaiemail.com/api/events` 200。 |
| Generate API | PASS / expected 429 after quota | 点击后 Network 有 `POST /api/generate`；会话已达 3/3 后返回 429，并有友好文案。 |
| GA4 runtime | FAIL P1 | `typeof window.gtag === undefined`; `window.dataLayer === null`; 无 `googletagmanager` script/collect 请求。 |
| Clarity runtime | FAIL P1 | `typeof window.clarity === undefined`; 无 `clarity.ms` script/request。 |

## SEO

PASS with data P1 unrelated to SEO。

- title/meta description: 主要页面均存在。
- OG: `og:title` / `og:description` / `og:image` 存在。
- canonical: 主要页面存在并指向当前 URL。
- H1: 公开页面 H1=1，`/auth` 404 除外。
- schema: 首页 WebApplication + FAQPage；8 个 indexable scenario 被 homepage schema `hasPart` 指到。
- resignation: `/resignation-email-generator` 为 `noindex, follow`，robots disallow，且 sitemap 不包含；homepage schema 未指向 resignation。
- sitemap: 13 URLs，包含首页、8 个 indexable scenario、privacy/terms/cookie/refund，不含 login/checkout/resignation。
- robots: `Allow: /`，`Disallow: /resignation-email-generator`、`/login`、`/checkout`，Sitemap 指向正确。

## 禁词扫描

PASS。

扫描公开 HTML 未命中：`placeholder` / `prototype` / `coming soon` / `static preview` / `lorem ipsum` / `todo`。

## 性能

Lighthouse home:

| Category | Score |
|---|---:|
| Performance | 97 |
| Accessibility | 96 |
| Best Practices | 100 |
| SEO | 100 |
| Agentic Browsing | 100 |

Core metrics:
- LCP: 2.4s
- CLS: 0
- TBT: 40ms
- Speed Index: 1.7s
- TTI: 3.0s

## 安全 / 合规

- HTTPS/TLS: PASS，TLSv1.3，证书 issuer Google Trust Services WE1，notAfter 2026-08-25。
- OAuth state cookie: PASS，Secure + HttpOnly + SameSite=Lax。
- 法务页: privacy/terms/cookie/refund 200，footer 可达，联系邮箱 `hello@getaiemail.com` 为站点域名。
- 明显敏感信息泄露: 未在本轮 HTML smoke 中发现。
- 安全头: P2，缺少显式 HSTS/CSP 等硬化头。

## 证据文件

Workspace:
- `evidence/http_seo_results.json`
- `evidence/sitemap.xml`
- `evidence/home.html`
- `evidence/login.html`
- `evidence/checkout.html`
- `evidence/browser_results.json`
- `evidence/browser/desktop.png`
- `evidence/browser/mobile390.png`
- `evidence/lighthouse-home.json`
- `evidence/headers-home.txt`

## 下游动作

1. 数据修复：接入 GA4 + Clarity runtime，重新验证真实 page_view 和核心事件请求。
2. 产品/开发确认：`/auth` 是否需要公开 route；若不需要，任务验收中不要再列为公开路由。
3. 安全硬化：补 HSTS/CSP/permissions-policy。
4. 修完后执行窄口径 Re-QA：只复测 GA4/Clarity runtime、核心事件请求、`/auth` route 决策和安全头。
