name: report-auto-fill description: > 報表自動化填報技能:通過AI識別報表型別、建立報籤與填寫規則,從原始資料檔案(Excel/CSV/PDF/圖片)自動提取資料並填寫到目標報表模板中。支援規則的自動生成、使用者提供、使用者修正三種來源,並持久化儲存規則供同類報表複用。當用戶上傳原始資料檔案和報表模板、需要自動填寫報表時,使用本技能。關鍵詞:報表填報、自動填表、財務報表、統計報表、規則取數、報表自動化、科目餘額表、報表模板。
7w4.net收錄了海量優質技能外掛。
本技能通過「報籤 + 規則庫」體系,實現各類報表的自動化填寫: 1. 識別報表型別,建立唯一報籤 2. 建立/呼叫填寫規則(AI推斷 + 使用者提供 + 使用者修正) 3. 持久化儲存規則,同類報表直接複用 4. 自動提取資料,輸出填好的報表檔案
所有規則儲存在 ~/.workbuddy/report_rules/rules_db.json,跨會話持久保留。
規則先行、資料後置 — 嚴禁在無規則或規則未確定、未固化的情況下開展任何資料填報工作。
rule_store.py 存入規則庫,不可僅存在於對話上下文中。fill_report.py 執行填報時會強制校驗規則庫狀態,無有效規則或規則不完整將拒絕執行。在開始每次任務前,先讀取以下參考文件:
- references/workflow.md:完整工作流程與指令碼用法
- references/rule_schema.md:規則庫資料結構和欄位說明
- references/report_knowledge.md:常見報表知識和科目程式碼(用於AI自動推斷規則)
使用者需提供: 1. 原始資料檔案:Excel科目餘額表、業務資料表、CSV、PDF等 2. 報表模板檔案:需要填寫的目標報表(Excel格式最佳)
接收檔案後,立即執行欄位提取指令碼:
python scripts/report_identify.py extract-fields <原始資料檔案路徑>
python scripts/report_identify.py extract-fields <報表模板檔案路徑>
向用戶簡要展示提取到的欄位列表,確認資料可識別。
特殊處理: - PDF掃描件/圖片:直接呼叫AI視覺能力識別表格內容,手動整理欄位列表 - 多Sheet Excel:分別列出各Sheet欄位,詢問使用者使用哪個Sheet
步驟1:嘗試匹配已有報籤
python scripts/report_identify.py match-sig <報表模板檔案路徑>
步驟2:建立報籤(若需要)
根據報表模板的欄位特徵,參考 references/report_knowledge.md,判斷報表型別,向用戶確認後建立:
python scripts/rule_store.py add-sig "<報表名稱>" "<型別程式碼>" "<描述>"
記錄返回的 sig_id,在整個任務中持續使用。
向用戶告知:「已為《XXX》建立報籤,ID:xxxxxxxx,後續同類報表將自動複用此規則。」
⛔ 鐵律:此階段必須全部完成後,才能進入階段五執行填報。跳過此階段直接填報屬於嚴重違規。
重要原則:無論規則來源如何,所有規則一旦確認,必須立即呼叫 rule_store.py add-rule 或 import-rules 存入規則庫。
根據:
- 原始資料欄位列表
- 輸出報表欄位列表
- references/report_knowledge.md 中的會計知識
生成初步規則對映表,格式如下(Markdown表格展示給使用者):
| 輸出欄位 | 來源欄位/表示式 | 取數邏輯 | 公式 | 置信度 |
|---|---|---|---|---|
| 貨幣資金 | 1001,1002 | 庫存現金+銀行存款期末餘額 | — | 高 |
| 應收賬款 | 1122 | 應收賬款期末借方餘額 | — | 高 |
| 流動資產合計 | — | 各流動資產專案之和 | 貨幣資金+應收賬款+... | 中 |
向用戶說明:「以上為AI推斷的初步規則,請檢查確認,如有問題請告知修改。」
等待使用者確認或修改後,立即批次存入規則庫:
python scripts/rule_store.py import-rules <sig_id> <rules_json_file>
存庫後向使用者確認:「✅ 已將 N 條規則存入規則庫,報籤ID:
當用戶說明特定欄位的取數規則時,立即轉化為規則條目並存入庫:
echo '{"output_field":"XXX","source_field":"YYY","logic":"ZZZ","source":"user_provided"}' | python scripts/rule_store.py add-rule <sig_id>
向用戶確認:「✅ 已將規則「XXX → YYY」存入規則庫。」
當用戶說「XX欄位不對」或「應該用XXX而不是YYY」時:
1. 先查詢當前規則:python scripts/rule_store.py list-rules <sig_id>
2. 找到對應 rule_id
3. 先更新規則庫(來源自動標記為 user_corrected):
echo '{"source_field":"新欄位","logic":"新邏輯"}' | python scripts/rule_store.py update-rule <rule_id>
在進入階段五之前,必須執行規則覆蓋率校驗:
python scripts/rule_store.py list-rules <sig_id>
對比規則庫中的 output_field 列表與模板中所有需填欄位,生成覆蓋率報告:
📊 規則覆蓋率校驗:
- 模板需填欄位:42 個
- 已有規則覆蓋:38 個
- ⚠️ 未覆蓋欄位(4 個):
1. 收到的稅費返還 — 缺少取數規則
2. 匯率變動影響 — 需確認是否應填寫
3. ...
⛔ 禁止在未完成規則覆蓋率校驗的情況下執行填報。
觸發詞:「檢視規則」、「檢查規則」、「規則對不對」、「當前有哪些規則」等
執行:
python scripts/rule_store.py list-rules <sig_id>
以 Markdown 表格形式向用戶展示所有規則,包含:規則來源、欄位對應、取數邏輯、計算公式、備註。
同時輸出規則覆蓋率報告(同階段三D),讓使用者一目瞭然哪些欄位有規則、哪些沒有。
規則修正流程(當用戶發現問題):
1. 更新規則庫:python scripts/rule_store.py update-rule <rule_id>
2. 確認規則已固化:「✅ 規則已更新到規則庫。」
3. 詢問使用者是否需要重新填報(觸發階段五)
⛔ 前置條件檢查(指令碼內建,不可繞過): - 規則庫中必須存在該報籤的有效規則 - 規則數量必須 ≥ 模板需填欄位的 50%(可由使用者確認放寬) - 不滿足條件時,指令碼將報錯並拒絕執行填報
步驟1:預覽確認(必須執行)
在正式填報前,必須先執行預覽,讓使用者核對取值:
python scripts/fill_report.py preview <sig_id> <原始資料檔案>
將預覽結果以表格形式展示給使用者(欄位名 + 取到的值 + 取值方式),確認資料無誤。
步驟2:生成填報檔案
使用者確認預覽結果後,執行正式填報:
python scripts/fill_report.py fill <sig_id> <原始資料檔案> <報表模板檔案> [輸出檔案路徑]
執行完成後: - 展示填報摘要(成功填寫N個欄位,未找到M個欄位) - 對於未能填寫的欄位,列出原因,並詢問使用者是否需要補充規則後重填 - 輸出完成的報表檔案,提示使用者下載
⚠️ 嚴禁以下行為: - 跳過預覽直接填報 - 不通過規則庫,直接用 Python 指令碼寫數值到 Excel(所有資料必須來自規則驅動) - 在使用者修正規則後,不重填而直接手動修改輸出檔案
| 節點 | 需向用戶確認的內容 | 必須完成 |
|---|---|---|
| 報籤匹配 | 是否使用已有報籤和規則 | ✅ |
| 新建報籤 | 報表名稱和型別是否正確 | ✅ |
| AI推斷規則 | 規則表格是否合理,有無錯誤 | ✅ |
| 規則存庫確認 | 「N條規則已存入規則庫」 | ✅ 強制 |
| 規則覆蓋率校驗 | 是否覆蓋全部需填欄位 | ✅ 強制 |
| 預覽結果 | 取到的數值是否符合預期 | ✅ 強制 |
| 填報完成 | 是否需補充規則並重填 | — 可選 |
| 使用者說 | AI應執行的操作 |
|---|---|
| "幫我填這張報表" | 啟動完整流程(階段一到階段五),必須先完成階段三規則落庫 |
| "上次那張報表的規則還有嗎" | 列出所有報籤,按名稱匹配 |
| "檢視當前規則" | 觸發階段四,輸出規則表格 + 覆蓋率報告 |
| "第X行不對,應該是XXX" | 先更新規則庫(階段三C),再重新填報(階段五) |
| "這個欄位取YYY科目" | 觸發階段三B,新增使用者提供規則 → 立即存庫 |
| "重新生成一下" | 觸發階段五預覽 → 填報(基於規則庫中的最新規則) |
| "直接幫我填上去" | ⚠️ 如規則未建/未存庫,必須拒絕並先引導完成階段三 |
首次執行前需安裝以下 Python 包:
pip install pandas openpyxl pdfminer.six
如執行報錯缺少依賴,指令碼會自動提示安裝命令。
~/.workbuddy/report_rules/rules_db.json以下行為在本技能執行過程中嚴格禁止,違反將導致資料質量不可控:
| # | 禁止行為 | 原因 | 正確做法 |
|---|---|---|---|
| 1 | 無規則直接填報 | 資料來源無法追溯 | 先完成階段三,規則存庫後再填報 |
| 2 | 跳過規則覆蓋率校驗 | 可能遺漏關鍵欄位 | 必須執行3D校驗,覆蓋率達100%(或使用者確認) |
| 3 | 跳過預覽直接填報 | 填報錯誤無法及時攔截 | 必須先preview,使用者確認後再fill |
| 4 | 直接寫Excel數值繞過規則庫 | 規則庫與實際資料不一致 | 所有數值必須通過規則驅動寫入 |
| 5 | 修正規則後不重填 | 規則更新未生效到輸出 | 規則更新後必須重新執行階段五 |
| 6 | 規則僅存在於對話上下文 | 跨會話丟失,無法複用 | 規則必須存入規則庫(呼叫rule_store.py) |
現象:資產類科目取到負值,或權益類科目取值方向相反
原因:未正確判斷餘額所在列(借方 vs 貸方)
處理步驟:
1. 檢查 references/report_knowledge.md 第5.1-5.3節確認借貸方向含義
2. 根據科目型別判斷正常餘額方向
3. 檢視原始資料中餘額在借方還是貸方列
4. 修正規則中的取數邏輯
現象:所有者權益不平衡,差異較大
原因:未正確理解4103本年利潤與4104利潤分配的關係
處理步驟:
1. 參見 references/report_knowledge.md 第6節
2. 虧損時:未分配利潤 = 利潤分配貸方 - 本年利潤借方
3. 盈利時:未分配利潤 = 利潤分配貸方 + 本年利潤貸方
4. 更新規則後重新計算
現象:取到的數值全部為0或明顯錯誤
原因:科目餘額表有合併表頭或多行標題
處理步驟:
1. 使用 header=None 引數讀取原始資料
2. 手動跳過前幾行(通常2-4行)
3. 確認列結構:期初借/貸、本期借/貸、期末借/貸
4. 參見 references/report_knowledge.md 第7節
現象:營業利潤計算結果與淨利潤不一致
原因:缺少收入資料,或計算公式錯誤
處理步驟:
1. 參見 references/report_knowledge.md 第8節利潤表公式
2. 只有費用資料時:營業利潤 = -(管理費用 + 財務費用)
3. 淨利潤 = 利潤總額 = 營業利潤(無營業外收支時)
現象:資產合計 ≠ 負債+所有者權益合計
允許誤差:±0.10元(計算舍入誤差)
處理步驟: 1. 檢查所有資產科目是否正確取值 2. 檢查借貸方向是否正確 3. 檢查本年利潤結轉計算 4. 確認未分配利潤公式(參見第6節) 5. 修正規則後重新填報
這個Skill質量較好,文件非常詳細完善,工作流程清晰,規則管理機制設計合理,能有效避免填報錯誤。核心亮點是「規則先行」的理念——先建立規則再填報資料,確保資料可追溯。不過它目前只支援簡單的加減公式,無法處理乘除等複雜計算,而且缺乏實際使用示例來驗證效果。如果你的報表涉及較多乘除運算或複雜公式,可能需要預先手動計算好結果再匯入。