首頁

好價商店 特價 -18% 省 $86! $129
逛實體店也能聰明買

站在貨架前,
一掃就知道哪裡最便宜

輸入、掃條碼或拍照,同步比較 PChome、momo、酷澎與蝦皮,含運費與回饋的實付價一眼看懂,再看走勢決定現在買還是等。

5 個通路實體+4 大電商
90 天價格走勢紀錄
實付價含運費與回饋
降價提醒到價自動通知

今日好價

看走勢 →

三步驟,現場就能做決定

1
找到商品

掃條碼最準;沒有條碼就拍包裝或輸入關鍵字。

2
填入店內標價

系統把實體價與網路實付價並排,直接算出差多少。

3
看時機、放清單

價格在 90 天低點就買,偏高就設提醒,等降價再出手。

試試看
研發說明書 v1.0

好價雷達|系統架構與工作流程

從使用者在店內的一個動作,到後端如何收集、比對、分析價格,以及設計規範與上線部署。每一節都可收合,挑你需要的看。

用戶端接入層服務層資料層 PWA 網頁 App 手機・平板・桌機輸入 / 掃碼 / 拍照IndexedDB 離線清單Service Worker深色・字級偏好 CDN 靜態資源Brotli・HTTP/3 API Gateway/BFF 身分驗證 JWT限流・WAF回應快取多服務聚合統一錯誤格式 商品辨識(條碼/OCR) 比價聚合服務 商品比對引擎 價格歷史・採購分析 通知推播 PostgreSQL商品主檔・使用者 時序資料庫價格點 price_point Redis熱門快取・限流 搜尋索引中文分詞・同義詞 資料收集層(Queue + Workers) 官方/聯盟行銷 API ・ 授權資料 ・ 使用者回報實體價 ・ 排程更新與重試

目標使用者:在量販店、藥妝、3C 賣場、超市現場猶豫要不要買的消費者;以及需要定期補貨的小型辦公室、家庭採購者。

核心價值:3 秒內給出「現在在這裡買划不划算」的答案。

  • 以「實付價」比較:售價+運費-點數回饋,避免只看標價的錯覺。
  • 以「單位價」比較:每包、每公克、每片,解決不同包裝難以比較的問題。
  • 以「時機」決策:結合 90 天走勢百分位,告訴你該買還是該等。
  • 框架:MVP 以原生 JS(本檔案即是);正式版建議 Preact 或 Svelte,打包後 JS ≤ 60KB(gzip)。
  • 掃碼:優先使用瀏覽器內建 BarcodeDetector;不支援時(如 iOS Safari)動態載入 ZXing WebAssembly 後援,只在使用者按下掃描時才下載。
  • 拍照:<input capture> 取得影像,前端先壓縮到長邊 1280px 再上傳,節省流量。
  • 離線:Service Worker 快取外殼與最近查詢;採購清單存在 IndexedDB,地下室賣場沒訊號也能看。
  • 路由:Hash 路由+頁面模組延遲渲染,只在切換到該頁時才計算圖表。
服務職責關鍵技術
商品辨識條碼 GTIN 查主檔;影像 OCR 讀品名/規格;圖像相似度找候選GTIN 主檔、OCR 服務、向量檢索
比價聚合並行查詢各通路,單一來源逾時 2.5 秒即略過,不拖慢整體非同步並行、斷路器、Redis 快取
商品比對引擎判斷不同平台商品是否「同款同規格」,解析入數/容量換算單位價規格正規化、相似度評分 ≥ 0.85 才視為同款
價格歷史・分析寫入每日價格點、計算百分位、波動率、活動檔期效應時序資料庫、連續聚合
通知推播到價提醒、清單商品降價摘要Web Push、Email、LINE 通知
  • 第一優先:官方 API、聯盟行銷計畫或授權資料供應商,資料穩定且合法,還能帶來分潤收入。
  • 第二來源:使用者回報的實體通路價格,搭配信譽分數與照片佐證,異常值自動剔除。
  • 若需自行擷取:必須先確認各平台服務條款與 robots.txt,控制頻率、不擷取個資、不繞過任何防護機制;建議上線前請法務審閱。
  • 頁面上呈現的價格標註「更新時間」,並提醒「以平台頁面為準」。
資料表主要欄位說明
productid, gtin, name, brand, spec, unit_qty, unit, category標準化商品主檔
listingid, product_id, platform, url, seller, match_score各平台上的對應商品
price_pointlisting_id, ts, price, shipping, rebate, in_stock時序價格,依時間分區
store_reportproduct_id, store, price, photo, user_id, trust實體通路回報價
user_listuser_id, product_id, qty, budget採購清單
alertuser_id, product_id, target_price, channel降價提醒
方法端點用途
GET/api/search?q=關鍵字搜尋(自動完成)
GET/api/barcode/:gtin條碼查商品
POST/api/recognize上傳影像辨識商品
GET/api/compare/:id?store_price=多通路實付價比較
GET/api/history/:id?days=90價格走勢與統計
POST/api/lists建立/更新採購清單
POST/api/alerts設定降價提醒
  • 比價 API:p95 < 1.5 秒;快取命中 < 200 毫秒。
  • 首頁 LCP < 2.0 秒(4G 手機)、INP < 200 毫秒、CLS < 0.05。
  • 掃碼到出結果:< 3 秒。
  • 服務可用性 99.5%;單一通路故障時其餘通路照常回傳。
擷取輸入輸入、掃碼或拍照
辨識正規化GTIN、規格、單位
多通路查價並行查詢+快取
實付價排序運費、回饋、單位價
時機判斷90 天百分位
清單與提醒採購、到價通知
  • 打開 App(PWA 從主畫面啟動,免安裝)→ 首頁三個大按鈕:輸入、掃碼、拍照。
  • 掃碼成功震動提示 → 直接跳到比價頁,並請使用者輸入店內標價(可略過,用回報價)。
  • 比價結果:最上方一句話結論(在哪買省多少),下方各通路實付價由低到高。
  • 想再想想 → 「看走勢」確認是不是低點;或「設降價提醒」。
  • 確定要網購 → 加入採購清單,回家一次結帳;或前往平台頁面購買。
  • ① 用戶端送出 GTIN 或關鍵字 → Gateway 驗證與限流。
  • ② 查 Redis:熱門商品 10 分鐘內有結果就直接回傳。
  • ③ 未命中 → 比價聚合服務並行查詢 4 個電商來源,每個來源逾時 2.5 秒。
  • ④ 比對引擎過濾非同款(例如 72 包與 24 包),計算單位價與實付價。
  • ⑤ 寫入價格點到時序資料庫(非同步,不影響回應時間)。
  • ⑥ 回傳排序結果+走勢摘要;部分來源失敗時標記「暫無資料」而非整體錯誤。
分級判定更新頻率
熱門近 24 小時被查詢或在清單中 ≥ 50 次每 30 分鐘
一般近 7 天有查詢每 6 小時
長尾其他每日 1 次
檔期雙 11、週年慶等活動期間熱門商品加密至每 10 分鐘

所有任務進入佇列,失敗採指數退避重試 3 次;連續失敗的來源自動降級並通知值班人員。

每日最低價序列:取每天各電商實付價的最小值,形成 90 天序列。

價格百分位 P:目前價格在 90 天中贏過多少天。P 越低代表越便宜。

  • P ≤ 25:建議入手(處於近期低點)
  • 25 < P ≤ 60:價格合理(急用可買)
  • P > 60:建議觀望,系統自動建議提醒價=90 天第 25 百分位

清單組合最佳化:先為每件商品找最低實付通路,再依通路合併計算免運門檻;若合併到單一平台反而更省(運費門檻效應),就推薦單一平台方案。

  • 每次寫入價格點時比對提醒條件,命中後進入通知佇列。
  • 同一商品 24 小時內最多通知 1 次;夜間 22:00–08:00 延後發送。
  • 通知內容附上目前最低通路、與提醒價差距、價格更新時間。
  • 節奏:雙週 Sprint;週一規劃、每日 15 分鐘站會、雙週五 Demo 與回顧。
  • 分支:主幹開發+短命功能分支,所有合併需 1 人以上 Code Review。
  • 品質:單元測試涵蓋比對引擎與計價邏輯;E2E 測試涵蓋掃碼→比價→加入清單主流程。
  • 發佈:CI 自動建置、Lighthouse 分數低於 90 就擋下;新功能用 Feature Flag 先開給 5% 使用者。
  • 監控:前端 Web Vitals、後端錯誤率與各來源成功率儀表板。
珊瑚橘主色・行動
湖水綠實體通路・信任
芥末黃亮點・插圖
省錢綠最低價・節省
警示紅較貴・超支
奶油白淺色背景
可可黑深色背景
H1 / 2.25rem一掃就知道哪裡最便宜
H3 / 1.08rem今日好價
內文 / 0.95rem含運費與回饋的實付價一眼看懂。
輔助 / 0.75rem價格更新於 10 分鐘前
裝置寬度導覽版面
手機< 700px底部 5 格導覽列,拇指可及單欄;比價結果卡片式
平板700–1099px左側 88px 圖示軌,省空間單欄加寬、圖表放大
電腦≥ 1100px左側完整側欄+文字雙欄:左側固定摘要、右側明細

頂部列固定放「掃碼、深淺色、字級」三個最常用動作,任何頁面一鍵可達。

  • 插圖:暖色調、圓潤造型、深咖啡描邊 2.2px;人物帶腮紅與微笑,傳達「買到好價的小確幸」。
  • 圖示:24px 網格、1.8px 圓角線條,與插圖同一套圓角語言。
  • 功能入口圖示:圓形淡色底+紙張白+一個強調色點綴(掃描紅線、愛心鏡頭)。
  • 全部以內嵌 SVG 繪製,深色模式自動換色,不需額外圖片請求。
  • 頁面切換:淡入+上移 12px,420ms,緩動曲線 cubic-bezier(.22,.8,.24,1)。
  • 收合面板:高度過渡 380ms,以 grid 列高動畫實作,不跳動。
  • 比價列表:逐列滑入、價格長條由左長出,引導視線。
  • 使用者若開啟「減少動態效果」,所有動畫自動關閉。
  • 主題三選一:淺色、深色、跟隨系統;設定存在瀏覽器,下次開啟不閃爍。
  • 字級四段:小 14px/標準 16px/大 18px/特大 20px;全站使用 rem,整體等比縮放。
  • 色彩全部透過 CSS 變數(設計 Token)管理,新增主題只需改一組變數。
  • 文字對比符合 WCAG AA;按鈕觸控區至少 44×44px。
  • 所有圖示按鈕有 aria-label;收合面板有 aria-expanded。
  • 鍵盤可完整操作,焦點框清楚可見;Esc 可關閉彈窗。
  • 本網站是單一檔案,檔名保持 index.html,直接上傳到網站根目錄即可。
  • 正式站:price.wen8604.org,以 Cloudflare Workers 靜態資源部署(專案 wen8604-price),網域與 HTTPS 憑證由 Cloudflare 自動處理;也可改用 Pages、Netlify 或自有主機。
  • 一定要 HTTPS:瀏覽器只允許在 HTTPS 網站開啟相機掃碼。
  • 目前比價、走勢為示範資料;串接真實後端後,把 JS 中的資料函式改成呼叫 API 即可(見「API 規格」)。
server {
  listen 443 ssl http2;
  server_name price.example.com;
  root /var/www/goodprice;
  index index.html;

  gzip on;
  gzip_types text/html text/css application/javascript image/svg+xml;

  location = /index.html {
    add_header Cache-Control "no-cache";
  }
  location ~* \.(js|css|svg|png|webp|woff2)$ {
    add_header Cache-Control "public, max-age=31536000, immutable";
  }
  add_header Strict-Transport-Security "max-age=31536000" always;
  add_header Permissions-Policy "camera=(self)" always;
}
  • 零外部依賴:不載入字型、框架與圖片,一次請求即完成。
  • 全部插圖與圖示為內嵌 SVG+圖示 sprite 重複引用,體積小、可隨深色模式換色。
  • 主題於 <head> 先行套用,避免開啟時白屏閃爍。
  • 頁面模組延遲渲染:圖表、清單只在切換到該頁時才計算。
  • 價格歷史記憶化快取,切換期間不重算。
  • 動畫只用 transform 與 opacity,由 GPU 合成,不觸發重排。
  • manifest.webmanifest:名稱、圖示(含 maskable 版)、主題色、獨立視窗模式,以及長按圖示出現的「掃碼/走勢/採購」捷徑。
  • sw.js:頁面採網路優先、3 秒逾時改用快取,所以上線新版後馬上生效,沒訊號時也能開;圖示採快取優先、背景更新。
  • 安裝:Android/電腦版 Chrome、Edge 會在頂部列與「顯示設定」出現「安裝到主畫面」按鈕;iPhone 用 Safari 的「分享 → 加入主畫面」。
  • 離線提示:斷線時頂端顯示「離線中」,恢復時提示「網路已恢復」。
  • 更新版本:改網站後把 sw.js 的 VERSION 換掉,舊快取會自動清除。
階段時程範圍
MVP第 1–6 週本介面上線、條碼查價、4 大電商比價、實付價與單位價
V1第 7–14 週90 天走勢、採購清單、降價提醒、會員登入、PWA 離線
V2第 15–24 週拍照辨識、實體價群眾回報、檔期預測、團隊/企業採購報表
  • 產品經理 1:需求、優先序、資料來源合作洽談。
  • UI/UX 設計 1:插圖、元件庫、可用性測試。
  • 前端工程 2:PWA、掃碼、圖表、效能。
  • 後端工程 2:聚合服務、比對引擎、通知。
  • 資料工程 1:收集排程、時序資料、分析模型。
  • QA 1:自動化測試與裝置相容性。
離線中・顯示已儲存的版本