# FR-152 STATE（living，就地改）

> 只描述此刻。沿革在 `fr152-LOG.md` 與 git log。

## 一句話

官網程式碼在 `~/Projects/Billows/Audit-Manager/guidant-ai-website`（TanStack Start，prerender），branch `feature/FR-139`，HEAD `b48a866`，已 push 並部署在 `https://guidant-ai.stg.jedicotech.com`（Cloudflare Pages）。**上線測試完成（2026-10-21）**：站開放收錄、Google Search Console 與 Bing 登記完成、Web Analytics 上線、13 個 AI 爬蟲全可抓。22 張子卡 Done（A1 取消）；K2 驗收通過待確認。**所有工作完成，等收尾令。**後續是時間（收錄一至兩週）與正式網域上線（待辦見下）。

## 現況

| 項目 | 狀態 |
|---|---|
| 框架 | TanStack Start（決策者最終裁示，不轉 Next）；`vite.config.ts` prerender 開啟，`npm run build` → `.output/public/` 48 支 index.html（24 頁×中英） |
| 頁面 | 首頁、產品總覽、5 功能細頁、5 解決方案、信任中心、預約、聯絡、隱私／條款占位、指南清單＋6 篇：**全部有中文真文案**；英文 `en.json` 與 `.en.md` 已換英文（B5）；英文頁 JSON-LD 公司名／地址改英文 → CM-2958 |
| 圖片 | 32 張真截圖（16×亮暗）已上；**12 個占位框刻意保留**（ISO 附錄 A、CRA 附件一、多客戶儀表板、租戶切換、跨專案證據、部署架構，中英各一），補圖要另建 Demo 或畫圖 |
| SEO | **C1～C5 全過**：canonical／hreflang（zh-TW）／og 分區圖；robots＋sitemap＋llms.txt prebuild 自動產（gitignore）；JSON-LD 五型別 48 頁 |
| 部署 | **已上線且開放收錄**（2026-10-21 17:35 起） `https://guidant-ai.stg.jedicotech.com`（主）＋ `https://guidant-ai-website.pages.dev`（備），Cloudflare Pages 連 GitLab `feature/FR-139` 自動部署；`VITE_SITE_URL` 指 stg；全站 noindex（測試期）。nitro preset 固定 `cloudflare-module`（`c378ded`）否則 Pages build 機會自動切 preset 炸掉。AI 爬蟲政策在 zone 的「AI Crawl Control → 設定 AI 機器人政策」，訓練已改允許、Bot Preference Sync 關 |
| Notion | 母卡 CM-2938；A1 取消；B1～B4 驗收通過待確認；D1 驗收通過待確認；其餘 Not started。工作坊**先不導入**，決策者手動派 |

## 任務總表

| 卡 | 做什麼 | 狀態 |
|---|---|---|
| CM-2939 A1 | 轉 Next | ❌ 取消 |
| CM-2940 B1 | 功能細頁＋prerender | ✅ 驗收通過待確認 |
| CM-2941 B2 | 解決方案 | ✅ 驗收通過待確認 |
| CM-2942 B3 | 信任中心／預約／聯絡 | ✅ 驗收通過待確認 |
| CM-2943 B4 | 指南 | ✅ 驗收通過待確認 |
| CM-2949 D1 | Demo 資料 | ✅ 驗收通過待確認 |
| CM-2945 C2 | robots＋sitemap | ✅ 驗收通過待確認（`02cb3a3`） |
| CM-2946 C3 | JSON-LD | ✅ 驗收通過待確認（`7fc3c88`） |
| CM-2947 C4 | llms.txt | ✅ 驗收通過待確認（`f88a1b1`；小修：排除 privacy／terms 占位頁） |
| CM-2948 C5 | og 圖＋截圖元件 | ✅ 驗收通過待確認（`972f80a`） |
| CM-2944 C1 | canonical／hreflang／og | ✅ 驗收通過待確認（`b1f932f`＋退修 `2814da6`） |
| CM-2950 D2 | 截圖換圖 | ✅ 驗收通過待確認（`6c34c5f`；6 種畫面留占位、AI 儀表板用小幫手頂替，待決策者裁） |
| CM-2951 E1 | Pages 部署 | ✅ 驗收通過待確認（13 個 AI 爬蟲真實 UA 全 200；zone 層 AI 政策「訓練」改允許） |
| CM-2952 E2 | 表單＋分析 | ✅ 驗收通過待確認（`0e21de9`；寄信程式備妥 key 留空走 mailto、beacon 等決策者填 `VITE_CF_BEACON_TOKEN`；感謝頁 4 支當轉換事件） |
| CM-2953 E3 | 上線測試驗收 | ✅ Done（報告 BE `86d3e2438`；5 缺陷→C8；Search Console 待帳號） |
| CM-2956 B5 | 英文版 en.json＋.en.md | ✅ 驗收通過待確認（`129d30f`） |
| CM-2957 文件 | README／09 Next 殘句改 TanStack | ✅ 驗收通過待確認（BE `de3606cee`） |
| CM-2958 C6 | 英文 JSON-LD 公司名地址＋三處小修 | ✅ 驗收通過待確認（`4eb01eb`；commit 誤帶 B6 的 i18n hunk，結果無害） |
| CM-2960 C7 | llms-full.txt 全站內文攤平 | ✅ Done（`5929d6e`，228KB；兩小修→C8） |
| CM-2961 C8 | E3 五缺陷＋og PNG＋llms-full 英文標籤 | ✅ Done（`a8d0890`，線上複驗全過） |
| CM-2963 K1 | 建站知識庫 playbook | ✅ Done（BE `19ad81442`，683 行；轉 HTML 待收尾） |
| CM-2964 K2 | 知識庫補登記實況 | ✅ 驗收通過待確認（`933dbb8ea`＋`aad032d15`，playbook 746 行） |
| CM-2962 E4 | 試水溫上線 | ✅ Done：noindex 拿掉（`64bd387`）、驗證 meta（`b48a866`）、Search Console 驗證通過＋sitemap 已送（顯示「無法擷取」屬排程未到，明天看）、**Bing 匯入成功、sitemap Success、48 URL 全發現** |
| CM-2959 B6 | 「資源」下拉直接列六篇指南＋總覽 | ✅ 驗收通過待確認（`a270943`） |

## E3 前的小修卡

**CM-2958 C6** 已開（決策者裁英文頁 JSON-LD 帶英文公司名地址）：含全形冒號、title 分隔符、llms.txt 排除占位頁。可派，與 D2／E1 平行；不 push（Pages 已接 Git）。

## 試水溫網址（決策者 2026-10-21 裁，同日改判）

**維持 `guidant-ai.stg.jedicotech.com`**，只拿 noindex、送 Search Console；Google 不看網址裡的 `stg`。首腦刪 noindex 要等 C8（canonical 斜線）一起 push。代價：之後換正式網址要 301、權重搬移要幾週到幾個月。

## 正式上線待辦（E3 報告，E4 做掉一部分）

① 刪 `_headers` noindex（**stg 站要另留 noindex**，正式站另開 Pages 專案或用環境變數控制，避免兩站重複內容）；② `VITE_SITE_URL` 改正式網域；③ Pages 綁正式網域；④ 正式網域 zone 的 AI Crawl Control 政策再關一次；⑤ zone 關 Email Obfuscation；⑥ Search Console 驗正式網域＋送 sitemap、Bing 匯入；⑦ 站外訊號（LinkedIn／G2／合作夥伴）開卡；⑧ Web Analytics token。

## 決策者待填的 Pages 環境變數

`VITE_CF_BEACON_TOKEN`（Cloudflare → Analytics & Logs → Web Analytics → 新增站點 → snippet 裡的 token），填完重新部署；`VITE_FORM_KEY` 等換表單方案。

## 待決策者

1. B1～B4、D1 五張改 Done（首腦不改）。
2. 下一批派法：C1、C2、C3、C5、CM-2957 互不相干可同時派；C4 等 C2；B5（CM-2956）等 C1。
3. ~~兩個產品 bug 要另開卡~~ 已開為 FR-151 子卡 **CM-2954**（新增任務靜默失敗）、**CM-2955**（推進按鈕 403），決策者另派：① 用複製範本建的專案在規劃頁「新增任務」靜默失敗（`flow_control_job_repo_impl.py` 662～681 用原範本 uid 找 execution）；② 階段推進按鈕 `user_can_advance` 看參與者角色、實際 `advance_stage` 看 stage main_roles，兩者不同步造成「按鈕亮、按了 403」。

## 站外訊號（LinkedIn／G2／Capterra／合作夥伴連結）

決策者 2026-10-21 裁：**等正式網域定了再開卡**，測試網域填上去之後還要改。

## 產品 bug 待另開卡（D2 發現、首腦核實）

AI 儀表板生成的 KPI 卡自帶 ≥3px 左側粗框（違反 UI 禁令，但來自 AI 產出內容非 FE 碼）、完成率顯示 0、狀態露英文 `in_progress`；blsadmin 身分生成會撈到 Billows 自家 CRA 專案。

## 搜尋引擎登記（2026-10-21 完成）

Google Search Console：資源 `https://guidant-ai.stg.jedicotech.com/`，HTML 標記驗證通過，sitemap 已送；Bing Webmaster：從 GSC 匯入，sitemap Success、48 URL；Bing 有「AI Performance（Beta）」看 Copilot／AI 搜尋引用，兩週後看。Cloudflare Web Analytics token 已填、beacon 上線。**IndexNow**：key 檔 `public/a42033575e8a46da956cfc2978fd63f0.txt`（`b619435`），48 頁已推、回 202；之後新頁掛進部署流程自動推。帳號是決策者個人 Google，之後給客戶用「新增使用者」即可。

## 知識庫

`5-knowledge/website-build-playbook.md`（K1＋K2，746 行）：下次建站照做的 11 節 playbook，含今天實際登記的畫面步驟與 IndexNow，含 zone 層三個會擋 AI 爬蟲的預設與 13 個真實 UA 檢查腳本。收尾時走 `doc-site-build` 轉 HTML 進需求站。

## Demo 資料（D2 截圖用）

專案 1605「鼎盛精密科技 CMMC L2 合規專案」、租戶 102；帳號 dspm.lin（PM）、dsexe.chen／dsexe.wu（執行）、dsaudit.huang（稽核），密碼在 BE `.demo-accounts.local`（不入版控）。16 張截圖的網址與要點哪一筆在 D1 卡回寫第五段。

## 已知坑（接手必讀）

- 子卡主文仍是 Next 寫法，TanStack 修正在**卡尾**，runner 要照卡尾。
- 多棒同時改 `src/i18n/zh-TW.json` 與 `SiteHeader.tsx` 會撞，B 階段靠 rebase 解掉；C 階段改動分散，風險低。
- `git reset --hard`／`git clean` 只在確認沒有別的 session 在工作區時才做（本 FR 曾因 runner 暫存 rename 而第一次還原不乾淨）。
- **共用工作樹事故**：C6 整檔 `git add` i18n 把 B6 未 commit 的 hunk 帶走；多棒同時改 `zh-TW.json`／`en.json`／`SiteHeader.tsx` 時 add 前先 `git diff`，有別人的 hunk 用 `git add -p`。
- **驗收 hover 才渲染的 UI 不能 grep prerender HTML**（B6 教訓），要 headless 實際 hover。
- **Cloudflare 兩層 AI 攔截都在 zone 不在 Pages 專案**：「AI Crawl Control → 設定 AI 機器人政策」的「訓練」預設不允許（ClaudeBot／GPTBot／Amazonbot 歸這類，被擋回純文字 403）；「Bot Preference Sync」會把 Content Signals 版 robots.txt 蓋在我們的前面。換正式網域要再關一次。
- **測爬蟲要用各家真實 UA 字串**，裸 `-A GPTBot` Cloudflare 認不出，會假綠。
- 本機看站：`npm run build && npx serve -l 5180 .output/public`；dev 模式 `npm run dev`（5180 被佔會自動換埠）。
