c2cbuyhub 架構重整 — 執行計畫書 v4

現況全貌 + 待辦(2026-08-13 架構重整 + 2026-08-14 勞報單改版/文件更新)

2026-08-13 完成:階段 0/1/2/3、關掉 workers.dev 洞、Partners 目錄重整、audit 開發文件區、操作手冊新模型。 尚未做:booking 搬 /internal、階段四(拆 Worker / staging)。
2026-08-14 追加(本次):勞報單表單改版(影本頁高解析+兩頁綁定+戶名法規提示+簽名加高+手機 RWD)、操作手冊/規格文件同步更新、文件頁表格與長連結手機 RWD 修正。皆已上線並線上複驗,worker.js 未動。

一、已完成(2026-08-13 架構重整)

項目內容狀態
階段 0執行前完整備份(D1/KV/Access/secret/code)+還原演練(46 筆相符)
階段 1勞報單、發票工具就緒(邏輯不動;發放時機 tracy 決定)
階段 2Portal /home/:卡片版+總表版、右上切換;Access;加了 audit 入口;外部夥伴改小卡片
階段 3booking 加輕量防濫用(/api/booking POST 每分鐘 40 次上限)
安全關掉 workers.dev 繞過洞(寫進 wrangler.jsonc
Partnerslabor+invoice 搬進 /partners/;partners 公開首頁;labor/admin 鎖跟著搬
audit/audit/(僅 tracy):發票開發規格書、勞報單系統開發規格;索引頁含手冊連結
操作手冊模型手冊主檔跟工具頁走(tracy 維護)、audit 只放連結連回

二、2026-08-14 勞報單改版與文件更新(本次新增)

在「階段一 勞報單」既有基礎上做的細節優化與文件同步;只改 site/ 靜態頁、worker.js 未動,皆已上線並線上複驗。

表單改版(partners/labor/filladmin,共用同一份)

項目內容部署版本
影本清晰+獨立成頁原本證件塞進表單小框、產 PDF 時被 html2canvas 壓糊;改為第 1 頁=表單、第 2 頁=「影本頁」,三張證件原圖高解析直接嵌入(連小字可讀)。90e18c52
兩頁綁定第 1 頁頁尾+第 2 頁抬頭載明領款人/請款公司/填表日期,證明兩頁為同一份文件(防被當無關頁)。
戶名可自由填+法規提示戶名不鎖定(保留第三人帳戶可能);下方提示:「根據《營所稅查核準則》71-12 及 85-2,稅務所得人與收款人需相同…如需匯第三人帳戶,須書面授權、經財務查驗無誤後始得出款」。
簽名區加高96 → 150px。
手機 RWD 修正窄螢幕欄位(電話/證號/日期)改滿版、長標籤斷行,修正右邊框被裁。

操作手冊/規格文件同步

文件更新版本
經辦操作手冊
/partners/labor/admin/manual/
戶名/第三人授權(法規版)+「法規依據」說明框(85-2/71-12 全文)+ PDF 分頁說明改新邏輯+日期。4ade6ba0 · 60bfec2b
勞務人操作手冊
/partners/labor/guide/
補「戶名須為本人;需匯第三人請先告知經辦另辦書面授權」。4ade6ba0
系統開發規格
/audit/labor-dev-spec/
PDF 版面改新邏輯+兩頁綁定+簽名加高+手機 RWD;日期/摘要更新。4ade6ba0 · 60bfec2b
教育訓練
/partners/labor/admin/training/
內容為「稅務出款方式差異」、本次改動不影響 → 未動

文件頁手機 RWD 修正

真手機(iPhone Safari)上文件頁表格與長網址在窄螢幕溢出被裁(是真溢出、非截圖假象)。修法:表格內容可斷行(th,td{overflow-wrap:anywhere})+所有連結/code 可斷行+窄螢幕縮字級。已修 4 份有表格的文件頁(勞報手冊、labor/invoice 開發規格、發票手冊);真 Chromium 390px 實測皆無水平溢出。fbbd4a3c · 851852a1

部署安全:每次 wrangler deploy 前用 content/v2 抽線上 bundle 與本機 worker.js 比對=語意零差異才部署,未影響 booking 限流/partners/invoice 後端。

三、檔案結構總表(完整網址)

對外只服務 site/;每個資料夾/檔=一條網址。🔒=需登入,其餘公開。

階層樹版(把資料夾層級秀出來):另見獨立檔案 https://pub-ec98d50a73bb4aaa9dfa8a786ce35edf.r2.dev/keep/1786693116-c41b5f3d-file-tree.html
檔案完整網址存取
site/index.htmlhttps://c2cbuyhub.com/302 → /home/
管理員 Portal
site/home/index.htmlhttps://c2cbuyhub.com/home/🔒 tracy+tiffy
site/home/table.htmlhttps://c2cbuyhub.com/home/table🔒 tracy+tiffy
外部夥伴 partners
site/partners/index.htmlhttps://c2cbuyhub.com/partners/公開
site/partners/invoice/index.htmlhttps://c2cbuyhub.com/partners/invoice/公開+限流
site/partners/invoice/manual/index.htmlhttps://c2cbuyhub.com/partners/invoice/manual/公開(發票操作手冊)
site/partners/labor/admin/index.htmlhttps://c2cbuyhub.com/partners/labor/admin/🔒 公司登入(建單)
site/partners/labor/admin/manual/index.htmlhttps://c2cbuyhub.com/partners/labor/admin/manual/🔒 內部操作手冊
site/partners/labor/admin/training/index.htmlhttps://c2cbuyhub.com/partners/labor/admin/training/🔒 教育訓練
site/partners/labor/fill/index.htmlhttps://c2cbuyhub.com/partners/labor/fill?f=…公開(專屬連結)
site/partners/labor/guide/index.htmlhttps://c2cbuyhub.com/partners/labor/guide/公開(勞務人操作手冊)
開發文件 audit(🔒 僅 tracy)
site/audit/index.htmlhttps://c2cbuyhub.com/audit/🔒 tracy
site/audit/invoice-dev-spec/index.htmlhttps://c2cbuyhub.com/audit/invoice-dev-spec/🔒 發票開發規格書
site/audit/labor-dev-spec/index.htmlhttps://c2cbuyhub.com/audit/labor-dev-spec/🔒 勞報單系統開發規格
業務儀表板(🔒 各自白名單)
site/revenue/index.htmlhttps://c2cbuyhub.com/revenue/🔒 營收
site/c2cgroupbuy/index.htmlhttps://c2cbuyhub.com/c2cgroupbuy/🔒 團購
site/c2cbuy/index.htmlhttps://c2cbuyhub.com/c2cbuy/🔒 快電商
site/cbstock/index.htmlhttps://c2cbuyhub.com/cbstock/🔒 服裝庫存
site/cpdttracker/index.htmlhttps://c2cbuyhub.com/cpdttracker/🔒 商品追蹤
site/teamleader/index.htmlhttps://c2cbuyhub.com/teamleader/🔒 團隊長核心報名
site/pioneer/index.htmlhttps://c2cbuyhub.com/pioneer/🔒 活動先鋒星級榜
其他
site/pdtyoym/index.htmlhttps://c2cbuyhub.com/pdtyoym/公開(商品年月頁)
site/booking/index.htmlhttps://c2cbuyhub.com/booking/公開+防濫用 ← 待搬 /internal
site/internal/index.htmlhttps://c2cbuyhub.com/internal/公開(現有一頁)
site/_samples/https://c2cbuyhub.com/_samples/版型樣本

後端端點(單一 worker.js):/api/gviz/api/health/api/booking/api/invoice-lookup/partners/labor/admin/create/partners/labor/get/partners/labor/submit | workers_dev:false

四、Access 白名單(誰能看什麼)

路徑白名單
/home//home/table🔒 tracy.chen@c2cbuy.com.twtiffytu@c2cbuy.com.tw
/audit/*🔒 tracy.chen@c2cbuy.com.tw(僅 tracy)
/partners/labor/admin/*🔒 @c2cbuy.com.tw 公司網域 + 2 管理 gmail
營收/團購/快電商/庫存/追蹤/團隊長/先鋒 7 頁🔒 各自白名單(依「工具總表」白名單分頁)
partners 首頁、發票(+手冊)、labor/fill、labor/guide、booking、pdtyoym、internal公開
2026-08-13 更新:已移除 qtracy.chen@gmail.com,tracy 一律用公司信箱 tracy.chen@c2cbuy.com.tw 登入。

操作手冊 / audit 模型

五、待辦(詳細,供你判斷)

A. booking 搬到 /internal/booking 已討論待定案

是什麼把空間預約頁從 /booking 搬到 /internal/booking(歸「內部」上層,跟 partners 平層)。
現況booking 在 /booking、公開免登入、每天有人用(46 筆真實預約)、已加防濫用。
怎麼動頁面檔搬到 site/internal/booking/;API /api/booking 留原地(頁面用絕對路徑呼叫,不用改);D1 資料完全不動
風險低——資料不動、可回滾。主要是下面兩個「決定」而非技術風險。

👉 你要決定 3 件:

  1. 網址會變 /booking/internal/booking。確認要改?(這跟你早先「booking 網址不動」相反)
  2. 轉址:booking 在用中,建議加 302 轉址(舊網址自動導到新的、留 3–6 個月),員工無感。(這跟你早先「免轉址」相反)→ 加不加?
  3. 登入鎖:現在免登入。搬進 internal 後,維持免登入,還是改成 全公司員工登入

B. 拆兩個 Worker(biz / ops) 最大的待決定

是什麼把現在一個 Worker(總管)拆成兩個:biz=Tiffy 業務、ops=運營(booking/labor/invoice/portal/audit)。
好處①部署互不干擾(改一邊不會動到另一邊)②權責清楚(biz=Tiffy、ops=翠翠)③監控/log 分開看。
🔴 最大風險現在 c2cbuyhub.com 是「自訂網域綁單一 Worker」、route 幾乎 0。拆兩個必須改成「路由分派」——這是全站級切換,做壞了整站進不去。要在測試網域先驗、低流量時段做、備好把網域指回單一 Worker 的回滾。
一個假理由Tako 說「拆 D1 解混用」——但查證後 D1 只有 booking 一張表、業務頁與 labor/invoice 都沒用 D1,所以那問題不存在,拆完 biz 的 D1 會是空的。
替代方案不拆:單一 Worker 不動,只把 worker.js 內部整理成模組(各自檔案)→ 拿到「程式碼分得清楚」的大部分好處,完全免掉網域切換風險
電寶建議傾向不拆(風險 vs 報酬不划算,D1 理由又不成立);但你若很重視「部署完全隔離」,拆也可以,只是要接受網域切換那一關。

👉 你要決定:拆,還是不拆?(要的話我可以把「拆/不拆」兩案的完整步驟與風險各出一份細節。)

C. staging 測試環境

是什麼一份跟正式站一樣的「測試站」,大改前先在那邊演練、確認沒問題再上正式。
現況沒有。今天所有大改都是直接在正式站做(有先備份、逐項驗證、可回滾)。
為什麼像今天這種規模的改動,有 staging 可先試、降低正式站出錯;若之後要拆 Worker 更需要。

👉 要不要建 staging?(建議要,尤其若決定拆 Worker。)

D. 備份自動化升級

現況每天 03:07 自動備份只備了程式碼(git push + R2)。D1 資料、KV、secret 不在每日自動備份裡——今天的「執行前完整備份」是我手動跑的一次。
風險若哪天 D1 資料(預約/未來訂單等)出事,沒有「每日的資料備份」可還原,只有手動那一次的時間點。
升級wrangler d1 export(+KV dump)加進每日自動備份,並每季做一次還原演練。

👉 要不要排這個升級?(建議要。)

E. 小 follow-up(各自小、可獨立做)

項目現況要你決定
工具頁加「操作手冊」按鈕手冊已可從 audit 連到、也能直接開;但發票/勞報工具頁本身沒有手冊入口鈕要不要在工具頁加一顆連過去的按鈕?
總表版 Portal 顯示 audit總表版讀「工具總表」試算表,audit 不會自動出現。要顯示的話,在試算表加一列(或我幫你在總表版特別列出)。要嗎?
發票「系統規格書」發票沒有獨立系統規格書,內容併在開發規格書裡。要不要補寫獨立一份?

六、共同規則 / 踩過的坑