arcodange-bank-reco: add known-patterns.json catalog + bank-match annotation

V6.1 follow-up to the bank-reco V6 ship. Splits the BANK-ONLY bucket into
"known patterns" (intentional gaps, documented and classified) vs
"unknown" (real action items).

What the catalog covers today:
- FOUREZ Quentin → capital_deposit (apport en capital 1000 € initial,
  notaire FOUREZ centralisateur du dépôt). Maps to Dolibarr account 1013.
- URSSAF → social_charges (account 645100)
- MISTRAL.AI, CLAUDE.AI → ai_subscription (account 6262)
- Wise *Plan, qonto_fee → bank_fee (account 627)
- BALANCE_DEPOSIT / FEATURE_CHARGE on Wise → internal_topup (self-funding
  pair, often nets to zero)

Effect on the V6 baseline (Jan-May 2026):
- Before catalog: 8 BANK-ONLY mixed entries (noise + signal)
- After catalog:  7 known + 1 UNKNOWN (just the +2147 € KM Wise payment
  2026-05-29 that genuinely needs a Dolibarr entry)

The catalog is JSON (not YAML — stdlib only, no dependency). Schema
documented in SKILL.md. Pattern matches case-insensitive regex against
both bank label AND operation type. Optional filters: bank, side,
amount_min, amount_max.

Exit code now reflects only the UNKNOWN bank-only and dolibarr-only
counts — the verdict is no longer noisy because of intentional gaps.

Edit known-patterns.json as new recurring patterns emerge.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-05-31 14:06:46 +02:00
parent f398003eae
commit 4b6a5f7529
4 changed files with 170 additions and 16 deletions

View File

@@ -11,14 +11,23 @@
=== INTERNAL (Wise↔Qonto consolidations, 1) ===
Wise 2026-03-13 - 5000.00 TRANSFER ARCODANGE ↔ Qonto 2026-03-13 +5000.00
=== BANK-ONLY (8 bank movements without Dolibarr counterpart) ===
Qonto 2026-01-16 + 5.22 qonto_fee Qonto
Qonto 2026-01-21 + 1000.00 income FOUREZ Quentin
Wise 2026-01-26 - 50.00 FEATURE_CHARGE For your account plan
Wise 2026-01-26 + 50.00 BALANCE_DEPOSIT To EUR
Qonto 2026-04-03 - 172.68 card MISTRAL.AI
Qonto 2026-04-13 - 180.00 card CLAUDE.AI SUBSCRIPTION
Qonto 2026-05-22 - 493.00 direct_debit URSSAF D ILE DE FRANCE
=== BANK-ONLY — known patterns (7, intentional gaps documented in known-patterns.json) ===
Qonto 2026-01-16 + 5.22 qonto_fee Qonto [bank_fee]
└─ Qonto fees ou refunds. Petites valeurs. Dolibarr: account 627.
Qonto 2026-01-21 + 1000.00 income FOUREZ Quentin [capital_deposit]
└─ Apport en capital social initial 1000 €. Maître FOUREZ Quentin, notaire centralisateur du dépôt. Date typique : 2026-01-21. Dolibarr: account 1013.
Wise 2026-01-26 - 50.00 FEATURE_CHARGE For your account plan [internal_topup]
└─ Solde Wise rechargé pour couvrir un frais immédiat (souvent net zéro avec le FEATURE_CHARGE du même jour).
Wise 2026-01-26 + 50.00 BALANCE_DEPOSIT To EUR [internal_topup]
└─ Solde Wise rechargé pour couvrir un frais immédiat (souvent net zéro avec le FEATURE_CHARGE du même jour).
Qonto 2026-04-03 - 172.68 card MISTRAL.AI [ai_subscription]
└─ Mistral AI API subscription. Récurrent mensuel. Dolibarr: account 6262 + supplier 'Mistral AI'.
Qonto 2026-04-13 - 180.00 card CLAUDE.AI SUBSCRIPTION [ai_subscription]
└─ Claude AI subscription (Anthropic). Récurrent mensuel. Dolibarr: account 6262 + supplier 'Anthropic'.
Qonto 2026-05-22 - 493.00 direct_debit URSSAF D ILE DE FRANCE [social_charges]
└─ Cotisations sociales URSSAF (régime mensuel/trimestriel). Dolibarr: account 645100 (charges de sécurité sociale).
=== BANK-ONLY — unknown (1, NEEDS attention: missing supplier invoice / unrecorded payment / new pattern) ===
Wise 2026-05-29 + 2147.00 TRANSFER Kissmetrics Holdings Inc
=== DOLIBARR-ONLY (9 Dolibarr payments without bank movement) ===
@@ -33,4 +42,5 @@
customer 2026-02-05 510.00 FAC001-CL00001 (fk_account=2)
--------------------------------------------------------------------------------
# 6 matched, 1 internal, 8 bank-only, 9 dolibarr-only
# 6 matched, 1 internal, 7 bank-known, 1 bank-UNKNOWN, 9 dolibarr-only
# patterns loaded from /Users/gabrielradureau/Work/Arcodange/erp/.claude/worktrees/happy-wilson-ee5645/.claude/skills/arcodange-bank-reco/scripts/../known-patterns.json: 7 pattern(s)