★結論摘要
兩案都可行,2026-09-23 已完成主要架構定案,尚未進入開發(等訪談與簽約,見 待開工前檢核)。
第一案(冰棒/食品廠,已報 20~25 萬,定案後上修 22~24 萬):官網+散客商店改用 WordPress + WooCommerce(匯款/超商取貨付款/藍新或綠界金流三種付款方式,標準配置無授權費);廠商 B2B 系統維持 Django + PostgreSQL。兩者同一台主機、不同容器、不同資料庫,網路互相隔離;散客與廠商訂單靠 WooCommerce Webhook + REST API 整合進銷存,不直連資料庫。
第二案(多據點營運,28~35 萬):海生館先試點,核心是把手寫進銷存電子化成「資料底座」,AI 排班/預測留到累積 3~6 個月乾淨資料之後才談。
開工前必辦:範圍文件客戶簽認、與表妹的書面約定(里程碑、退出通知期)、WT 接案身分與發票決定、兩客戶的必要訪談項目(見 訪談清單)。
0總覽與可行性
整理日期:2026-09-21 狀態:需求整理中,尚未簽約。兩案為不同客戶(彼此認識),不能共用資料模型,但可以共用技術架構與開發流程。
1. 兩案一句話定位
| 第一案 | 第二案 | |
|---|---|---|
| 客戶 | 冰棒/食品廠 | 多據點冰品飲料店(水族館/海邊觀光型) |
| 已報區間 | 20~25 萬 | 28~35 萬 |
| 本質 | 交易系統:廠商下單 → 老闆處理 → 出貨 | 資料系統:每日手寫進銷存 → 電子化 → 報表 → 決策 |
| 第一期核心 | 官網 + B2B 廠商下單 + 後台 + LINE 導流/通知 | 手機每日填報 + 每店損益/商品/人力報表 + 儀表板 |
| 最大風險 | 範圍爆掉(庫存成本、LINE 深度串接、金流) | 店長不填資料 → 系統空轉 |
| 價格判斷 | 偏低,只有範圍鎖死才划算 | 合理,前提是把「導入與訓練」算進去 |
2. 可行性總評
2.1 技術:可行,兩案都不需要冒險的技術
- 第一案是標準的「帳號 / 商品 / 訂單 / 後台」系統,加上 LINE Messaging API。全部都是成熟技術,有大量中文教學與範例。
- 第二案技術更輕:一個手機好填的表單 + 資料庫 + 報表工具。真正的難度在資料欄位設計和導入。
- 唯一領域邏輯複雜的是第一案的「配方成本 / 損耗 / 毛利」,這塊必須第二期,且訪談要另開兩三輪。
2.2 能力:可行,但要把「執行者是大二學生」寫進計畫
團隊分工建議:
| 角色 | 人 | 負責 |
|---|---|---|
| 專案負責 / 客戶窗口 / 商業判斷 / 驗收 | WT | 需求訪談、規格簽認、對客戶說法、驗收、收款 |
| 執行開發 | 表妹(大二相關科系) | 依規格寫程式(與 AI 協作)、部署、測試 |
| 架構 / 規格 / 審查 | Claude | 架構決策、資料模型、規格書、程式碼審查、測試案例、風險提醒 |
| 外援顧問(2026-09-23 新增) | 從業約 10 年的資深專業人士,WT 已協調好可隨時諮詢,不算團隊常駐成員 | 執行前/中/後三個時間點介入,確認執行方向與策略、抓出 WT/表妹/Claude 都沒看到的問題 |
這位外援怎麼用(原則):
- 定位是「外援」,不是團隊裡的固定角色——不掛名、不寫規格、不簽驗收,需要時調用,平常不占用他的時間。
- 不是執行者,是「第二意見」:他說的話要認真聽,尤其是他熟悉的部分。
- 三個時間點各安排一次諮詢,不要等出事才找他:①簽約前(範圍、報價是否合理)②開發中期(架構與資料模型是否有業界常見的坑)③上線前(驗收清單有沒有漏掉這行業的慣例)。
- 每次找他前,WT 先把具體問題列出來,不要空手去聊(見 07 檔 3b)。
- 他若跟這份規劃書的判斷衝突,以他的專業意見為準去覆核,不要因為文件已經寫好就不改——這份文件是 WT 和 Claude 商業/技術判斷的產物,不是請他來背書用的。
要正視的事實:
- 表妹「知識比你多一點,經驗不比你多」→ 她會寫程式,但不會自然知道要做備份、權限檢查、輸入驗證、錯誤處理。這些必須寫成明確的驗收條件,不能靠她自覺。
- 她有課業:10 月底期中、12 月期末(2026-09-25 會議確認:11 月沒有考試)。開發時程要避開,或那兩週不排交付。
- 人員風險:學生可能中途沒空。所有程式碼必須在 git、有 README、有部署文件,任何人接手能在一天內跑起來。這是你保護自己的方式。
- 你自己的位置:你不寫程式,但你要看得懂進度。每週一次 30 分鐘 demo(在測試環境實際點給你看),不接受口頭「做好了」。
對策(已寫進各案規劃):
- 規格書先行,表妹拿到的是「要做什麼、驗收怎麼算過」,不是模糊描述。
- Claude 做程式碼審查與測試案例設計,補她經驗的缺口。
- 用「後台自動生成」的框架(Django admin)省掉最花時間又最容易做爛的後台 UI。
- 時程估算 ×1.5,並保留 2 週緩衝不排任何事。
2.3 時間:緊,兩案必須錯開;第一案現在有兩個硬期限
你目前手上:嘖嘖募資(9/21–24 定案)、TTQS 評核簡報、研考會簡報案(下週交初版)。
2026-09-23 更新:第一案客戶端有外部硬期限——10/15 要交一版 Demo(給客戶寫企劃申請補助用)、11/30 要交一版初步可執行的系統。這把第一案的開發壓縮到原本規劃的一半左右,詳細拆解與風險見 01 檔第 4 節。第二案時程不受影響,維持原規劃。
2026-09-25 會議修正:表妹期中考是 10 月底(不是原先誤植的 11 月初),11 月沒有考試,下一次考試是 12 月期末。這代表 10/15 Demo 之後、11/30 執行版本之前的空檔要讓她準備期中考,但 11 月整月反而可以全力衝刺,時程表已依此調整。
| 時段 | 第一案 | 第二案 |
|---|---|---|
| 9/23~9/29 | 需求訪談、規格書、簽約(壓縮版) | 需求訪談(可同步,負擔低) |
| 9/30~10/13 | 開發衝刺 → 10/15 Demo | 資料模型設計、紙本表單對照 |
| 10/14~10/26 | Demo 後收回饋、補強權限隔離;強度放輕(期中將近) | 輸入表單雛形 |
| 10/27~10/31 | 表妹期中考週,不排里程碑 | 不排 |
| 11/1~11/23 | 全力衝刺:B2B 流程完整化、LINE 綁定與基本通知(11 月無期中期末干擾) | 開發報表 |
| 11/24~11/30 | 收尾、部署 → 11/30 初步可執行版本 | 開發報表 |
| 12 月起 | 完整驗收、進銷存整合、試營運陪跑、保固;注意表妹 12 月有期末考 | 據點試跑 4 週 |
| 2 月 | 保固結束 → 維護合約 | 上線、訓練、交付 |
兩案同時全速開發本來就不建議,現在第一案還被壓縮,第二案的開發實質上要往後延,維持「先做需求訪談與資料設計,12 月起才真的開發」的節奏。
2.4 價格:第一案要靠範圍文件保護,第二案要把導入算進去
詳見各案規劃書的「報價拆解」。原則:
- 已報區間不推翻,定義為「第一階段範圍」。
- 建置費之外,主機月費與維護合約一定分開列。不列就是免費包一年。
- 第一案 B2B「廠商只看自己的訂單」是基本功能,不是加購。
3. 共用技術架構(兩案一致,降低表妹的學習成本)
使用者(手機 / 電腦 / LINE 內)
| HTTPS
v
Cloudflare(DNS、憑證、基本防護)
|
v
VPS 一台(Docker)
+- Django 應用(官網頁面、廠商下單頁、API、後台 = Django admin)
+- PostgreSQL(資料庫)
+- [第二案] Metabase(報表與儀表板,自架免費)
`- 每日備份 → 物件儲存(Cloudflare R2 或 S3)
|
v
LINE Messaging API(webhook 進、push / reply 出)
為什麼是 Django:
- 後台免費:Django admin 自動生成商品/訂單/廠商管理介面,含權限。第一案的「後台管理」模組因此省掉 30~40% 工時,而且是學生做不壞的部分。
- Python:你自己用過 FastAPI + SQLAlchemy,看得懂;學生在校多半學過 Python;AI 輔助寫 Django 的品質穩定。
- 一套架構兩案共用,第二案的輸入表單直接沿用第一案的專案骨架。
不選的理由:
- Next.js + Supabase:學生可能更熟 React,但後台要自己刻,且你看不懂 JS 生態的問題。
- 純低代碼(AppSheet / Airtable):第二案曾考慮,但既然表妹能寫程式、第一案已經要建 Django 骨架,第二案用同一套比較划算,而且資料在客戶自己的資料庫裡(客戶會在意)。報表層仍用 Metabase,不自己畫圖表。
主機成本估算(給客戶的月費):VPS 約 NT$300~600/月、網域約 NT$500/年、R2 備份幾十元、LINE 官方帳號依用量 0~1,400/月。
4. 合約與流程(兩案共用)
- 需求訪談(1~2 次,用
04_需求訪談問題清單.md) - 規格書 + 範圍文件簽認(在範圍/不在範圍/另計清單、驗收條件)→ 這一步是防爆範圍的唯一保障
- 簽約與付款:30%(簽約)/40%(測試環境驗收)/30%(上線驗收)
- 開發:每週 demo 一次,測試環境給客戶點
- 驗收:對照驗收清單逐條打勾,不接受「感覺不對」
- 保固 30 天:修 bug,不加功能
- 維護合約:月費(含主機)或年約,另簽
- 變更單:任何範圍外需求走變更單,寫清楚工時與費用,客戶簽了才做
帳號歸屬(一定要在客戶名下,不然違反平台條款或日後糾紛):
- 網域、主機、Cloudflare:客戶的帳號,你們是協作者
- LINE 官方帳號 / LINE Developers Provider:客戶的 LINE Business ID(LINE 條款規定 channel 資料屬於 provider,代客建在自己名下可被停權)
- 程式碼:git,交付後歸客戶,你保留可展示權(寫進合約)
5. 你可能還沒想到、但要放進報價或合約的
- 個資法:廠商帳號、消費者詢價資料 → 網站要有隱私權聲明,資料只用於訂單。你不做法律諮詢,但要提醒客戶。
- 電子發票:第一案若日後對消費者線上販售,發票是跑不掉的,屬第二期金流範圍。
- LINE 費用是客戶付的:訊息費、聊天進階方案 100/月,寫進「客戶自付項目」。
- 資料所有權與退出:合約寫明客戶隨時可取得完整資料庫匯出。
- 停機與備援:不承諾 99.9%,承諾「每日備份、故障 1 個工作天內回應」。
- 訓練與文件:操作手冊 + 一次教學,另外的教學按次計費。
- 表妹的酬勞與交接條款:你跟她之間也要有簡單的書面約定(里程碑付款、程式碼歸專案),避免中途變數。
6. 檔案索引
01_第一案_冰棒訂購系統_規劃.md— 模組、階段、資料模型、驗收、報價拆解02_LINE官方帳號_可行性與下單流程研究.md— LINE AI 回覆、費用、個人 LINE 下單進資料庫的四種做法03_第二案_多據點營運系統_規劃.md— 資料模型、輸入設計、報表、導入計畫、報價拆解04_需求訪談問題清單.md— 兩案訪談題目05_客戶溝通_範圍說法與交付項目表.md— 對客戶的說法、交付項目表、合約附件草稿06_風險與問題預估_應對手冊.md— 依階段列出可能發生的問題、徵兆、預防與應對(★ 為最關鍵)07_待補資訊與開工前檢核.md— 要跟客戶、表妹拿的資訊,你要做的決定,開工前檢核表08_技術方案_WordPress可行性評估.md— 第一案能不能用 WordPress:分模組可行性、外掛與費用、資安風險數字、三個方案比較
1第一案:冰棒/食品廠訂購與後台系統
已報區間:20~25 萬(定義為第一期);因散客購物車+金流併入第一期(2026-09-23 定案),實際報價上修為 22~24 萬,仍落在區間內 定位:把現有的 LINE 訂購流程電子化,不是做漂亮網站。響應式網站+散客商店(WordPress) + B2B 廠商下單 + 後台管理 + 資料庫 + LINE 入口/通知 不做:App、B2B 廠商端金流(廠商仍走匯款、月結;金流僅用於散客商店)、庫存成本與批次到期(第一期)、AI 客服自建、完整 LINE Bot 對話流程 最大風險:客戶以為 22~24 萬包含整套完整系統(尤其是庫存成本這塊)→ 用 05 檔的範圍文件在簽約前釘死
技術架構定案(2026-09-23):本案是兩個獨立系統,都在第一期交付:
- 官網+散客商店:WordPress + WooCommerce,含品牌介紹、商品展示、消費者購物車、三種付款方式(匯款/超商取貨付款/藍新或綠界金流)。標準配置,不是客製開發,無 B2B 那類授權費風險。詳見 08 檔 第 1、6 節。下面 A、B 模組的內容已由 WordPress 取代,保留在此僅供對照,實際規格與驗收以 08 檔為準。
- 廠商 B2B 系統(下面模組 C 廠商下單、D 後台、E LINE 整合):維持 Django + PostgreSQL,是本檔主要規劃內容。
兩者跑在同一台主機的獨立容器、獨立資料庫,用子網域分流,網路互相隔離(08 檔 6.2 節)。兩邊訂單資料要匯總成進銷存,做法是 WooCommerce 內建 Webhook 推送訂單到 Django 的接收端點,不是直接連資料庫(08 檔 6.5 節)——這個接收端點的「輕量版」(先忠實記錄散客訂單,不做完整庫存計算)可以在第一期先做,完整庫存扣減/回寫留第二期,見下面模組 E2 與報價。
1. 階段切分
第一期 MVP(20~25 萬)— 目標:廠商可以在 LINE 裡下單,老闆在後台處理,全程有紀錄
| 模組 | 內容 | 驗收條件(摘要) |
|---|---|---|
| A. 官網(已改由 WordPress 交付,見 08 檔第 1 節) | 見 08 檔 | |
| B. 消費者購物車與金流(已改由 WordPress/WooCommerce 交付,見 08 檔第 6.3 節) | 見 08 檔驗收項目 | |
| C. 廠商下單(B2B) | 廠商登入(帳密 或 LINE LIFF 免登入);看到自己的商品清單與價格;填數量、指定配送日、備註;送出;查歷史訂單與狀態;只看得到自己的訂單 | 用兩個廠商帳號交叉測試看不到對方資料;訂單狀態即時 |
| D. 後台管理 | Django admin:商品(分類、規格、單位、上下架)、廠商(帳號、專屬價格表、綁定的 LINE)、訂單(列表、篩選、狀態流轉:新訂單→已確認→已出貨→完成/取消)、消費者詢價、匯出 Excel | 老闆 10 分鐘教學後能獨立操作;狀態變更有時間與操作者紀錄 |
| E. LINE 入口與通知 | 官方帳號圖文選單 → LIFF 下單;首次綁定廠商;訂單成立回確認卡;狀態變更推播;關鍵字自動回應;AI 聊天機器人 FAQ(LINE 內建) | 3 個真實 LINE 帳號走完全流程;推播用量在後台可查 |
| E2. 散客訂單接收(輕量版,可選) | 接收 WooCommerce Webhook,驗證簽章,解析品項與數量,寫入 RetailSaleLog(見資料模型);不含庫存扣減、成本計算 | Woo 下單後 Django 資料庫能看到對應紀錄;簽章錯誤的請求被拒絕 |
| F. 基礎建設 | 網域、HTTPS、VPS 部署(Docker)、PostgreSQL、每日自動備份、錯誤通知、測試環境;與 WordPress 容器網路隔離(08 檔 6.2 節) | 備份可還原(實際演練一次);測試與正式環境分離;WordPress 容器連不到本系統資料庫連接埠 |
| G. 交付 | 操作手冊、部署文件、一次現場/線上教學、30 天保固 | 文件齊全到第三人可接手 |
第二期(另計,依需求選購)
| 項目 | 內容 | 估價區間 |
|---|---|---|
| 自然語言下單 | 廠商打字 → LLM 解析草稿 → 確認卡 → 建單(見 LINE 研究 L3) | 4~6 萬 |
| 庫存/成本/毛利(含散客通路整合) | 原料進貨、配方(BOM)、處理損耗率(去皮去籽)、成品入庫、保存期限與報廢、銷售扣庫(散客+廠商兩通路合併)、庫存量、成本回推與毛利報表;把 E2 的輕量紀錄升級成完整扣庫邏輯,並把庫存回寫到 WooCommerce(08 檔 6.5 節)。食品類的庫存不是「數量」而是「批次 + 期限」,這是它貴的原因 | 8~15 萬(需另 2~3 輪訪談) |
| 電子發票 | 消費者購物車已在第一期由 WooCommerce 交付;此處僅指電子發票開立串接 | 1~2 萬 |
| 細粒度權限 | 業務員角色、多倉、只能看自己負責的廠商 | 2~3 萬 |
| 自動補貨提醒/每週訂貨提醒 | 依歷史下單週期推播 | 1~2 萬 |
| 進階報表 | 廠商別月報、商品銷量趨勢、應收帳款 | 2~4 萬 |
| AI 摘要/異常標記 | 每日訂單摘要、異常量提醒 | 1~3 萬 |
進階擴充(第三期以後)
- 多品牌/多站
- 與會計軟體串接
- 廠商 App(只有在 LIFF 明顯不夠用時才考慮)
1b. 進銷存三層資料庫設計(2026-09-25 會議定案,第二期範圍)
WT 與表妹開會把「庫存/成本/毛利」這塊原本模糊的第二期項目談出具體架構。核心問題:一支冰棒可能用多種原料(例如百香果冰棒=百香果+檸檬),同一種原料也可能被多種冰棒共用(檸檬同時用在百香果冰棒和荔枝冰棒)——這是多對多關係,資料庫要拆成三層,同一個資料庫、三張資料表,不是三個獨立資料庫(避免跨資料庫同步失敗,例如扣了 A 表但 B 表沒扣成功,資料就對不上)。
三層結構
第一層:原料進貨與損耗(RawMaterial + RawMaterialBatch)
- 採購紀錄:原料名稱、供應商、進貨重量、進貨價格、進貨日期
- 處理後可用量:去皮/去籽/清洗後實際剩下多少(例如 1000 斤西瓜 → 去皮後剩 500 斤瓜肉)
- 長期累積這兩筆數字,可以自動算出平均損耗率/去皮率
|
v(配方比例連結)
第二層:配方表(Recipe,商品 × 原料的關聯表)
- 每一種冰棒對應用了哪些原料、各自用量(例如:百香果冰棒 = 百香果 80g + 檸檬 20g)
- 這一層專門解決「一對多、多對多」的原料關係,不會因為原料共用就重複記錄
|
v(依配方比例換算耗用量)
第三層:成品/庫存(FinishedGoods + StockLocation)
- 已完成的成品數量、存放地點(**可能有 2~3 個不同存貨地點**,不能預設只有一處)
- 賣出後扣減庫存,回傳給網頁顯示「還有幾支可以用」
關鍵設計原則(會議中確認)
- 原料實際使用量是「批次事後記錄」,不是即時扣庫存:工廠可能一整週處理完一批草莓才回填紀錄,不是做的當下即時扣。這代表系統只能事後知道「這批用超了/剩太多」,不是即時庫存動態——這個限制要讓客戶知道,不是系統做不到,是工廠實際作業流程就是批次處理。
- 加分功能(非核心,第二期做完基礎再加):損耗率超過閾值(例如 30%)提示「建議換一家供應商」;依計畫用量與實際剩餘比對,提示「買超了」或「不夠做,要多買」。這些是 if-else 規則,不是 AI,先把「記錄」這件事做對,這些提醒是之後可以順手加的。
- 多存貨地點:進貨時要能標註「跟哪一家買的」,成品要能標註「存放在哪個地點」,不能寫死成單一地點。
對 01 檔資料模型的影響
第二期會新增 Material(原料主檔)、MaterialBatch(進貨與處理批次)、Recipe(配方,商品↔原料的多對多關聯+比例)、StockLocation(存貨地點)、FinishedGoodsStock(成品庫存,依地點分)。第一期的 Product 只代表「成品」概念,不需要現在就建這些表,但命名與外鍵預留要對得上,避免第二期要大改第一期的表結構。
2. 資料模型(第一期)
Product 商品:名稱、分類、規格、單位(箱/支)、每箱數量、圖片、狀態、消費者顯示價 PriceList 價格表:廠商 × 商品 → 單價、最小訂量(廠商專屬價格) Vendor 廠商:公司名、聯絡人、電話、地址、付款條件、狀態 VendorUser 廠商使用者:帳號、密碼(可空)、LINE userId(可空)、所屬廠商、角色 Order 訂單:編號、廠商、配送日、時段、狀態、備註、建立來源(web / liff / manual)、建立時間、操作紀錄 OrderItem 訂單品項:訂單、商品、數量、單價快照、小計 Inquiry 消費者詢價:姓名、電話、品項、數量、備註、處理狀態(歷史保留,WooCommerce 上線後新詢價改在 WordPress 端) Notification 通知紀錄:對象、類型、訊息、送出結果(成功/額度不足/失敗) RetailSaleLog 散客銷售紀錄(E2,第一期輕量版):WooCommerce 訂單編號、品項(商品對應、數量、單價)、下單時間、Webhook 簽章驗證結果、原始 JSON 備查;**不含庫存扣減欄位**,第二期升級時才加
設計重點:
OrderItem.單價快照:訂單成立時把價格複製進去,之後改價不影響歷史訂單。Order.建立來源:日後分析廠商用 LINE 還是網頁下單。Notification:推播失敗要留紀錄,額度用完時後台看得出來。RetailSaleLog是唯讀的原始紀錄,第一期只負責「存下來」,不碰庫存數字;第二期庫存模組會把它跟Order(廠商)合併算出真正的庫存異動。- 第二期的庫存模組會加
Material、Recipe、StockMovement,第一期的 Product 要預留「成品」概念不衝突;StockMovement上線後才把散客與廠商兩個通路的扣庫邏輯統一進去。
3. 技術與部署
- Django 5 + PostgreSQL + Docker;前端用 Django template + 少量 JS(HTMX 或 Alpine),LIFF 頁用 LIFF SDK。
- 後台 = Django admin 客製(列表欄位、篩選、狀態動作按鈕、匯出)。
- LINE:
line-bot-sdkPython;webhook 端點驗證簽章;耗時工作丟背景(Django-Q 或 Celery 擇一輕量)。 - WooCommerce Webhook 接收端點(E2):獨立路由,驗證
X-WC-Webhook-Signature標頭(HMAC-SHA256 + base64,用原始請求內容比對,原理與 LINE webhook 驗證相同,可共用同一套驗證邏輯);第二期回寫庫存則用官方woocommercePython 套件呼叫 WooCommerce REST API(Consumer Key/Secret,WooCommerce 後台設定 > 進階 > REST API 產生),技術細節見 08 檔 6.5.1 節。 - 官網+散客商店:獨立的 WordPress + WooCommerce 部署(自己的容器、自己的 MySQL),不算在本檔 Django 技術棧內,見 08 檔第 6.1 節。
- 部署:VPS(Linode/Hetzner/DigitalOcean 最小型即可)+ Cloudflare;
docker compose up(同一個 compose 檔管理 Django 容器 + WordPress 容器,兩者網路隔離);每日pg_dump/mysqldump各自上傳 R2。 - 測試:pytest,至少涵蓋「廠商權限隔離」「訂單狀態流轉」「價格快照」「LINE 綁定」「WooCommerce Webhook 簽章驗證」五組。
- 錯誤監控:Sentry 免費方案或簡單的 Email 通知。
4. 時程(2026-09-23 改版:兩個外部硬期限)
WT 確認的硬期限:
- 10 月中(抓 10/15)要有一版 Demo,給客戶拿去寫企劃、申請補助
- 11 月底(抓 11/30)要有一版「初步可以執行」的系統
從今天(9/23)到 10/15 只有約 3 週,扣掉訪談與簽約,實際能寫程式的時間更短;到 11/30 也只有約 9.5 週。這個時程比原本規劃的 ×1.5+緩衝壓縮很多,是目前最大的風險,見 06 檔新增的風險項。
2026-09-25 會議修正:表妹期中考是 10 月底(不是原先誤植的 11 月初),11 月沒有考試,下一次是 12 月期末考。時程表已依此調整——期中考週落在 10/27–10/31,剛好卡在 Demo 之後、衝刺開發之前,11 月整月反而沒有考試干擾。
4.1 Demo(10/15):目的是給客戶寫企劃書用,不是完整系統
Demo 的目標是「讓人看得懂、看得出可行」,不是「每個功能都能用」。建議範圍:
| 模組 | Demo 要做到 | 不用做到 |
|---|---|---|
| 官網(WordPress) | 品牌頁、商品展示,可上線 | 不用完整 SEO 優化 |
| 散客商店 | 商品可瀏覽、加入購物車 | 金流可以先接測試模式,不用能真的收款 |
| 廠商 B2B | Django admin 能看、一個假帳號能示範「登入 → 看專屬價格 → 下單」的流程 | 不用做到所有例外處理、不用多廠商權限隔離的完整測試 |
| LINE 整合 | 用截圖/流程圖展示規劃(沿用這份技術頁的流程圖即可),或最多做到圖文選單導流 | LIFF、webhook、簽章驗證這些先不用真的接 |
| 進銷存整合 | 不用做,用架構圖說明規劃即可 | — |
這份技術頁的流程圖(LINE LIFF、Webhook 整合)本身就是很好的補助企劃素材——不用等系統做出來,用圖說明「這是我們規劃的架構」,對申請補助反而更清楚。
4.2 初步可執行版本(11/30)
在 Demo 基礎上,把「真的能用」的部分做出來:廠商登入下單全流程(含權限隔離)、後台訂單處理、LINE 綁定與基本通知。WooCommerce↔Django 的自動化進銷存整合、完整資安檢查、多廠商試營運,可以留到 11/30 之後繼續做,不強求這個時間點就要有。
4.3 時程表
| 時間 | 內容 | 里程碑 |
|---|---|---|
| 9/23–9/29 | 需求訪談、規格書、範圍文件、簽約(壓縮版,重點資訊優先,細節可邊做邊補) | 簽約 |
| 9/30–10/13 | 專案骨架、Django admin、WordPress 建站(平行)、B2B 下單流程雛形、LINE 整合改用流程圖展示 | 10/15 Demo |
| 10/14–10/26 | Demo 後收客戶/窗口回饋,補強 B2B 下單的權限隔離與資料驗證;強度放輕(期中考將近) | — |
| 10/27–10/31 | 表妹期中考週,不排里程碑 | — |
| 11/1–11/23 | 全力衝刺:LINE 綁定與 LIFF 基本流程、後台訂單處理完整化、基本資安檢查、測試環境驗收(11 月無期中期末干擾) | — |
| 11/24–11/30 | 修正、部署 | 11/30 初步可執行版本 |
| 12 月起 | WooCommerce↔Django 進銷存整合、完整驗收、試營運陪跑、保固;注意表妹 12 月有期末考 | 依 06 檔風險逐步收斂 |
這張表是壓力測試後的樂觀版本,不是保證。 如果 9/23–9/29 這週訪談與簽約卡住,後面全部要往後推;不建議為了趕日期跳過範圍文件簽認(06 檔 A1)。
5. 報價拆解(第一期,供你內部參考與對客戶解釋)
| 項目 | 估價 |
|---|---|
| 需求訪談、規格書、範圍文件 | 2.0 萬 |
| WordPress 官網+WooCommerce 散客商店(建站、商品上架設定、三種付款方式設定與測試)※原「官網頁面」項目改由此取代 | 3.0~4.5 萬(08 檔 6.4 節估 1.5~2.5 萬為新增部分,加回原官網頁面 1.5~2.0 萬) |
| 廠商下單系統(登入、專屬價、下單、歷史、權限隔離) | 5.0 萬 |
| 後台管理(商品、廠商、訂單、狀態、匯出) | 4.0 萬 |
| LINE(綁定、LIFF、確認卡、推播、選單、FAQ 設定) | 3.5 萬 |
| 散客訂單接收 E2(WooCommerce Webhook 設定+ Django 接收端點輕量版) | 0.5~1.0 萬 |
| 基礎建設(部署、HTTPS、備份、監控、測試環境、兩容器網路隔離) | 2.0 萬 |
| 測試、文件、教學、保固 | 2.0 萬 |
| 合計 | 22.0~24.0 萬 |
落在 20~25 萬內,餘裕縮小到約 1~3 萬(因為併入了原第二期的購物車功能)。若客戶砍價,先砍 E2(改成第二期再做,資料不會漏,只是慢一步整合),不砍權限與備份。
客戶自付、不含在內:兩個網域或一個網域+子網域(約 500/年)、主機(約 300~1,000/月,視 WordPress+Django 合併資源需求)、LINE 官方帳號方案(0~1,400/月)、聊天進階方案(100/月)、金流交易手續費(藍新/綠界 1.85%~3%,依實際交易額)、超商取貨物流費(約 NT$60~70/件,由消費者或店家吸收,依定價策略)。
維護合約(另簽):月費 3,000~5,000(含主機代管、bug 修正、小調整 2 小時/月、每月備份檢查),WordPress 那側因外掛更新頻率較高,建議加購外掛與資安掃描追蹤(見 08 檔 2.4 節),維護月費可能需上調至 4,000~6,000,或年約 4.8~7.2 萬。
6. 驗收清單(合約附件用,節錄)
- ☐ 兩個廠商帳號互相看不到對方的訂單、價格
- ☐ 廠商下單後 10 秒內 LINE 收到確認卡,內容與訂單一致
- ☐ 老闆改狀態為「已出貨」,廠商 LINE 收到通知;推播失敗時後台有紀錄
- ☐ 商品改價後,舊訂單金額不變
- ☐ 後台匯出 Excel 欄位齊全
- ☐ 手機、平板、電腦三種裝置下單流程正常
- ☐ WordPress 商店測試下單後,Django 資料庫的
RetailSaleLog能看到對應紀錄,品項與數量一致 - ☐ 偽造(無正確簽章)的 Webhook 請求被拒絕,不會寫入資料庫
- ☐ 從 WordPress 容器嘗試連線 Django 資料庫連接埠,確認被阻擋(網路隔離驗證)
- ☐ 備份檔可在測試環境還原成功
- ☐ 操作手冊、部署文件、帳號清單交付
資安驗收(2026-09-24 補充,具體化,見 08 檔「資安強化清單」)
- ☐ IDOR 系統性測試:每一個會回傳廠商資料的 API/頁面,都用廠商 A 的帳號嘗試存取廠商 B 的訂單編號、廠商編號,一律應被拒絕(不是測一次,是每個端點都測)
- ☐ Django admin 路徑改成非預設值;帳密符合強度要求
- ☐ 廠商登入、Django admin 登入都有速率限制(防暴力破解)
- ☐ 正式環境
DEBUG=False,確認錯誤畫面不會外洩程式碼路徑或環境變數 - ☐ Cookie 設定
Secure/HttpOnly/SameSite - ☐ 密碼以雜湊儲存、全站 HTTPS、表單有輸入驗證(原條目具體化)
- ☐ 登入失敗、Webhook 簽章驗證失敗都有留紀錄,可觀察異常量
- ☐ GitHub Dependabot(或同等工具)已啟用,追蹤套件已知漏洞
- ☐ WordPress 外掛數量控制在必要範圍內,且都是必要、有維護的外掛
2LINE 官方帳號可行性與下單流程研究
研究日期:2026-09-21。資料來源列在文末;價格與功能以 LINE 官方頁面為準,β 功能隨時可能變動。
0. 結論先講
- LINE 內建的「AI 聊天機器人(β)」只能回答 FAQ,不能下單、不能查訂單、不能寫資料庫。 它適合處理「營業時間、配送範圍、最低訂量、付款方式」這類問題,月費 NT$100(聊天進階方案)。第一期直接用它當客服,不要自建 LLM 客服。
- 廠商從個人 LINE 對官方帳號下單,最務實的做法是「LIFF 下單頁」:廠商點選單 → 在 LINE 裡打開你們的下單網頁(自動知道他是誰)→ 送出 → 寫入資料庫 → LINE 回一張訂單確認卡。這是第一期就能做、成本可控、廠商不用學新東西的方案。
- 「打字就下單」(自然語言 → LLM 解析 → 建單)技術上可行,但要放第二期,而且設計原則是 LLM 只產生「草稿」,廠商按確認才成立訂單。
- 回覆訊息免費、主動推播計費。 訂單確認用回覆(免費),出貨通知用推播(計費)。30 家廠商規模估每月 500~1,000 則推播,落在中用量方案(2026/11/1 起 NT$1,000/月)。
- LINE 官方帳號與 Developers Provider 要建在客戶自己的 LINE Business ID 下,這是條款要求,也是日後交接的保障。
1. LINE 官方帳號本身有什麼(不用寫程式的部分)
| 功能 | 說明 | 第一案用途 |
|---|---|---|
| 一對一聊天 | 老闆用手機 LINE 官方帳號 App 或電腦後台回訊息 | 過渡期人工收單、例外處理 |
| 自動回應訊息 | 關鍵字觸發固定回覆 | 「訂貨」→ 回下單連結 |
| 圖文選單(Rich menu) | 聊天室下方的大按鈕 | 「我要訂貨」「查訂單」「聯絡我們」 |
| 群發 | 主動發給所有好友 | 新品、放假通知(計費) |
| AI 聊天機器人(β) | 2025-11-12 上線。上傳 PDF/圖片/FAQ,AI 自動生成回答 | FAQ 客服 |
| 聊天進階方案 | NT$100/月:聊天紀錄保存 5 年、備份、更多標籤與記事本,AI 聊天機器人需此方案 | 建議開 |
1.1 AI 聊天機器人(β)的能與不能
能:
- 從你上傳的價目表、常見問答自動生成回覆;有測試區;全部在 LINE 後台完成,不用寫程式。
- 可與手動聊天並用;可設營業時間內外不同回應方式。
- 上傳的資料不會用於 AI 訓練。
不能/限制:
- 只會「回答」,不會「執行」:不能建立訂單、不能查詢某廠商的訂單狀態、不能碰你的資料庫。
- β 版有每月回覆上限(官方未公布數字),建議好友數低於 25,000 的商家使用。
- LINE 明講「不保證準確性」;醫療、金融、宗教、政治、法律業種不可用(食品廠不受限)。
- 「自動回應訊息」(關鍵字)優先於 AI 回覆。
- 與 Webhook 的並存要在客戶帳號實測:LINE 從 2022 年起允許「聊天」與「Webhook」同時啟用,但 AI 聊天機器人(β)和你們的 bot 若同時對同一句話回覆,廠商會收到兩則。設計上要分工:訂單相關由 bot 處理,其餘交 AI;上線前實測。
注意:網路上還有一個更早的「AI 自動回應訊息(Smart chat)」,那是舊功能,2024 年 5 月已停止。現在講的是 2025 年 11 月的「AI 聊天機器人(β)」,兩者不同。
1.2 建議
第一期:開聊天進階方案(100/月),把「配送區域、最低訂量、付款方式、出貨時間、商品規格」做成 FAQ 餵給 AI 聊天機器人。省掉自建客服的成本與風險。日後若客戶要「AI 幫我看訂單」,那是第二期的自然語言下單,不是這個功能能做的。
2. 費用(台灣,2026-11-01 起新價)
| 方案 | 月費(未稅) | 每月免費則數 | 超量加購 |
|---|---|---|---|
| 輕用量 | 0 | 200 | 不可加購 |
| 中用量 | 1,000(原 800) | 3,000 | 不可加購 |
| 高用量 | 1,400(原 1,200) | 6,000 | 第 1~50,000 則每則 0.2 元,之後 0.15 元 |
計費規則(對系統設計最重要的部分):
- 回覆訊息(Reply)不計費:使用者先傳訊息、你在 reply token 有效期內回,不論人工、自動回應或 webhook 回覆,都免費。
- 推播(Push / Multicast / Broadcast / Narrowcast)計費:你主動發的都算,按收件人數計。
- 超過額度:API 回傳錯誤、訊息不送出(不會自動升級)。輕/中用量用完就停,只有高用量能加購。
- 聊天進階方案 100/月另計。
用量估算(假設 30 家廠商、每家每週 3 單):
- 每單「訂單成立確認」用 reply(免費)
- 每單「已出貨」推播 1 則 → 30 × 3 × 4.3 ≈ 390 則/月
- 加上「訂單有異動」「每週提醒訂貨」等 → 抓 600~1,000 則/月
- → 中用量方案 1,000/月足夠;廠商數到 60 家以上或要每日推播才需高用量。
設計上的省錢原則:
- 能用 reply 的不用 push(廠商送出訂單當下就回確認卡)。
- 狀態通知合併(同一天的多筆變更合成一則)。
- 額度用完的 fallback:後台仍可看到訂單狀態,並記錄「通知未送出」;必要時人工聊天回覆(免費)。
3. 個人 LINE → 官方帳號下單 → 資料庫:四個層級
從最便宜到最花錢。建議第一期做 L1 + L2,L3 放第二期,L4 不做。
L0:純人工(零開發,過渡期)
廠商在聊天室打字 → 老闆在 LINE 官方帳號 App 看到 → 自己到系統後台登打訂單。
- 用途:系統上線前、或廠商還不習慣時的備援。永遠保留這條路。
L1:導流到下單頁(第一期,基本)
圖文選單「我要訂貨」→ 開啟網站的廠商登入頁 → 廠商用帳號密碼登入 → 下單。
- 缺點:廠商要記帳號密碼;在 LINE 內開外部瀏覽器體驗較差。
- 做這層的目的是「沒有 LINE 也能用」,是 L2 的基底。
L2:LIFF 下單頁(第一期,建議主流程)
LIFF = 把你們的網頁嵌在 LINE 裡打開,並自動拿到使用者的 LINE userId。
廠商(個人 LINE)
| 點圖文選單「我要訂貨」
v
LIFF 頁面在 LINE 內開啟
| liff.init() → 取得 userId、displayName
v
後端查 userId 是否已綁定廠商
+- 未綁定 → 顯示「輸入廠商代碼 + 老闆給的邀請碼」→ 綁定(一次性)
`- 已綁定 → 顯示該廠商的專屬商品清單與價格
| 填數量、配送日、備註 → 送出
v
後端 API:驗證 → 寫入 orders / order_items → 回傳訂單編號
|
+- 頁面顯示「訂單已送出」
`- 用 Messaging API 傳一張 Flex Message 訂單確認卡到聊天室
(若在 webhook 事件內可用 reply,否則用 push)
v
老闆後台(Django admin)看到新訂單 → 改狀態「已確認 / 已出貨」
|
v
狀態變更 → push 通知廠商(計費)
技術要點:
- 身分綁定:LINE userId 是「每個 Provider 底下唯一」。Messaging API channel 和 LINE Login channel(LIFF 用)必須在同一個 Provider 下,userId 才一致。這是新手最常踩的坑。
- 一個廠商可綁多個 LINE(老闆 + 採購各一個);後台可解除綁定。
- LIFF 必須 HTTPS;endpoint URL 就是你們的下單頁。
- 廠商不需要帳號密碼,體驗跟「在 LINE 裡填表」一樣。
- 官網版(L1)與 LIFF 版共用同一個下單頁,只是登入方式不同。
工時:在 Django 下單頁已存在的前提下,LIFF 綁定 + 圖文選單 + 確認卡 + 狀態推播約 3~5 個工作天(表妹執行、含測試)。
L3:自然語言下單(第二期)
廠商直接打字:「明天送 芒果 20 箱、草莓 10 箱,下午到」
webhook 收到文字訊息
|(1 秒內回 200,處理放背景)
v
LLM 結構化:{品項:[{名稱:"芒果冰棒", 數量:20, 單位:"箱"}, ...], 配送日:"2026-09-22", 時段:"下午"}
|
v
比對商品主檔(該廠商可訂的品項、單位、最小量)
+- 全部匹配 → 回 Flex「訂單草稿」卡片,附【確認】【修改】按鈕(postback)
+- 部分不確定 → 卡片標示「以下品項請確認」
`- 完全看不懂 → 回「已轉交人員」+ 在後台標記待人工
|
v
廠商按【確認】→ postback 事件 → 才正式寫入 orders
設計原則(不能省):
- LLM 永遠只產生草稿,訂單成立一定經過廠商按確認。否則 LLM 誤判「20 箱」成「20 支」就是真金白銀的損失。
- 商品主檔要有「別名」欄位(「芒果」= 「芒果冰棒 10 支裝」),LLM 比對用。
- 每次解析要記錄原文與結果,方便事後查。
- 費用:每則解析走一次模型(用便宜模型即可,例如 Haiku 等級),一個月幾百單成本可忽略;但開發與測試工時約 8~12 個工作天,加上錯誤案例的迭代。
- 要準備「廠商打錯 / 改單 / 取消」的對話流程,這才是花時間的地方。
為什麼放第二期:第一期先讓廠商習慣 LIFF 表單、累積真實訂單文字(廠商以前怎麼在 LINE 打字訂貨的紀錄),第二期做 L3 時才有測試資料。
L4:在 LINE 群組裡下單(不建議)
有些廠商習慣拉群組。技術上 bot 可加入群組收訊息,但:
- 群組內取得個別成員 userId 有限制、訊息雜、隱私問題(其他廠商看得到)。
- 建議做法:老闆保留群組聊天,但下單一律引導到官方帳號的一對一。
4. 真人接手與例外處理
- 回應設定選「聊天 + Webhook 同時啟用」:bot 處理訂單,老闆隨時能在 LINE 官方帳號 App 看到所有對話並手動回。
- bot 收到非訂單訊息(問問題、抱怨)→ 不回或回「人員將回覆」,交 AI 聊天機器人或人工。
- 廠商說「取消」「改單」→ 第一期一律轉人工(後台改),第二期再自動化。
- 訂單卡片上放「有問題請直接回覆此訊息」,讓廠商知道有人看。
4.1 限制只有合作工廠能觸發下單(2026-09-25 會議補充)
官方 LINE 帳號本質是公開的——任何人加好友都能傳訊息。這裡要解決的是「怎麼確保只有真正合作的廠商能觸發下單流程,不是隨便一個人傳訊息都建單」。討論出兩個做法:
- 資料庫比對(建議):bot 收到訊息時,先用 LINE userId 查
VendorUser表,確認是不是已綁定的合作廠商。是才進下單流程;不是就回一般訊息或轉人工,不觸發建單。這跟 L2 LIFF 流程本來就規劃的「查 userId 是否已綁定廠商」是同一套機制,不用另外做。 - 備案(如果 1 做起來有困難):乾脆讓這個官方 LINE 帳號整個帳號都只做下單用途,不承載其他客服/行銷功能,降低誤觸發或被騷擾的影響範圍。
第一期用做法 1,因為 LIFF 綁定流程本來就會做這個檢查,不是額外工作。
5. 現成方案比較(要不要買而不是做)
| 方案 | 適合 | 不適合第一案的原因 |
|---|---|---|
| LINE 外掛模組市集的訂購模組、團購訂單系統(Orderly 等) | 團購、B2C、標準品項 | 廠商專屬價格、B2B 權限、配送日邏輯、與自家後台/庫存打通做不到或要另外串 |
| MAAC(漸強)、Omnichat、Botbonnie、SUPER 8 | 行銷自動化、客服、分眾推播 | 月費數千到上萬;核心是行銷,不是訂單與庫存 |
| EC9 等 LINE 電商系統 | B2C 購物車 + 金流 | 第一期不做金流;B2B 訂貨邏輯不合 |
結論:訂單流程自建(因為要接自家後台與日後的庫存成本),FAQ 客服用 LINE 內建 AI,行銷推播用 LINE 後台群發。不買第三方平台。
6. 風險與對策
| 風險 | 對策 |
|---|---|
| 廠商不用(海陸家赫 B2B 案例明講:客戶教育是最難的) | 保留 L0 人工路徑;上線前挑 3~5 家友善廠商試用兩週;下單卡片設計得比打字更省事 |
| 推播額度用完、通知沒送出 | 後台記錄未送出;重要通知人工回覆(免費);到 3,000 則前預警 |
| LINE 政策/價格變動(2026/11 就漲了一次) | 通知邏輯集中在一個模組,換 SMS 或 Email 備援容易 |
| 帳號被檢舉或停權 | 不群發廣告給非好友;官方帳號建在客戶名下 |
| Provider 建錯地方、userId 對不上 | 規格書明訂:Messaging API 與 LINE Login channel 同 Provider,建立時由 WT 檢查 |
| AI 聊天機器人與 bot 雙重回覆 | 上線前實測;必要時關掉 AI 只留 bot |
7. 開發時需要的帳號與設定清單(給表妹)
- 客戶的 LINE Business ID → 建官方帳號(若已有就用既有)
- 官方帳號後台 → 啟用 Messaging API → 產生 Provider(客戶名下)
- LINE Developers Console → 同一個 Provider 下建 LINE Login channel → 新增 LIFF app(endpoint = 下單頁 URL,scope: profile, openid)
- Messaging API channel:取得 channel secret、channel access token;設定 webhook URL(HTTPS)
- 回應設定:聊天 ✔、Webhook ✔、自動回應訊息(關鍵字「訂貨」→ 連結)
- 圖文選單:「我要訂貨」(LIFF URL)、「查訂單」(LIFF URL)、「聯絡我們」
- 聊天進階方案(100/月)→ 上傳 FAQ 給 AI 聊天機器人
- 測試:用 3 個真實 LINE 帳號走完「綁定 → 下單 → 確認卡 → 後台改狀態 → 推播」
資料來源
- LINE Biz-Solutions:AI 聊天機器人 24 小時接單
- LINE 官方帳號支援中心:AI 聊天機器人(β)
- LINE Biz-Solutions:2026 年 LINE 官方帳號方案價格調整
- LINE Biz-Solutions:訊息費用的計價方式
- LINE Developers:Messaging API pricing
- LINE Biz-Solutions:聊天進階方案
- no8.io:2022 回應功能開放聊天及 Webhook 並存
- FIRST LINE:LIFF 設定指南
- Omnichat 文件:LIFF 需與 Messaging API 同 Provider
- no8.io:B2B 案例:海陸家赫 LINE 串接 CRM
- 94iplay:LINE 官方帳號串接 AI 客服:Webhook 架構到訂單自動化
- 賴管家:2026/11/1 新方案與則數計算
3第二案:多據點營運決策系統
已報區間:28~35 萬(定義為第一期) 現況:沒有 POS(2026-09-25 會議確認:現場有租用 POS 機,但只給總營收,沒有逐品項明細,這是客戶想系統化的原因之一),但每天有手寫的進銷存紀錄,且至少有超過一年的歷史資料。營業額可由進銷存推算。 定位:把手寫進銷存變成手機輸入 → 自動算出每店營收/成本/損益/商品表現/人力成本比 → 儀表板 → 之後才談預測與排班。
2026-09-25 會議發現:這案客戶是第一案客戶的下游採購方之一——多據點店會跟第一案的冰棒工廠叫貨(賣的品項之一就是冰棒),另一項主力商品是冷泡茶等現場泡製飲料。兩案仍是不同客戶、分別簽約報價,資料庫也不共用,但業務上有實際供應鏈關係,之後若客戶想把「叫貨」這段接進第一案的 B2B 訂購系統,屬於全新的整合需求,不在任一案現有報價內,需另外評估。
0. 關鍵判斷
- 這案的產品是「每天 5 分鐘填完的手機表單」,不是儀表板。 表單不好填,後面全是空的。所以第一週要做的事是拿到客戶現在的手寫表格,一格一格對照。
- 資料來源:進銷存是手寫;結帳端的 POS 是租的,只有總營收、沒有逐品項明細,確認不能串(2026-09-25 會議已證實,非推測)。第一期一律用「手動輸入 + 拍照上傳備查」,POS 串接明確排除。「歷史手寫資料要不要補登」另計。
- 報表不要自己畫:用 Metabase(自架、免費)接資料庫做儀表板,把工時放在資料正確性與導入。
- 「AI 排班/預測」第一期不承諾。沒有 3~6 個月乾淨資料,任何預測都是猜的,客戶會失望。錄音原話方向一致:先做「資料底座」。
- 屏東海生館(國立海洋生物博物館)先試點。 客戶有 3~4 家店面,海生館是影響最重的點、品項較少、適合先做。第一期以海生館為主要試點,其他據點在試點跑順後複製。海生館主賣兩類:冰棒(第一案工廠供貨)與冷泡茶等現場泡製飲料。
- 保存期限與報廢是這案的核心欄位,不是加分項。 椰子水、冷泡茶等只能放兩天,做太多遇雨天就整批報廢。系統要看的不只是庫存量,是「到期風險」。
- 人力痛點具體數字:平日 1 人、假日 2 人、暑假 7–8 月到 2.5 人,另有發券人力、下午加人做現場銷售;7–8 月人事成本接近 10 萬/月,已超過營業額三成,還不含勞健保與電費。這是報表的第一優先:人力成本比與每人每小時產值。
- 三個核心面向(錄音整理):①進銷存/商品銷售 ②天氣/溫度/活動等外部因素 ③成本/人力/營業額/產值。第一期把三塊資料收齊並對齊到同一個「店別 × 日期」,第二期才做交叉分析與建議。
- 邊界:副手/臨時補班調度不在第一期。
1. 階段切分
第一期(28~35 萬)— 目標:每店每天資料進系統,老闆每週看得到每店賺不賺、哪些商品該補該減、人力成本比多少
| 模組 | 內容 | 驗收條件(摘要) |
|---|---|---|
| A. 資料模型與表單設計 | 對照現有手寫進銷存,定義:店別、日期、天氣、假日/活動標籤、每日營收(由進銷存推算或直接輸入;POS 結帳畫面拍照備查)、品項銷量、進貨、期末庫存、報廢與到期、班表與工時(含發券/支援人力)、人事成本、商品成本 | 客戶簽認欄位定義;能對應現有手寫表 100% |
| B. 每日填報(手機) | 店長每日一筆:品項銷量/進貨/庫存用「昨日帶入 + 只改變動」;工時填每人上下班與角色(正職/PT/發券);拍照上傳手寫表與 POS 結帳畫面備查;可補填、可修改(留紀錄) | 店長實測 5 分鐘內填完;離線暫存或至少不掉資料 |
| C. 自動資料 | 天氣(中央氣象署開放資料:氣溫、降雨)、國定假日、寒暑假、自訂活動日曆(海生館活動、園區公告) | 每日自動寫入,缺資料有提示 |
| D. 主檔管理(後台) | 店別、商品(成本、售價、保存天數、前置準備時間)、員工(時薪或月薪、角色)、固定成本(租金、水電估算、勞健保估算) | 老闆能自行維護 |
| E. 報表與儀表板(Metabase) | 第一優先:人力成本比、每人每小時產值、不同人力配置(1/2/2.5 人)下的營收與利潤對照;每店營收/成本/毛利/損益(日、週、月);商品銷售排行、熱銷/滯銷、報廢率與報廢金額;天氣 × 銷量 × 報廢對照;店間比較 | 老闆手機能開;數字與手工核算一致(抽 3 天驗證) |
| E2. 基礎提示(規則式,不是 AI) | 「今日到期品項」清單;「近 7 天報廢率 > X% 的商品」;「明日預報下雨/高溫 + 短保存商品」提醒;「需提前準備的商品」清單(依前置時間)給 PT/支援人力看 | 規則可在後台調參數 |
| F. 導入 | 海生館先試點 4 週,再加 1~2 店;每週檢視填報率與資料問題;修正表單;訓練店長;操作手冊 | 試跑期填報率 ≥ 90% |
| G. 基礎建設 | 與第一案同架構:Django + PostgreSQL + Metabase + Docker + 備份 | 備份可還原 |
第二期(另計)
| 項目 | 內容 | 估價區間 |
|---|---|---|
| 歷史手寫資料數位化 | 補登過去 N 個月(工讀或 OCR + 人工校對) | 按量計,或客戶自行輸入 |
| 排班建議 | 依歷史人流(天氣、假日、活動)建議各時段人數;標示高風險日;「加一個人值不值得」試算 | 8~15 萬(需至少 3~6 個月資料) |
| 備料建議 | 依銷量、天氣預報、保存天數建議製備量與進貨量(取代資深人員的經驗) | 3~5 萬 |
| 副手/臨時補班調度 | 缺人通知、支援人力調度 | 第三期以後 |
| AI 摘要與異常 | 每週營運摘要、異常標記(營收驟降、損耗異常、人力比超標) | 2~4 萬 |
| 每月營運分析顧問 | 你每月看報表寫一頁建議 | 1~2 萬/月(經常性收入) |
| POS 串接 | 若日後導入 POS | 依 POS 品牌另估 |
2. 資料模型(第一期)
客戶自己(2026-09-25 會議轉述)把需求想成五張表:產品資料、銷售紀錄、銷售排名(判斷熱銷用)、進貨紀錄、人事排班紀錄。這跟我們原本規劃的表基本對得上,下面用我們的欄位細節版本,但保留客戶的分類方式方便溝通。
Store 店別:名稱、地點類型(入口/出口/園區內/海邊)、營業時間、固定成本(月租、水電估算、勞健保估算) Product 商品:名稱、分類(冰品/飲料/冷泡茶/椰子水…)、售價、成本、保存天數、前置準備時間、狀態 Employee 員工:姓名、店別、角色(正職/PT/發券/支援)、薪資方式(時薪/月薪)、時薪 DailyReport 每日回報:店別、日期、填報人、天氣(自動)、假日/活動標籤、營收(推算或輸入)、折扣/招待金額、備註、手寫表照片、POS 結帳畫面照片、狀態(草稿/已送出/已修正) DailyItem 每日品項:回報、商品、期初、進貨/製備、銷量、報廢(數量、原因:到期/雨天/其他)、期末 Shift 班次:回報、員工、角色、上班、下班、工時、當日人事成本 Calendar 日曆:日期、假日、活動名稱、影響店別 WeatherHistory 歷史天氣實況:店別(或地區)、日期、最高溫、降雨量、是否下雨、天氣描述 WeatherForecast 天氣預報:店別(或地區)、預報發布時間、預測目標日、降雨機率、預估溫度
天氣要拆兩張表,不是一張(2026-09-25 會議澄清):WeatherHistory 記錄「今天實際有沒有下雨」,用來回測過去營收跟天氣的關聯;WeatherForecast 記錄「預報說明天可能下雨」,用來預測未來、輔助排班決策。這是兩種不同用途的資料,混在一張表會讓「回測」跟「預測」的邏輯打架——回測只需要「有沒有發生」,不需要「當時預估幾%機率」。
推算邏輯(要客戶簽認):
- 銷量 = 期初 + 進貨 − 報廢 − 期末(若店長直接填銷量,則期末由系統算,二選一,不要兩個都填)
- 營收 = Σ 銷量 × 售價(若有折扣,先用「當日折扣金額」一欄粗略處理)
- 毛利 = 營收 − Σ 銷量 × 成本
- 人事成本 = Σ 工時 × 時薪(月薪制按當月營業日攤)
- 損益 = 毛利 − 人事成本 − 固定成本日攤
- 人力成本比 = 人事成本 ÷ 營收(客戶說已超過 30%,用系統第一個月的數字驗證這個說法)
- 每人每小時產值 = 營收 ÷ 總工時
- 報廢率 = 報廢數量 ÷(期初 + 進貨);報廢金額 = Σ 報廢數量 × 成本
- 人力配置對照 = 以「當日人數」分組,比較平均營收、毛利、每人產值(這是第二期排班建議的基礎,第一期只做分組比較)
- 當日門市邊際貢獻(2026-09-25 客戶提出的公式,術語照抄)= 當日營業額 − 銷貨成本 − 人事成本 − 耗損率報廢成本。這是客戶自己在用的概念,跟上面的「損益」邏輯一致,只是客戶習慣的講法把報廢成本獨立列一項——報表用詞照客戶說法呈現,不要自創新名詞讓客戶要重新對應。
每日盤點如何自動算出銷量(會議中的具體範例,可直接拿給表妹當測試案例)
重點:店員只要「盤點今天剩多少」,不用自己心算賣了多少。 一整天賣很多雜項時,要求店員每筆都心算會漏、會錯;系統用「期初+進貨−期末」自動反推,這是這個表單設計最重要的原則,也是店長願不願意持續填報的關鍵。
3. 填報 UX 原則(這是成敗關鍵)
- 昨日數字自動帶入,店長只改有變動的格子。
- 品項順序照手寫表的順序,不要照系統字母序。
- 可以「先送出、明天補」,缺的欄位標黃不擋送出。
- 店長填完看到當日營收與昨日比較 —— 給他一個填的理由。
- 手寫表拍照上傳,糾紛時可對照。
- 老闆端有「今日未填報店別」提醒(LINE 推播或 Email)。
3b. Metabase 使用方式與帳號安全(2026-09-25 會議澄清,表妹當時的疑慮)
表妹擔心的問題:如果用 Metabase 直接連資料庫查資料,會不會不小心把原始資料改壞?以及 Metabase 報表頁面會不會被 Google 搜尋到、被外部看到?兩個問題的答案:
- 使用者的操作路徑分成兩條,不會混在一起:填寫資料一律走「每日回報表單」(B 模組),查資料一律走「Metabase 報表頁面」。兩者是完全不同的介面,使用者不會、也沒有管道從報表頁面回頭改到原始資料。
- 給 Metabase 連資料庫用的帳號要設成唯讀(read-only),不要用有寫入權限的帳號。這不只是防止誤改——如果 Metabase 在背景跑分析查詢時剛好卡住某張表(鎖表),唯讀帳號的影響範圍比讀寫帳號小很多,不會拖累主系統的正常運作。
- Metabase 不是公開網站,不會被搜尋引擎索引:它是內部工具,網址不會被拿去做 SEO 或提交搜尋引擎,訪問要先登入帳號。
- 權限依角色分級:老闆能看全部店的報表;店長只能看自己店的;一般員工可能完全看不到報表(只填表單)。用帳號登入搭配權限設定做到,不是「有網址就人人能看」。
這幾點寫進 01 檔/08 檔的資安強化清單同樣適用(唯讀帳號、權限分級、不對外索引),第二案沒有另外重複的必要,這裡點出即可。
4. 時程(表妹執行,含 ×1.5 與緩衝;可與第一案錯開)
| 週 | 內容 | 里程碑 |
|---|---|---|
| W1–W2 | 訪談、取得手寫表、欄位定義、簽認、簽約 | 簽約,30% |
| W3–W4 | 專案骨架(沿用第一案)、主檔後台、資料模型 | 老闆能建店別、商品、員工 |
| W5–W6 | 每日填報表單(手機)、天氣自動抓、假日日曆 | 店長能填 |
| W7 | Metabase 部署、核心報表 6 張 | 老闆能看 |
| W8–W11 | 2~3 店試跑 4 週;每週修表單與報表 | 測試驗收,40% |
| W12 | 全店上線、訓練、文件 | 上線驗收,30% |
| W13–W14 | 緩衝 | — |
避開表妹期末(12 月,2026-09-25 修正,原誤植 1 月中)——這代表第二案原訂 12 月中~1 月的開發/試跑期,要重新對齊期末考時間,開工前再核實。
5. 報價拆解(第一期)
| 項目 | 估價 |
|---|---|
| 訪談、欄位定義、推算邏輯簽認、規格書 | 4.0 萬 |
| 主檔後台(店、商品、員工、固定成本) | 3.0 萬 |
| 每日填報表單(手機優化、帶入、修正紀錄、照片) | 6.0 萬 |
| 自動資料(天氣、假日、活動日曆) | 1.5 萬 |
| 報表與儀表板(Metabase 建置 + 核心報表 + 手機版) | 6.0 萬 |
| 導入試跑 4 週(每週檢視、修正、店長訓練) | 5.0 萬 |
| 基礎建設(部署、備份、監控) | 2.0 萬 |
| 文件、教學、保固 | 2.0 萬 |
| 合計 | 29.5 萬 |
落在 28~35 萬內。這案的價值在「導入」與「推算邏輯」,對客戶解釋時強調這兩塊是顧問工作,不是寫程式。
客戶自付:主機(可與第一案分開,約 300~600/月)、網域。 維護合約:月費 3,000~5,000,或加「每月營運分析」變成 1~2 萬/月的顧問合約 —— 這是這案最值得談的長期收入。
6. 驗收清單(節錄)
- ☐ 手寫表每一欄都能在系統對應到欄位
- ☐ 店長在手機 5 分鐘內完成一日填報(實測 3 位店長)
- ☐ 抽 3 天資料,系統算出的營收、毛利與手工核算一致
- ☐ 天氣資料每日自動寫入,缺資料有提示
- ☐ 儀表板在手機可看:每店損益、商品排行、人力成本比、店間比較
- ☐ 試跑 4 週填報率 ≥ 90%
- ☐ 備份可還原;資料可整批匯出 Excel
- ☐ 操作手冊、店長版一頁說明、部署文件交付
4需求訪談問題清單
用法:訪談前先給客戶看「範圍說法」(05 檔),訪談中逐題問、當場記錄答案,訪談後整理成規格書請客戶簽認。每題後面的【】是為什麼要問。
共同題(兩案都問)
- 誰是最終決策者?誰是日常使用者?誰負責驗收?【避免做完換人否決】
- 期望上線日期?有沒有硬截止(旺季、活動)?【排時程】
- 網域、主機、LINE 帳號,有沒有既有的?帳號在誰名下?【帳號歸屬】
- 上線後誰負責維護?有沒有 IT 人員?【維護合約】
- 資料保存要求?有沒有需要匯出給會計師?【匯出格式】
- 預算是否含稅?付款方式與階段可否接受 30/40/30?【現金流】
- 有沒有看過類似系統或競品?喜歡/不喜歡什麼?【對齊期待】
第一案:冰棒/食品廠訂購系統
A. 廠商與訂購現況
- 目前有幾家廠商?每週訂單量?旺淡季差多少?【推播用量、規模】
- 廠商現在怎麼下單?(LINE 打字、電話、傳真、LINE 群組)請給 5~10 則真實的 LINE 訂貨訊息截圖。【第二期自然語言下單的樣本】
- 每家廠商價格一樣嗎?有沒有折扣、階梯價、月結?【價格表設計】
- 最小訂量、配送日規則(幾天前訂、哪些天送、哪些區域)?【下單規則】
- 訂單改單、取消的頻率?怎麼處理?【第一期轉人工是否可接受】
- 廠商的 LINE 是老闆個人號還是公司號?一家廠商會有幾個人下單?【多 LINE 綁定】
- 廠商年齡層與手機使用習慣?願意換新方式的比例?【採用風險】
B. LINE 串接程度(給客戶四選一)
- 你希望 LINE 是:①只放連結 ②收通知 ③在 LINE 裡填表下單 ④打字就下單?【定義範圍,③是第一期】
- 要不要 AI 回答常見問題(營業時間、配送、付款)?可否提供 FAQ 內容與價目表 PDF?【LINE 內建 AI 聊天機器人】
- 誰負責在 LINE 官方帳號回訊息?幾點到幾點?【回應設定】
- 現在有 LINE 官方帳號嗎?方案是哪個?好友數?【費用】
C. 訂單處理與後台
- 訂單狀態有哪些?(新訂單、已確認、備貨中、已出貨、完成、取消)誰改狀態?【狀態流轉】
- 需要列印出貨單或撿貨單嗎?格式?【後台功能】
- 需要哪些匯出?(月結對帳、廠商別報表)【匯出】
- 後台有幾個人用?要不要分權限?【第一期兩角色是否夠】
D. 庫存與成本(第二期範圍,但現在先問清楚深度)
- 原料有哪些?(水果種類、糖、包材)進貨頻率?【資料量】
- 有沒有配方表?每種冰棒用多少原料?損耗率(去皮去籽)有沒有數字?【BOM 可行性】
- 現在怎麼算成本?多久算一次?誰在算?【現況與痛點】
- 庫存盤點頻率?有沒有現成的 Excel?【資料格式】
- 第一期不做庫存成本,可接受嗎?希望第二期什麼時候開始?【範圍確認】
E. 消費者端與金流
- 消費者可以線上下單嗎?還是只詢價?【範圍】
- 收款方式?(匯款、貨到付款、月結)第一期不串金流可接受嗎?【金流】
- 需要開發票嗎?電子發票?【第二期範圍】
F. 品牌與內容
- 有 Logo、品牌色、商品照片嗎?誰提供文案?【素材時程】
- 官網要幾頁?參考網站?【官網範圍】
第二案:多據點營運決策系統
A. 據點與人員
- 幾個據點?各自的地點類型(入口、出口、園區內、海邊)?營業時間?【店別主檔】
- 每店幾位員工?時薪還是月薪?有兼職嗎?【人事成本算法】
- 誰排班?多久排一次?排好後改動的頻率?【排班在第二期的可行性】
- 店長會用手機填表嗎?年齡層?現在有用什麼 App?【填報 UX】
B. 現有手寫進銷存(最重要,請帶實體表格來)
- 請提供最近一週每店的手寫進銷存表(拍照即可)。【欄位對照】
- 表上有哪些欄位?每個欄位誰填、什麼時候填?【填報流程】
- 銷量是直接記,還是用「期初 + 進貨 − 期末」算的?【推算邏輯】
- 有折扣、招待、員工餐嗎?怎麼記?【營收誤差來源】
- 報廢、短保存商品到期怎麼記?【損耗】
- 商品有幾種?多久新增或下架?【商品主檔維護】
- 商品成本知道嗎?多久變動?【毛利算法】
- 現在這些表最後去哪裡?有人彙總嗎?用 Excel?【現況與痛點】
- 歷史紙本要補登嗎?補多久?誰補?【第二期/另計】
C. 成本與損益
- 固定成本(租金、水電、權利金)有數字嗎?按店分嗎?【損益算法】
- 人事成本目前占營收多少?怎麼算出來的?【驗證用】
- 老闆最想知道的三個數字是什麼?【報表優先順序】
D. 天氣與活動
- 哪些天氣影響最大?(雨、颱風、高溫)有印象中的例子嗎?【天氣欄位】
- 園區/水族館的活動或人流資料拿得到嗎?(官方公告、票務)【外部資料】
- 假日定義:國定假日、寒暑假、連假?【日曆】
E. 報表與決策
- 老闆多久看一次報表?在手機看還是電腦?【Metabase 手機版】
- 需要店長看到自己店的數據嗎?看得到別店嗎?【權限】
- 「明年排班參考」具體想看到什麼?(例如:去年同週各時段人數與營收)【第二期定義】
- 「AI 排班」在你心中是什麼樣子?【降期待,明確第二期】
F. 導入
- 願意先挑 2~3 店試跑 4 週嗎?哪幾店?【導入計畫】
- 店長不填怎麼辦?有沒有獎懲或 KPI?【填報率保障】
- 誰負責建商品主檔與員工資料?【資料建檔分工】
5客戶溝通:範圍說法與交付項目表
1. 對客戶的說法(口頭或訊息,兩案通用)
要點:區間沒變,是範圍被定義清楚了。不用道歉,也不用說「我當初估錯」。
2. 交付項目表 — 第一案(合約附件草稿)
2.1 第一階段交付項目
| # | 交付項目 | 說明 | 驗收方式 |
|---|---|---|---|
| 1 | 響應式官網 | 首頁、品牌介紹、商品展示、聯絡、訂購入口;手機/平板/電腦 | 三種裝置檢視 |
| 2 | 消費者詢價表單 | 送出後存後台並通知 | 實測送出 |
| 3 | 廠商下單系統 | 廠商登入(帳密或 LINE)、專屬商品與價格、下單、歷史訂單、只見自己資料 | 兩帳號交叉測試 |
| 4 | 後台管理 | 商品、廠商、價格表、訂單狀態流轉、消費者詢價、Excel 匯出 | 依操作手冊逐項操作 |
| 5 | LINE 官方帳號整合 | 圖文選單、LIFF 下單、廠商綁定、訂單確認卡、狀態推播、關鍵字回應、AI 聊天機器人 FAQ 設定 | 3 個 LINE 帳號全流程 |
| 6 | 基礎建設 | 網域設定、HTTPS、主機部署、資料庫、每日備份、測試環境 | 備份還原演練 |
| 7 | 文件與教學 | 操作手冊、部署文件、帳號清單、一次教學(2 小時) | 文件交付 |
| 8 | 保固 | 上線後 30 天 bug 修正 | — |
2.2 不包含(第二階段另計)
- 廠商以文字訊息自動下單(自然語言解析)
- 庫存、原料、配方、損耗、成本、毛利
- 消費者購物車、第三方金流、電子發票
- 細粒度權限(業務員、多倉)
- 自動補貨/訂貨提醒
- 進階報表、AI 摘要
- App
- 超過 8 頁的官網頁面、文案撰寫、商品攝影
2.3 客戶自備/自付
- 網域、主機(約 NT$300~600/月)、Cloudflare 帳號
- LINE 官方帳號(方案費 0~1,400/月)與聊天進階方案(100/月)
- Logo、品牌素材、商品照片、文案、商品與廠商資料
- 個資/發票/稅務等法規遵循
2.4 付款與時程
- 30% 簽約|40% 測試環境驗收|30% 正式上線驗收
- 預計 10 週(自簽約與素材到齊起算),含 2 週緩衝
- 客戶回饋逾 5 個工作天未回覆,時程順延
2.5 變更
- 範圍外需求以變更單記錄工時與費用,雙方簽認後執行
2.6 維護(另簽)
- 月費 NT$3,000~5,000:主機代管、bug 修正、小調整 2 小時/月、備份檢查、LINE 費用監控
3. 交付項目表 — 第二案(合約附件草稿)
3.1 第一階段交付項目
| # | 交付項目 | 說明 | 驗收方式 |
|---|---|---|---|
| 1 | 資料欄位定義與推算邏輯 | 對照現有手寫進銷存,定義所有欄位與營收/毛利/損益/人力比計算方式 | 客戶簽認文件 |
| 2 | 主檔後台 | 店別、商品(售價、成本、保存天數)、員工(薪資方式)、固定成本、活動日曆 | 逐項操作 |
| 3 | 每日填報(手機) | 品項進銷存、工時、備註、照片;昨日帶入;可修正留紀錄 | 3 位店長實測 ≤ 5 分鐘 |
| 4 | 自動資料 | 天氣(氣象署開放資料)、國定假日 | 連續 7 天自動寫入 |
| 5 | 報表與儀表板 | 每店營收/成本/毛利/損益;商品排行與損耗;人力成本比、每人每小時產值;店間比較;天氣對照;手機可看 | 抽 3 天與手工核算一致 |
| 6 | 導入試跑 | 2~3 店 4 週,每週檢視與修正,店長訓練 | 填報率 ≥ 90% |
| 7 | 基礎建設 | 部署、HTTPS、備份、測試環境 | 備份還原演練 |
| 8 | 文件與教學 | 操作手冊、店長一頁說明、部署文件、全店訓練一次 | 文件交付 |
| 9 | 保固 | 上線後 30 天 | — |
3.2 不包含(第二階段另計)
- 歷史手寫資料補登
- 排班建議、人力預測
- 備料建議、自動採購
- AI 摘要、異常標記、自動提醒(基礎「未填報提醒」除外)
- POS 或其他系統串接
- 每月營運分析報告(可另簽顧問合約)
3.3 客戶自備/自付
- 主機、網域
- 商品成本、固定成本、員工薪資等基礎資料
- 店長填報的紀律與管理
3.4 付款與時程
- 30% 簽約|40% 試跑開始(測試驗收)|30% 全店上線驗收
- 預計 12 週(含 4 週試跑與 2 週緩衝)
3.5 維護與顧問(另簽)
- 維護月費 NT$3,000~5,000
- 或「維護 + 每月營運分析一頁建議」NT$10,000~20,000/月
4. 簽約前一定要確認的五句話(放在合約首頁)
- 本合約範圍以「交付項目表」為準,未列者不在範圍。
- 網域、主機、LINE 帳號皆登記於甲方名下,乙方為協作者。
- 程式碼於尾款付清後交付甲方;乙方保留作品展示權。
- 甲方提供素材與回饋之延遲,時程相應順延。
- 範圍外需求以變更單處理,未簽認不執行。
6風險與問題預估應對手冊
用法:這是「事情發生時翻的那一頁」。每條寫:會怎麼發生、你怎麼看得出來、現在先做什麼、發生了怎麼辦。標 ★ 的是最可能真的發生、且代價最高的。
A. 售前與簽約
| # | 問題 | 徵兆 | 現在預防 | 發生時 |
|---|---|---|---|---|
| A1 ★ | 客戶以為 20~25 萬/28~35 萬包含整套 | 客戶說「這些都包在裡面吧」「LINE 那個 AI 也一起」 | 簽約前先給 05 檔的範圍文件,逐條唸過、簽名;沒簽認不開工 | 回到範圍文件:「這條在第二階段,我幫你估」;不辯論當初誰說了什麼 |
| A2 | 客戶砍價 | 「能不能 18 萬」 | 內部先定底線(第一案 20、第二案 28) | 砍範圍不砍品質:第一案先拿掉官網頁數與消費者詢價;第二案先拿掉試點週數或報表張數。絕不砍權限隔離、備份、測試環境 |
| A3 | 「先做,價錢之後談」 | 客戶急、口頭催 | 說明 30% 簽約款是啟動條件 | 可以先做「需求訪談+規格書」這段(2~4 萬,可折抵),其餘等簽約 |
| A4 | 訪談時決策者不在 | 出面的是店長/助理 | 訪談前確認老闆親自到,至少一次 | 訪談結果標「待老闆確認」,不簽認不進規格 |
| A5 | 客戶拿你的規格去比價 | 問「別人說 15 萬就能做」 | 規格書標明「本文件為報價依據,僅供評估」 | 差異在:導入陪跑、驗收清單、後續顧問。願意比價就讓他比,不降價追 |
| A6 | 口頭承諾變成範圍 | 「你上次說可以順便…」 | 所有承諾寫進訊息或會議紀錄,當天回傳客戶 | 「我查了紀錄,這條沒在範圍裡,我用變更單估給你」 |
| A7 ★ | 付款拖延 | 里程碑到了錢沒到 | 合約:未付款不部署正式環境、不交程式碼 | 停在測試環境,禮貌催款;不因人情先上線 |
| A8 | 驗收沒有定義,客戶「感覺不對」拖著不驗 | 一直提新意見 | 驗收清單是合約附件;客戶逾 10 個工作天未回覆視為驗收通過 | 逐條對清單打勾,清單外的意見走變更單 |
| A9 | 兩案客戶互相打聽價格 | 「他那個為什麼比較貴」 | 兩案結構本來就不同;一致口徑:第一案是交易系統、第二案是資料與顧問 | 不透露對方細節,只講價值差異 |
| A10 | 客戶要發票 | 「開發票嗎?」 | 先決定你用什麼身分接(個人勞務/工作室/公司),稅與發票影響 5~10% 淨額 | 若要發票而你沒公司,報價要含開票成本或找合作開票;不要事後才發現 |
B. 需求訪談與規格
| # | 問題 | 徵兆 | 現在預防 | 發生時 |
|---|---|---|---|---|
| B1 | 客戶說不出需求,想到什麼說什麼 | 訪談發散、沒結論 | 用 04 檔清單逐題問;第二案一定拿實體手寫表逐格對照 | 訪談後 48 小時內寄出「我聽到的」摘要,請客戶確認或修正 |
| B2 ★ | 訪談後需求持續長出來 | 每週 LINE 一個「還有一個小功能」 | 規格書訂「需求凍結日」;之後的進變更單 | 「收到,記進第二階段清單」;小到 30 分鐘內的可以做,但要記錄,累積就收費 |
| B3 | 隱藏使用者(會計、老闆娘、資深店長) | 上線後冒出「我不是這樣用的」 | 訪談第一題就是「誰會用」;每個角色至少訪 1 人 | 補訪,必要時走變更單 |
| B4 | 客戶給不出基礎資料(成本、時薪、租金) | 「這個我再看看」拖著 | 規格明訂:欄位允許空白,報表顯示「資料不全」,不擋上線 | 不等資料,先上線再補 |
| B5 ★ | 第一案:廠商不願改用新方式 | 廠商說「我打字比較快」 | 訪談時請客戶挑 2~3 家友善廠商先訪;L0 人工路徑永遠保留 | 不強推:老闆在後台代廠商建單,廠商只收通知;等他們看到好處再轉 |
| B6 ★ | 第二案:店長覺得填報是多餘的工作 | 試跑第二週填報率掉 | 老闆先在訪談中承諾「填報是店長工作的一部分」;表單實測 ≤ 5 分鐘;填完立刻看到今日營收(給他理由) | 找出沒填的原因(太麻煩/沒時間/沒手機)逐一解;老闆出面 |
| B7 | 第二案:手寫表各店格式不同 | 拿到三張表長得不一樣 | 訪談時每店都要一張 | 以海生館的表為準做欄位,其他店對映;差異太大就縮小第一期店數 |
| B8 | 第二案:POS 數字與進銷存推算對不上 | 老闆問「哪個對」 | 規格明訂「以進銷存推算為主,POS 照片備查」;加「折扣/招待」欄吸收差異 | 差異 > 5% 時標示,人工核對,不在系統裡硬湊 |
| B9 | 客戶期待「AI」 | 「那 AI 會幫我排班嗎」 | 訪談第 23 題直接問他心中的 AI 是什麼,當場降期待:第一期是資料底座 | 給他看「有資料 3 個月後能做什麼」的清單,寫進第二期 |
C. 開發執行(表妹)
| # | 問題 | 徵兆 | 現在預防 | 發生時 |
|---|---|---|---|---|
| C0 ★★(2026-09-23 新增,目前最高風險) | 第一案時程被壓縮成 10/15 Demo+11/30 可執行版本,比原本 ×1.5+緩衝的估算緊很多 | 9/23~9/29 這週訪談/簽約若卡住,後面全推遲;表妹一人+這個時程,容錯空間極小 | Demo 範圍先講死(01 檔 4.1,LINE 用流程圖代替真的串接);這是外援顧問簽約前那次諮詢最該問的問題之一(時程合不合理、範圍要不要再砍);不要為了趕日期跳過範圍文件簽認(見 A1) | 10/15 前一週還沒有能展示的東西 → 立刻砍到只剩「官網+一個假帳號跑過一次下單」,其他全部用架構圖代替 |
| C1 ★ | 你看不到進度 | 只有口頭「差不多了」 | 每週固定 30 分鐘,在測試環境實機 demo;git 每天至少一次 commit;你看得懂的進度表(功能 × 狀態) | 兩週沒實機 demo = 紅燈,暫停排新工作,先把現況跑給你看 |
| C2 | 她卡住不說 | 幾天沒 commit、回訊變慢 | 每天一則簡短進度訊息(做了什麼/卡什麼);卡住超過 2 小時就丟給 Claude | 你自己開 Claude session 把問題描述丟進去,通常能解;解不了就砍功能或找外援 |
| C3 ★★(2026-09-24 具體化) | IDOR/權限檢查漏測:Django 不會自動擋「廠商 A 猜廠商 B 的訂單編號」,每個 API/頁面都要工程師自己記得檢查歸屬,時程壓縮時最容易被漏掉 | 功能測試會過(頁面能動),只有專門去試才會發現;真實世界資料外洩最常見的原因之一 | 01 檔驗收清單已具體化成逐端點測試,不是測一次就算;Claude 審查時針對每個新 API 專門問「這裡有沒有檢查歸屬」;08 檔「資安強化清單」列出低成本必做項(admin 路徑、DEBUG=False、速率限制、Dependabot 等) | 發現任一端點漏測 → 全端點重新過一次,不是只補那一個;上線前跑一次 08 檔清單,沒過不上線 |
| C4 | 她的電腦跑得起來、伺服器跑不起來 | 部署當天爆炸 | 第一週就用 Docker,本機與伺服器同一套 | 回 Docker 檔案找差異,不在伺服器上手動改 |
| C5 ★ | 她中途沒空/退出 | 課業、實習、家裡 | 程式碼在 git、README 能一天內跑起來、部署文件、帳號清單;你跟她的書面約定(里程碑付款、程式碼歸專案) | 備案:Claude + 你自己接續小修;大段開發找外包按規格接手(規格書就是這時候救你的) |
| C6 | 期中期末 | 10 月底期中、12 月期末(2026-09-25 修正,原誤植 11 月初) | 時程已避開;那兩週不排里程碑;11 月整月無考試可全力衝刺 | 順延,不加班趕 |
| C7 | 過度設計/做了規格外的東西 | 「我覺得加這個很酷」 | 規格內才做;想法記到第二期清單 | 不併入,不驗收 |
| C8 | 憑證外洩(LINE secret、資料庫密碼進 git) | commit 裡看到 token | .env + .gitignore 第一天設好;Claude 審查時掃 | 立刻換掉所有 token(LINE 後台可重發),檢查 git 歷史並清除 |
| C9 | 直接在正式環境改東西 | 「我改一下就好」 | 測試/正式從 W3 就分開;正式環境只從 git 部署 | 回滾到上一個版本(Docker image),從測試環境重來 |
| C10 | 資料庫遷移弄壞資料 | migration 失敗 | 每次 migration 前自動備份;先在測試環境跑 | 還原備份,修 migration,再上 |
| C11 | 她直接跟客戶溝通,答應了東西 | 客戶說「你妹妹說可以」 | 規則:所有客戶溝通經過你;她只進技術群組 | 「那是技術討論,範圍以規格為準」 |
| C12 | 她的技術選擇你看不懂 | 她想換框架 | 架構已定(Django + Postgres + Docker),變更要理由並經 Claude 評估 | 不因「比較新」換技術 |
| C13 | 工時遠超估算 | W5 還在做 W3 的東西 | 每個模組估工時,週追蹤;×1.5 已含 | 超過 30% 就砍範圍(先砍官網、報表張數),不砍測試與備份 |
D. LINE 特有
| # | 問題 | 徵兆 | 現在預防 | 發生時 |
|---|---|---|---|---|
| D1 ★ | Provider 建錯、LIFF 拿到的 userId 跟 webhook 的不一樣 | 綁定後推播收不到 | 規格明訂同一 Provider;建立時你親自檢查截圖 | 重建 Login channel 在正確 Provider 下,重新綁定(廠商要再點一次) |
| D2 | AI 聊天機器人(β)與你們的 bot 對同一句話各回一次 | 廠商收到兩則 | 上線前在客戶帳號實測;bot 只處理選單與 postback,不回一般文字 | 關掉 AI 或關掉 bot 對文字的回覆,二選一 |
| D3 ★ | 推播額度用完,出貨通知沒送 | 廠商說沒收到 | Notification 表記錄失敗;額度到 80% 預警給老闆;能用 reply 的不用 push | 老闆改用一對一聊天手動回(免費);下月升級方案 |
| D4 | webhook 逾時或伺服器掛,事件丟失 | LINE 後台顯示 webhook 錯誤 | webhook 1 秒內回 200、處理丟背景;事件冪等(同一事件不重複建單);監控 webhook 錯誤率 | LINE 有重送機制但有限;掉的訂單靠 L0 人工補;修伺服器 |
| D5 | reply token 過期(處理太慢) | 回覆失敗 | 確認卡優先用 reply,失敗自動改 push | 無需人工,程式處理 |
| D6 | 廠商換手機/換 LINE 帳號 | 「我登不進去」 | 綁定碼可重發;後台可解除舊綁定 | 老闆在後台解除、重發綁定碼 |
| D7 | 客戶員工在 LINE 後台誤關 webhook 或改回應設定 | bot 突然不動 | 操作手冊註明「這幾個設定不要動」;每日 health check 呼叫 LINE API | 照手冊改回來 |
| D8 | LINE 再漲價或改政策 | 官方公告 | 通知邏輯集中一個模組;合約寫 LINE 費用客戶自付 | 評估改 Email/SMS 備援 |
| D9 | 廠商繼續在群組或私訊打字,不用選單 | 訂單沒進系統 | 老闆引導;L0 人工代建 | 第二期自然語言下單解決 |
| D10 | 綁定碼被不該綁的人用 | 陌生 userId 綁到廠商 | 綁定碼一次性、有效期 24 小時、後台可撤銷 | 撤銷、重發 |
| D11 | 官方帳號被檢舉/停權 | 突然不能發 | 不對非好友群發、不發廣告給廠商 | 申訴;期間 L0 人工 |
E. 上線與驗收
| # | 問題 | 徵兆 | 現在預防 | 發生時 |
|---|---|---|---|---|
| E1 ★ | 商品/廠商/員工資料沒人建 | 上線日資料庫是空的 | 合約寫客戶自備;提供 Excel 匯入模板;W8 就要拿到 | 協助建檔按小時計費,或延後上線 |
| E2 | 網域/主機/LINE 帳號權限拿不到 | 客戶不知道帳號在誰手上 | 訪談就問(04 檔共同題 3);W1 拿到 | 用你的帳號暫建,合約註明上線後移轉,並在移轉前不算正式驗收 |
| E3 | 上線後一堆 bug | 客戶每天報 | W9 整合測試 + W11–12 試營運陪跑 | 保固內修 bug;分清 bug 與「我想要不一樣」 |
| E4 | 備份沒真的能還原 | 沒人試過 | W9 演練一次,截圖存證 | 立刻演練;不能還原就不算上線 |
| E5 | 憑證到期、網站打不開 | 三個月後某天 | Cloudflare/Let's Encrypt 自動續;月檢清單 | 手動續、修自動化 |
| E6 | 客戶在正式環境亂測、產生假資料 | 報表怪怪的 | 測試環境給他玩;正式環境上線前清空 | 清資料(有備份) |
F. 導入(第二案為主)
| # | 問題 | 徵兆 | 現在預防 | 發生時 |
|---|---|---|---|---|
| F1 ★ | 填報率掉 | 第 2~3 週 < 80% | 老闆背書、每日未填提醒、表單 ≤ 5 分鐘、填完看到今日營收 | 老闆介入;檢討表單哪格最常空白就改它 |
| F2 | 資料錯(單位混淆、忘填報廢、期末大於期初+進貨) | 報表出現負庫存 | 合理性檢查:不合理的格子標紅但不擋送出 | 週檢視時清單化,店長修正 |
| F3 | 海生館的經驗推不到其他店 | 別店品項、人力型態不同 | 訪談時每店差異先列;第一期只承諾海生館 + 1~2 店 | 第二期擴店另計 |
| F4 ★ | 數字和老闆的「感覺」不符 | 「不可能只賺這樣」 | 抽 3 天手工核算對照;推算邏輯客戶簽認過 | 一起算一遍;通常是老闆漏算了人事或報廢——這反而是系統的價值 |
| F5 | 商品頻繁新增/下架,沒人維護主檔 | 店長填不到新品 | 主檔維護責任歸客戶(合約);店長可填「其他」暫存 | 週檢視時補主檔 |
| F6 | 天氣 API 缺資料 | 某日空白 | 缺資料標示;可手動補 | 手動補,不擋報表 |
| F7 | 老闆不看報表 | 上線後沒登入 | 每週一自動寄「上週摘要」(規則式);顧問合約由你每月講給他聽 | 這就是顧問合約的賣點 |
G. 維運(交付後 1~12 個月)
| # | 問題 | 徵兆 | 現在預防 | 發生時 |
|---|---|---|---|---|
| G1 ★ | 沒簽維護合約,但一直被找 | 保固結束後訊息不斷 | 保固界線寫清楚;保固結束前 2 週送維護報價 | 「這個在維護合約範圍,我報個價」;不免費做 |
| G2 | 套件漏洞、系統更新 | 沒人管 | 維護合約含每月更新;Cloudflare 擋一層 | 有維護合約才做 |
| G3 | 客戶自己改壞(後台刪商品、改設定) | 「怎麼不見了」 | 權限分級;軟刪除(標記不真刪);每日備份 | 從備份還原,按小時計費 |
| G4 | 客戶把新功能當 bug 報 | 「這個應該要有」 | 保固定義:規格內功能不如規格運作才是 bug | 走變更單 |
| G5 | 表妹畢業/你沒空 | 一年後 | 文件;維護合約含人力費,可轉給任何會 Django 的人 | 找外包接維護,規格與文件是交接資產 |
| G6 | 主機商漲價/關站 | 通知信 | Docker 可整包搬;資料庫每日備份在 R2 | 搬家半天 |
| G7 | 客戶倒閉/中止 | 沒回應 | 合約:已完成階段款不退;資料歸客戶 | 交付現況、匯出資料、結案 |
H. 商務、法律、人
| # | 問題 | 現在預防 |
|---|---|---|
| H1 | 個資(廠商聯絡人、員工薪資、消費者電話) | 網站隱私聲明;資料庫存取限縮;薪資欄位只老闆角色可見;合約寫客戶為個資控管者 |
| H2 | 你的接案身分與發票(見 A10) | 開工前決定 |
| H3 | 你與表妹的關係 | 書面:範圍、里程碑付款、程式碼歸專案、保密、退出通知期 |
| H4 | 開源授權 | Django(BSD)、Metabase 開源版(AGPL,自架給客戶內部用沒問題,不改它的程式碼不分發就沒事)、LIFF SDK(LINE 條款) |
| H5 | AI 生成程式碼的責任 | 合約不提 AI;責任在交付者(你),所以審查與測試不能省 |
| H6 | 保密 | 兩案客戶資料互不流通;不用第一案的資料當第二案的範例 |
| H7 | 客戶要求原始碼歸他但你想重用 | 合約:交付後歸客戶;你保留「通用框架與作品展示權」 |
I. 你自己
| # | 問題 | 對策 |
|---|---|---|
| I1 ★ | 四案並行(嘖嘖、TTQS、研考會、這兩案) | 這兩案的開發最早 10 月中起;訪談可以現在做。拒絕把時程壓進 10 月 |
| I2 | 客戶挑戰你的技術判斷(你不是工程師) | 用文件回答,不用口頭;「這是架構文件,理由在這」。Claude 是你的技術後盾,不用掩飾 |
| I3 | AI 工具用量 | 開發期表妹的 AI 用量另算;你自己的 Claude 額度留給審查與客戶文件 |
| I4 | 兩案同時進入試跑期(12 月~1 月) | 已錯開;若客戶要求同時,第二案試跑延到 2 月 |
| I5 | 過度承諾以留住案子 | 這份手冊的每個 ★ 都是因為承諾太多而發生的。寧可少接一期,不接爆的一期 |
| I6(2026-09-23 新增) | 有外援可諮詢,但沒排進時程、變成臨時抱佛腳 | 開工前排定三個諮詢點(簽約前、開發中期、上線前,見 00 檔);每次諮詢前先把具體問題列清楚,不要空手去聊 |
| I7 | 外援意見跟 WT/Claude 的判斷衝突,選擇性忽略對自己有利的那句 | 衝突發生時記錄下來、認真評估再決定,不要因為文件已經寫好就不改 |
最後三條,比全部加起來都重要
- 沒簽認的範圍文件,不開工。 A1 是所有問題的源頭。
- 每週看一次實機 demo。 C1 是你唯一能早期發現問題的方法。
- 保留人工路徑。 第一案的 L0、第二案的手寫表照片——系統出問題時客戶的生意不能停,這也是客戶信任你的原因。
7待補資訊與開工前檢核
用法:分四個來源——客戶一、客戶二、表妹、你自己。每項標「必要」(沒有不能簽約/開工)或「可延後」(上線前補即可)。最後是開工前的檢核表。
1. 要跟第一案客戶(冰棒/食品廠)拿的
必要(簽約前)
- ☐ 廠商數量、每週訂單量、旺淡季(決定推播用量與 LINE 方案)
- ☐ 5~10 則真實的 LINE 訂貨訊息截圖(第二期自然語言下單的樣本;也讓你看清楚現在的流程)
- ☐ 價格是否每家不同;有無階梯價、月結
- ☐ 配送規則:幾天前訂、哪些天送、區域、最小訂量
- ☐ 訂單狀態有哪些、誰改
- ☐ LINE 是要到哪一層(①連結 ②通知 ③LINE 內填表 ④打字下單)——客戶親口選
- ☐ 現有 LINE 官方帳號?方案?好友數?帳號在誰名下?
- ☐ 網域、主機有沒有既有的?在誰名下?
- ☐ 廠商收款方式(匯款/月結,B2B 端第一期仍不串金流)
- ✅
客戶端有沒有營業登記— WT 於 2026-09-23 初步確認「有」,散客商店的藍新/綠界金流申請需要用到;訪談時核實統編是否對應到要申請金流的法人(08 檔第 5 節) - ☐ 散客商店:三種付款方式(匯款/超商取貨付款/藍新或綠界)客戶偏好哪個優先上,收款帳戶資訊
- ☐ 後台使用者有幾人;兩角色(老闆/廠商)是否夠
- ☐ 誰是決策者、誰驗收、誰日常操作
- ☐ 期望上線日;有無硬截止
- ☐ 要不要發票(影響你的報價結構;散客商店若量大,電子發票是第二期項目,見 01 檔)
可延後(上線前)
- ☐ Logo、品牌色、商品照片、文案(W6 官網前)
- ☐ 商品清單、規格、單位、每箱數量(W8 建檔前,用你給的 Excel 模板)
- ☐ 廠商清單與聯絡人(W8)
- ☐ FAQ 內容與價目表 PDF(餵 LINE AI 聊天機器人,W7)
- ☐ 誰負責在 LINE 回訊息、幾點到幾點
- ☐ 庫存/配方/損耗的現況(第二期訪談用,現在只要知道「有沒有配方表」)
2. 要跟第二案客戶(多據點冰品飲料店)拿的
必要(簽約前)
- ☐ 每店最近一週的手寫進銷存表(拍照)——沒有這個不能定欄位
- ☐ 據點清單:幾店、類型(海生館/海邊/入口/出口)、營業時間
- ☐ 海生館的品項清單(試點用)
- ☐ 各店員工數、時薪/月薪、角色(正職/PT/發券/支援)
- ☐ 現有 POS 是什麼、結帳畫面能不能拍、有沒有日結報表可拍
- ☐ 銷量是直接記還是用期初期末算;折扣、招待、員工餐怎麼記
- ☐ 哪些商品有保存期限、幾天;報廢現在怎麼記
- ☐ 老闆最想知道的三個數字(決定報表優先順序)
- ☐ 老闆心中的「AI 排班」長什麼樣(當場降期待)
- ☐ 願意海生館先試跑 4 週?誰是海生館店長?
- ☐ 店長填報的紀律由誰保證(老闆親口承諾)
- ☐ 誰維護商品主檔
- ☐ 決策者、驗收者
- ☐ 要不要發票
可延後
- ☐ 商品成本(可先空白)
- ☐ 固定成本:租金、水電、勞健保估算(可先空白,但報表會標「不完整」)
- ☐ 過去的營收數字(驗證推算邏輯用;也決定要不要補登歷史)
- ☐ 園區/海生館活動行事曆來源
- ☐ 老闆看報表的裝置與頻率
3. 要跟表妹確認的
- ☐ 每週可投入時數(誠實的數字,不是願意的數字)
- ☐ 期中、期末、寒假、實習的日期
- ☐ 熟不熟 Python/Django/SQL/git/Docker(各 1~5 分自評;低於 3 的先花一週補)
- ☐ 有沒有部署過任何東西到伺服器(有/無,無就多排一週)
- ☐ 手上有沒有 Claude/Codex 帳號與額度
- ☐ 酬勞方式(里程碑/時薪)、金額、書面約定
- ☐ 她跟客戶的溝通規則(只進技術群)
- ☐ 退出通知期(至少兩週)與交接義務
3b. 外援顧問(2026-09-23 新增角色,可延後)
- ☐ 他方便的諮詢方式與頻率(電話/見面/訊息,大概多久回應)
- ☐ 是否需要付費或答謝(專業諮詢即使是人情,也建議明確一次,避免後續尷尬)
- ☐ 簽約前那次諮詢要問的具體問題先列出來,不要空手去聊(見 00 檔「這位外援怎麼用」)
3c. 補助企劃會議後要追蹤的(2026-09-25 新增)
- ☐ 週一晚上跟寫補助企劃的人開完會後,把「Demo 具體要交付什麼格式/內容」問清楚——目前 01 檔的 Demo 範圍(4.1 節)是我們自己推的,補助企劃書實際要求的呈現方式(例如要不要截圖、要不要現場操作、要不要書面架構圖)可能會回頭調整 Demo 範圍
- ☐ 確認補助申請本身的時程/截止日,跟 10/15 Demo、11/30 執行版本這兩個日期對齊,避免補助流程臨時改期程
4. 你自己要決定的
| 決策 | 選項 | 建議 |
|---|---|---|
| 接案身分 | 個人勞務/工作室/公司 | 若客戶要發票,及早決定;影響淨額 5~10% |
| 底線價 | 第一案 20、第二案 28? | 是;低於此改砍範圍 |
| 開工順序 | 一先二後/同時 | 一先(10 月中),二先訪談與資料設計(低負擔),12 月起開發 |
| 主機 | 兩案共用一台/各一台 | 各一台(不同客戶、資料隔離、各自付費、日後分手乾淨) |
| 表妹酬勞 | 固定/里程碑/時薪 | 里程碑(與客戶付款對齊),保留 20% 尾款到保固結束 |
| 維護 | 要不要接 | 要,但用合約與月費;第二案加顧問方案 |
| 第二案報表工具 | Metabase/自己畫 | Metabase |
| 第一案 LINE 第一期層級 | L1/L2 | L2(LIFF),L1 順帶 |
| 客戶溝通管道 | LINE 私訊/群組/Email | 一個專案群組(你+客戶決策者+日常操作者),重要決定另寄 Email 留底 |
5. 開工前檢核(Definition of Ready)
第一案開發(W3)開始前,以下全部打勾:
- ☐ 範圍文件(05 檔)客戶簽認
- ☐ 合約簽、30% 到帳
- ☐ 訪談摘要客戶確認
- ☐ 網域、主機、Cloudflare、LINE Business ID 在客戶名下,你們有協作權限
- ☐ LINE Developers Provider 建好、Messaging API channel + LINE Login channel 同 Provider(截圖存證)
- ☐ git repo 建好、
.gitignore、.env範本、README 骨架 - ☐ 測試環境網址可開(哪怕只是「Hello」)
- ☐ 每週 demo 時間定好
- ☐ 表妹書面約定簽好
- ☐ 這份資料夾的文件她讀過並回饋問題
第二案開發(12 月)開始前:
- ☐ 以上通用項目
- ☐ 海生館手寫表逐格對照完成,欄位定義客戶簽認
- ☐ 推算邏輯(03 檔第 2 節)客戶簽認
- ☐ 海生館店長知道試跑計畫、同意
- ☐ 商品主檔(海生館)建好
- ☐ 天氣 API 測試成功(氣象署開放資料平台會員與 API key)
6. 之後若要再找 Claude 或其他人接手,給他們這些
- 這個資料夾的 00~07
- 訪談摘要(客戶確認版)
- 簽認的範圍文件與合約
- git repo 與部署文件
- 帳號清單(存在密碼管理器,不在文件裡)
- 最新一次週 demo 的紀錄(做到哪、卡在哪)
有這六樣,任何懂 Django 的人或任何 AI 都能在一天內接上。
8WordPress 可行性評估與最終架構決策
背景:01 檔原規劃技術架構為 Django + PostgreSQL。2026-09-23 WT 提出:之前跟表妹討論其實是往 WordPress 方向。本檔評估可行性、風險與費用差異,供決策。此問題只涉及第一案(有公開網站與交易流程);第二案是內部資料系統,沒有 WordPress 的用武之地,不適用。
研究日期:2026-09-23。外掛價格、方案狀態、漏洞數字會隨時間變動,簽約前建議重新核對。
2026-09-23 追加澄清(定案):WT 確認 WordPress 的範圍只服務官網與散客商店(一般消費者買冰棒),完全不涉及廠商 B2B 下單。廠商 B2B 系統(專屬價格、只看自己訂單、LINE 整合)維持獨立系統,架構是「同一台主機、不同容器、各自資料庫、子網域分流」。這代表下面第 2 節(B2B 交易系統)討論的 WooCommerce B2B 外掛、年費、免費替代方案全部不適用於 WordPress 那一側——那些是給散客商店以外、真正的廠商系統用的分析,但廠商系統本來就走獨立的 Django(不是 WordPress),所以第 2 節純供對照參考,不影響最終架構。真正適用的是第 1 節(官網)與第 6 節(架構總覽、金流三方式、資安隔離)。
0. 結論(依 2026-09-23 定案更新)
最終架構是兩個獨立系統,各自用最適合的工具:
| 系統 | 服務對象 | 技術 | 費用重點 |
|---|---|---|---|
| 官網+散客商店 | 一般消費者 | WordPress + WooCommerce | 訂單系統、三種付款方式全部免費或抽成制,沒有 B2B 那類授權費問題(見第 1、6 節) |
| 廠商 B2B 系統 | 廠商(專屬價格、下單、LINE) | Django + PostgreSQL(維持 01 檔原規劃) | 自行開發,無授權費 |
兩個系統跑在同一台 VPS 上,用不同容器、不同資料庫、不同(子)網域區隔,中間不互通資料(散客買冰棒的紀錄跟廠商訂貨的紀錄本來就是兩件事,不需要打通)。
下面第 2~2.6 節是「如果 WordPress 也要扛 B2B」的分析,現在確定用不到,保留是因為如果未來範圍變動(例如客戶要求官網也能給廠商登入),可以直接回頭看。目前請直接跳到第 1 節和第 6 節。
1. 官網(強烈建議 WordPress,無論交易系統選什麼)
- Gutenberg 區塊編輯器:老闆自己改文案、換圖片,不必找你們或表妹。這是 Django 版本做不到的(Django admin 是給操作訂單用的介面,不是給人寫文案用的 CMS)。
- SEO 外掛(Yoast、Rank Math)生態成熟,呼應之前查過鯤航 SEO 的邏輯,也適用這個案子。
- 主機選擇多、便宜(共享主機或雲端 WordPress 代管,約 NT$300~1,000/月),比 VPS + Docker 對非工程背景的人更友善。
建議:無論 B2B 系統選什麼架構,官網都用 WordPress。 就算交易系統走 Django,官網也可以是獨立的 WordPress,兩者用「訂購入口」連結串起來,不衝突。
2. B2B 交易系統:WooCommerce + 外掛的實際狀況
2.0 先釐清:哪些是免費、哪些真的要花錢(2026-09-23 補充)
WT 提出的疑問很關鍵,這裡先把三件事分開講清楚,因為它們常被混在一起:
| 東西 | 免費/付費 | 說明 |
|---|---|---|
| 訂單系統本身(購物車、結帳、訂單列表、訂單狀態) | 免費 | WooCommerce 核心內建,裝上去就有,不用另外買外掛 |
| 「客戶只看得到自己的訂單」 | 免費,原生行為 | 任何登入的 WooCommerce 會員,「我的帳戶」本來就只顯示自己的訂單,這不是 B2B 外掛才有的功能,是 WordPress/WooCommerce 帳號系統的本來設計 |
| 金流串接(信用卡、ATM、超商代碼、LINE Pay) | 外掛免費,交易時抽成 | 見下方第 3 節,這不是授權費模式 |
| 每家廠商各自的專屬價格表、審核註冊流程、子帳號、報價單 | 這塊才是真的要付費或客製 | WooCommerce 原生「一個商品一個價格」,要做到「A 廠商看到的芒果冰棒是 8 元、B 廠商是 7.5 元」,超出核心功能,見 2.1~2.2 |
你之前用過的「訂單系統」和「金流」,這兩塊確實免費,你的印象沒錯。 我之前的 08 檔內容容易讓人誤以為「B2B 這整塊都要年費」,這裡更正:真正要花錢或花工時的,只有「每家廠商價格不一樣」這一件事,不是整個訂單流程。
2.1 現成的 B2B 外掛(付費,功能齊全)
主要選項:B2BKing、Wholesale Suite、B2B Pricing(WooCommerce 官方)。共同能力:
- 依角色設定批發價、階梯折扣、固定廠商價
- 隱藏價格/分類給未登入或非核准角色
- 客戶註冊審核流程
- 子帳號、報價單、採購單結帳(B2BKing 較完整)
價格:B2BKing Pro 年費約 US$250(約 NT$8,000);同類外掛多在這個量級或更高。這是持續性費用,要放進客戶自付清單,且逐年續。
2.1b 免費替代方案(夠不夠用,取決於廠商數量與需求深度)
查到幾個免費的角色定價外掛:ELEX Role Based Pricing、Wholesale Essentials、DreamFox Role & Wholesale Pricing。這些能做「依會員角色設定不同價格」,且不用年費。
限制:免費版通常是「一個角色一個折扣%」,適合「批發會員」「零售會員」這種少數幾種身分的定價。如果你們是「每一家廠商都有各自談好的價格」(不是統一批發價),免費外掛要嘛:
- 幫每家廠商各開一個角色(廠商多了會很難管理,10 家廠商就要維護 10 個角色)
- 或者做不到,還是得客製
這裡的實際判斷點是:這些廠商的價格差異,是「統一批發價 vs 零售價」這種一兩層,還是「每家都不同」? 這件事訪談時(04 檔 A2 題)就會問到,答案會決定免費外掛夠不夠用。
2.1c 第三個選項:自己客製一個小功能,不買整套 B2B 外掛
如果廠商數量不多(例如 5~20 家)、且你們只需要「每家看到自己的價格、下單、看自己的訂單」,不需要報價單、子帳號、審核流程這些額外功能,那麼寫一個小型自訂外掛(用 WooCommerce 的 woocommerce_product_get_price 這類 hook,掛一張「廠商 × 商品 × 價格」對照表)通常比買 B2BKing 划算:
- 一次性開發成本,沒有年費
- 剛好對應你們的資料模型(跟 01 檔原本 Django 版本的
PriceList表是同一個邏輯,只是換 PHP 寫) - 缺點:客製的東西以後要客製的人維護,不像買外掛有官方更新(但這跟自己寫 Django 的取捨完全一樣)
這是我目前傾向的建議:先訪談確認廠商定價的複雜度,如果只是「每家不同價格」這麼單純,不建議花年費買 B2BKing 整套,客製一個小功能就夠;如果客戶還想要報價單、審核流程、子帳號這些,再評估買外掛划不划算。
限制:這些外掛解決的是「定價與可見性」,不是你們規格裡的細節(配送日、時段、備註、廠商多 LINE 帳號綁定、訂單狀態流轉的客製規則)。這些超出外掛預設的部分,仍要有人寫 PHP 自訂外掛或改布景主題函式庫(functions.php),工作量與 Django 客製資料模型是同一個量級,只是換語言寫。
2.2 訂單資料模型的變動:HPOS
WooCommerce 2026 年新站已預設採用 HPOS(High-Performance Order Storage),訂單資料存在專屬 SQL 表,取代舊版把訂單塞進「文章+meta」的做法,效能已大幅改善,這點對 WordPress 是好消息。
但要注意:WooCommerce 10.7(2026 年 4 月)關閉了「寫回舊表」的預設同步。如果日後裝的某個外掛還在用舊方式寫訂單資料(許多外掛尚未跟上這個變動),資料可能悄悄不同步、你們不會馬上發現。外掛相容性是持續要盯的風險,不是裝好就結束。
2.3 LINE 整合:比原先預期成熟,但仍有缺口
台灣有專門做 WordPress + LINE 整合的外掛商,以歐博能(oberonlai.blog)的產品線為代表:
| 外掛 | 功能 | 費用 |
|---|---|---|
| LINE 登入外掛 | WooCommerce 登入/註冊頁加 LINE 快速登入 | 多為免費或低價 |
| OrderChatz | 後台直接在 LINE 聊天、綁定會員、看訂單紀錄、分眾推播 | 月費 NT$499/年費 NT$4,980/買斷 NT$12,980 |
| LINE Pay 外掛 | LINE Pay 金流串接(第二期才會用到) | — |
| LINE Core 360 | 登入+結帳+訂單通知整合 | 未公開,需洽詢 |
這些外掛都是為 B2C 零售場景設計:一般消費者用 LINE 登入、下單、收通知。你們要的是 B2B 場景:廠商登入後只看到自己的專屬價格與訂單,在 LINE 裡填表下單、系統自動辨識身分寫入訂單——這個特定流程沒有對應的現成外掛,仍要客製寫 WordPress REST API endpoint 接 LINE webhook 與 LIFF。
結論:LINE「登入綁定」與「通知推播」這兩塊,WordPress 生態比自己從零刻(不管哪個框架)省事;但「LIFF 辨識廠商身分 + 自動建單」這個核心流程,仍要客製開發,工作量與 Django + line-bot-sdk 的做法相近,只是換 PHP 寫。
2.4 資安維護負擔(實際數字,2026)
- WordPress 生態系統 2025 年新增 11,334 個漏洞,91% 出在外掛(非 WordPress 核心)
- 平均一個正式站台裝 30 個以上外掛,每個外掛的資料庫與檔案系統存取權限等同核心本身——外掛越多、攻擊面越大
- 43% 的漏洞不需要登入即可被利用
- 2026 年 6 月一次有 6 個 CVSS 9.8(滿分等級)漏洞同時被實際攻擊,影響 114 萬個站台
- WordPress 目前占全球網站 41.5%,是全網最大的攻擊面
你們這系統存廠商聯絡人、專屬價格、訂單資料,不是普通內容站。若走 WordPress,維護合約必須包含:外掛與核心定期更新、資安掃描服務(如 Wordfence Premium 或 Patchstack,另有費用),且負擔隨外掛數量增加。
Django 版本因為沒有外掛市集,這類風險小很多,但仍要自己顧好系統套件更新(Python 套件、作業系統安全更新)——負擔換位置存在,不是消失,只是規模與來源不同。
2.5 金流串接:免費外掛+交易手續費,安全性務必用官方外掛,不要自己寫(2026-09-23 補充)
WT 問到:金流跟安全比較有關係,會不會別人寫的比較好?答案是肯定的,而且這點跟選 WordPress 或 Django 無關,是任何框架都該遵守的規則。
費用模式:台灣主要金流商的 WooCommerce 官方外掛本身都免費下載,收費方式是交易手續費(%),不是外掛授權費:
| 金流商 | 手續費(信用卡一次付清) | 其他 | 適用對象 |
|---|---|---|---|
| 綠界 ECPay | 一般會員約 2.75%,優質會員可低至 1.85% | 超商代碼付款、ATM 轉帳;撥款約 T+10 | 個人與公司皆可申請 |
| 藍新 NewebPay | 2.8%(一次付清),分期 3~30 期費率 3.0%~15.0% | 無年費、無設定費;提領手續費 NT$10/筆 | 需要營業登記,個人無法申請 |
| LINE Pay | 3% | 撥款約 7 個工作天 | 需商家審核(網站內容要完整) |
這對應到 07 檔已經提過的決定:藍新(甚至部分金流商)要求營業登記才能申請,這就是為什麼「你的接案身分」要先決定——這不只影響你自己的稅務,也影響客戶端能不能順利申請到金流(客戶當然是用自己的公司登記申請,但如果客戶本身還沒有商業登記,金流這塊會卡關,訪談時要確認客戶有沒有營業登記)。
安全性:不要自己寫信用卡處理邏輯,用官方「跳轉頁」模式
這是你的直覺完全正確的地方。原因很技術但很重要:
- 官方外掛用的是「頁面跳轉」付款:消費者的信用卡號直接輸入在金流商的加密頁面,你們的網站或伺服器完全不會接觸或儲存卡號。
- 這代表 PCI-DSS(信用卡資料安全標準)的合規責任主要由金流商承擔——他們是通過最高等級認證的專業機構。
- 如果自己寫程式處理信用卡資料(不管用 Django 還是 WordPress),等於要自己去符合 PCI-DSS,這對一個小型系統來說幾乎不可能達到,也不應該去嘗試:一旦你們的伺服器經手卡號,合規範圍、稽核成本都會跳好幾個等級,而且真的出資安事件,最高可能面臨每筆交易罰款等級的責任。
結論:金流這塊,不管最後選 WordPress 還是 Django,都是「串官方 SDK/外掛,讓消費者在金流商的頁面輸入卡號」,絕對不要自己刻收單邏輯。 WordPress 的優勢在這裡是「外掛已經幫你把跳轉流程包好了,裝上去、填 API 金鑰就能用」;Django 版本一樣可以做到同等安全(呼叫綠界/藍新的官方 API 做跳轉),只是需要工程師自己寫這段串接,工作量稍微多一點,但安全性原理完全一樣——不是 WordPress 比較安全,是「用官方跳轉頁」這件事本身安全,兩個框架都要這樣做。
跟第一期範圍的關係:01 檔原規劃第一期就不含金流(廠商採匯款、月結,出貨前付款),這件事現在不用改變。金流是第二期才會用到的功能,這裡先研究清楚是為了讓你們評估架構時心裡有數:金流這塊不會因為選 WordPress 而變貴或變便宜,兩邊都是「外掛/SDK 免費、交易抽成」的相同模式。
2.6 第二期庫存/成本/BOM:不會因換框架而變簡單
原料、配方(BOM)、處理損耗率、成品批次與到期日、成本回推——這是你們這個案子獨有的業務邏輯,市場上沒有通用外掛對應這類食品業的庫存邏輯。WordPress 的「文章+自訂欄位(postmeta)」資料模型處理這種多層關聯資料,效能與可維護性通常不如關聯式資料庫的原生設計(Django ORM 或直接寫 SQL)。這塊無論選哪個框架都是硬功夫,WordPress 沒有捷徑,也不會更便宜。
3. 費用差異總表(相對於 01 檔原報價)
| 項目 | Django 方案(01 檔原報價) | WordPress 方案 |
|---|---|---|
| 主機 | VPS,約 NT$300~600/月 | 共享/雲端主機,約 NT$300~1,000/月(依方案) |
| 訂單系統本身 | 免費(自己開發) | 免費(WooCommerce 核心) |
| 金流串接 | 免費(呼叫官方 API,工程師自己寫跳轉邏輯)+交易手續費 1.85%~3% | 免費(官方外掛)+交易手續費 1.85%~3%(兩邊手續費率相同,這是金流商收的,跟框架無關) |
| B2B 廠商專屬定價授權費 | 無(客製資料表) | 視複雜度而定:免費外掛(若定價層級簡單)/客製小功能(無年費)/B2BKing 等付費外掛約 NT$8,000/年起 |
| LINE 相關 | 自行開發(人工時間) | 登入/通知可用現成外掛(省人工,但看是否額外付費);LIFF 下單流程仍自行開發 |
| 開發人工 | 官網 + B2B 系統都是客製開發 | 官網省人工(用主題+頁面編輯器);B2B 系統客製人工與 Django 相近 |
| 資安維護(月費) | 抓一般系統更新即可 | 建議加購外掛更新追蹤與掃描,維護月費應上調,不能沿用 01 檔原本抓 Django 的維護費數字 |
| 第二期庫存成本 | 客製開發 | 客製開發,難度相近 |
淨效果:官網省下的開發工時,多半被 B2B 外掛年費與更高的維護費抵銷。真正的差異在表妹的學習曲線與部署難易度,這是純技術規格算不出來的,取決於她的實際背景。
4. 三個方案(2026-09-23:已定案選 A)
| 方案 | 內容 | 適合情況 |
|---|---|---|
| A. 混合式(已定案) | 官網+散客商店用 WordPress(WooCommerce,老闆自行編輯內容);B2B 下單/後台/LINE 訂單流程獨立成一套系統(Django);同一台主機、不同容器、不同資料庫、子網域分流 | ✅ 已確認採用,見第 6 節架構總覽 |
| 不採用:B2B 系統本來就不打算放進 WordPress | ||
| 不採用:官網確定用 WordPress |
5. 需要確認才能定案的事(已定案項目標記 ✅)
表妹對 PHP 的真實熟悉度— ✅ 不影響定案:B2B 系統維持 Django,WordPress 那側是標準 WooCommerce 設定,難度低,不需要表妹會寫自訂 PHP 外掛。廠商定價的複雜度— ✅ 不適用:廠商 B2B 系統不在 WordPress 裡,第 2 節的外掛年費討論用不到。- 同一台主機的網路隔離要在 W1 建置時就設好:WordPress 容器不能連到 B2B 系統的資料庫連接埠,反之亦然。見第 6 節。
- 子網域與 SSL 規劃:主網域(官網+商店)與子網域(B2B 系統,例如
order.客戶網域.com)各自的憑證與 DNS 設定,W1 訪談時連同「網域在誰名下」一起確認(04 檔共同題 3)。 - 金流第一期不做(01 檔已定:廠商採匯款、月結),但散客商店的金流/物流是另一件事,若要在第一期就做(見追加澄清),需要把 01 檔的「消費者端」模組從「僅詢價」升級為「完整下單+付款」,報價要相應調整(見第 6.4 節)。
訪談時確認客戶有沒有營業登記— ✅ WT 於 2026-09-23 初步確認客戶端有營業登記;細節(統編是否對應到要申請金流的法人)留待訪談時核實。
6. 最終架構總覽(2026-09-23 定案)
6.1 兩個系統,各自獨立
一台 VPS(Docker) | +- 容器 A:WordPress + WooCommerce + MySQL | 網域:主網域(例如 客戶網域.com) | 服務對象:一般消費者(散客) | 功能:品牌官網、商品展示、購物車、結帳 | +- 容器 B:Django + PostgreSQL | 網域:子網域(例如 order.客戶網域.com) | 服務對象:廠商(B2B) | 功能:廠商登入、專屬價格、下單、後台、LINE LIFF 整合 | `- Cloudflare(DNS、憑證)+ nginx/Caddy(依網域名稱分流到對應容器)
兩個系統不互通資料:散客買冰棒的紀錄跟廠商訂貨的紀錄是兩件事,沒有打通的必要。各自的資料庫也完全分開。
6.2 資安隔離(重要,不是多餘的謹慎)
WordPress 生態 2025 年新增 11,334 個漏洞、91% 出在外掛(見第 2.4 節數字)。這個風險現在雖然只影響散客商店,但如果兩個容器共用同一個資料庫伺服器或同一個內部網路,WordPress 那邊一旦被攻破,攻擊者有機會橫向移動碰到 B2B 那邊的廠商資料。
建置時要做的事(不增加成本,只是要記得設定):
- 兩個容器用 Docker 的獨立網路(network),預設互不可達
- MySQL(WordPress 用)與 PostgreSQL(Django 用)各自只在自己的容器網路內開放連接埠,不對外、也不對另一個容器開放
- 若日後真的需要兩邊資料互通(例如老闆想在同一個後台看散客與廠商的總營收),透過一個明確定義的 API 呼叫,而不是直接開資料庫存取權限
6.3 三種付款方式的落地方式(確認可行,皆為 WooCommerce 標準做法)
| 方式 | WooCommerce 做法 | 費用 | 備註 |
|---|---|---|---|
| 匯款 | 內建「銀行轉帳(BACS)」,設定 > 付款開啟即可 | 免費 | 訂單狀態停在「保留中」,老闆核對收款後手動改「處理中」 |
| 超商取貨付款 | 綠界物流模組(跟金流模組是分開的服務),支援 7-11/全家/萊爾富,可選「取貨付款」或「先付款再取貨」 | 物流費約 NT$60~70/件(客戶/消費者負擔的運費,不是系統費) | 後台每筆訂單要手動按「建立物流訂單」把資料送到綠界 |
| 藍新/綠界第三方金流 | 官方 WooCommerce 外掛,安裝+填 API 金鑰即可 | 外掛免費,交易手續費 1.85%~3%(見 2.5 節費率表) | 藍新需要營業登記,個人無法申請 |
三種都不需要客製開發,是 WooCommerce 最主流的台灣電商標準配置,教學資源非常多,表妹或任何人都能照著文件設定完成。
6.4 這件事跟 01 檔報價的關係(2026-09-23 定案:併入第一期)
01 檔原規劃第一期的「消費者端」只做詢價表單,完整購物車+金流原本放在第二期。WT 確認:因為這塊是標準 WooCommerce 設定(不是客製開發),併入第一期。 01 檔報價加回約 1.5~2.5 萬(WooCommerce 商城建置+三種付款方式設定與測試)。
6.5 散客與廠商訂單如何整合進銷存(不要連資料庫,用 Webhook + API)
WT 提出:官網下單後的進出貨資料要跟廠商 B2B 的訂單資料整合成進銷存,因為賣的是同一批貨、兩邊都要扣庫存。這個業務邏輯正確,但實作上不能讓 WordPress 直接連到 Django 那邊的資料庫——這會打破 6.2 節剛建議的網路隔離(WordPress 外掛漏洞多,直連資料庫等於幫攻擊者鋪路),而且 WordPress 用 MySQL、Django 用 PostgreSQL,本來就是兩種資料庫系統,硬接也不穩定。
正確做法:用 WooCommerce 內建的 Webhook,把資料「推」過去,不是把資料庫「連」過去。
消費者在 WooCommerce 下單 | v WooCommerce 內建 Webhook(設定 > 進階 > Webhook,免費、不用寫程式) | 訂單建立/狀態變更時,自動 POST 訂單 JSON(含簽章)到指定網址 v Django 接收端點(這是要開發的部分,工作量不大) | 驗證簽章 → 解析品項與數量 → 寫入進銷存資料表,標記「通路:散客」 v Django 端把散客與廠商(B2B,本來就直接寫在 Django)兩個通路的資料匯總 | v (第二期完整庫存模組)Django 算出最新可售庫存 | 透過 WooCommerce 官方 REST API 回寫庫存數字 v WooCommerce 商品頁庫存同步更新,避免賣超
分工與時程:
- WooCommerce 設定 Webhook:設定而非開發,成本幾乎零,第一期可以直接設好。
- Django 接收端點(驗證簽章、解析、寫入原始銷售紀錄):第一期可以先做「輕量版」,忠實記錄散客訂單資料,不急著做完整庫存計算,這樣資料不會漏掉,第二期接上完整邏輯時不用回頭補資料。這塊是小工程,若要在第一期加做,抓 0.5~1 萬。
- 完整的庫存扣減、配方成本、批次到期、回寫 WooCommerce 庫存:維持第二期,跟 01 檔庫存模組原規劃一致,不會因為現在多接一個 Webhook 就變簡單或提前。
6.5.1 技術細節:自架 API,不需要第三方服務(2026-09-23 補充)
WT 問:能不能自己架 API 讓資料庫串接?可以,而且這就是標準做法——Django 本身就是這支 API,不需要另外找服務。 兩個方向的具體規格:
方向 1:WooCommerce → Django(散客訂單通知,第一期 E2)
| 項目 | 做法 |
|---|---|
| WooCommerce 端設定 | 後台 > 設定 > 進階 > Webhook > 新增;主題「訂單建立/更新」;Delivery URL 填 Django 端點;Secret 自訂一組隨機字串(雙方各存一份) |
| 驗證方式 | 每個請求帶 X-WC-Webhook-Signature 標頭:用 Secret 對整包 JSON 內容做 HMAC-SHA256,結果轉 base64。Django 收到後用同一個 Secret 重算一次比對,一致才處理,不一致回 401 並記錄 |
| 注意事項 | 驗證要用原始請求內容(raw body),不能先解析成物件再重組,否則簽章會對不上;Secret 存在 .env,絕不進 git(呼應 06 檔風險 C8) |
方向 2:Django → WooCommerce(第二期,回寫庫存數字)
| 項目 | 做法 |
|---|---|
| WooCommerce 端設定 | 後台 > 設定 > 進階 > REST API > 新增金鑰;權限選「讀取/寫入」;產生 Consumer Key 與 Consumer Secret |
| Django 端 | 安裝官方 Python 套件 pip install woocommerce,帶著 Key/Secret 呼叫 PUT /wc/v3/products/{商品編號} 更新庫存數量,是 WooCommerce 官方支援的標準介面,不是繞道做法 |
兩個方向合起來,整個「串接」就是兩組有驗證機制保護的 HTTP 呼叫,沒有任何一邊拿到對方資料庫的帳號密碼,維持 6.2 節的隔離原則。這兩段是 E2(第一期)與庫存模組(第二期)本來就包含的工作,不會因為釐清做法而追加費用。
7. 資安強化清單(2026-09-24 新增)
背景:WT 問「這個架構的資安,別人想打的話容易不容易」。老實回答:照著架構本身的隔離設計(WordPress/Django 分容器、官方金流跳轉頁、Webhook 簽章驗證)能擋掉大部分自動化攻擊與亂槍打鳥,但沒有專業資安審查、又是時程壓縮下由學生+AI 協作寫出來的,對「有目的的針對性攻擊」不算難打。 最大的單一弱點是 IDOR(廠商 A 猜/改網址參數看到廠商 B 的資料)——這是 Django 不會自動擋、必須工程師每個端點都手動檢查的東西,也是真實世界資料外洩最常見的原因之一,偏偏又是趕時程時最容易被漏測的項目(頁面「看起來能動」,功能測試會過)。
7.1 免費或低成本,應該直接做(已寫進 01 檔驗收清單)
| 項目 | 做什麼 | 為什麼 |
|---|---|---|
| IDOR 系統性測試 | 每一個會回傳資料的 API/頁面都測,不是測一次:用廠商 A 帳號嘗試存取廠商 B 的訂單、廠商編號 | 最可能真的被打穿的地方 |
| Django admin 換路徑 | 不用預設 /admin/;帳密夠強;有能力可加雙因素驗證(django-otp) | 預設路徑是自動化掃描第一個試的地方 |
| 登入速率限制 | 廠商登入、Django admin 都要限制嘗試次數(django-ratelimit 或 Cloudflare 規則) | 防暴力破解密碼 |
正式環境 DEBUG=False | 確認關閉,錯誤畫面不外洩程式碼路徑與環境變數 | 新手最常見的疏忽,一次就等於送資料 |
| Cookie 安全設定 | Secure/HttpOnly/SameSite | 防 session 被偷 |
| Dependabot(GitHub 免費) | 啟用,自動追蹤 Python 套件與已知漏洞 | 不用人工每週查 |
| 失敗事件留紀錄 | 登入失敗、Webhook 簽章驗證失敗都記錄,異常大量要能發現 | 現有規劃只記推播失敗,沒記「有人在試探系統」 |
| WordPress 外掛數量控制 | 能不裝就不裝,裝的都要是有在維護的(呼應 2.4 節) | 91% 的 WordPress 漏洞出在外掛 |
| 報表/分析工具用唯讀帳號(2026-09-25 補充) | 第二案的 Metabase(或任何 BI 工具)連資料庫一律用唯讀帳號,不用有寫入權限的帳號 | 防止誤改;分析查詢卡住鎖表時,唯讀帳號的影響範圍比讀寫帳號小很多,不拖累主系統 |
7.2 要花錢或花時間,值得評估
| 項目 | 費用/時間 | 判斷 |
|---|---|---|
| 找懂資安的人做輕量檢視 | 依深度,數千到數萬元 | 正式滲透測試對此規模可能不成比例;優先問外援顧問(07 檔)他的背景裡有沒有相關經驗,比花錢找測試公司划算 |
| Cloudflare 付費方案(WAF 規則) | 約 US$20/月起 | 散客商店這個公開攻擊面優先度較高;B2B 系統已有容器隔離,優先度較低 |
| WordPress 資安外掛(Wordfence Premium 等) | 年費制 | 已算進 2.4 節維護費調整建議 |
7.3 結論
7.1 是紀律問題,不是預算問題,不建議因為時程壓縮而跳過;7.2 可以先緩,等系統穩定運作、有真實金流之後再評估。
資料來源
- Barn2:The Best WooCommerce B2B Plugins for 2026
- B2BKing:8 Best WooCommerce B2B Plugins for 2026
- WooCommerce Developer Docs:High-Performance Order Storage (HPOS)
- Patchstack:State of WordPress Security in 2026
- Webmastered:250+ Weekly WordPress Plugin Vulnerabilities in 2026
- adyog:June 2026: Six CVSS 9.8 Vulnerabilities, 1.14 Million WordPress Sites
- 歐博能 WP 開發日常:OrderChatz — LINE 推播鎖定真買家、WordPress LINE 登入外掛、給台灣人專用的 WooCommerce 擴充
- Irvinglab:LINE Core 360:LINE 登入、結帳、訂單通知整合
- ELEX:WooCommerce Role Based Pricing Plugin(免費)
- WordPress.org:Wholesale Essentials for WooCommerce(免費)、DreamFox Role & Wholesale Pricing(免費)
- 綠界科技:服務費率表
- WordPress.org:Newebpay Payment 外掛
- WooCommerce:PCI-DSS compliance and WooCommerce
- progressbar.tw:想製作線上支付服務?PCI-DSS 規範
- Hookdeck:Guide to WooCommerce Webhooks Features and Best Practices、How to Secure and Verify WooCommerce Webhooks
- WooCommerce Developer Docs:REST API Authentication、REST API Documentation
- linuxconfig.org:How to work with the WooCommerce REST API with Python