📚職涯停看聽・知識庫← 總部儀表板
📅最後更新:2026/04/24
📑 目錄

RCF-009 — 財務系統架構:混合模式(方案 γ)

類型:系統架構 日期:2026-04-24 觸發條件:條件 5 — 影響 2+ 個技術系統(預約 SYS-04 + 儀表板 SYS-07 + 財務部) 相關文件

  • finance/CLAUDE.md
  • finance/monthly-report.md
  • finance/daily-revenue.json(新)
  • finance/external-revenue.json(新)
  • C:\Users\USER\Desktop\CLAUDE寫工具\給別人\預約系統\server.js
  • C:\Users\USER\Desktop\CLAUDE寫工具\hq-dashboard\app\page.tsx
  • .github/workflows/daily-revenue-sync.yml(新,Phase 3)
  • .github/workflows/monthly-summary.yml(新,Phase 5)
  • dev/tasks.md(L395 重組、L400 GAS→GitHub Actions)

問題背景

財務資料目前狀態:

  • finance/monthly-report.md 月底手動填入,缺乏日度可追蹤性
  • 儀表板 parseFinanceReport 只 regex parse 三個欄位(月收入/月支出/月淨利),缺乏「未收款」「趨勢圖」呈現
  • 預約系統 /api/stats 僅回傳筆數(total/thisWeek/thisMonth),無金額
  • 系統外收入(企業包案、校園講座、電子書銷售)無統一入口
  • 支出清單未含 Tim 實際使用的 Google One AI Premium、Claude Code 訂閱
  • LINE@ 月費自動填入子目標已失效(Tim 已於 2026-04-22 確認免費方案 NT$0)

2026-04-24 Tim 指示「財務系統架構規劃」後,經四輪 IAUD + 五維度自查,找出並補完 8 項缺陷(含 1 項架構盲點「實際收款制下 Phase 2 是否必要」),最終 Tim 選擇「保留原方案(理由:未來 SaaS 擴張)」。


考慮過的方案

方案 描述 優點 缺點 採用?
α:擴展預約系統 把財務邏輯塞進預約系統(收入/支出/未收款) 單一資料源 ❌ SaaS 多租戶:改代碼影響姐姐-01 等客戶實例;違反單一職責;系統外收入無法納入 ❌ 未採用
β:完全獨立財務系統 新建 finance service + DB + 部署 最乾淨架構;擴展性最好 ❌ 對 Tim 單人規模過度工程;新增平台維護成本 ❌ 未採用
γ:混合架構(tzlth-hq repo 集中) 財務資料集中於 tzlth-hq/finance/,預約系統 API 輕量擴展(新增端點不改既有),GitHub Actions 自動化 ✅ 職責分離 + 不過度工程;對 SaaS 零風險;Claude 主場操作 資料在 GitHub(Tim 單人 OK,大規模 SaaS 客戶不適用) ✅ 採用

最終決策

採方案 γ:混合架構,5 Phase 執行

Tim 於第四輪追問後明確選「保留原方案」,理由為「未來 SaaS 客戶擴張要用 Phase 2 daily-revenue API 作為基礎建設」。

架構圖

系統內收入源                        系統外收入源
│                                    │
▼                                    ▼
預約 MongoDB(booking.price)    Tim 手動填入
│                                    │
│  [GitHub Actions 每日 01:00 cron]  │
│  抓昨日已確認預約 + 金額               │
▼                                    ▼
finance/YYYY-MM-daily.json      finance/external-revenue.json
                    │                │
                    └────┬───────────┘
                         ▼
            finance/monthly-report.md(月底 GitHub Actions 匯總)
                         │
                         ▼
              儀表板 SYS-07 財務區塊
         (月收入/月支出/月淨利/未收款/6個月趨勢圖)

收入認列制:實際收款制

  • 沿用既有諮詢後 SOP:Tim 說「確認存入」→ Claude 寫入
  • GitHub Actions 從預約系統拉「可匹配筆數」,金額由 Tim 確認觸發寫入
  • finance/CLAUDE.md Step 2「Tim 確認才寫 monthly-report.md」完全對齊

對外展示策略:全透明 + 呈現模式開關

  • 儀表板財務區塊對外時 (a) 全透明
  • 內建「呈現模式開關」:原值 / 四捨五入到千元 / 隱藏未收款 / 顯示累計淨利(平滑當月波動)
  • 隱性風險(商業/隱私/公關)由 Tim 承擔並可動態調整

支出範圍擴充(Tim Q4 選 A+B+C + Q6 填 0 占位)

  • Google One AI Premium:NT$0(試用至 2026-10-31)
  • Anthropic Claude Code Max 5x:$100 USD/月 ≈ NT$3,200(2026-04-04 起按月付)
  • 不規則支出:CDA 年費 / 書籍 / 認證更新 / 課程(發生時填入)
  • LINE@ 月費:NT$0(免費方案占位,未來升級自動顯示)

Phase 2 多 tenant 預留設計

  • verifyServiceToken middleware 採白名單 JSON 結構({"tim-self": "xxx", "sister-01": "yyy"}),未來加 token 零改 middleware

影響範圍

影響類型 具體項目
新增文件 finance/daily-revenue.json schema 空殼 / finance/external-revenue.json schema 空殼 / .github/workflows/daily-revenue-sync.yml(Phase 3)/ .github/workflows/monthly-summary.yml(Phase 5)
修改文件 finance/monthly-report.md(2026-04 支出新增 Claude Code NT$3,200 + Google One NT$0 試用 + LINE@ NT$0 占位,合計 NT$345→NT$3,545)/ finance/CLAUDE.md(納入新架構說明)/ dev/tasks.md L395 重組 + L400 改 GitHub Actions + 新增 P1 Google One 2026-10-24 提醒 + Phase 2-5 子任務 / hr/inventory.json(SYS-04/SYS-07 pending_tasks 更新)
修改代碼(Phase 2) 預約系統 server.js 新增 /api/admin/daily-revenue 端點 + verifyServiceToken middleware(獨立於 verifyAdmin,cookie 機制不動,零影響其他客戶)
修改代碼(Phase 4) 儀表板 hq-dashboard/app/page.tsx 新增未收款 parser + 趨勢圖預留 + 對外呈現模式開關
觸發部門同步 finance/CLAUDE.md(新增架構章節)
影響的 SKILL 無(諮詢後 SOP 流程不變,僅底層資料結構擴充)

驗證方式

  1. Phase 1 完成驗證:本 RCF + daily-revenue.json / external-revenue.json 存在;monthly-report.md 2026-04 支出 = NT$3,545;tasks.md P1 有 2026-10-24 Google One 提醒;git commit + push 成功
  2. Phase 2 完成驗證:預約系統 /api/admin/daily-revenue 端點可用,用 Bearer token 可通過 verifyServiceToken/api/stats 原 cookie auth 不變;姐姐-01 等客戶實例功能完全未受影響(外稽)
  3. Phase 3 完成驗證.github/workflows/daily-revenue-sync.yml 首次執行後 finance/2026-04-daily.json 有資料;失敗時 audit-log.md 有記錄
  4. Phase 4 完成驗證:儀表板部署後財務區塊顯示未收款 + 呈現模式可切換;build 通過 + npx vercel --prod 部署
  5. Phase 5 完成驗證:2026-05-01 02:00 GitHub Actions 首次觸發,monthly-report.md 自動補齊 2026-04 收入匯總

歷史脈絡

  • 2026-04-24 Session 21:Tim 指示「財務系統架構規劃」,經四輪 IAUD + 五維度完整自查
  • 7 項缺陷 + 1 項架構盲點全部補完
  • 4 個 Tim 關鍵決策:實際收款制 / Google One 試用到 2026-10-31 / Claude Code 2026-04-04 起 $100/月 / 對外全透明
  • 第三輪揭露「實際收款制下 Phase 2 非必要」,第四輪 Tim 決策「保留原方案(未來 SaaS 擴張基礎)」
  • 對應 IMP-038(收斂判斷)、IMP-040(事實時效)、RCF-004(IAUD)、RCF-006(五維度)

相關 IMP / RCF

  • RCF-004:IAUD 雙層稽核(本次執行完整流程)
  • RCF-006:五維度執行標準(本次 Q7-Q11 全部書面自答)
  • IMP-038:收斂判斷(第二輪後啟動)
  • IMP-040:事實時效(Claude Code 政策 2026-04-21 變動已 WebSearch 驗證)
  • IMP-042:Claude 執行 DEV 工作(Phase 2-5 Claude 主力)
  • IMP-043:Tim 操作手冊用 Word(Phase 3 Tim 若需設 env var,提供 Word 操作手冊)
← 返回 決策記錄