RCF-081:「月底結帳」SKILL 建立
日期:2026-06-11 | 觸發條件:4(新增 SKILL)| 狀態:已決策並執行
背景
財務月報(monthly-report.md)為實收制人類 SOT,每月底需收口。既有自動化只覆蓋部分:
- A-04 monthly-reminder:25 日 LINE 提醒 Tim 準備月報(只提醒,不做事)
- A-06 monthly-summary.py:次月 2 日產 auto-summary.md(只收入彙整呈現,無支出、無淨利、無實收確認)
缺口:把「加支出 + 算淨利/年累計 + 實收確認 + 寫月報 + KPI」這層自動化做不到(實收制需 Tim 在迴路確認)→ 本 SKILL 補此層。
設計過程(全面盤點,非增量)
⚠️ 本 SKILL 查照經 3 輪「足夠嚴謹嗎」+ Tim 明示「全面盤點,不要想到什麼才做什麼」後,才做到真正窮盡。前兩輪(8 維+D1-3 / G1-G6)為增量擠缺口(IMP-156/166 反模式同日第二次復發),第三輪才把財務系統 7 個資料檔 + 3 個自動化全讀後一次盤完。→ 收尾記 IMP-156 升規後復發。
全面盤點成果:16 條資料品質鐵則(G1-G16)
源於實讀財務系統檔案發現的陷阱(檔案誤命名/欄位髒/三視角/多租戶/免費預約),全寫死進 SKILL 步驟:
| # | 鐵則摘要 |
|---|---|
| G1 | income-2026.json 是全史檔(含 2024-25)→ 年累計用歷史月報表非 JSON 加總 |
| G2 | expense recurring 欄位髒 → 用 subscriptions.json 當權威清單 |
| G3 | 年費僅 renewal 月計,月費每月期望 |
| G4 | 未收款 Tim 輸入非自動(實收制 JSON 只有 received) |
| G5 | auto-summary 次月初才產 → 預設結上月,缺則 daily fallback |
| G6 | 重跑保護:更新非追加 |
| G7 | 多租戶只計 tim-self |
| G8 | 免費預約不進 payment_by_date,只認實收 |
| G9 | daily 三視角用 payment_by_date(會計主視角) |
| G10 | CRM 漏記核對(KPI 收入漏記率) |
| G11 | 三財務 KPI 月末報告 |
| G12 | 稅務邊界(記 invoice_method 不算稅) |
| G13 | S-code 定價異常檢查(防 C17) |
| G14 | 跨年年累計只加本年 |
| G15 | 月報狀態進行中→已完成 |
| G16 | push 前 git stash→pull --rebase→pop(A-06 bot commit auto-summary) |
決策(D1-D6,Tim 2026-06-11「執行」採全推薦)
| # | 決策 | 採用 |
|---|---|---|
| D1 | inventory.json 無財務欄位 | 不更新 inventory,改更新歷史月報表(等效) |
| D2 | 收入 SOT | monthly-report.md 實收最終帳,三源並列 Tim 確認 |
| D3 | 固定支出補入 | subscriptions.json 當清單,問 Tim 實際金額(FX 浮動) |
| D4 | 觸發時機 | 預設結上月、次月初跑;缺 auto-summary 則 daily fallback |
| D5 | KPI 範圍 | 納入三 KPI + CRM 漏記核對 |
| D6 | 多租戶 | 僅 tim-self,SaaS 另案 |
影響檔案
- 新建:
.claude/skills/月底結帳.md、本 RCF - 修改:主 CLAUDE.md(⚙️ SKILL 表 + 情境偵測 + 修改記錄)、commands-reference.md、finance/CLAUDE.md(修改記錄)、decisions/README.md、dev/tasks.md(P3 [x])
後續
- 首次實際執行後 ⏳→✅(建議結 2026-05 或 2026-06 驗證 G1-G16)
- expense JSON 改動 → /api/summary 即時反映,無需 Vercel deploy