CASE 2 / 通路費用

將穩定計算做成選項庫,再把結果寫成可行動的報告

從管理問題、分析規格與 Python 測試開始,建立一個能重複使用的單一 Project。

看到漂亮儀表板就直接慶祝的想像,對比 Python 核算、資料驗證與雙版本報告的分析現場
YES, BUT先看見直覺想像,再看見真正要管理的工作。
原始資料經 Python 核算與分析選單後,分別產生業務版與主管版報告
觀念圖先讓程式守住數字,再讓生成式 AI 把同一份結果寫給不同讀者。

通路費用分析不是讓 AI 自由閱讀 Excel

每期都要看的費用、收入、預算、YOY 與費用率,應由固定函式用相同口徑計算;看到異常後,才值得追問活動、跨期入帳、退貨或通路結構。本案採用單一 Project、兩階段工作:Python 負責選項式分析與 Pivot,AI 負責把已驗證的結果寫成不同讀者需要的報告。

同一份 Excel,可以回答很多問題,但不能一次全做

先選擇這次要支持的決策:要找預算落差、觀察 YOY、確認費用集中、追查資料品質,或準備通路溝通。每個分析至少要寫清楚四件事:

欄位要回答的問題
比較對象實際對預算、今年對去年,或通路對整體?
指標與公式金額、差異率、費用率、貢獻度或異常筆數?
觸發門檻什麼條件成立時,才需要進一步追查?
人工補證活動、合約、退貨、跨期入帳或分類原因由誰確認?

先讓 ChatGPT 讀懂範本,再逐層凍結分析規格

這一段不是直接叫 ChatGPT 寫一支分析程式。你會先用範本工作簿建立共同語言,再依序核准資料契約、分析選單、輸出契約、控制文件與程式。每通過一層,才進入下一層。

對話一:上傳範本,只做結構盤點

在新對話同時上傳 channel_fees_training.xlsxCase02_原生PivotTemplate.xlsx。先限制 ChatGPT 不做結論、不寫程式。

我已上傳通路費用練習工作簿與原生 PivotTable 範本。

請先讀取兩個檔案,建立「資料結構盤點」:列出每張工作表的用途、表頭列、必要欄位、日期與金額型態、公式、外部連結、合併儲存格、可作為主鍵的欄位,以及目前看不懂或需要我確認的地方。

請另外說明原生 PivotTable 範本的來源資料欄位、列、欄、值與篩選器。這一輪不要計算分析結果、不要猜管理原因、不要寫 Python。

檢查點:ChatGPT 應辨認彙總表、今年與去年明細、金額、過帳日期、通路與分類欄位;不應把工作表名稱或欄位意義自行改寫成新的事實。

對話二:用盤點結果訪談管理需求

請根據剛才的資料結構訪談我,最多提出六個會改變分析設計的問題。至少涵蓋:報告使用者、分析期間、今年與去年如何對齊、預算口徑、通路選擇、差異門檻,以及哪些原因必須由人工補證。

每題說明不同答案會影響哪個指標、函式或報告。先不要設計檔名或寫程式。

若你不知道某個口徑,可以請 ChatGPT 提出選項;但要選定暫行做法,並把未確認事項留在人工確認清單。

對話三:建立資料契約與證據規則

請把已確認的資料結構與管理口徑整理成資料契約。每個必要欄位要記錄來源工作表、原始欄名、資料型態、單位、期間、空值處理、可否轉換,以及輸出中如何回指證據。

另請定義 COMPLETE、PARTIAL、STOPPED:缺哪些欄位必須停止;哪些缺漏仍可完成部分分析;零分母、重複文件號碼、日期跨期、分類改名與公式錯誤如何處理。

只產生契約提案,不建立程式。最後標示 DATA-CONTRACT-GATE。

檢查完再回覆 DATA-CONTRACT-GATE:通過。沒有這一關,後續 Python 很可能讀錯列或悄悄補值。

對話四:設計並凍結 A00–A11

依核准的資料契約,將管理問題設計成 A00–A11 分析選單。每項都要列出:使用者要回答的問題、固定或探索性質、必要欄位、公式、參數、輸出欄位、證據位置、觸發門檻、停止條件與至少兩個反例。

A00 必須先檢查工作簿健康;A09 要產生可篩選整理表;A10 要產生交叉彙總與原生 PivotTable 所需來源;A11 要產生圖表資料。先不要寫程式。

逐項確認分析名称、公式與範圍後,回覆 ANALYSIS-SPEC-GATE:通過。固定選單不是越多越好,而是每一期都能用相同口徑重跑。

對話五:先設計兩階段輸出,再談檔案內容

請依核准的分析選單,設計兩階段輸出契約。

第一階段是分析結果包,必須涵蓋資料品質、A00–A11 結果、Pivot Source、Pivot Spec、摘要、待確認事項、探索觸發器、假說登錄、執行紀錄、交接與 MANIFEST。

第二階段只能讀取已驗證的分析結果,產生業務版、主管版、證據對照、人工確認清單、版本交接與報告 ZIP。業務版可選單一或多個通路,但多通路必須分段;主管版需涵蓋收入、費用率、預算使用率、差異貢獻、集中度、異常筆數與資料品質。

請先提出檔名、欄位、狀態與打包規則,不寫完整內容。最後標示 OUTPUT-CONTRACT-GATE。

對話六:建立 Instructions、Skill 與 registry

另開新對話,只上傳核准的資料契約、分析規格與輸出契約。

請依核准文件建立單一 ChatGPT Project 的控制層:Project Instructions、固定案件控制表、SKILL.md、管理指標參考資料與 analysis registry。

Instructions 要規定兩階段順序、檔案讀取、狀態、失敗處理、輸出與人工邊界;Skill 要規定何時呼叫分析程式、不得重算報告數字、不得把假說寫成原因;registry 要讓 A00–A11 的函式、參數、必要欄位與輸出可以被查核。

先檢查三者是否一致,再列出 CONTROL-GATE;本輪先不要打包 ZIP。

對話七:建立 Python、Excel 與測試

CONTROL-GATE 通過。請依 registry 建立分析程式與報告程式。

程式必須用固定函式執行 A00–A11,產生 Excel、UTF-8 BOM CSV、Pivot_Source.xlsx、Pivot_Spec.json、圖表資料與兩種結果 ZIP。另建立可在 Windows Excel 產生或重新整理原生 PivotTable 的受控方法;不得把一般彙總表稱為原生 PivotTable。

請用範本工作簿執行正常案例,並建立缺欄位、空資料、零分母、重複資料、分類改名、跨期月份與極端值測試。失敗時先修正,不要封裝 Sources。

對話八:端到端重建與完成判定

建立一個新對話,只上傳剛完成的固定文件與練習工作簿,從 A00 跑到報告包。完成後再下載本頁的兩份範例結果比較檔案種類、欄位與數字口徑;範例結果不要在建置前上傳,避免 ChatGPT 只模仿答案。

請執行端到端檢查:先跑 A00,再跑 A01–A11,建立分析結果包;接著只使用已驗證結果建立業務版與主管版報告包。

請逐項證明:必要檔案存在且非空、CSV 有 UTF-8 BOM、Excel 工作表可開啟、原生 PivotTable 可重新整理、每個報告數字能回到證據、未知原因仍標示待確認、ZIP 有 MANIFEST,而且重新執行可得到相同口徑。全部通過後才建立 Project Sources ZIP。
完成訊號不合格訊號
A00–A11 與 registry、程式、輸出契約一致頁面有十二個選項,但程式或 registry 少一項
分析結果與報告分兩階段AI 在寫報告時重新解讀原始 Excel
範例工作簿、反例與重跑均通過只有「程式可執行」的文字宣告
原生 PivotTable 能在 Excel 重新整理只有 Python 交叉彙總表

把規格寫成一組能解壓、閱讀、執行與驗證的檔案

Project Sources 不是把一段長提示詞壓縮起來,也不是把聊天紀錄全部打包。它是一組分工清楚的固定檔案:README 負責帶路,Instructions 控制整體順序,Skill 記錄專業方法,registry 連接分析選項與程式,契約與範本固定輸出,tests 證明整包真的能運作。

一、先讓 ChatGPT 提出檔案藍圖

上傳練習工作簿、PivotTable 範本,以及前一段核准的資料契約、A00–A11 規格與輸出契約。不要先上傳範例答案。

我要把已核准的 Case 2 規格製作成一個 ChatGPT Project Sources ZIP。請先提出檔案藍圖,不要立即寫檔。

藍圖必須包含 README.md、00_Project_Instructions.md、00_案件控制表.md、SKILL.md、兩份輸出契約、analysis/registry.json、分析與報告程式、references、templates、tests,以及原生 PivotTable 範本。

請用表格說明每個檔案的責任、它讀取哪些檔案、輸出給誰、不得做什麼,以及它和其他檔案如何保持一致。最後列出建立順序與驗收方式。

先檢查:README、Instructions 與 Skill 不得重複扮演同一個角色;A00–A11 必須能從 registry 連到程式與輸出契約。

二、分四批建立實體檔案

批次建立內容這一批通過的條件
控制層README、Instructions、Skill、案件控制表、Sources 建立指南入口、執行順序、停止條件與人工責任一致
介面層兩份輸出契約、registry、管理指標參考A00–A11、欄位、狀態與證據位置沒有漏接
執行層分析程式、報告程式、Pivot 工具、templates程式只依核准介面工作,不自行補值或改口徑
驗證層registry、端到端多通路與 Pivot 結構 tests三項測試都能從新解壓的資料夾重現
請建立第一批「控制層」實體檔案,提供每個檔案的下載連結,不要只把內容貼在聊天視窗。

README 寫給第一次解壓的使用者;Project Instructions 控制整個 Project;SKILL.md 說明通路費用分析方法與邊界;案件控制表固定角色與人工 Gate。建立後請做交叉檢查,列出任何不一致,等我確認後再進下一批。

後三批沿用同一做法:每次只建立一批、提供實體檔案、做交叉檢查,確認後才繼續。若 ChatGPT 只回傳程式碼區塊,請明確要求「寫入檔案並提供下載」,不要自行複製到不同位置後直接打包。

三、確認 Sources ZIP 的結構

case02_channel_fees/
├─ README.md
├─ SOURCES_PACKAGE_BUILD_GUIDE.md
├─ 00_Project_Instructions.md
├─ 00_案件控制表.md
├─ SKILL.md
├─ ANALYSIS_OUTPUT_CONTRACT.md
├─ REPORT_OUTPUT_CONTRACT.md
├─ PIVOT_TEMPLATE_README.md
├─ analysis/        registry、分析程式、報告程式、Pivot 工具
├─ references/      管理指標定義
├─ templates/       Pivot、業務版與主管版範本
├─ examples/        原生 PivotTable 範本
└─ tests/           registry、端到端多通路與 Pivot 結構測試

ZIP 第一層只放一個 case02_channel_fees 資料夾。每期 Excel、分析結果、報告結果、聊天紀錄與課堂解答都不屬於 Sources。

四、請 ChatGPT 執行封裝前驗收

現在不要直接宣告完成。請先在新的暫存資料夾組裝 case02_channel_fees,逐項檢查必要檔案非空、JSON 可解析、A00–A11 在 registry/程式/契約中一一對應、測試可從該資料夾執行、PivotTable 範本可開啟。

再檢查 ZIP 不含巢狀 ZIP、__pycache__、.pyc、~$ 暫存檔、每期資料或執行結果。Markdown、JSON、Python 使用 UTF-8;CSV 若提供給 Excel 使用,必須是 UTF-8 BOM。

只有全部通過,才建立 case02_channel_fees_project_sources.zip,並同時提供:ZIP 下載連結、檔案清單、測試結果、未執行項目與已知限制。

五、用新解壓資料夾做最後一次測試

下載 ZIP,建立下方驗證資料夾。Sources 與每期輸入必須分開;測試會從同一個驗證資料夾找到練習工作簿,但不會把工作簿包進固定 Sources。

case02_validation/
├─ 03_Project_Sources/
│  └─ case02_channel_fees/       ← Sources ZIP 解壓位置
└─ 04_練習輸入/
   └─ channel_fees_training.xlsx

cd 03_Project_Sources/case02_channel_fees
python -X utf8 -m pytest -q tests

先閱讀 README,再執行 A00。能在這個乾淨環境找到 Instructions、Skill、registry、程式、範本與輸入資料,才算真正完成。

從安裝 Sources 到下載結果,只走一條路徑

  1. 1. 建立 Project建立一個 Project-only 的「通路費用分析」Project。
  2. 2. 安裝 Sources解壓執行型 Sources;把 00_Project_Instructions.md 貼入 Project Instructions,其餘固定檔案加入 Sources。
  3. 3. 上傳本期 Excel上傳練習工作簿,先執行 A00。結構或必要欄位不合格時先停止。
  4. 4. 選擇分析範圍指定月份、單一或多個通路與差異門檻,再執行 A01–A11。
  5. 5. 下載結果包核對分析明細、觸發器、Pivot 來源、圖表資料、執行紀錄與 ZIP。
  6. 6. 產生雙版本報告使用已驗證結果產生業務版與主管版,不讓 AI 重新自由解讀原始 Excel。
請先執行 A00–A11。分析期間使用工作簿中的本期;通路選擇全部;差異率門檻使用 10%。完成後列出固定分析結果、被觸發的探索問題、資料缺口,以及可下載的個別檔案與 ZIP。

同一組數字,要依使用者的決策範圍重寫

業務版

單一或多個通路

各通路分開呈現異常、可核對證據、待確認原因與下一步。

主管版

整體管理視角

收入、費用率、預算、YOY、差異貢獻、集中度與資料品質。

共同原則

數字與原因分開

程式結果是觀察;活動或合約造成差異仍需補證。

人工確認

報告不是結帳依據

會計認列、分類與管理行動仍由權責人確認。

先改問題與規格,再改 Python

想新增選項時,先確認現有 A00–A11 是否能透過參數、排序或篩選回答。真的需要新增函式,再依序補上:

  1. 決策問題與使用者。
  2. 輸入欄位、公式、參數與停止條件。
  3. 輸出欄位與證據位置。
  4. 正常、缺漏、零分母與極端值測試。
  5. registry、報告與下載包的對應更新。