1019c93| 套件 | 斷言 | 狀態 | 耗時 | 實跑輸出摘要 |
|---|---|---|---|---|
| 帳本不變量 I1-I5 | 10/10 含負向(跨幣平衡/沖銷原子性/immutable) | 通過 | 0.03s | ✅ 獨立/合併/混合三視角 | ✅ source_ref 防重灌 | ✅ PASS — 10/10 不變量測試(含負向) |
| 分錄教科書案例 | 11/11(賒購/代墊/扣繳/多幣別/§77-1 四邊界) | 通過 | 0.03s | ✅ 案例10 | ✅ 案例11 | ✅ PASS — 11/11 教科書標準案例(分錄逐科目 + 試算平衡) |
| 真憑證全量 1,475 + 試算歸零 | 1,475 筆憑證總表全量過引擎:posted 部分 Σ=0 試算平衡 + 不變量乾淨;未分類/錯誤顯式列出(不塞雜費湊數) | 通過 | 0.61s | === 規則命中 top === | 不變量驗證: ✅ 乾淨 | Σ = 0 ✅(24 科有餘額) |
| 折舊引擎 | 10/10;1432/1422/6125 對藍途 5-6月 | 通過 | 0.04s | ✅ 案9 fail-loud 台帳異常參數 | ✅ 案10 月底書帳日推導 | ✅ PASS — 10/10 折舊/攤銷引擎(對藍途 delta + 直線法 + fail-loud + 不變量) |
| 期末調整 | 9/9(預付/預收/應計四型) | 通過 | 0.05s | ✅ 案例8 | ✅ 案例9 | ✅ PASS — 9/9 期末調整引擎(分攤守恆 + 四類分錄 + fail-loud + 冪等 + 恆平衡) |
| 銷項稅+401 | 9/9;111,777/9,838/101,939 分毫不差 | 通過 | 0.05s | [8] 結清(留抵):1269=4,838、2194=0、試算平衡 ✅ | [9] 結清分錄雙分錄平衡(I2)✅ | ✅ 全過(9/9) |
| 營業稅預估器 | 9/9;31 可抵/9,838/101,939 + 31+13=44 勾稽 | 通過 | 0.16s | [10] 當期 115/07-08 可算:進項 37 筆 / 銷項稅 38,466 / 應繳預估 38,466 ✅ | [11] 快照選擇:05-06 釘死凍結檔 / 當期用 live_sheet_20260724.json;預設期別 = 當期 ✅ | ✅ 全過(11/11) |
| AR/AP 四象限+沖銷 | 16/16(FIFO/部分/多對多/aging buckets) | 通過 | 0.03s | ✅ 負向:非控制科目 register 被拒 | ✅ 負向:同交易同控制科目重複 register 被拒 | ✅ PASS — 16/16 open-item 測試(四象限 + 沖銷生命週期 + 負向) |
| 外幣重評價 | 15/15(12850 排除→D4) | 通過 | 0.03s | ✅ 缺匯率 fail-loud(EUR 無牌告→raise) | ✅ 非穩定幣 12850 預設排除(不誤用 FX 重評) | ✅ 全部通過(乾跑重評、落帳平衡、迴轉、D3 已實現、fail-loud、exclude) |
| 權益變動表 | 13/13;期初+變動=期末勾稽 | 通過 | 0.03s | ✅ 金額 cents(int) 一致 | ✅ 負向:reconcile 抓人為破壞 | ✅ 全部通過 |
| 開帳基線 | 42 科 tie 尚諺 audited BS、Σ=0、殘差 +10,000 已溯源 ※ TESTING.md 寫 --check;實際腳本無參數、直接跑即為驗證模式(讀檔頭確認) | 通過 | 0.03s | [4] 開帳差異數 = 10,000.00 vs 預期 10,000.00(原藍途 697萬幽靈差異已消除) → ✅ | [5] Σ資產 = 20,918,942.00 vs 尚諺 PDF 資產 20,908,942 + 10,000 = 20,918,942 → ✅ | ✅ 全部勾稽通過 |
| 薪酬引擎 golden(多期) | 2026 全 6 期逐人逐項引擎層 100%(04:372/372、03:408/408、05:360/360、01/02/06:197/197×3 = 1,731 cells,01=獎金月口徑反推)+ 全史 65 期/1,226 張 payslip 勾稽 + 尚諺 114 年跨源 3,012/3,012 ※ 內含 golden_test.py(372/372 不退步閘)與 connectors/payroll_parallel.py subprocess | 通過 | 0.52s | 2026-04 全公司:Σ月給付薪資所得(加項總和 proxy)=630,250 − Σ投保金額(hi_level)=588,500 = 差額 41,750 | supp_premium_employer(差額) = 881(手算對照 881 ✅) | ✅ PASS — 多期 golden 全數 tie(引擎 2026×6 期逐人逐項 + 全史 65 期勾稽 + 尚諺跨源 5 期 + 113/114 引擎層 5 期 + 加班費全史真算 tie + 雇主端補充保費 smoke) |
| AD_HOC 單次薪資 run golden(獎金另跑一輪) | 13 期 34 張 522 cells 逐項 tie(引擎層 442+echo 80;history 勾稽 13/13 含 678,300 年終)+門檻外側合成 pin+竄改負向 ※ 2026-07-22 產品級收尾波:near-term 未用≠不建(Joey 令);月薪路徑 SHA byte-zero-change 驗證 | 通過 | 0.03s | ✅ 非居住者 >1.5×基本工資: 50,000 → 18% = 9,000 | ✅ 竄改負向: 帶級距員工保費仍全零、雇主 0 | ✅ PASS — AD_HOC golden 全數 tie(13 期 34 張 522 cells: 引擎層 442 + echo 層 80; history 勾稽 13/13; 不敏感性/界證/外側 pin 全過) |
| 非居住者薪資扣繳(官方稅率代碼化) | 13 項:6%/18% 邊界×3(44,249/250/251)+年度參數(基本工資×1.5)+獎金併全月定率+draft 煙測 ※ 扣繳率標準 §3①二;無公司真實樣本=誠實邊界(檔頭聲明),居住者路徑 byte 不變 | 通過 | 0.03s | ✅ 草稿 → payroll_draft_2026-12.json(DRAFT) | ✅ payroll_draft 煙測: exit 0 + 草稿落地 + 非居住者列扣 6% 2,400 | ✅ PASS — 非居住者扣繳全數通過(官方稅率代碼化; 無真實樣本, 誠實邊界見檔頭):13/13 |
| 到職單一入口精靈(employees config+MEMBER_MAP 單點建檔) | 41 項:級距四表獨立解析 CSV 重算 tie×3 樣本點(跨界/封頂)+鏈式 base append+dry-run 零污染+重複 emp_id exit 2+同期重跑 exit 4 byte 不動 ※ 2026-07-22 產品級收尾波;payroll_draft sandbox 自驗 | 通過 | 0.39s | ✅ 同期重跑 --write → exit 4(got 4) | ✅ 既有 employees_202608.json byte 不動 | ✅ test_onboard: 全數通過 |
| 員工薪資單歷史 API(65 期鏡像查詢) | 21 項:未登入 401×2 → 期數=鏡像 65 → 原值 pin(Rosie 2026-06 實發 64,689)→ 四合計 raw 勾稽→ 期別/月份格式 400 → 不存在 404 → 鏡像不在 503 ※ PII 閘=既有 session 機制(零新增權限模型);金額一律 raw 原值不重算 | 通過 | 0.62s | ✅ 鏡像不在 → 清單 503 帶訊息 | ✅ 鏡像不在 → 單張 503 | ✅ 歷史薪資單 API 全過:22/22 |
| 公司登記 API(實體單一來源+worker 消費端) | 16 項:seed 7 家 → 讀開放/PUT 401 → append-only 版本鏈(歷史留/latest 反映/編輯者記錄)→ 新增/400 → office_ban_map 映射==seed+Rosie 改統編映射即變(不寫死實證) ※ 2026-07-22 Joey 令(實體資料進系統、所有處理改吃、不准寫死);取代 EXPECTED_BUYER_BAN 硬編 | 通過 | 0.49s | ✅ office_ban_map:BT/TX/XX 映射齊(XX=財政部批量→加密實驗) | ✅ Rosie 改統編 → 映射即變(不寫死實證) | ✅ 公司登記 API 全過:16/16 |
| Rosie 對焦頁作答 API(append-only + atlas 通知鏈) | 15 項:未登入 POST 401/讀開放 → roundtrip → append-only(重答=新列、latest=最新、歷史 2 列)→ 驗證 400×2 → 純文字題 ※ 2026-07-22 Joey 令(互動化對焦頁);通知鏈測試關閉(atlas live 實測) | 通過 | 0.49s | ✅ 純文字提交 → 201 | ✅ answered_items = 2 | ✅ Rosie 作答 API 全過:15/15 |
| 預算規劃 API(budgets 表 CRUD+預算 vs 實際同源對比) | 30 項:未登入寫 401 → CRUD 閉環 → compare 實際數==IS 逐月矩陣 44 格全 tie(同源,不另下損益 SQL)→ 年度/科目型別驗證 400 ※ 2026-07-22 批三(藍途 /reports/budgets 對應);ops.sqlite budgets 表冪等 | 通過 | 0.52s | ✅ 重複 DELETE → 404 | ✅ 刪後清單空 | ✅ 預算規劃 API 全過:30/30 |
| 金流預估 API(未來收付 forecast 三層同源) | 33 項:期初現金==BS 1111+1113 分毫+open-item Σ==aging 分毫+RECURRING 來源註解 assert+running_balance cents 自洽+months 參數 400/422 ※ 2026-07-22 批三(藍途 cashflow_analysis/expected_journals 對應);firm/undated/estimate 誠實分級 | 通過 | 0.36s | ✅ 月份連續且自 as_of 當月起 | ✅ notes 非空(估計口徑/undated/去重顯式列管) | ✅ 金流預估 API 全過:33/33 |
| 對象別收支分析 API(排行/趨勢/下鑽) | 32 項:排行合計==同傳票集 postings SQL 合計(收支雙向)+逐對象下鑽 Σ==排行列(38 對象)+registry 別名合併(LALAMOVE=小蜂鳥)+404/參數驗證 ※ 2026-07-22 批三(藍途 tag_contact_analysis 對應);未歸戶(薪資/銀行腿)顯式計數不硬併 | 通過 | 0.60s | ✅ 窗口 payables 合計 ≤ 全帳合計(期間子集性質) | ✅ 裸 registry 關鍵字可解析(優食 → uber eats 組) | 結果:32/32 過 ✅ |
| Swingvy 同格式報表 xlsx(月薪資三分頁+休假 13 欄) | 37 項:月薪資 2026-03/05 逐格 0 diff(值/格式/底色/凍結/欄寬全維度 1,184 格×2)+04 顯示等價+休假報表 13 欄格式 tie+API 401/200/mime/400/404/422 ※ 樣張=規格(handover output 逐格抄錄);抓到工資墊償單位級開單額+工作地點快照兩真差異 | 通過 | 0.95s | ✅ 日期格式錯 → 400 | ✅ 迄日早於起日 → 400 | ✅ 37/37 checks |
| 發薪產出 golden(薪資單/薪轉檔/勞健保異動/扣繳資料層) | 2026-06 薪資單 12 人 255 cells 逐項 tie Swingvy payslip(含負向自檢)+ 薪轉檔 2026-05 對富邦一手樣本 48/48 逐列 + 2026-06 Σ實發勾稽 + 勞健保異動 2026-03 14 筆/在保名冊對健保署官方明細 + 年度扣繳跨源 36/36 ※ 產出層驗證(金額上游=薪酬引擎 golden);外部基準不在本機 exit 3 → skipped | 通過 | 0.19s | 跨源(vs Swingvy payslip 6 期): 12 人 × 3 欄 tie 36/36 ✅ | 一致性層(應稅Σ對引擎重算 + 逐月覆蓋,非獨立基準): 12/12 ✅ | ✅ PASS — payout golden 全數 tie(薪資單/薪轉檔/勞健保異動/扣繳資料層 對一手基準) |
| 薪資單發放(PDF 產出+email 寄送層) | 20 項:dry-run PDF 12 份逐員工(%PDF magic+非空殼+檔名規約)+預覽收件人=員工 config Email 逐人 tie+mock SMTP 真寄(587 STARTTLS/12 封/附件 byte 級==PDF/From=產品側身分)+冪等 send_log(重跑 0 寄)/--resend/--to-override+冒充硬 guard 負向(From=joey@/員工個人信箱 → ValueError)+port 465 紅線+Email 缺 fail-loud+--only 單人 ※ 寄送層 mock 絕不真連 SMTP(真寄=發薪日 runbook,先 --to-override 自驗);數字上游=payslip_gen(payout golden 把關);weasyprint 不在此機 exit 3 → skipped | 通過 | 8.42s | ✅ Email 缺/非法 → ValueError 列名單 | ✅ --only 單人 dry-run 只列 1 行 | ✅ PASS — 薪資單發放(PDF+寄送層)全數 tie:20/20 |
| 申報媒體檔+申報表版面(IMX 32 欄 50+51 / 勞健保三表 / 租賃扣繳) | IMX:欄位索引 tie 官方範例檔(一手,含格式 51 範例列)+ 50×12+51×2 混合檔 Σ給付 4,671,099 = payroll golden 獨立重算+租金月鏈 + 逐列 32 欄檢核/CSV↔U8 一致/byte 可重現/流水號連續 + 竄改與缺地址負向;申報表:2026-03 薪調 4 列逐欄 golden + 眷屬投保 join 官方明細全碼 + 出生日期跨源(健保署 CSV×勞保局 PDF 11/11)+ 2026-06 零異動 + 歸級 roundtrip 負向;租賃(N-1):月鏈 23 個月(2024-09~2026-07)逐月 毛額=淨付+10%+2.11% 恆等式+帳上見證+藍途 6020 全腿盤點 + 年度 Σ pin(540,000/1,680,000/980,000)+ 房東 50/50 拆分(110 憑單正本先例)+ 51 列逐欄 golden(證號/稅籍編號 A03240580071/地址/期間)+ 負向×3 ※ 申報格式層驗證(金額/異動上游=引擎 golden+帳上月鏈);無歷年已申報 IMX 正本可 byte 比對,但格式 51 有 110 年度憑單正本為實務錨(拆分/稅籍編號/證號);官方基準(handover 健保/勞保明細)或 ~/.lantu 重放 DB 缺時 exit 3 → skipped | 通過 | 0.18s | C2 — 年度 Σ pin + 房東 50/50 拆分(110 憑單正本實務先例) | ✅ PASS — 申報媒體檔+申報表版面+租賃扣繳 golden 全數 tie(268 檢核) |
| 特休核給引擎(§38 週年制) | 跑通 + 12 在職員工核給表(exit 0 + 人數斷言) ※ 核給明細另由 leave_golden 對 Swingvy 顯示值把關 | 煙霧級 | 0.02s | Wendy Yu 2025-06-02 1.15 7 | → 已存 annual_leave_calc.json(12 人)· 下一步對 Swingvy 顯示餘額 golden |
| 特休遞延餘額引擎(結轉上限 50 天) | 跑通 + 12 在職員工餘額表(exit 0 + 人數斷言) ※ 遞延演算法 — Leelee -2 修正已內含;golden 見 leave_golden | 煙霧級 | 0.02s | Wendy Yu 2025-06-02 7 0.0 0.0 7.0 | → annual_balance_full.json(含遞延,12 人)· 待 re-auth 取 Swingvy 餘額做 golden |
| 特休 golden(引擎 vs Swingvy 餘額頁) | 12/12 逐人四項全符:§38 核給/已用/週期起日/餘額勾稽(remaining−carried_in==SV remaining) ※ 基準 = ~/.swingvy/raw/annual_leave_balance.json(session 過期前實抓;2026-07-16 缺料禁令落地件) | 通過 | 0.04s | Rosie Wu 15 9.0 50.0 56.0 6.0 ✅ | Wendy Yu 7 0 0.0 7.0 7 ✅ | ✅ 全過:12/12 人四項全符(核給/已用/週期起日/餘額勾稽) |
| 假勤申請流 API(申請/簽核/餘額扣減) | 36 項全流程:登入前置 → 餘額=引擎口徑逐人 tie → 申請 pending 占用 → 超額 400 帶剩餘 → 駁回回補 → 核准扣減 + 參數驗證(temp DB 隔離,不碰 ops.sqlite/golden/.auth_secret) ※ 餘額唯一來源=leave 引擎 subprocess 重跑;外部基準不在本機 exit 3 → skipped | 通過 | 2.73s | ✅ 引擎缺席核准『已駁回』單 → 400 非 503 | ✅ 陳舊預讀(引擎窗內被駁回+引擎缺席)→ 400 非 503 | ✅ 假勤申請流 API 全過:36/36 |
| 特休主帳 golden(G-6:主帳 xlsx 恆等式直對引擎) | 179 項兩部:A 主帳結構(名冊/到職日 11 人 pin+週期窗口算術全列+核給 vs §38 唯一 variance=Alex 半年 2.5+靜態年資表法遵缺陷 10..28年=N+1 pin+逐人彙總)+ B 跨系統恆等式(殘差=0 11/11:棄權+代金−cap50截斷+負值歸零−尾牙−核給差+已用差;Joey 無 sheet/到職日差 {Rosie,Alex}/已用差事件級對稱差逐人 pin/竄改負向) ※ 主帳=Rosie 手工權威檯帳(M5/Y4 儀式);「餘額直對」不成立(過期棄權/代金/尾牙語意)、「恆等式直對」100%;差異列管=盤查矩陣 G-6;~/.swingvy/raw 缺時 Part B exit 3 → skipped | 通過 | 0.16s | ✅ 全過:179 pass / 0 fail(主帳恆等式直對 100%;餘額語意差異列管 G-6) |
| 加班費倍率表 golden(勞基法 §24/§32) | 23 項:倍率表本體 pin(平日 2h×4/3+2h×5/3 上限 4h/休息日 2h×4/3+6h×5/3+4h×8/3 上限 12h/分母 240 同源)+逐級手算 pin(48,000/44,000/60,000 多薪級)+half_up .5 進位釘死+項目名(month_inputs nontax_additions 鍵)+負向×8(超上限/0/負/粒度/日型/月薪非法)+全格點 total==Σ 檔恆等式 ※ 基準=§24 法條倍率×引擎同源分母獨立手算常數(Swingvy 無 OT 時數×金額成對樣本 — 歷史 OT 全零,誠實級別:對法定算式 golden 非對外部系統) | 通過 | 0.03s | ✅ 月薪非整數 → ValueError | ✅ 全格點(5 薪資 × 兩日型 × 0.5h 步進至上限)total == Σ 檔 | ✅ PASS — 加班費倍率表 golden 全數 tie:23/23 |
| 加班申請流 API(申請/簽核/金額=時數×倍率) | 34 項全流程:未登入 401 → context 名冊=生效 config+倍率表同 engine 常數 → 申請 est_amount golden pin(1,033/4,500/489 手算)→ 角色 gate(會計簽核加班 403、HR 核准凍結 amount/breakdown/monthly_fixed)→ 駁回/重複簽核/404 → 參數驗證×7 → month_inputs 片段(核准入列駁回不入)→ 引擎整合 tie(nontax_additions:加項/實發 +1,033、應稅不動=法定加班費免稅口徑)→ 竄改凍結金額片段拒產 fail-loud ※ temp DB 隔離(不碰 ops.sqlite/golden);資料源全在 repo(employees config),無外部依賴 | 通過 | 0.70s | ✅ 計數勾稽(approved 2 / rejected 1 / pending 0) | ✅ status 參數非法 → 400 | ✅ 加班申請流 API 全過:34/34 |
| Claims 報帳流 API(申請/簽核/免稅分流) | 25 項全流程:未登入 401 → context 類別分流表(報銷四類→reimbursements/現金福利金→taxable_additions,65 期 payslip 一手項目名)→ 申請 → 角色 gate(HR 簽核報帳 403、會計核准凍結 bucket/item)→ 駁回/重複簽核/404 → 參數驗證×6(含金額非整數/事由必填)→ month_inputs 片段(核准月歸期)→ 引擎分流 tie(報銷 500 應稅不動/現金福利金 1,000 應稅 +1,000)→ 附件檔名登記留存 ※ temp DB 隔離;分流=既有 payroll 引擎口徑實證(2024-12 JZ0005 現金福利金應稅一手先例) | 通過 | 0.80s | ✅ status 參數非法 → 400 | ✅ 附件檔名登記留存 | ✅ Claims 報帳流 API 全過:25/25 |
| Jibble 出勤管線 golden(D15:timesheet→薪資輸入) | 158 項:格式層 4 個歷史月真檔 pin(列數恆等式/匯出壞列/Raw≠Summary 補登修正/推定假日/OT 全零)+候選層推導(Neo 註記遲到 Σ162 分=Swingvy 495 唯一相容解/李李假模糊進核定/曠職註記)+2026-03/04 核定閉環:管線輸出==month_inputs 逐人逐事件+扣款逐人逐欄逐元 tie Swingvy payslip+負向×4(竄改核定/抽單/缺依據/對象不存在)+leave 系統核准假單對接×5 ※ 基準=Jibble 匯出真檔(handover)+ Swingvy expected/month_inputs;檔缺 exit 3 → skipped | 通過 | 0.99s | 負向 ×4(竄改/抽單/缺依據/對象不存在)✅ | 對接 ×5(載入過濾/特休對上/免打卡生成/閉環/名冊 fail-loud)✅ | ✅ PASS — Jibble 出勤管線 golden 全數 tie(158 項:格式層 4 檔 pin + 候選層推導+ 2026-03/04 核定閉環 12 人事件 tie + 扣款逐人逐欄逐元 tie Swingvy + 負向×4 + leave 對接×5) |
| 勞健保電子繳款單 mail 連接器(G-7:email 訂閱路線收信端) | 18 項全離線 mock:期別推定(民國年月/緊湊/收信月前推/跨年)+SHA-256 冪等落地(同內容異名 skip/同名異內容 hash 尾碼/無 tmp 殘留)+mock 信件端到端(3 附件落期別檔位/重跑冪等)+按鈕清單掛人項完整+單位常數 pin(147364298/15009428S) ※ 實跑證據=2026-07-18 真 inbox(Elsa token gmail.readonly 實測)0 命中 exit 3=訂閱未生效誠實邊界;一次性註冊按鈕在 Rosie — 路線全文 docs/G7_勞健保繳費單自動化路線.md | 通過 | 0.05s | ✅ PASS — 勞健保 mail 連接器測試全過:18 pass / 0 fail(mock;實跑證據=真 inbox 0 命中 exit 3、訂閱按鈕在 Rosie) |
| FO 異常時間 Sheet 第二源 golden(G-5:內部一致+跨鏈互驗) | 49 項:parser 單元(累計表兩版欄序/全形姓名/結果 regex/表頭漂移 fail-loud)+2026-03..06 逐人 累計==Σ事件 內部一致 100%(例外 pin 1)+跨鏈互驗全表 pin(FO 觀察層 vs Meg Jibble 註記鏈 D15 同源推導 — 04 6/7 tie)+差異事件級全 root-cause(特殊情況核准豁免/FO 3月 10:15 基準/5/4 Meg 漏註記×2/5/25↔5/23 記期差/06 註記層全空vs FO 26 事件=第二源必要性實證)+竄改負向 ※ 薪資扣款真值鏈不變(Meg 註記→核定→tie Swingvy);FO=獨立第二源(Elsa token 只讀,快照 ~/.lantu/raw/fo_sheet PII 不入 repo);快照或 Jibble 真檔缺 exit 3 → skipped | 通過 | 0.80s | ✅ PASS — FO 第二源 golden 全數 tie:49 pass / 0 fail(內部一致 100%;跨鏈差異全數 root-caused:核准豁免/基準演變/漏註記/06 註記層空) |
| Final_ 出勤月報產出器 golden(G-4:歸檔版月報重建) | 6 個歷史月(2026-01..06)重建歸檔工作簿 vs 真 Final_ 檔**全 sheet 逐格** diff(~157K 格;Team=raw 層/成員 sheet=核定層兩層語意、週分割/小計/Total/Team 矩陣重新推導、打卡時刻含秒回聲、2026-01 DATE 壞格連續性修復)→ diff 恰等於 50 格 pin(±1m 秒加總 rounding/衝突日人工編輯不一致/壞格修復/單格空格語意 — 多一格少一格都 fail)+竄改 payroll 1 分負向 ※ 歸檔儀式承接件:`final_report_gen.py <期>` 產檔 → 上傳 Drive 出勤報表 Final/(上傳步驟見 docs/D15_jibble管線.md);真檔缺 exit 3 → skipped | 通過 | 3.77s | ✅ PASS — Final_ 月報產出 golden 全數 tie:7 pass / 0 fail(6 個月全 sheet 逐格、合計 ~157211 格;diff 恰等於 50 格 pin = 真檔人工編輯/匯出 artifact 四類) |
| Jibble 匯出取得連接器(G-1:Drive 拉取+API key 邊界+D15 掛鉤) | 44 項三部:Drive 路線(檔位規約 tie D15 同資料夾/期別檔名命中與噪音排除/md5 冪等/drift 保護=本地 golden pin 絕不覆蓋(2026-01/03 Drive 版被再存檔實證)/--refresh 顯式覆蓋/Final_ 優先 raw 後備/下載 md5 不符拒落地/exit 0=Final、1=僅 raw、3=皆無/find_xlsx 續接)+ API key 邊界(探測序 env→檔/壞檔 fail-loud≠缺 key/缺 key exit 3 帶精確掛人項/token 交換 client_credentials+api1/OData 月窗半開含跨年/三 JSON+pull_meta 原子落地/無 value fail-loud)+ D15 掛鉤(缺檔自動拉/拉炸不擋/--xlsx 不觸發) ※ 全離線 mock(連接器實拉不進單測,同 ingest 慣例);實拉證據=2026-05/06 Final_ 由本連接器落地+2026-02/04 Drive↔handover md5 byte-identical | 通過 | 0.06s | ✅ Drive 拉取炸 → 不擋缺料報告(仍 exit 3 不 crash) | ✅ 顯式 --xlsx(不存在)→ 不觸發 Drive 拉取、exit 3 | ✅ PASS — Jibble 匯出取得連接器全數 tie(Drive 拉取/API key 邊界/D15 掛鉤) |
| 沖銷+登入+期間鎖 API(B5 沖銷 / B7 寫操作 gate / A1 期間鎖) | 38 項全流程:未登入寫操作 401(錄入/沖銷/期間鎖/簽核)→ 首啟 per-user 帳號生成(0600)→ 登入 → 錄入(主帳本,統一 id 空間)→ 沖銷 → 逐科目互抵歸零+兩筆都 posted(I3)→ 重複沖 400 → 引擎入帳(source!='manual')403 → 404 → 期間鎖(鎖定月錄入 400/解鎖恢復/沖銷入帳月被鎖 400/重複鎖・解未鎖・格式錯 400)→ 併發 4 沖恰一成功(唯一索引 idx_txn_reverses + BEGIN IMMEDIATE) ※ temp 主帳本/users 隔離,不碰 aco_ledger.sqlite/ops.sqlite/~/.aco-users.json;無外部資料依賴 | 通過 | 1.09s | ✅ 併發 4 沖恰 1 過 3 擋(400,無 500) | ✅ DB 只落一張沖銷單(唯一索引) | ✅ 沖銷+登入 API 全過:38/38 |
| 手工傳票 open-item 登記 API(B4 補口:手工 AR/AP 進 aging) | 21 項:AP/AR 傳票帶 open_item → open_items 落帳(象限自動推導+雙日期照象限落+方向驗證)→ aging 資料源可見 → 錯誤矩陣(無/多控制科目・方向錯・日期格式錯 → 400 且不落帳)→ 不帶 open_item=原行為(零登記、雙日期=txn_date)→ 沖銷連動(未動 open-item 隨沖結清、settlements 連沖銷單留軌跡;已部分沖帳 → 400 拒整筆沖) ※ temp 主帳本/secret 隔離,不碰 aco_ledger.sqlite;無外部資料依賴 | 通過 | 0.51s | ✅ kind=AR 單象限過濾 | ✅ kind 非法 → 400 | ✅ PASS — open-item 登記 API:25/25 |
| 使用者/權限 API(E17:per-user 帳號+角色 gate) | 35 項:首啟名冊帳號生成(joey/rosie/meg/atlas,0600)→ 登入矩陣(joey/rosie/meg×對/錯密碼+未知使用者+空 username 401——舊管理密碼通道 2026-07-23 整塊刪除)→ 角色拒絕矩陣(Meg 錄入/沖銷 403、Rosie 簽核/使用者管理 403、admin 全通)→ decided_by 偽造 400+自動帶入=登入者 → 改密碼即席失效該使用者舊 session(逐使用者非全域)→ token 身分段竄改負向 ※ temp DB/users 隔離,不碰 ~/.aco-users.json、ops.sqlite;無外部資料依賴 | 通過 | 3.26s | ✅ token 身分段竄改(meg 簽章冒 joey)→ 401 | ✅ 舊制兩段式 token(無身分段)→ 401 | ✅ 使用者/權限 API 全過:35/35 |
| K.Bro OIDC 串接(正式登入通道:open-redirect 矩陣+state 簽章) | 8 項:open-redirect 矩陣(// 與 /\ 與 %2F%2F 解碼變體全擋)→ 未接妥 503 人話頁 → 接妥 302 shape(auth.blocktempo.ai authorize+client_id+惡意 next 先淨化+HttpOnly state cookie)→ callback 偽造 state 400 → 名冊只含一手確認 email(不猜) ※ temp users/oidc.json 隔離;不打真 K.Bro(真人 Google/magic-link 首登=live E2E) | 通過 | 0.44s | ✅ callback 偽造 state → 400 | ✅ 名冊只含一手確認 email(joey/rosie/atlas;meg 未確認不猜) | ✅ OIDC 串接測試全過:8/8 |
| 發票檢索/對象主檔/帳簿 CSV/憑證附件 API(藍途矩陣 #7/#11/#18/#2) | 46 項五部:發票檢索(進項=live 登記表 iter_rows 同管線/銷項=simpany 同驗證:計數恆等式+分頁決定性拼回+搜尋/期間子集+傳票下鑽 referential integrity 逐筆回讀+髒值/作廢顯式+400×4)+對象主檔(registry/decisions 計數==CSV 逐列獨立重數+科目名 join)+日記帳 CSV(BOM/Disposition+合計Σ借==Σ貸+明細列數==主帳本 SQL 獨立重數+單傳票逐分錄 tie DB+空期間誠實)+明細帳 CSV(逐科目期初/合計/期末內部恆等+1113 對 ledger JSON 逐值=CSV 只是排版層+404/400)+附件(未歸檔三型顯式原因/404;mock Drive 零真網路:200 inline bytes 原樣→cache hit 零新呼叫→Drive 炸 502 與未歸檔 404 嚴格區分) ※ 全唯讀 GET;主帳本或 live 快照不在本機 exit 3 → skipped | 通過 | 0.45s | ✅ Drive 取檔失敗 → 502 fail-loud(不謊報成未歸檔 404) | ✅ 發票/對象/CSV 匯出/附件 API:46/46 過 | ✅ 發票/對象/匯出/附件 API 全過 |
| CF 下鑽 API(現金流量表分區 → 科目歸屬 → 傳票明細) | 46 項:報表 vs 歸屬層逐分區分毫(5 分區)+Σ組成科目==分區合計+Σ傳票明細==報表數字(含斜線分區「其他/投資」URL-encoded)+rows 科目聚合==accounts 交叉勾稽+下鑽鏈續接(傳票詳情/科目明細帳 200 且對得上)+引擎 our_cf 直算獨立 tie(擴窗 2026-05..07 含手工傳票調整)+空期間/404/400+竄改負向(明細動 1 分恆等式必破) ※ 計算路徑唯一:our_cf 由 our_cf_rows 聚合(報表與下鑽共用同一份 rows,構造上不飄移);全唯讀 GET 不寫 DB;主帳本不在本機 exit 3 → skipped | 通過 | 0.38s | ✅ 明細端日期格式錯 → 400 | ✅ 竄改負向:明細動 1 分 → Σ != 分區合計(恆等式有牙齒) | ✅ CF 下鑽 API 全過:46/46 |
| 走帳段A:逐月快照+錨點(藍途 vs 查核基線) | 23 張月底快照內部自洽 + 2024-08-31 錨點 34 TIE/7 KNOWN/0 UNEXPLAINED ※ 外部快照不在本機時 exit 3 → skipped(pull_walkforward.py 以授權 session 拉) | 通過 | 0.04s | ✅ 2026-06-30 資產總計 59,662,610.48 A=L+E | 藍途 plug 開帳差異數 = 40,525,898.00;覆蓋完整性恆等式(plug = ΣL差 + ΣE差 − ΣA差 − 基線殘差 10,000.00) → ✅ 成立(分解到元) | ✅ 全 TIE / KNOWN |
| 走帳段B:日記帳全量重放閉環 | 557 傳票/13,903 分錄行從開帳傳票重放 → 23 個月底全科目 tie 段A 快照(分毫) ※ 資料源=藍途自身(journal_all PDF 全集);外部資料不在本機時 exit 3 → skipped | 通過 | 11.82s | ✅ 2026-05-31 55/55 tie | ✅ 2026-06-30 55/55 tie | ✅ 走帳閉環:23 個月底全科目 tie(開帳傳票起重放,分毫) |
| 年度結轉 golden(A3:損益結清→3353→3351+月結跨年掛鉤) | 134 項四部:快照年界行 pin(2024/2025 本期損益→次年未結轉損益滾動實錘+累積盈虧跨年不動)+藍途 12-31 傳票=年末調整非結轉(零權益腿+Σ借/6125 傳票級 pin)+結轉引擎逐科目 golden(2024:48 科/2025:44 科 == replay 年桶;淨損益 tie 快照本期損益-3,345,341.13/-1,169,301.17;3351 恆等式==藍途 累積盈虧+未結轉+本期損益;負向×4:跳年/重複結轉/竄改/重複滾動)+月結掛鉤(期初 2025-12-31 seed→滾動後 33531==藍途 2026-01-31 未結轉損益、3351/33532 不動、權益總計不變) ※ 基準=replay_lantu.sqlite+走帳快照(獨立 artifact);~/.lantu 缺 exit 3 → skipped;藍途無年度結轉傳票=誠實邊界(TESTING.md §6) | 通過 | 0.08s | ✅ PASS — 年度結轉 golden 全數 tie(134/134) |
| 銀行對帳單 parser golden(餘額鏈/凍結 pins/同基礎 1113/檔位規約) | 33 項:餘額鏈逐行(4 帳戶×幣別組,期初+Σ流水=期末,期初/期末 pin 死)+解析層凍結 pins(59 筆/分類分布/薪轉 1,190,620/勞健 460,102/租金淨付 246,092/跨行 .985 守衛 9 筆)+同基礎 tie(TWD 期內 Σ支出/Σ存入 == golden DB 1113 Cr/Dr 來源分解,恰入帳一次)+檔位規約(內容 SHA-256 去重×雙月雙目錄/drop-folder 等值/竄改負向) ※ 對帳單含帳號 PII 不入 repo — ~/.lantu 或 month_golden.sqlite 缺 exit 3 → skipped | 通過 | 0.92s | ✅ drop-folder-only 產出與 legacy 等值(逐筆) | ✅ 竄改負向:+1 元必斷鏈或斷期初 | ✅ PASS — 銀行對帳單 parser golden 全數 tie(餘額鏈/凍結 pins/同基礎 1113/檔位規約) |
| 新銀行格式 golden(2026-01 進件:富邦支存/活存全期/CDFV2 變體/外幣) | 餘額鏈逐行 golden ×4 檔(活存全期 58 筆 89,858→159,514/支存 2 筆 30,000→0+支票號00221892 捕捉/CDFV2 活存變體 25 筆=全期檔嚴格前綴+不入 BANK_KEYS 防雙吃/外幣港幣 3 筆86.84→106.84=115/05-06 期初跨期錨點)+雙月切分 pin(01:35/02:23)+檔名路由 pins(富邦活存/支存雙向非 substring)+國泰 0102 顯式缺(Drive 實查無檔 §6 C9;檔案出現=fail-loud 要求補 pins)+Bankee PDF 顯式除外+竄改負向×2 ※ 檔位=~/.lantu/raw/bank_incoming/2026-01/(刻意不入 bank/<期>/ 防污染 05-06 凍結 59 筆pins);PII 不入 repo — 目錄缺 exit 3 → skipped | 通過 | 0.34s | ✅ 竄改 pin:期末 0 → 1.00 必被 pin_problems 抓 | ✅ 竄改流水:支存支出 +1 元必斷鏈或斷 pins | ✅ PASS — 2026-01 新銀行格式 golden 全數 tie |
| Bankee 信用卡三重對帳 golden(#52:帳單 OCR fixture+繳款/消費/餘額恆等式) | 76 項四部:A OCR fixture pins(三張實體帳單 115-01/02/06 vs 人工親讀基準逐值:sha256 綁原 PDF/應繳 181,117・90,295・109,164/費用Σ/各卡小計+筆數/錨點列/年度費用鏈 2,577→5,129/內部恆等式重算)+ B 三重引擎實跑(①繳款 銀行委代扣 85,498@01-14・181,117@02-23 雙向・129,745@06-15 全 TIE+超窗 BOUNDARY ②消費 vs NexTrek 期別 — 115 期斷鏈 KNOWN 差異全額列示 ③帳單內部 TIE×3+NexTrek 結帳日餘額 KNOWN+跨期鏈 181,117 TIE+銀行孤兒扣款 76,091顯式+帳上 21972 開帳==CSV 末筆 −473,184 互證)+ C 歷史 L2 golden(手工對帳記錄一手:繳款 pins×4 全 TIE+114-01 結帳日餘額 −14,937 分毫)+ D 竄改負向×6 ※ OCR=gemini-3.5-flash 實跑 fixture 化(API 呼叫不進單測;--force 重打);帳單/fixture 含卡號人名 PII 不入 repo — ~/.lantu 缺 exit 3 → skipped | 通過 | 0.19s | ✅ D3 必要欄缺 → self_check 顯式列缺 | ✅ D4 fixture sha ≠ 原 PDF → load 必炸 | 76/76 ✅ Bankee 三重對帳 golden 全過(fixture pins + 引擎 TIE/KNOWN/BOUNDARY 口徑 + 歷史 L2 + 竄改負向) |
| 月結進料層(盤點/檔位/指標/分桶邏輯) | 55 項:期別數學/CSV 月欄與 stale 刷新判定/銀行期別檔位規約(bank/<YYYY-MM>/ + legacy)+ Drive 拉取觸發與節流(齊→零網路、缺→拉、拉失敗證據上列)/live sheet 指標原子切換+舊快照保留/窗口進件(作廢剔除+雙路去重留 flag=TRUE)/分類 dry-run 五分桶/報告 exit-code(warn 不擋、缺=1、dry-run 炸不吞) ※ 單測 mock 檔案系統層;connector 實拉不進單測 — 由 ingest 實跑報告(engine/ingest_reports/)+ 下游同基礎對數把關 | 通過 | 0.06s | ✅ json+md 落檔且證據在 md | ✅ 無 .building 殘檔(原子替換) | ✅ ingest 單元測試全過:55/55 |
| 分類封存集(LLM 教材矩陣) | dev/holdout2 100%、翻面 0 ※ 教材改動時才跑(要打 LLM API,貴且慢)— 本輪未跑 | 跳過 | — | 教材改動時才跑(要打 LLM API,貴且慢)— 本輪未跑 |
| 自建 OCR worker golden(取代 Awesome Shiba N8N 兩條 OCR 工作流) | 期別 P1-P6 邊界 pin+出納編號生成**全量重放**(scanner 717 列 100% tie/gov 732 列90.57% 直接 tie+9.43% backfill 重疊執行日全數列管解釋=實質 100%;依「上傳時間」重建真實時序,非目前 sheet 列順序——gov tab 已被人工重排過,逐位元組查證)+重複標籤(掃描機重複/財政部批量重複/同檔案 ID 重複)pin+發票號碼碰撞稽核;Part E(live,選跑--live-n)重下載真實已歸檔 PDF 用 Elsa token+重跑 gemini-3.5-flash OCR vs 登記表既有值逐欄比對,已實測 16/16 tie ※ 取代對象=`research/shiba_n8n_取代方案_20260719.md`+兩條 workflow JSON 逐節點複刻(voucher_id 編號演算法/去重鍵/欄位對映100%對照);worker 本身唯讀 dry-run 可跑,真實 Drive/Sheet 寫入未在單測執行;登記表 live 快照缺 exit 3 → skipped | 通過 | 0.08s | ✅ PASS — scanner_ocr_worker golden 全數 tie:24 pass / 0 fail(Part E=skipped(--live-n <= 0,故意不跑)) |
| 營收銷項入帳 golden(401 重建+IS 歸因+AR 生命週期) | 33/33:401 三數逐元(銷項稅 111,777=電子 7 張逐張重建 98,904+二聯 401 一手 12,873/進項 9,838/應納 101,939;含竄改負向×2)+ IS 營收行逐層歸因(4111 差 6,190=4月租金發票藍途現金基礎、4121 差=+1 傳票拆稅捨入+二聯 257,469 藍途未入、72490 逐元 tie)+ AR 殘留 882=MAX 內扣費、暫收池歸零 ※ 銷項一手=simpany 電子發票明細(repo 內)+401 申報書;~/.lantu 對帳單/IS 缺時 exit 3 | 通過 | 0.38s | [✅] 殘留掛 MAX counterparty(FIFO 配置後單筆 882 於二聯彙總項) — {'REV-2L-1150506': 88200} | [✅] 跨行匯入費 15 元守衛腿 ×9(5 沖銷 + 4 進池…合計) — 9 | ✅ PASS — 營收銷項 golden 全數 tie(33 過 / 0 敗) |
| 多實體 golden(TX+TML/ABS 帳本+合併真對銷+cryptoxlab 迴歸鎖)▸ 展開輸出 | 54 項:TX 憑證 353 筆盤點恆等式(329 入帳=規則 295+拍板 1+LLM 共識 33/21 未分類/2 窗外/1 error,一筆不准靜默丟)+TX 試算 Σ=0+不變量+集團往來 2200 恆等式+藍途傳票級錨點×3(永鈺月租 371,429 ↔ 5002 傳票 1140515101/1140613101、管理費 9,283 ↔ 5003 傳票 1150226101)+TML/ABS 鏡像帳本(藍途 1113×1,324 行/1114×10+2167×1 逐行鏡像;盤點恆等式+Σ=0+跨 DB 真勾稽 12121/12122/22511+鏡像錨點×4)+合併恆等式(consolidated=Σ4 實體−對銷;12121/12122/22511-1212 三對真對銷殘差 0、tempox 2200 matched=0 差異全額列示不硬銷)+cryptoxlab 迴歸鎖(改造前 fixture byte-level×8+shape 凍結+竄改負向) ※ TX/TML/ABS 期內(2026-05/06)0 筆 → golden 期不受新帳本影響;cryptoxlab golden DB 缺且 ~/.lantu 不在本機 exit 3 → skipped;TML/ABS 鏡像輸入=replay_lantu.sqlite | 失敗 | 0.69s | ✅ 竄改負向自檢:fixture 動一元即 fail | 合計:50 ✅ / 4 ❌ | ❌ FAIL — 多實體 golden 有不符 |
| 401 申報底稿+媒體檔 golden(C8) | 63 項三部:A 底稿 vs 115/05-06 申報正本 PDF 逐欄(61 代號欄全比;獨立重建 20 欄/echo 3 欄誠實分計;對 output_vat.BASELINE_401 勾稽+竄改負向×2)+ B 媒體檔官方格式(TXT 81-byte 逐列迴讀 Σ tie+TET_U 112 欄 S9 overpunch round-trip,規格=作業要點附件五/六一手)+ C 歷史同基礎(會計師時代 5 期應實繳傳票級 pin+事件恆等式+分割完備+守恆分毫+115/05-06 銷項差額逐元歸零+未結 6 期列管) ※ 銷項一手=simpany(repo)+進項=vat_deduct 產線;歷史段=replay_lantu.sqlite,~/.lantu 缺時 exit 3 → skipped | 通過 | 0.15s | ✅ 115/03-04 無結清/付款傳票(藍途 0430 後未關稅期 — 列管非 tie) | ✅ 歷史序列 12 期全列(5 事件+6 未結+1 正本) | ✅ PASS — 401 申報底稿 golden 全數 tie |
| 月黃金考(三表) | 跑通 + Σ=0、不變量乾淨、BS 同基礎、401、AP/AR aging(重建 golden DB,故放最後);2026-07-19 P0 修復:三表 diff 對藍途改真 gate(非只print)——逐科目一手源三分類①真錯②口徑差③藍途漏記,①真錯合計 > 容差 ±1元即 raise、非0退出(見reports/根因定位_159萬損益缺口_20260719.md + income_statement.classify_diff);在①未修完前本套件如實 fail,不是bug | 通過 | 1.20s | 本期應納(留抵)稅額 101,939 101,939[92m 0[0m ✅ | 結論:[92m✅ 全數對上 401 基準[0m | ✅ golden 完成(三表對藍途 gate 已 PASS,非假綠),DB → month_golden.sqlite |
| A1 主帳本 identity(SoR 鎖定期 vs 關帳源 rebuild 考卷 + 真實一手源交叉核)▸ 展開輸出 | 鎖定月逐月配對關帳源(seed 範圍→seed 考卷、closed_* 紀錄→該期關帳 rebuild,新鎖的期自動入列)→ 逐科目逐月整數分全等(SoR 非手工層 == rebuild;122 格 0 差)+傳票數 per (月,source) 全等+鎖定期內手工層顯式列示+SoR 不變量/Σ=0+竄改負向自檢+2026-07-19 P0 修復:[6][7] 換掉「SoR vs rebuild echo」——新增直接對真實外部一手源交叉核(1113現金 vs 真實銀行對帳單淨流入、6111薪資 vs 真實Swingvy paysliptotalEarnings,皆非rebuild中介)+[8]對應竄改負向自檢(動SoR本身1分必炸) ※ A1 100% 精準保證:飄移=❌(主帳本被旁路動過 or 重建引擎/輸入變了);手動鎖(無關帳紀錄)月顯式 ⚠️ 不入 identity;主帳本或全部 rebuild 不在本機 exit 3 → skipped;一手源檔案(銀行對帳單/Swingvy payslip)不在本機則該項顯式 ⚠️ 未驗,不假裝驗過 | 失敗 | 0.38s | ✅ [7] SoR 6111(薪資支出,source=payroll_swingvy) vs 真實 Swingvy payslip totalEarnings(2026-05,2026-06,直接對外部一手源) — SoR 127320500 分 vs Swingvy 127320500 分(差 0 分) | ✅ [8] 竄改負向自檢(一手源版):SoR 1113 動 1 分 → 對真實銀行對帳單交叉核必炸 — 竄改後 SoR 13843001 分 vs 對帳單 13843000 分(應不等) | ❌ FAIL — SoR identity 飄移或健康檢查不符(5 ✅ / 2 ❌) |
| 月結銜接流 golden(B6:關帳 append→上鎖→identity 閉環)▸ 展開輸出 | 26 項兩部:A 模擬 DB 層(正向關帳 append/上鎖/marker/identity+open-item 重映射+窗前/窗後跳過顯式列示+冪等 no-op+前置擋×4(gate RED/gate 無紀錄/手動鎖/旁路引擎分錄)+部分關帳窗口拒絕+手工傳票共存+原子性負向(copy 失敗→主帳本 byte 不動)+verify_sor --sor 整合與竄改必炸)+ B 真資料演練(scratch 假裝 2026-05..06 未 seed → close_period CLI 全流程 → identity vs rebuild 與 vs production 主帳本雙向 122 格 0 差 → CLI 重跑冪等;production 只做唯讀 no-op 驗證) ※ Part B 基準=month_golden.sqlite+aco_ledger.sqlite+parallel/ledger.json(GREEN gate),缺時 exit 3 → skipped;production 主帳本全程唯讀 | 失敗 | 0.26s | ❌ B6 scratch 重跑 = 冪等 no-op | ✅ B6 production 主帳本:已 seed 期別重跑 = 明確 no-op、不重複入帳(唯讀,狀態不變) — {"2026-05": "seed", "2026-06": "seed"} | ❌ FAIL — close_period 月結銜接流有紅(21 ✅ / 5 ❌) |
| Live 期中入帳(開放期間 live 層:post/retract/分層 guard 閉環) | 27 項:post(銷項→AR+open-item/進項規則層+AP open-item/財電拆稅/付款路由/unclassified+error 顯式列出不入帳/Σ=0+不變量)+冪等(重跑 0 新增;schema UNIQUE 雙保險)+guard(鎖定月/已關帳月拒入、retract 跨期拒)+分層 integrity(verify_sor _cells 排除 live 層/close_period month_status live 計數/close_into 未撤 live → CloseError 指路 --retract、撤後放行)+retract(全撤淨額逐科目歸零/open-item 以沖銷單結清留軌跡/冪等/更正流重入帶版本尾碼)+live_sheet JSON 進件源 provider(同一套 iter_rows 去重/作廢/合併管線) ※ temp 主帳本隔離,不碰 aco_ledger.sqlite;無外部資料依賴(2026-07 live 開跑件) | 通過 | 0.15s | ✅ 同發票雙路去重(scanner+gov 同號同額 → 1 列)+作廢剔除 — 1 列 | ✅ 合併規則:留 flag=TRUE、敘述以 gov 品名為準 — 運費 | ✅ PASS — live 期中入帳套件全數 tie(29 ✅) |
| 平行跑管線(cutover 驗收閘門)▸ 展開輸出 | 一鍵關帳(month_golden 黑箱)+全 golden 套件+三表同基礎 diff(tie/explained/listed/待查/缺口)+薪資逐月對 Swingvy → verdict GREEN=exit 0 / RED=exit 1;產 parallel/<期別>/report + ledger + 證據頁 ※ gate 如實反映:verdict RED 時本套件=fail(不是 bug,是 cutover 未達綠);資料不全 exit 3 → skipped | 失敗 | 47.57s | 🔴 [套件] multi_entity: 多實體 golden(TX+TML/ABS 帳本+合併真對銷+cryptoxlab 迴歸鎖) exit 1:✅ 竄改負向自檢:fixture 動一元即 fail | 合計:50 ✅ / 4 ❌ | ❌ FAIL — 多實體 golden 有 | 🔴 [套件] verify_sor: A1 主帳本 identity(SoR 鎖定期 vs 關帳源 rebuild 考卷 + 真實一手源交叉核) exit 1:✅ [7] SoR 6111(薪資支出,source=payroll_swingvy) vs 真實 Swingvy p | 🔴 [套件] close_period: 月結銜接流 golden(B6:關帳 append→上鎖→identity 閉環) exit 1:❌ B6 scratch 重跑 = 冪等 no-op | ✅ B6 production |
| 域 | 模組 | 覆蓋方式 | 級別 | 備註(缺什麼料、掛誰) |
|---|---|---|---|---|
| 內帳核心 | ledger/ledger.py(複式帳本+不變量 I1-I5) | test_ledger 10/10(含負向) | 核對通過 | 跨幣平衡/沖銷原子性/immutable/source_ref 防重灌 |
| 內帳核心 | posting/posting_engine.py(規則分錄引擎) | test_textbook 11/11 + run_real_vouchers 全量 1,475 | 核對通過 | 教科書案例逐科目 + 真資料全量 Σ=0;長尾分類另見 LLM 分類域 |
| 內帳核心 | posting/payroll_posting.py(薪資分錄產生器) | month_golden 內驗(薪資 accrual 入帳後三表勾稽) | 間接驗證 | 無獨立單元測試;分錄平衡/科目路由靠月黃金考下游驗 |
| 內帳核心 | adjustments/depreciation.py(折舊引擎) | test_depreciation 10/10 | 核對通過 | 1432/1422/6125 對藍途財產目錄口徑 |
| 內帳核心 | adjustments/accruals.py(期末調整) | test_accruals 9/9 | 核對通過 | 預付/預收/應計四型 + 分攤守恆 + 冪等 |
| 內帳核心 | tax/output_vat.py(銷項稅+401) | test_output_vat 9/9 | 核對通過 | 對 115/05-06 401 實申報分毫不差 |
| 內帳核心 | tax/vat_estimator.py(營業稅預估器) | test_vat_estimator 11/11 | 核對通過 | 31 可抵/9,838/101,939 + 31+13=44 勾稽;當期 115/07-08 滾動預估(快照選擇+未申報銷項) |
| 內帳核心 | tax401/build_401.py(401 申報底稿+媒體申報檔產出) | test_build_401 63 項(底稿 vs 申報正本逐欄+媒體檔官方格式逐位元組+歷史同基礎傳票級) | 核對通過 | TET_U 全欄可產;TXT 38/44 列(缺 6 張二聯存根,§6 列管);媒體檔未經電子申報系統實測匯入(需工商憑證環境);官方規格一手=作業要點附件五/六 |
| 內帳核心 | posting/vat_deduct.py(進項抵扣資格判斷器) | vat_estimator 對數(run1 收斂值為基準) | 間接驗證 | 自身無獨立測試;vat_estimator 11/11 以其 run1 為基準對數、401 校準 |
| 內帳核心 | openitem/(state_machine + settlement) | test_openitem 16/16 | 核對通過 | AR/AP 四象限 + FIFO/部分/多對多沖銷 + aging buckets |
| 內帳核心 | fx/revaluation.py(外幣重評價) | test_revaluation 15/15 | 核對通過 | 乾跑/落帳平衡/迴轉/D3 已實現/12850 排除 |
| 內帳核心 | reports/(BS/IS/CF/權益變動) | test_equity_statement 13/13 + month_golden 三表 + 同基礎段 | 核對通過 | 權益勾稽 golden;BS/IS/CF 經月黃金考 + 同基礎對數段程式化重算 |
| 內帳核心 | opening/seed_baseline.py(開帳基線) | opening 42 科 tie 尚諺 audited BS | 核對通過 | Σ=0、殘差 +10,000 已溯源 |
| 內帳核心 | opening/walkforward_check.py + replay_lantu.py(走帳 2024-08→2026-06) | 段A 錨點 34 TIE/7 KNOWN/0 UNEXPLAINED + 段B 557 傳票重放 23 月底全 tie | 核對通過 | 歷史資料源=藍途自身(§0 落地件);canonical map 缺碼清單在 replay_report.json 列管 |
| 內帳核心 | closing/year_end.py(A3 年度結轉+月結跨年掛鉤) | year_end 134 項(快照年界 pin+12-31 傳票實況+逐科目結轉 golden×92+3351 恆等式+月結滾動 golden+負向×4) | 核對通過 | 藍途無年度結轉傳票(12-31 傳票=年末調整、跨年=報表層滾動)=誠實邊界(§6);canonical 年結→3351、month_golden 跨年窗口 adapter→33531;非跨年窗口零影響(month_golden 2026 stdout SHA 前後一致驗過) |
| 內帳核心 | parallel_run.py(平行跑管線:一鍵關帳+同基礎 gate) | parallel_run suite(gate 自身:GREEN=0/RED=1/缺料=3 exit-code 斷言) | 失敗 | verdict RED 時本行=fail(gate 如實反映 cutover 未達綠,非 bug);產出 engine/parallel/<期別>/report + ledger.json + /parallel/ 證據頁 |
| 內帳核心 | month_golden.py(月黃金考編排) | month_golden 套件(Σ=0/不變量/BS 同基礎/401/AP+AR aging) | 核對通過 | A1 起=驗證 harness(報表資料源=主帳本 aco_ledger.sqlite);開帳=期初暫代(2026-04-30 藍途快照);營收 2026-07-16 起=銷項一手(非循環),見 revenue 套件;薪資 accrual=Swingvy 實抓暫代(引擎 golden 另有 payroll 套件) |
| 內帳核心 | backend/aco_ledger.sqlite(A1 營運主帳本 SoR)+engine/migrate_a1.py(一次性 seed+期間鎖 CLI) | verify_sor(鎖定期×關帳源 逐科目逐月 identity 分毫 0 差+傳票數全等+不變量/Σ=0+竄改負向)+ migrate 就地自驗(seed 完 identity 不符即刪半成品)+ close_period(月結 append 面)+ reverse_flow(寫入面:錄入/沖銷/期間鎖 API) | 失敗 | golden 歷史+ops 手工傳票統一 id 空間(source_ref=OPS-<原id> 可追溯);每筆 seed 走 post_transaction 同一驗證入口;預設鎖 2026-04..06(GREEN 已驗窗口);主帳本尚未入 backup_aco.sh 打包=列管(TESTING.md §6,備份強化不開工) |
| 內帳核心 | engine/close_period.py(B6 月結銜接流:關帳窗口 append→上鎖→identity) | close_period 26 項(模擬層 冪等/前置擋×4/原子性負向/open-item 重映射 + 真資料演練 scratch 走 CLI 全流程 identity 雙向 122 格 0 差)+ verify_sor(關帳後全鎖定期 harness,新鎖的期自動入列) | 失敗 | 前置=窗口各月 parallel gate GREEN+rebuild 重建可跑(缺料 exit 3 帶清單);append 複用 migrate_a1._copy_book(months 過濾)逐筆走 post_transaction;原子性=快照→暫存自驗→併發 guard→os.replace(失敗=主帳本一分不動);窗後跨窗傳票顯式跳過(次期窗口 rebuild 自理,§6 列管) |
| 內帳核心 | posting/revenue_posting.py(營收銷項入帳引擎) | test_revenue_posting 33/33(401 三數逐元+IS 逐層歸因+AR 生命週期+負向×2) | 核對通過 | 電子發票行獨立重建;二聯行=401 一手彙總(echo 誠實標註,逐張存根待 Rosie);AR 殘留 882=MAX 內扣費(§6 列管) |
| 內帳核心 | engine/live_post.py(live 期中入帳層:開放期間有證據交易先入主帳本,關帳日 retract 讓位引擎層) | live_post 27 項(post/冪等/guard/retract 淨額歸零/open-item 結清/close_into 未撤拒關/verify_sor 排除 live 層/JSON 進件源 provider) | 失敗 | live 層 source=live_%(identity 之外,手工層同等地位);銷項一律 Dr 1191 掛 AR(收款事實等關帳對帳單);進項=live_sheet 指標過 iter_rows 同一套管線(與 2026-07 起關帳窗口同源);每期實跑報告 ingest_reports/live_post_<期>.json |
| 多實體 | tx_golden.py(TempoX 實體帳本編排) | multi_entity Part A/B(盤點恆等式+Σ=0+集團往來恆等式+藍途傳票級錨點×3) | 失敗 | TX 353 憑證 → tempox entity(資金腿=2200 集團往來,開帳零基);收入側(藍途 4188)一手源未接入=誠實缺口(§6);未分類 21 筆走長尾佇列 |
| 多實體 | entity_golden.py(TML/ABS 鏡像帳本,F19) | multi_entity Part A2/B2(逐行盤點恆等式+Σ=0+跨 DB 真勾稽 12121/12122/22511+鏡像錨點×4) | 失敗 | 兩實體零自有憑證(憑證總表/統編/辦公室欄四層窮盡)→ 帳本=藍途集團往來科目逐行鏡像(1113→tml、1114+2167→abs,傳票級可追溯);自身營運未接入=誠實邊界(§6);錨點屬鏡像一致性非獨立對數(誠實標註) |
| 多實體 | backend/reports 合併層(_merge_dicts/_apply_eliminations) | multi_entity Part C(consolidated=Σ4−對銷 恆等式+三對真對銷+差異全額列示) | 失敗 | F19 升級:12121/12122/22511-1212 真對銷 matched=42,225,527 殘差 0;tempox 2200 matched=0 殘差 5,133,161 列示(carve-out 拍板項 §6);cryptoxlab 預設 shape 凍結由迴歸鎖 fixture 把關 |
| 薪酬 | payroll_engine.py(薪酬引擎) | golden_test_multi 2026 全 6 期引擎層 1,731/1,731 = 100% | 核對通過 | xlsx 3 期(03/04/05)+ payslip 3 期(01/02/06,01=獎金月)+ 官方帳單交叉驗證;allowlist 僅剩 Wendy 工作地點身分欄歷史值(2026-07-16 出勤 half_up 修正後歸零 ±1) |
| 薪酬 | parse_expected.py(Swingvy 報表解析器) | golden_test 基準的另一邊 | 間接驗證 | 無獨立測試;解析錯 golden 立即炸 — 但解析器 bug 與引擎 bug 無法區分 |
| 薪酬 | connectors/payroll_parallel.py(全史勾稽) | golden_test_multi Part4: 65 期/1,226 張逐張內部一致 + 逐期四模組加總 tie history | 核對通過 | 2021-02~2026-06 全史;AD_HOC 13 期僅 history 總額(session 2026-07-16 實測 token expired,re-auth 後補抓逐人明細);尚諺 114 年跨源 5 期 3,012 cells 全 tie(Part5),Joey/Rosie 2024-12~2025-03 場外發薪列交集外 |
| 薪酬 | payout/(payslip_gen/bank_transfer_gen/insurance_report_gen/withholding_gen 發薪產出器) | test_payout 四部:薪資單 255 cells tie payslip、薪轉檔對富邦一手樣本 48/48+Σ實發、勞健保異動 14 筆+在保名冊對健保署官方、扣繳跨源 36/36 | 核對通過 | 產出層(金額上游=引擎 golden);富邦網銀上傳容錯=標待驗(TESTING.md §6);勞健保申報表版面/IMX 媒體檔 2026-07-17 升申報格式層(見 filing_media 行);樣本羅介良 ID 檢核碼筆誤入 allowlist |
| 薪酬 | payout/payslip_send.py(薪資單發放:HTML→PDF→email,取代 Swingvy SENT 流) | payslip_send 20 項:PDF 12 份逐員工斷言+收件人=config Email 逐人 tie+mock SMTP(587 STARTTLS/附件 byte 級==PDF/From=產品側身分)+冪等 send_log+冒充硬 guard 負向(joey@/員工個人信箱拒寄) | 核對通過 | 數字唯一來源=payslip_gen(payout golden 把關);寄件身分=payroll@blocktempo.ai(agent-identity 鐵則,From 個人信箱=ValueError);真 SMTP 送達不在單測(真寄=發薪日 runbook:dry-run→--to-override 自驗一封→--send;SES 東京 relay 憑證在 infra email .env) |
| 薪酬 | withholding/build_imx.py + payout/insurance_form_gen.py(IMX 32 欄媒體檔 / 勞健保申報表版面) | filing_media:IMX 欄位索引 tie 官方範例檔+Σ=payroll golden 獨立重算+逐列 32 欄檢核/CSV↔U8/byte 可重現+負向;申報表 2026-03 薪調 4 列 golden+眷屬 join 官方明細+出生日期跨源 11/11(健保署 CSV×勞保局 PDF)+歸級 roundtrip | 核對通過 | 規格=作業要點公報+財資中心範例檔+官方表格 PDF(一手,withholding/SPEC_imx.md、payout/SPEC_insurance_forms.md);戶籍地址無本機源→address book 外部輸入 fail-loud;無歷年已申報 IMX 正本可 byte 比對(誠實邊界) |
| 休假 | leave/annual_leave.py(§38 特休核給) | leave_golden 12/12(vs Swingvy 餘額頁)+ runner 煙霧 | 核對通過 | 2026-07-16 升 golden:基準原在本機(session 過期前實抓),缺料禁令 §0 落地件 |
| 休假 | leave/annual_carryover.py(遞延餘額,結轉上限 50) | leave_golden 12/12(餘額勾稽 remaining−carried_in==SV) | 核對通過 | 含 Leelee -2 負餘額 edge case;遞延語意雙邊對齊驗過 |
| 休假 | leave/master_ledger.py(G-6 特休主帳 xlsx 解析+恆等式 reconciliation) | leave_master 179 項(A 主帳結構 golden:名冊/到職日/週期窗口算術/§38 核給variance/靜態表法遵缺陷 pin+B 跨系統恆等式殘差=0 11/11+事件級對稱差 pin+竄改負向) | 核對通過 | 主帳(Rosie 手工檯帳)「餘額直對」不成立(過期棄權/代金核銷/尾牙獎品語意引擎無)、「恆等式直對」100%;權威語意拍板+差異列管=盤查矩陣 G-6;產出 data/leave_master_reconciliation.json |
| 休假 | backend/leave.py(假勤申請流:申請/簽核/餘額扣減) | leave_flow 36 項(TestClient 全流程 + 參數驗證,temp DB)+ users_api(簽核角色 gate/decided_by 偽造 400) | 核對通過 | 餘額唯一來源=引擎 subprocess;本表只疊新申請占用/核准扣減;簽核=HR/admin 角色 gate、decided_by=登入身分自動帶入(E17 2026-07-17) |
| 休假 | overtime_pay.py(勞基法 §24 加班費倍率引擎)+backend/flows.py 加班申請流 | overtime_pay 23 項(倍率表 pin/逐級手算/half_up .5 釘死/負向×8/全格點恆等式)+overtime_flow 34 項(TestClient 全流程/角色 gate/核准凍結/month_inputs 片段/引擎免稅口徑 tie/竄改拒產) | 核對通過 | 基準=§24 法條算式手算常數(Swingvy 歷史 OT 全零,無外部成對樣本 — 誠實級別);金額核准當下按生效 config 重算凍結;關帳 flows export → month_inputs nontax_additions(免稅);國定假日/例假出勤不在表(低頻人工帶入,誠實邊界) |
| 休假 | backend/flows.py Claims 報帳流(類別→免稅分流) | claims_flow 25 項(TestClient 全流程/角色 gate=會計/核准凍結 bucket・item/month_inputs 片段核准月歸期/引擎分流 tie:報銷應稅不動・現金福利金應稅+額) | 核對通過 | 分流=65 期 payslip 一手項目名逐字沿用(報銷四類→reimbursements/現金福利金→taxable_additions,2024-12 JZ0005 一手先例);附件=檔名登記(MVP 無上傳,誠實邊界);關帳併 month_inputs 同 attendance_inputs 慣例 |
| 休假 | attendance/jibble_to_payroll.py(D15:Jibble timesheet→薪資輸入) | jibble_attendance 158 項:格式層 4 個歷史月真檔 pin+候選層推導+2026-03/04 核定閉環(==month_inputs 逐人逐事件、扣款逐元 tie Swingvy payslip)+負向×4+leave 系統核准假單對接×5 | 核對通過 | 核定層(attendance_decisions_<期>.json)為設計必要而非缺陷:歷史實證 Jibble 原始紀錄與薪資扣款必然隔一層人工核定(Kessy 10 天 vs 5 天/遲到註記多數不扣);目標流程假單走 leave 系統核准=自動確認;Jibble API/匯出路線見 docs/D15_jibble管線.md |
| 休假 | attendance/final_report_gen.py(G-4:Final_ 歸檔月報產出器) | final_report:6 個月 vs 真 Final_ 檔全 sheet 逐格(~157K 格)diff 恰等於 50 格 pin(rounding/人工編輯不一致/壞格修復四類)+竄改負向 | 核對通過 | 兩層語意=真檔設計:Team Summary=raw 匯出層、成員 sheet=Meg 核定層;產出器自洽(真檔的 Total 未重算/REG 未跟改 = 手工儀式該被取代的實證);歸檔落點=Drive 出勤報表 Final/(上傳=儀式殘步,G-4 矩陣行) |
| connectors | connectors/fo_sheet.py(G-5:FO 異常時間 Sheet 第二源) | fo_sheet 49 項(parser 單元+2026-03..06 內部一致 100%+跨鏈互驗全表 pin+差異事件級 root-cause+竄改負向) | 核對通過 | Sheet 活著(ywxup@ 維護、07-17 仍更新)、Elsa token 可讀實證;扣款真值鏈不變,FO=第二源(抓漏實證:5/4 兩筆 Meg 漏註記、06 註記層全空只有 FO 有料);快照 fo_sheet.py --pull(當日快取) |
| connectors | connectors/insurance_mail_pull.py(G-7:勞健保電子繳款單收信端) | insurance_mail 18 項(mock:期別推定/冪等落地/端到端/按鈕清單)+真 inbox 實跑(0 命中 exit 3=訂閱未生效誠實邊界) | 核對通過 | 官方 email 訂閱路線(健保 u29web ~20日、勞保 e化電子帳單 ~21日;NHI 附件密碼=投保單位代號)=一次性註冊後月度零憑證;按鈕在 Rosie(G7 路線文件 §4);金額對數=既有 payout/filing_media golden(同一批官方文件的電子版) |
| connectors | ingest.py(月結進料層:一鍵盤點/拉取 + 缺料證據) | test_ingest 55 項(盤點/檔位/指標/分桶邏輯 + 銀行 Drive 拉取觸發/節流,mock 檔案系統層) | 核對通過 | connector 實拉面不進單測 — 每期 ingest 實跑報告(engine/ingest_reports/)+ 下游同基礎對數把關;launchd 排程 ops/com.btai.aco-ingest.plist(預設 disabled) |
| connectors | connectors/live_sheet.py(憑證登記表 live 快照 + 指標檔) | test_ingest(指標原子切換/舊快照保留);拉取面 fail-loud(分頁缺/列數異常拒落檔) | 核對通過 | Elsa GWS token(spreadsheets scope);當日快照快取節流;只讀 GET |
| connectors | connectors/bank_statement.py(三家對帳單解析) | test_bank_statement 33 項(餘額鏈逐行+凍結 pins+同基礎 1113+檔位規約/去重)+ month_golden 內驗(期內流水全額對帳強制歸零) | 核對通過 | D13 2026-07-17 升 golden:期初+Σ流水=期末 逐行、外幣含即時餘額;內容 SHA-256 去重(legacy×bank/<期>/ 共存不雙計) |
| connectors | connectors/bank_statement.py 新格式擴充(2026-01 進件:富邦支存 parser + CDFV2 活存變體) | bank_formats_2026(餘額鏈逐行 golden ×4 檔+前綴一致性+支票號捕捉+路由 pins+國泰顯式缺 fail-loud 陷阱+竄改負向×2) | 核對通過 | 檔位=bank_incoming/2026-01(刻意不入 bank/<期>/ 防污染 05-06 凍結 pins);國泰 0102=外部 C9(Drive 實查無檔,Rosie 補上傳後擴 pins);Bankee PDF=三重對帳模組範圍(#52 另建) |
| connectors | connectors/bankee_ocr.py(Bankee 帳單視覺 OCR,#52 L1 層) | bankee Part A(三張實體帳單 fixture vs 人工親讀基準逐值 pins+sha256 綁定+內部恆等式重算+missing_fields 空)+落地前自驗(餘額恆等式/Σ明細==小計破=不落檔 exit 2)+ Part D 竄改負向 | 核對通過 | 帳單=iPhone 掃描無文字層(F6 §6.3)→ pymupdf 轉圖 + gemini-3.5-flash 視覺(OpenRouter 402 → Gemini 直連 fallback;不設 max_tokens;temperature=0);讀不出的欄 null+missing_fields 顯式列缺不猜;fixture=~/.lantu/raw/bankee/ocr/(PII 不入 repo) |
| connectors | connectors/bankee_reconcile.py(三重對帳引擎,#52 本體) | bankee Part B/C(繳款/消費/餘額三恆等式對真資料實跑:TIE=20/BOUNDARY=4/KNOWN=6/BREAK=0 分布 pin+銀行委代扣線全集 pin+孤兒扣款顯式+歷史 L2 golden 一手對帳記錄 4 繳款+餘額 pins)+ Part D 竄改負向(明細/應繳動 1 元三處必破) | 核對通過 | KNOWN=會計師斷鏈段(SOP 一手:扣款移轉記到 2025-08-14 止、115 期別 0 筆)差異全額列示不吞,補登後轉 TIE;報告=~/.lantu/raw/bankee/reconcile_report.json;TESTING.md §6 C13 掛 115 期補登 |
| connectors | connectors/bank_drive_pull.py(對帳單 Drive 進料,D13 路線一) | 實跑驗證(2026-05/06 拉下 md5 == legacy 原檔)+ ingest 單測(缺→觸發拉/齊→零網路 stub 斷言);下游 bank_parser golden 把關內容 | 間接驗證 | Elsa GWS token(drive.readonly);只讀 Drive;md5 冪等;fail-loud 帶「該層實際有什麼」;銀行側自動化(企網直抓/電子對帳單)見 docs/D13_對帳單自動化路線.md 路線二/三 |
| connectors | connectors/jibble_drive_pull.py(G-1:Jibble 月報 Drive 進料) | jibble_pull Part A(檔位規約 tie D15/期別命中/md5 冪等/drift 保護=本地 golden pin 絕不覆蓋/--refresh/Final_ 優先 raw 後備/exit 語義/find_xlsx 續接)+實跑(2026-05/06 Final_ 由本連接器落地;2026-02/04 Drive↔handover md5 byte-identical);內容由下游 jibble_attendance golden 把關 | 核對通過 | 同一顆 Elsa token(drive.readonly)只讀;落點=D15 唯一 input 檔位;2026-01/03 Drive 版被人再存檔(≠ Jibble 原生匯出)→ drift 保護實證必要;宿主/落點證據見檔頭 |
| connectors | connectors/jibble_pull.py(Jibble 官方 API 直拉,key 邊界) | jibble_pull Part B(key 探測序/壞檔 fail-loud≠缺 key/缺 key exit 3 帶掛人項/token client_credentials+api1/OData 月窗半開含跨年/三 JSON+pull_meta 原子落地/無 value fail-loud) | 核對通過 | 真 request 未驗(key 缺=TESTING §6 C12 掛人;升級路非 8/1 阻塞);API 結構上不可替代 Final_(Meg 加註在 xlsx 不在 Jibble);key 到位第一件事=對 raw 月報對數 |
| connectors | connectors/nextrek.py(藍途 CSV 抓取器) | 無獨立測試 | 無測試 | 抓取器:靠下游同基礎對數把關(抓錯數字會在對數段現形);session 過期 fail-loud |
| connectors | connectors/swingvy.py(Swingvy API 抓取器) | 無獨立測試 | 無測試 | 抓取器:靠下游 golden_test/薪資對數把關;session 過期 fail-loud |
| connectors | connectors/pull_recent.py(臨時抓取腳本) | 無獨立測試 | 無測試 | 一次性抓取腳本,無斷言、無測試 |
| LLM 分類 | posting/llm_classifier.py + check_gate.py(長尾分類) | check_gate 三互斥封存集(2026-07-17 re-baseline 全矩陣補跑:產線對 dev 198/200・holdout 156/156・holdout2 26/28、翻面 0;miss 全屬灰色/拍板題) | 有測試·本輪跳過 | 教材/規則/registry 改動時必跑;runner 例行 skipped(打 LLM API 貴且慢)— 最近全跑紀錄 posting/gate_full_run_20260717.log;haiku 參考 2 格待 OpenRouter 儲值(§6 C10) |
| 後端 API | backend/reports.py(主帳本報表 → JSON adapter) | 引擎層 golden + verify_sor(主帳本鎖定期==rebuild)+ 全 API 200 迴歸 + multi_entity Part D(cryptoxlab shape/數值 byte-level 凍結) | 失敗 | A1 換源實測:換源前後全報表 endpoint byte-identical(journals 僅 ops 兩列 id 統一空間);薄 adapter 分組/兩欄/% 搬運邏輯仍無獨立單元測試 |
| 後端 API | backend/ops.py(手工傳票寫入+沖銷+期間鎖 → 主帳本) | reverse_flow 38 項(錄入→沖銷→互抵歸零→400/403/404→期間鎖矩陣→併發雙沖恰一)+openitem_api 21 項(手工 AR/AP/暫收付 open-item 登記→aging+沖銷連動) | 核對通過 | A1:寫 backend/aco_ledger.sqlite(走 post_transaction 同一入口);沖銷=引擎 ledger.reverse;source!='manual'(引擎入帳)403 不可沖;鎖定期寫入 400;open_item 參數(B4 補口 2026-07-17)=控制科目自動推導象限+雙日期照象限落 |
| 後端 API | backend/detail.py(B4 唯讀查詢層+CF 下鑽歸屬) | cashflow_api 46 項(分區==Σ科目==Σ傳票分毫恆等+引擎 our_cf 直算獨立 tie+含手工傳票擴窗+竄改負向)+下鑽鏈續接檢(傳票詳情/科目明細帳) | 核對通過 | CF 下鑽=our_cf_rows 同一計算路徑(禁止另起爐灶重算)+最大餘數法整分派位;非 CF 端點(科目明細帳/期間日記帳/entry-stats)僅下鑽鏈續接檢+前端頁把關(誠實標註:無獨立逐欄 golden) |
| 後端 API | backend/detail.py 藍途矩陣周邊(發票檢索/對象主檔/帳簿 CSV 匯出/憑證附件) | invoices_export_api 46 項(計數恆等式+下鑽 referential integrity 逐筆回讀+CSV 合計/列數/單傳票 tie 主帳本 SQL 獨立重數+明細帳 CSV 對 ledger JSON 逐值=排版層驗證+附件 mock Drive 全生命週期含 502/404 嚴格區分) | 核對通過 | 計算路徑唯一:進項=run_real_vouchers.iter_rows(與入帳同一套去重/作廢/合併)、銷項=revenue_posting.load_e_invoices、明細帳 CSV=account_ledger 同一函式;附件=source_ref→登記表歸檔連結→Drive 只讀取回+本地快取,未歸檔=顯式原因 |
| 後端 API | backend/auth.py + 寫操作 401/403 middleware(B7/E17 登入+角色) | users_api 35 項(登入矩陣/角色拒絕矩陣/decided_by 偽造 400/改密碼逐使用者失效 session/token 竄改負向)+ reverse_flow(401 gate/密碼生成 0600/偽造 cookie 拒絕)+ leave_flow 登入前置 | 核對通過 | per-user scrypt 帳號(joey=admin/rosie=會計/meg=HR,~/.aco-users.json 0600)+角色 gate(錄入/沖銷=會計+admin、簽核=HR+admin、使用者管理=admin);舊管理密碼保留為 joey/admin 相容通道;讀操作不擋(誠實缺口,TESTING.md §6 列管) |
| 法規參數 | prototype/site/reg* 9 頁(brackets/tax/leave/acct/einv/gov/ov/path/bvi 靜態資料) | 無測試 | 無測試 | 來源+生效日標註頁,無計算邏輯;數字對官方源人工核 — 換版(如 116 年級距)無自動 diff 警報 |
| 工具/評測 | posting/bench_*、build_coa_v3、extract_lantu_accounts、flip_detect、run_llm_tail、run_v12_all、ask_why | 無測試 | 無測試 | 一次性評測/建置工具(模型選型、COA 建置),非產線資料路徑 — 誠實列出但不設測試 |
| 科目 | 我方 | 藍途 | 差 | 憑證交集 | 交集殘差 | 判定 | 歸因 |
|---|---|---|---|---|---|---|---|
| 4111 銷貨收入 | 12,380.00 | 18,570.00 | (6,190.00) | — | — | 全解釋 | 歸因:藍途 18,570 = 我方銷項層 12,380 + 4月租金發票 6,190(ZK64830905,藍途 06-09 收款日才認列=現金基礎 vs 我方開立日權責) |
| 4121 勞務收入 | 2,208,189.00 | 1,950,719.00 | 257,470.00 | — | — | 全解釋 | 歸因:電子發票層 1,950,720 − 藍途 1,950,719 = +1(藍途傳票 1150511101 把 810,000 發票按 6 筆入金分行拆稅、逐行捨入 771,428/38,572 vs 發票實開 771,429/38,571);二聯彙總 +257,469 = 藍途未入(401 申報書一手,傳票級驗證藍途日記帳無此列) |
| 59114 5004 其他營業成本-ABS | 未入帳 | (1,000.00) | 1,000.00 | — | — | 待查 | 已定案(B1⑤ 2026-07-17):canonical=6123 稅捐+cryptoxlab 實體(憑證 B-BT26P3016 一手:買方=加密實驗、服務描述=公司登記收納款項收據,無 ABS 歸屬證據;規費列稅捐科=帳務慣例);藍途 5004 其他營業成本-ABS = 實體歸屬 mapping 差異(藍途側)— Joey 若認定該登記係為 ABS 專案,一句話改 map |
| 6112 租金支出 | (280,000.00) | (33,908.00) | (246,092.00) | — | — | 全解釋 | 藍途入帳 = 我方「租金代扣還原(銀行淨付×法定費率推導)」層逐元 tie;差額=我方多的層(藍途未入):銀行對帳單餵入 -246,092 |
| 61141 交通費 | (480.00) | (480.00) | 0.00 | — | — | 全解釋 | 命中 |
| 6116 郵電費 | (9,810.00) | (697.00) | (9,113.00) | (67.00) | (630.00) | 待查 | 憑證級交集後殘差 -630 未解釋。已定案(B1③④ 2026-07-17):③LALAMOVE 三筆(發票 BR05055575/BR05093085/BR05324787=170/311/149、flag=TRUE)canonical=6115 運費 — 發票一手服務描述即「運費」、賣方=小蜂鳥國際**物流**;藍途 6060 郵電=mapping 差異。④中華電信 11 元(A-XX26P3018,服務描述=市話/寬頻業務)canonical=6116 郵電費(電信服務費);藍途 6270 手續費=mapping 差異 |
| 6118 廣告費 | (90,484.00) | (2,690.00) | (87,794.00) | (762.00) | (1,928.00) | 待查 | 憑證級交集後殘差 -1,928 未解釋。殘差 1,928 = Zorro 招待餐費(漢堡偷啃 A-BT26P3021、flag=TRUE)已定案(B1② 2026-07-17):canonical=6121 交際費 — 藍途傳票 1150519101 摘要一手「招待新聞相關人士 Zorro 用餐費」=業務交際應酬(查核準則 §80),非員工伙食(6128)非廣告(6118);應用=開放期一筆 manual 重分類傳票(6128→6121,鎖定期不動帳;review_decisions.csv 已錄);另 gov×scanner 雙計 762 已由憑證去重修掉(2026-07-16) |
| 6125 折舊 | (21,373.98) | (21,373.98) | 0.00 | — | — | 全解釋 | 命中(真獨立對上:我方引擎 vs 藍途財產目錄) |
| 6129 職工福利 | (9,587.00) | (13,832.00) | 4,245.00 | 0.00 | (13,832.00) | 待查 | 憑證級交集後殘差 -13,832 未解釋。 |
| 6134 其他營業費用 | (2.00) | (2.00) | 0.00 | — | — | 全解釋 | 命中 |
| 61341 環境清潔費 | (1,047.00) | (286.00) | (761.00) | (286.00) | 0 | 全解釋 | 憑證交集 = 藍途 逐元 tie;差額全額=藍途未入的憑證(我方較完整),非 bug |
| 61345 手續費 | (155.00) | (828.00) | 673.00 | — | — | 待查 | 多來源混合、尚無單層 tie — 待查。殘差 = MAX 交易/提領手續費 577+95(藍途 06-04 傳票;我方無 MAX 對帳單 feed,列管 §6,我方以 AR 殘留 882 誠實掛帳)+11 歸屬差異(我方 6116 憑證 A-XX26P3018)−10 我方多入 05-04 內轉費(藍途未入);已修:跨行匯入費 9×15(2026-07-16 起由銷項收款引擎路由)+內轉費 2×10(銀行流水)→ 61345 |
| 72490 其他收入 | 15,867.00 | 14,952.00 | 915.00 | — | — | 全解釋 | 藍途入帳 = 我方銷項層逐元 tie(真獨立對上);差額=我方加值層:銀行對帳單餵入 +915 |
另有我方獨有(藍途未入)10 條 — 同基礎下剔除, 是我方較完整的部分,非可忽略項:6111 薪資支出 (1,273,205.00)、6115 運費 (870.00)、6117 修繕費 (825.00)、6120 保險費 (210,470.00)、6123 稅捐 (1,000.00)、6128 伙食費 (30,264.00)、6133 勞務費 (87,770.00)、61342 雜項購置 (1,376.00)、61343 資訊服務費 (4,268.00)、61344 軟體使用費 (112.00)
| 不符科目 | 我方 | 藍途 | 差 |
|---|---|---|---|
| 1111 庫存現金 | 137,284.00 | 150,043.00 | (12,759.00) |
| 1113 銀行存款 | (3,549,062.60) | (1,660,617.60) | (1,888,445.00) |
| 1191 應收帳款 | 356,189.00 | 355,307.00 | 882.00 |
| 1268 進項稅額 | 141,140.00 | 135,515.00 | 5,625.00 |
| 1281 暫付款 | 1,122,567.00 | 807,582.00 | 314,985.00 |
| 2191 應付薪資 | 818,809.00 | 799,923.00 | 18,886.00 |
| 21971 應付費用-保險費 | 484,555.00 | 734,187.00 | (249,632.00) |
| 21973 應付費用-代墊款 | (1,022,529.27) | (1,017,134.27) | (5,395.00) |
| 2204 銷項稅額 | 520,386.00 | 507,824.00 | 12,562.00 |
| 2251 暫收款 | 210,579.84 | 167,456.84 | 43,123.00 |
| 22521 代收款/代扣款項 | 94,674.00 | 64,883.00 | 29,791.00 |
| 3353 本期損益 | (1,464,241.94) | 231,565.06 | (1,695,807.00) |
| 分區 | 我方 | 藍途 | 解讀 |
|---|---|---|---|
| ⚠️ 付款-營業成本 | — | (1,000.00) | 我方進項憑證應計口徑 vs 藍途現金口徑 |
| ⚠️ 付款-營業費用 | (1,942,037.02) | (53,290.00) | 方向已知:我方吃銀行對帳單記了全部付款、藍途 2026 幾乎沒記付款 — 我方較完整面 |
| ⚠️ 其他/投資 | (314,985.00) | — | 我方銀行流水暫記(轉帳/未分類暫掛),藍途未記 |
| ⚠️ 收款-其他收入 | 16,615.00 | 15,700.00 | 我方=利息 915(對帳單餵入)+MACBOOK 15,700(沖銷追溯 72490 其他收入 — B4① 定案,與藍途同分區) |
| ⚠️ 收款-營業收入 | 2,317,506.02 | 2,054,621.00 | 我方=銷項收款引擎(settle AR+開票前進帳暫收池);B4① 定案(2026-07-17)後沖應收分區跟隨被沖發票收入性質 — MACBOOK 15,700 已歸收款-其他收入(與藍途同分區) |
| ⚠️ 籌融資-融資收付 | 43,123.00 | 0.00 | 我方銀行流水暫掛(未分類收款→2251 暫收)+融資往來,藍途未記 |
※ 本頁資料 = engine/run_all_tests.py 真跑產出(test_results.json 原子替換),不是手寫清單。有套件 fail 會紅字顯示 + 可展開輸出 — 會計不能有閃失,這頁存在的意義就是誠實。