版本紀錄

v2.5.18

移除 2000FUN 淘大店(九龍灣)

移除

  • 2000FUN(九龍灣淘大商場二期二樓 S106 號鋪)
  • 九龍灣地區(該區只得一間店,整個 section 移除)

v2.5.17

暫時隱藏葵芳比動力

更改

  • 暫時隱藏:比動力(葵芳葵涌廣場一樓 B78)
  • 日後可能恢復顯示

v2.5.16

暫時隱藏 2 間灣仔 PhoneStore 豐達

更改

  • 暫時隱藏:PhoneStore 豐達(灣仔電腦城 2/F 260 鋪)
  • 暫時隱藏:PhoneStore 豐達(灣仔電腦城 1/F 126A 鋪)
  • 日後可能恢復顯示

v2.5.15

新增大圍 X 電訊星級合作商戶

新增

  • ⭐ X 電訊(大圍)— 大圍道55-56號金禧商場134號舖
  • 新地區:大圍(Tai Wai)

v2.5.14

Meta Tags SEO 優化:OG Image、Title、Description

新增

  • 1200×630 OG Image 社交分享圖片(取代舊 512×512 icon)
  • meta robots 標籤
  • twitter:site 標籤(@b4travelsim)
  • 首頁 11 語言獨立 title / description 翻譯

更改

  • 首頁 title 改為問答格式:「B4travel 電話卡邊度買?全港 30+ 授權銷售點 | 5G 速度測試」
  • 首頁 description 更新門市數量(20+ → 30+)並加強 CTA
  • H1 從「#信心之選」改為「全港授權銷售點」,與 title 更一致
  • og:image 尺寸從 512×512 改為 1200×630(符合 Facebook/Twitter 最佳規格)

v2.5.13

PhoneStore 豐達統一顯示名稱 + 移除大埔 2000FUN

更改

  • 7 間 PhoneStore 豐達顯示名稱統一為「PhoneStore 豐達」(移除括號內地區後綴)
  • 移除大埔 2000FUN 門市(原 tai-po-2000fun)

數據變更

  • 星級合作商戶:29 間 → 28 間(-1)
  • 星級地區:16 個 → 15 個(大埔區移除)
  • 總頁面數:-11(tai-po-2000fun × 11 語言)

v2.5.12

新增 7 間 PhoneStore 豐達星級合作商戶

新增

  • ⭐ PhoneStore 豐達 (灣仔260) — 軒尼詩道130號灣仔電腦城2/F 260鋪
  • ⭐ PhoneStore 豐達 (灣仔126A) — 軒尼詩道130號灣仔電腦城1/F 126A鋪
  • ⭐ PhoneStore 豐達 (元朗) — 元朗壽富街1號1B地舖
  • ⭐ PhoneStore 豐達 (新蒲崗辦公室) — 九龍新蒲崗大有街1號勤達中心1208室(星期一至五 10:00-19:00)
  • ⭐ PhoneStore 豐達 (屯門) — 屯門愛定商場S區123鋪
  • ⭐ PhoneStore 豐達 (觀塘) — 開源道68號觀塘廣場M30鋪
  • ⭐ PhoneStore 豐達 (鑽石山) — 彩虹道235號啟鑽商場G02商鋪
  • 7 間共用同一 logo `/logos/phonestore.webp`
  • 新增 3 個地區:新蒲崗、屯門、鑽石山

數據變更

  • 星級合作商戶:22 間 → 29 間(+7)
  • 星級地區:13 個 → 16 個(+3)
  • 總頁面數:+77(7 slug × 11 語言)

v2.5.11

還原德仔及 BenBen 顯示地址(只改地圖定位)

更改

  • 還原德仔電話卡地址顯示為「深水埗鴨寮街排檔336號」
  • 還原 BenBen 電話卡地址顯示為「深水埗桂林街125號前排檔(港鐵深水埗站 C2 出口直走 10 秒)」
  • 地圖 marker 定位保持 v2.5.10 設定(德仔 → 桂林街127號A1鋪;BenBen → 桂林街121號)

v2.5.10

修正德仔及 BenBen 地址與地圖定位

修復

  • 德仔電話卡:地址補上「桂林街127號A1鋪」,Google Maps URL 改用文字地址搜尋
  • BenBen 電話卡:地址改為「桂林街121號」,坐標微調至 22.33115, 114.16220

v2.5.9

修正 4 間排檔坐標(鴨寮街 × 桂林街交界)

修復

  • 德仔、Kanang、BenBen、靚靚 4 間排檔坐標更新為鴨寮街 × 桂林街交界(22.33125, 114.16215)
  • 修正地圖上 marker 位置偏差問題

v2.5.8

修復 4 間排檔 Google Maps URL(Invalid Dynamic Link)

修復

  • 德仔、Kanang、BenBen、靚靚 4 間排檔嘅 Google Maps URL 由 maps.app.goo.gl(Firebase Dynamic Links 專用)改為正式 Google Maps Search API URL(www.google.com/maps/search/?api=1&query=lat,lng)
  • 解決點擊「查看地圖」顯示 Invalid Dynamic Link 錯誤

v2.5.7

4 間鴨寮街/桂林街排檔 Logo 改為圓形

更改

  • 德仔、Kanang、BenBen、靚靚電話卡 4 個排檔 Logo 由方形改為圓形(黑底白字保持不變)
  • Service Worker cache 更新至 v2.5.7 強制重新載入新 Logo

v2.5.6

新增靚靚電話卡(鴨寮街 206 號)星級商戶

新增商店

  • 新增「靚靚電話卡」為星級合作商戶(深水埗鴨寮街排檔 206 號)
  • 營業時間:星期一至日 11:00 - 20:00
  • Logo:黑底白色粗體「206」
  • 星級合作商戶:21 間 → 22 間(+1)
  • 總頁面數:429 → 440(+11)

v2.5.5

新增 BenBen 電話卡(桂林街 125 號)星級商戶

新增商店

  • 新增「BenBen 電話卡」為星級合作商戶(深水埗桂林街 125 號前排檔)
  • 位置:港鐵深水埗站 C2 出口直走 10 秒
  • 營業時間:星期一至日 11:00 - 20:00
  • Logo:黑底白色粗體「125」
  • 星級合作商戶:20 間 → 21 間(+1)
  • 總頁面數:418 → 429(+11,1 slug × 11 語言)

v2.5.4

新增 2 間鴨寮街電話卡星級商戶

新增商店

  • 新增「德仔電話卡」為星級合作商戶(深水埗鴨寮街排檔 336 號)
  • 新增「Kanang 電話卡」為星級合作商戶(深水埗鴨寮街排檔 278 號)
  • 營業時間:星期一至日 11:00 - 20:00
  • 兩店 Logo 為黑底白色粗體數字(336 / 278)
  • 星級合作商戶:18 間 → 20 間(+2)
  • 總頁面數:396 → 418(+22,2 slug × 11 語言)

v2.5.3

Teledom 改為合作商戶 + 修復地圖 + 移除合作商戶描述

更改

  • Teledom(荔枝角)由星級合作商戶改為合作商戶,地圖視圖不再顯示
  • 移除合作商戶類別描述「合作商戶僅發售部份國家、服務計劃的實體電話卡,建議前往前先與店舖聯絡。」
  • 星級合作商戶:19 間 → 18 間(-1);合作商戶:5 間 → 6 間(+1)

修復

  • 修復地圖顯示問題:Leaflet 資源改為 self-hosted(/leaflet/)以避免 CSP 及第三方 CDN 載入問題
  • CSP 收緊:移除 unpkg.com,只允許 self

v2.5.2

新增何文田萬豐家居百貨

新增商店

  • 新增何文田「萬豐家居百貨」為星級合作商戶
  • 地址:何文田窩打老道73A號
  • 營業時間:每日 09:00 - 21:00
  • 沿用紅磡萬豐同一 Logo 及 Facebook 專頁
  • 星級合作商戶由 18 間增至 19 間(14 個地區)

v2.5.1

修復地圖顯示 + 萬豐地區改為佐敦

修復

  • 修復 CSP(Content-Security-Policy)阻擋 Leaflet 地圖載入嘅問題,加入 unpkg.com 到 script-src 及 style-src
  • 萬豐家居百貨新店地區由「油麻地」改為「佐敦」,slug 由 yau-ma-tei-manfung 改為 jordan-manfung

v2.5.0

新增佐敦萬豐家居百貨 + 地圖移除合作商戶標記

新增商店

  • 新增佐敦「萬豐家居百貨」為星級合作商戶(上海街80號海洋大廈)
  • 營業時間:每日 09:00 - 21:00
  • 星級合作商戶由 17 間增至 18 間(13 個地區)
  • 沿用紅磡萬豐同一 Logo 及 Facebook 專頁

地圖改善

  • 地圖視圖移除合作商戶(藍色標記),只顯示星級合作商戶(紅色標記)
  • 簡化地圖圖例,移除合作商戶標示

v2.4.0

GEO 第二輪改善:WebSite Schema、速度比較表、方法論、Footer 法律連結

Schema 結構化數據

  • 全站新增 WebSite JSON-LD + SearchAction(搜尋速度測試頁面)
  • Person schema 增強:新增 jobTitle、worksFor、sameAs(速度測試國家頁面)

內容 + E-E-A-T

  • 速度測試 Hub 新增 8 國速度比較表(國家、最高速度、平均速度、網絡、地點數)
  • 速度測試 Hub 新增測試方法論 section(裝置、App、條件、來源)
  • 速度測試 Hub 國家卡標題改為問題式(如「日本 5G 有幾快?」)
  • 新增 16 個翻譯鍵 × 11 語言(比較表、方法論、問題式標題、法律連結)

品牌 + 信任

  • SocialBar 新增 LinkedIn 連結及圖示
  • 新建 Footer 組件,取代 inline footer
  • Footer 新增私隱政策及服務條款連結(指向 b4travel.shop)

v2.3.1

新增 4 個台灣 5G 速度測試地點

新增數據

  • 新增 4 個台灣速度測試地點 — 中山車站(180Mbps)、中原公園(178Mbps)、台北巨蛋(174Mbps)、迪化街(168Mbps)
  • 台灣測試地點由 9 個增至 13 個
  • 數據來源:manhung.tech 2026 年 3 月台灣 5G 上網卡測試報告
  • 3 個重複地點(台北車站、松山文創、桃園機場)保留現有較高速度數據

v2.3.0

GEO 優化:AI 爬蟲指令、速度測試日期、Article Schema、安全標頭

技術 GEO

  • robots.txt 新增 9 個 AI 爬蟲明確 Allow 指令(GPTBot、ClaudeBot、PerplexityBot、ChatGPT-User、Google-Extended、CCBot、OAI-SearchBot、anthropic-ai、cohere-ai)
  • firebase.json 新增安全標頭:X-Content-Type-Options、X-Frame-Options、Content-Security-Policy
  • llms.txt 新增 LinkedIn 公司連結

內容 E-E-A-T

  • 所有速度測試數據新增測試日期標示(testDate 欄位)
  • 每個國家頁面顯示「數據最後更新」日期
  • 速度表格每行顯示測試日期

Schema 結構化數據

  • 速度測試頁面新增 Article schema(datePublished、dateModified、author Person、publisher Organization)
  • 速度測試頁面新增 speakable 屬性(SpeakableSpecification)
  • Organization sameAs 新增 LinkedIn 公司頁面
  • Store schema 新增 image(商戶 Logo URL)同 url(門市詳情頁連結)
  • 非中文版 Organization schema 從簡化版升級為完整版(含 sameAs、contactPoint、description)

v2.2.2

新增瑞士 5G 速度測試數據

新增數據

  • 新增瑞士(Switzerland)5G 速度測試數據 — Swisscom 5G 網絡
  • 涵蓋 6 個測試地點:蘇黎世機場、蘇黎世火車站、伯恩、伯恩酒店、策馬特滑雪場
  • 最高速度 184Mbps(蘇黎世機場),全部 6 個地點均為 5G 連接
  • 數據來源:manhung.tech 實測報告(B4travel 歐洲 30 日 10GB 無限數據卡,iPhone 15 Pro)

頁面變更

  • 速度測試國家由 8 個增至 9 個(新增瑞士)
  • 新增 /speedtest/switzerland 獨立頁面(× 11 語言 = 11 頁)
  • 速度測試 Hub 頁面新增瑞士國家卡片

v2.2.1

修復缺失商店數據:新增比動力 + Teledom 升級為星級商戶

背景

  • cleanup-v1.7.0-backup 分支曾正確包含比動力及 Teledom 升級改動(commit ec8fcd3、9174f26)
  • 當 main 分支用 608b423 Initial commit from Astro 重建時,links.ts 從頭寫起,遺失了 backup 分支嘅商店數據
  • 比動力完全無被加入 main 分支,Teledom 被放回合作商戶(應為星級商戶)
  • 本版本從 backup 分支還原呢兩項遺失嘅改動

新增商店

  • 新增比動力(Bepower)到星級合作商戶 — 葵芳葵涌廣場一樓 B78
  • 地址:葵芳葵涌廣場一樓B78|電話:9345 1473
  • 營業時間:星期一至六 12:00-20:00
  • 社交媒體:Instagram @bepower_b78|WhatsApp 852-9345-1473
  • 新增 bepower.webp Logo(從 backup 分支 PNG 轉換為 WebP,8.25 KB)
  • 產品標籤:eSIM + 實體卡(全系列)

商店升級

  • Teledom 從合作商戶升級為星級合作商戶(荔枝角)
  • Teledom 產品標籤從「實體卡」升級為「eSIM + 實體卡」(全系列產品)
  • 新增荔枝角(Lai Chi Kok)地區到星級合作商戶
  • 從合作商戶移除荔枝角地區(Teledom 為該區唯一商戶)

數據變更

  • 星級合作商戶:15 間 → 17 間(+2)
  • 合作商戶:6 間 → 5 間(-1,Teledom 升級)
  • 總門市數:21 間 → 22 間(+1,新增比動力)
  • 星級地區:10 個 → 12 個(+2:葵芳新增比動力、新增荔枝角區)
  • 總頁面數:352 → 363(+11,新增 kwai-fong-bepower 頁面 × 11 語言)

v2.2.0

清理 Cloud Run 部署系統,統一使用 Firebase Hosting

移除

  • 完全移除 Cloud Run 部署系統
  • 刪除 deploy.sh — Cloud Run 部署腳本
  • 刪除 Dockerfile — Docker 容器配置
  • 刪除 nginx.conf — Nginx 伺服器配置
  • 刪除 .dockerignore — Docker 忽略規則
  • 停用 GCP Cloud Run 服務
  • 清理 40+ 個舊容器映像(保留最後 3 個版本作備份)

改進

  • 統一部署流程 — 僅使用 Firebase Hosting
  • 簡化部署:執行 ./deploy-firebase.sh 即可
  • 移除 Docker 和容器化相關複雜性
  • 部署時間從 2 分鐘減少到 30 秒
  • 內建全球 CDN、自動 SSL 證書

備份

  • Git 標籤 v1.6.4-with-cloud-run 保留清理前完整代碼
  • Git 分支 backup/cloud-run-deployment-system 可用於緊急恢復
  • Cloud Run 配置已備份(可於 15 分鐘內恢復)

原因

  • 靜態網站不需要容器化
  • Firebase Hosting 提供更簡單、快速的部署體驗
  • 減少維護複雜度
  • 更低的營運成本

v2.1.0

11 語言國際化 + SEO 全面升級

國際化(i18n)

  • 全站從 2 種語言(中/英)擴展至 11 種語言 — 中文(香港)、English、Français、Nederlands、Deutsch、日本語、한국어、繁體中文(台灣)、简体中文、Español、Português
  • 採用 Subpath Routing 架構 — 每種語言擁有獨立 URL(如 /en/、/fr/、/ja/),為 Google 推薦的最佳 SEO 做法
  • 全站頁面由 32 頁擴展至 352 頁(32 頁 × 11 種語言),全部為 Astro SSG 預先生成的靜態 HTML
  • 新增集中式翻譯系統(src/data/translations.ts)— 超過 80 個翻譯鍵值 × 11 種語言,涵蓋 UI 標籤、國家名稱、FAQ 內容
  • 新增 i18n 工具模組(src/data/i18n.ts)— 包含 localePath()、isChinese()、stripLocale()、getNonDefaultLocales() 等輔助函數
  • 新增語言選擇器組件(LangSelector.astro)— 取代舊有中英切換按鈕,支援 11 種語言即時切換
  • 移除舊有 CSS 語言切換機制 — 不再使用 lang-zh/lang-en CSS class 及 data-lang 屬性
  • 移除 localStorage 語言偏好儲存 — 每個 URL 即代表一種語言,無需 JavaScript 切換
  • 所有組件重構支援 locale prop — ProfileHeader、LinkButton、LinkSection、SpeedtestSection、MapView、Breadcrumb 全部接受 locale 參數
  • 地圖組件多語言化 — 所有 popup 文字、按鈕標籤、距離顯示、定位提示均按語言翻譯
  • 中文地址智能判斷 — zh(香港)、tw(台灣)、sc(簡體)顯示中文地址,其他語言顯示英文地址

SEO 改進

  • 每頁 HTML head 包含 11 個 hreflang 標籤 + x-default — 告知 Google 所有語言版本的對應關係
  • 動態生成 sitemap.xml — 由靜態 31 URL 升級為動態 352 URL,每個 URL 包含 xhtml:link hreflang 標注(雙重 hreflang 信號)
  • og:site_name 按語言翻譯 — 中文顯示「B4travel 電話卡」、英文顯示「B4travel SIM Cards」、日文顯示「B4travel SIMカード」等
  • og:image:alt 按語言翻譯 — 提升社交媒體分享的無障礙性
  • apple-mobile-web-app-title 按語言翻譯 — PWA 安裝名稱本地化
  • meta keywords 精簡化 — 移除過長的中文關鍵字列表,改用簡潔通用關鍵字
  • og:locale 動態設定 — 每個語言頁面設定正確的 Open Graph locale(如 zh_HK、en、ja)
  • canonical URL 每語言獨立 — 確保 Google 正確索引每個語言版本

頁面路由架構

  • 中文(香港)作為預設語言 — 保持根路徑 /(無前綴),其他語言使用 /{lang}/ 前綴
  • 新增 [lang]/ 動態路由目錄 — 包含 index、speedtest/index、speedtest/[country]、store/[slug]、changelog/index
  • 每個 [lang] 頁面使用 getStaticPaths() 搭配 getNonDefaultLocales() 自動生成 10 種語言版本
  • 根路徑頁面硬編碼 locale="zh" — 確保預設語言不帶前綴
  • Sitemap 由靜態 public/sitemap.xml 遷移至動態 Astro endpoint(src/pages/sitemap.xml.ts)

v2.0.0

多頁面 SEO 大升級

新功能

  • 全站從 1 頁擴展至 31 頁 — 使用 Astro SSG 動態路由(getStaticPaths)自動生成獨立靜態頁面
  • 新增速度測試 Hub 頁面(/speedtest)— 展示 8 個國家速度概覽卡片,包含最高速度、平均速度、測試地點數
  • 新增 8 個國家速度測試獨立頁面(/speedtest/japan、/speedtest/korea 等)— 每頁包含完整城市速度表格、統計欄、FAQ、其他國家交叉連結
  • 新增 21 個門市獨立頁面(/store/kwai-fong-anlander 等)— 每頁包含地址、電話、營業時間、Google Maps 連結、社交媒體按鈕、同區門市連結
  • 新增麵包屑導航組件(Breadcrumb.astro)— 所有子頁面顯示層級導航
  • 新增版本號顯示於頁尾(連結至 /changelog)
  • 新增更新日誌頁面(/changelog)— 詳細記錄所有版本變更

SEO 改進

  • 每個國家頁面獨立 Dataset JSON-LD 結構化數據(針對該國速度測試關鍵詞)
  • 每個國家頁面獨立 FAQPage JSON-LD(3 條 FAQ)
  • 每個門市頁面獨立 LocalBusiness JSON-LD(比 Store 更適合本地 SEO)
  • 所有子頁面獨立 BreadcrumbList JSON-LD
  • 每頁獨立 canonical URL 及 OG URL(BaseLayout 支援 url prop)
  • Sitemap 從 1 個 URL 擴展至 31 個真實 URL
  • 主頁新增內部連結區塊 — 連結到所有國家速度測試頁面
  • 主頁 JSON-LD Dataset URL 從 fragment(#)改為真實頁面路徑
  • Hub-and-spoke 內部連結架構 — 主頁作為 Hub,國家頁及門市頁互相交叉連結

資料結構

  • 速度測試數據抽取至獨立共享檔案(src/data/speedtest.ts)— 主頁及國家頁面共用
  • 新增每國 slug、description(中英文)、networkOperator 欄位
  • 新增 speedNum 數值欄位用於計算統計(最高速度、平均速度)
  • 新增 getCountryStats() 輔助函數
  • 門市數據新增 getAllStores() 輔助函數(src/data/links.ts)

v1.6.3

WebP 圖片壓縮 + 安全標頭

效能

  • 所有 28 個商戶 Logo 由 PNG/JPEG 轉換為 WebP 格式(Python PIL quality=80)
  • 圖片大小由 436KB 縮減至 88KB(減少 80%)

安全

  • Firebase Hosting 部署配置新增 Referrer-Policy: strict-origin-when-cross-origin
  • Firebase Hosting 部署配置新增 Permissions-Policy: geolocation=(self), microphone=(), camera=()

v1.6.2

深度優化 — 關鍵 Bug 修復 + 效能 + 無障礙

關鍵修復

  • 修復 astro.config.mjs 網站 URL 缺少 "s"(location → locations)— 影響所有 canonical URL 及 OG 標籤
  • 移除 sitemap.xml 中無效的 fragment(#)URL — Google 完全忽略 fragment URL

效能

  • Leaflet 地圖延遲載入 — 由靜態載入改為動態 script 注入(節省首次載入 ~320KB)
  • 新增 GA4 preconnect hint

SEO

  • 新增 OG image 尺寸(width/height)及 alt 屬性
  • Twitter card 由 summary 改為 summary_large_image
  • 新增 hreflang en 語言標記

無障礙

  • 社交媒體按鈕(Facebook/Instagram/WhatsApp)新增 aria-label
  • 分享按鈕新增 aria-label
  • 提升文字對比度(opacity 0.5→0.7 / 0.75→0.8)
  • 完善 manifest.json(scope、orientation、lang、categories、maskable icons)

v1.6.1

GA4 分析 + 強化 SEO 結構化數據

新功能

  • 新增 Google Analytics GA4(G-NVWBJCR5XY)追蹤代碼
  • 新增 8 個國家獨立 Dataset JSON-LD(每國包含城市速度數據)
  • 新增 BreadcrumbList JSON-LD 結構化數據
  • 速度測試區域新增國家錨點 ID(speedtest-japan、speedtest-korea 等)

v1.6.0

安全修復 + SEO 基礎建設

安全

  • MapView.astro 新增 XSS 防護(escapeHtml + safeUrl 函數)
  • index.astro hash 驗證新增正則白名單(防止注入攻擊)

SEO

  • 新增 Organization + WebPage JSON-LD 結構化數據
  • 新增 Store JSON-LD(所有門市地址、電話、營業時間、座標)
  • 新增 FAQPage JSON-LD(4 條常見問題)
  • 更新 title 及 description 加入 5G 關鍵詞及實測速度數據
  • 擴展 meta keywords

v1.5.x

Firebase Hosting 遷移 + 自訂域名

基礎設施

  • 由 Google Cloud Run + nginx 遷移至 Firebase Hosting
  • 設定自訂域名 locations.b4travel.shop(SSL 自動配置)
  • 建立 deploy-firebase.sh 部署腳本(Firebase REST API,無需 firebase login)
  • 建立 GitHub repo(git@github.com:Stoneip/locations.b4travel.shop.git)

v1.4.x

商戶資料完善 + Logo 壓縮

內容

  • 新增門市社交媒體按鈕(Facebook / Instagram / WhatsApp)
  • 新增門市詳細資料(地址、電話、營業時間)
  • 新增線上零售商資料
  • 商戶 Logo 壓縮(4.3MB → 480KB)
  • 更新多間門市地址及連結

v1.0.0

初始版本

功能

  • Astro v5 靜態網站生成器
  • 門市資訊展示(星級合作商戶 + 合作商戶)
  • 互動地圖(Leaflet.js)
  • 速度測試數據展示(8 國 70+ 地點)
  • 中英文雙語切換
  • PWA 支援(Service Worker + manifest.json)
  • 地區篩選功能