# FR-152 官網上線測試驗收（E3，CM-2953）

- 驗收日期：2026-10-21
- 驗收對象：線上站 `https://guidant-ai.stg.jedicotech.com`（部署到 `6c34c5f`）；備用網址 `https://guidant-ai-website.pages.dev` 只驗首頁與 robots
- 方法：全部打線上網址、headless（Playwright Chromium、Lighthouse 12.6.1）、只驗不改
- 範圍：sitemap 內 48 個網址（中文 24＋英文 24）全掃；桌機 1440／手機 390 × 亮／暗 共四種組合

## 結論

可上測試站給人看，沒有擋上線的問題。找到 **4 個缺陷**（1 個中、3 個低）與 **2 個風險提醒**，都列在「待修清單」。Search Console 與 Bing 送件**待帳號**。

## 驗收表

| # | 項目 | 結果 | 證據 | 建議修法 |
|---|---|---|---|---|
| 1 | AI 爬蟲抓內文（GPTBot／ClaudeBot UA，中英各 5 頁） | ✅ | 10 頁全部 200，內文都有「Guidant」（首頁、產品、CMMC、CMMC 指南、產品安全頁；指南頁 5～6 次） | — |
| 2 | robots.txt | ✅ | 11 個 AI 爬蟲 `Allow: /`＋`*`，`Sitemap:` 指向 stg 網域 | — |
| 3 | sitemap.xml | ✅（附缺陷 D3） | 48 筆 `<loc>` | 見 D3 |
| 4 | sitemap 每個網址 200 | ❌ 47／48 回 308 | 除首頁外，sitemap 的網址都沒有結尾斜線（`/product`），伺服器 308 轉到 `/product/` 才 200 | D3 |
| 5 | llms.txt | ✅ | 開頭為站名＋一句定位，共 24 個連結，已排除隱私／條款占位頁 | — |
| 6 | `x-robots-tag: noindex`（測試期刻意） | ✅ | stg 與 pages.dev 首頁、`/en/` 都回 `x-robots-tag: noindex` | 正式上線拿掉（見待辦） |
| 7 | canonical 指向 stg、不是 pages.dev | ✅ | 48 頁 canonical 都是 `https://guidant-ai.stg.jedicotech.com/...`；pages.dev 首頁的 canonical 也指 stg | — |
| 8 | hreflang | ✅ | 每頁都有 `zh-TW`／`en`／`x-default` 三筆，指向對應頁 | — |
| 9 | 結構化資料（schema.org validator API） | ✅ 0 錯 0 警告（附缺陷 D1） | 中英共 11 頁：首頁 Organization＋BreadcrumbList；產品頁 SoftwareApplication；功能頁加 FAQPage；方案頁 FAQPage；中文指南 Article＋FAQPage；產品安全頁 Organization | 見 D1 |
| 10 | Google 複合式搜尋結果測試 | ⚠️ 未跑 | 該工具只有網頁介面、要登入，headless 無法代跑；schema.org 驗證已 0 錯 | 決策者有帳號時手動貼一頁 |
| 11 | 社群預覽卡 | ✅（附風險 R1） | 以 facebookexternalhit／Twitterbot／Slackbot／LinkedInBot／LINE UA 抓首頁：全 200、有 `og:title`／`og:description`／`og:image`（1200×630），og 圖六張全 200 | 見 R1 |
| 12 | 每頁主視覺有圖不是占位框 | ✅ | 四種組合掃 48 頁：0 張破圖；占位框只出現在已知的 12 個（多客戶儀表板、租戶切換、CRA 附件一、跨專案證據、部署架構、ISO 附錄 A，中英各一） | — |
| 13 | 導覽每個項目、頁尾每個連結 | ✅ | 中英各 11 個導覽連結（含三個下拉展開）＋17 個頁尾連結，全部 200、語系正確 | — |
| 14 | 手機選單 | ✅ | 390 寬點「選單」展開 22 個連結，中英都正常 | — |
| 15 | 語系切換 | ✅ | `/solutions/cmmc/` 點 EN → `/en/solutions/cmmc`、`<html lang="en">`、標題換英文；反向同樣正確 | — |
| 16 | FAQ 展開 | ❌ 英文指南 | 中文指南 6 個摺疊鈕，點第二個 `aria-expanded` false→true；**英文指南 0 個**，FAQ 只顯示成一般粗體段落 | D1 |
| 17 | 表單送出 | — 不測 | E2 延後（決策者裁示），本棒不測 | — |
| 18 | 待確認／內容準備中殘留 | ✅ | 48 頁可見文字無 🟡🔵、【待確認】；「內容準備中」／"coming soon" 只在隱私、條款兩頁（已知例外） | — |
| 19 | 英文頁沒有中文字 | ✅ | 24 個英文頁可見文字唯一的中文是語言切換鈕「中文」（已知例外） | — |
| 20 | 左側粗邊框卡片 | ✅ | 四種組合 48 頁，計算後 `border-left-width ≥ 3px` 的可見元素 0 個 | — |
| 21 | 手機橫向捲動 | ✅ | 390 寬 48 頁 `scrollWidth - innerWidth` 皆 0 | — |
| 22 | 亮暗兩套 | ✅ | 系統偏好暗色時 `<html class="dark">` 生效、截圖亮暗截圖都正常 | — |
| 23 | 執行期錯誤 | ❌ 產品安全頁 | `/trust/security/`、`/en/trust/security/` 四種組合都丟 React #418（hydration 不一致）；其餘 46 頁 0 錯誤 | D2 |
| 24 | 不存在的網址 | ❌ | `/nonexistent-page/`、`/en/nope/` 回 **200**＋首頁內容 | D4 |
| 25 | Lighthouse Performance | ⚠️ 首頁 <90 | 首頁 手機 76／桌機 87；`/en/` 手機 81／桌機 88；CMMC 指南 中 95／84、英 97／89 | D5 |
| 26 | Lighthouse Accessibility | ✅ | 首頁 98（標題層級跳級 h1→h3）、指南 100 | 低優先，見 D5 備註 |
| 27 | Lighthouse Best Practices | ✅ | 四頁全 100 | — |
| 28 | Lighthouse SEO | ⚠️ 66～69（刻意） | 唯一扣分項 `is-crawlable`，來源 `x-robots-tag: noindex`——測試期刻意的，拿掉後會回到 100 附近 | 正式上線拿掉 noindex |
| 29 | Cloudflare Web Analytics | 未開 | 首頁 HTML 無 `static.cloudflareinsights.com/beacon`（程式已有掛載點，等 token） | 不算失敗 |
| 30 | pages.dev 備用網址活著 | ✅ | 首頁 200、robots.txt 正常、canonical 指 stg | — |
| 31 | Search Console／Bing 送件 | 待帳號 | 本棒沒有公司 Google／Microsoft 帳號，未送件、`__root.tsx` 未改 | 決策者給帳號後補做 |

截圖存放在本機 runner 暫存區（不入版控）：桌機／手機 × 亮／暗 共 40 張＋手機選單 2 張。

## 待修清單（交首腦派）

| 編號 | 嚴重度 | 問題 | 原因（已查到） | 建議修法 |
|---|---|---|---|---|
| D1 | 中 | 英文六篇指南的 FAQ 沒有摺疊、也沒有 FAQPage 結構化資料（中文有） | `src/lib/guides.ts` 用「`**Q1：…**`」辨識 FAQ 段；六支 `content/guides/*.en.md` 的問題寫成 `**How do I know…?**`，沒有 `Q1:` 前綴，整段被當一般正文 | 二擇一：① `.en.md` 問題補 `Q1: ` 前綴（只改內容，最小）；② 解析改成「FAQ 標題（`## 常見問題`／`## FAQ`）之下的粗體行」 |
| D2 | 低 | 產品安全頁、聯絡頁的 email 被 Cloudflare 改寫：爬蟲與不跑 JS 的使用者看到「[email protected]」；產品安全頁另丟 React #418 | Cloudflare zone 的「Email Address Obfuscation」把 HTML 裡的 email 換成 `/cdn-cgi/l/email-protection` 連結，React hydration 對不上 | Cloudflare 後台 Scrape Shield 關掉 Email Obfuscation（或 Configuration Rule 對本站關）。產品安全頁是 CRA 公開漏洞通報窗口，email 必須讓機器讀得到 |
| D3 | 低 | sitemap 網址沒有結尾斜線，47 筆都要 308 轉一次；canonical、hreflang、站內連結也都是無斜線版 | 產出網址的格式與伺服器（prerender `autoSubfolderIndex` → `/x/index.html`，無斜線會 308 到有斜線）不一致 | 統一一邊：sitemap／canonical／hreflang／`LLink` 都改成帶結尾斜線（與伺服器一致，最省事）。Google 會跟轉址，但 canonical 指向轉址網址會被判成訊號衝突 |
| D4 | 低 | 不存在的網址回 200＋首頁內容（軟 404） | Pages 找不到檔時回退到首頁 | 加 404 頁（`404.html`）讓 Pages 回 404；正式上線前修，否則搜尋引擎會收到一堆重複首頁 |
| D5 | 低 | 首頁手機 Performance 76（LCP 4.6 秒） | 首頁 HTML 輸出兩組主圖（各含亮暗兩張），四張裡只有第一組亮色是 `loading="eager"`；Lighthouse 手機量測抓到的 LCP 元素是 `loading="lazy"` 的暗色圖（`lcp-lazy-loaded` 不及格）；另 CSS 7KB 擋渲染約 0.3 秒 | 主圖兩張都 `eager`＋`fetchpriority="high"`，或只對當前主題輸出 preload。附帶：首頁標題 h1 後直接 h3（Accessibility 扣 2 分），痛點三卡前補一個 h2 或改 h2 |
| R1 | 風險 | og 圖是 webp | LinkedIn、部分 LINE 版本不顯示 webp 預覽圖 | 各分區 og 圖另出一份 PNG／JPG 給 `og:image` 用 |
| R2 | 風險 | Google 複合式搜尋結果測試未跑 | 工具需登入、無 API | 有帳號時手動貼首頁、一篇指南、一個方案頁各一次 |

## 已知刻意保留（不算缺陷，本次確認仍如預期）

- 12 個占位框（ISO 附錄 A、CRA 附件一、多客戶儀表板、租戶切換、跨專案證據、部署架構，中英各一）
- 隱私權政策、服務條款為占位頁（「內容準備中」／"Content coming soon"）
- AI 儀表板截圖以小幫手對話頂替
- 英文頁語言切換鈕顯示「中文」
- 全站 `x-robots-tag: noindex`（測試期）

## 正式上線待辦

1. 刪掉 `public/_headers` 的 `X-Robots-Tag: noindex`（stg 若保留做測試站，改成只對 stg 網域加）
2. `VITE_SITE_URL` 改正式網域，重新 build（canonical、hreflang、sitemap、robots、llms、JSON-LD、og 網址都跟著換）
3. Cloudflare Pages 綁正式網域
4. 正式網域的 zone 層 AI Crawl Control 政策再關一次（AI 爬蟲封鎖是 zone 層設定，換網域不會跟過去）
5. 正式網域的 zone 關掉 Email Address Obfuscation（D2）
6. Search Console 改驗正式網域並送 `sitemap.xml`；Bing Webmaster 從 Search Console 匯入
7. 站外訊號（LinkedIn 公司頁、G2、合作夥伴連結）正式網域定後另開卡
8. 若決策者要開 Cloudflare Web Analytics，設好 token 後確認首頁 HTML 有 beacon

## 打折處

- Google 複合式搜尋結果測試沒跑（需登入），以 schema.org validator 代替；兩者規則不完全相同，Google 對 FAQPage 的顯示資格另有限制。
- 社群預覽卡是用各平台爬蟲 UA 抓 HTML 驗 og 標籤與圖片 200，沒有實際貼到 Facebook Debugger／LINE／Slack 看渲染結果（那些需要登入）。
- Lighthouse 是本機 headless 一次量測，Performance 分數每次會浮動約 ±5。
