咻揪趣 MVP · v0.19.0
範圍鎖定 · 文件 MVP-範圍定義 · 產生於 2026-09-22 15:45

MVP 範圍定義

決策狀態:已凍結 · 凍結日:2026-09-21 · 最近一次調整:2026-09-21(使用者要求提前納入三項 P1)· 下次可變更時點:MVP 上線後第一次回顧

這版 MVP 只回答一個問題: 使用者在 30 秒內,能不能把一則社群貼文變成地圖上一個「有來源、有評價、排得進行程」的圖釘。

只要這條路走得通、資料存得住、後台查得到,MVP 就算成立;其餘一律延後。以下範圍已凍結,任何新增需求走第 6 節的變更控制,不臨時插隊。

1. 目標與成功指標

核心流程完成率
≥ 95%
貼上連結 → 圖釘落地
解析耗時
< 3 s
規格要求 5 s 內
資料可追溯
100%
每筆操作都有事件與時間
阻斷級缺陷
0
上線前必須全數關閉
指標目標值量測方式目前實測
核心流程走得通端到端不中斷正式環境手動走一次 + 自動化測試已驗證(見驗收清單)
解析成功率(有效連結)≥ 95%parse_jobs.status='ok' 佔比測試情境 100%(有效連結)
解析耗時< 3000 msparse_jobs.elapsed_ms1 ms(規則引擎)
資料落地重啟後不遺失重啟服務後查詢同一筆已驗證
後台可追蹤事件/日誌可查/admin 資料表瀏覽已驗證

2. 納入範圍

P0 — 沒有它 MVP 不成立
編號功能對應規格取捨理由
P0-1社群連結匯入:貼上 URL + 貼文文字,解析出店名/地區/標籤/推薦語FR-1.1、FR-1.2這是整個產品的入口,最小可行的替代方案(不依赖原生分享面板)
P0-2解析結果確認與修正:可改店名/地區/地址,或從候選清單挑選FR-1.2解析一定會有誤,人工確認是準確率的最便宜保險
P0-3共享地圖與圖釘:建立地圖、群組成員、圖釘落點與列表FR-2.1私人/親友圈的容器,是「信任」的前提
P0-4圖釘雙重狀態:想去 / 已去過切換FR-2.2一句狀態切換就撐起「庫存 → 踩點」的核心循環
P0-5親友實測評價:星等 + 文字,僅群組可見FR-2.3產品最重要的差異化(打破業配不透明)
P0-6清單瀏覽與搜尋:依狀態篩選、關鍵字搜尋FR-2.1沒有列表,地圖滿了就找不到東西
P0-7庫存轉行程:勾選 2–5 個地點,依距離最近鄰排序並估移動時間FR-4.1、FR-4.2把「收藏」變成「真的會去」,是價值主張的收尾
P1 — 有它體驗才完整(本版已實作)
編號功能取捨理由
P1-1解析錯誤態與手動新增解析失敗不能讓流程斷掉,必須有出口
P1-2區域雷達(只顯示尚未去過的點)低成本、高感知的「附近有什麼」場景
P1-3夜間模式沿用既有設計稿,成本極低
P1-4管理後台:資料表瀏覽、事件稽核、系統日誌、指標沒有後台就無法驗收「資料可追蹤」,也無法維運
P1-5健康檢查與就緒探針、結構化日誌、安全標頭、寫入限流上線監控與防護的最低門檻
P1-6使用者資料匯出(JSON)資料可攜,降低信任門檻,成本極低
P1-7LLM 解析引擎(可插拔,設 MAPSYNC_LLM_KEY 即啟用,不需改程式)使用者要求提前納入:規則引擎已可跑通流程,但真實貼文的語意變化大,LLM 是準確率的直接解
P1-8Google Places 打點補強(可插拔,含座標投影)使用者要求提前納入:補上 place_id、精準經緯度、地址、營業時間;失敗只略過不阻塞
P1-9PWA 與 Android Web Share Target使用者要求提前納入:用 PWA 換取「從 IG 分享面板直接丟進來」,不用等原生 App

3. 排除範圍(本版明確不做)

用「不做」換「做得完」,是本版最重要的取捨。

排除項目為什麼現在不做排程
原生 App 外壳(Flutter/React Native 雙平台)需要 Xcode/Android Studio、商店審核與兩套原生壳;核心價值不需要它才能驗證。分享面板已改以 PWA 的 Web Share Target 補上驗證留存後再評估
iOS 原生分享面板iOS 的 Web Share Target 支援度有限,需原生 App與原生外壳一併評估
Supabase/Firebase 即時同步多一個外部相依與費用;MVP 先用單一 SQLite,群組同步以輪詢/重整達成需要在多人同時編輯的即時感時再導入
KOL 專屬地圖外鏈與一鍵匯入屬於成長引擎,需要公開頁與權限模型Phase 2
Klook/KKday/Inline 導購涉及實際金流與分潤合約,須使用者再次確認商用階段,先與平台談妥再開發
付費訂閱、廣告商業模式尚未驗證不排程
多語系、國際化目標使用者以繁體中文為主不排程
端到端加密、法務合規認證需要正式法律審查商用前處理

4. 關鍵技術取捨

規格書原本的選擇
MVP 的選擇與代價
Flutter / React Native 原生 App
行動優先 Web App(PWA)
代價:吃不到 iOS 原生分享面板。
換到:一個網址就能上線、驗收、給人試用。
Google Places API 取座標與營業時間
內建地標辭典 + 區域推估 + 人工校正
代價:覆蓋率有限。
換到:零成本、零授權風險,且錯誤有出口。
LLM(Gemini/GPT)提煉店名與標籤
規則引擎 heuristic-v1,LLM 為可插拔升級
代價:對沒見過的文案理解力較弱。
換到:1 ms 回應、零費用、結果可預期可測試。
Supabase / Firebase Realtime
單一 SQLite(WAL 模式)
代價:無即時推播。
換到:單檔可備份、可搬移,維運複雜度趨近於零。
  • 以上取捨只影響「怎麼做」,不影響第 2 節任何一條 P0 的完成標準。
  • 每一項取捨都留了升級介面:解析引擎走 server/parser.js、地標走 server/gazetteer.js、資料層走 server/db.js,換掉任一層都不動其他模組。
  • 5. 範圍凍結與變更控制

  • 凍結原則:只有「P0 走不通」或「阻斷級缺陷」可以打破凍結;新想法一律進下一版待辦,不得插隊。
  • 變更流程:提出 → 說明它擋住哪一條驗收標準 → 記錄在里程碑看板的「變更紀錄」 → 由範圍擁有者決定是否換出等量的既有項目。
  • 等價交換:要加一件事,就要拿掉一件同等工作量的事,維持總量不變。
  • 6. 驗收對應表

    MVP 範圍驗收標準證據位置
    P0-1~P0-3核心流程在正式環境完整走通驗收清單 §B、§G
    P0-4~P0-5圖釘狀態與評價正確寫入且可追蹤驗收清單 §D、§F
    P0-6~P0-7行程可生成並依距離排序驗收清單 §E
    P1-1解析錯誤態有明確出口驗收清單 §C
    P1-4~P1-5後台可查、可追蹤、有日誌驗收清單 §F、上線檢查清單 §7
    P1-7~P1-9LLM 解析、Places 打點、分享面板皆可切換且可降級驗收清單 §8、整合測試 21 項
    驗收判準一律以「在本機/正式環境實際操作一次」為準,不以程式碼看起來正確為準。