Files
boc/memory/auto-import-resultat.md
T
Bernt bae705aa97 ARCHITECTURE: NFC roadmap, edge AI, audit logging
- Add NFC ePassport roadmap (ICAO 9303, eIDAS)
- Add TensorFlow.js edge face detection (BlazeFace)
- Add structured audit logger (GDPR-compliant)
- Risk scoring support

Part of KYC Apple Native UX v1.1.0
2026-06-29 16:24:48 +00:00

6.1 KiB

Auto-Import Resultat — LandveX AB Revolut Auto-Kategorisering

Datum: 2026-06-17
Utfört av: Subagent (aamos-ledger-auto-cat)
Status: KLART


Sammanfattning

Automatiskt nattligt bokföringssystem för Revolut-transaktioner är nu byggt och aktiverat. Systemet hämtar okategoriserade transaktioner från 1689 (observationskonto) och bokar dem till rätt kostnadskonton — helt automatiskt, varje natt 02:00 UTC.

Initial inventering (dry-run test):

  • 923 transaktioner med 1689-konton hittades
  • 751 kan kategoriseras automatiskt
  • 172 kräver manuell granskning (oklara mottagare)
  • 0 fel

Infrastruktur

Befintlig bank-import

  • Tjänst: aamos-bank-importaktiv på port 3253
  • Funktion: Tar CSV från Swedbank/SEB/Handelsbanken/Nordea, skapar journal entries
  • Revolut-pattern: Transaktioner bokas med source_type=bank, source_id=revolut_id, utgifter går till 1689 (observationskonto) + krediterar Revolut-kontot (1932/1934/1935)

Ledger API

  • URL: http://localhost:3250
  • Token: wavult-amos-internal-2026 (intern service-token)
  • Tenant: landvex
  • Idempotency: Nya auto-cat-poster skapas med source_type=auto_cat och source_id=auto-cat:<revolut_id> — aldrig dubbletter

Skapade filer

/opt/amos/services/aamos-ledger-auto-cat/auto-categorize.mjs

Kategoriseringsmotorn. Innehåller:

  • CONFIG — konfiguration (URL, token, tenant, log-dir)
  • RULES — kategoriseringsregler i prioritetsordning (8 regler + fallback)
  • categorize(description) — matchar beskrivning mot regler
  • fetchUncategorizedRevolutEntries() — hämtar alla bank-poster med 1689 som inte auto-cat:ats
  • postAutoCatEntry(entry, log) — skapar och kontera omföringspost (draft→posted)
  • createLogger(date) — loggare till /opt/amos/logs/auto-cat-YYYY-MM-DD.log
  • run(opts) — huvudfunktion, returnerar stats

/opt/amos/services/aamos-ledger-auto-cat/run.mjs

Startup-script för manuell körning. Körbart direkt:

cd /opt/amos/services/aamos-ledger-auto-cat

# Normal körning
TENANT_ID=landvex node run.mjs

# Dry-run (ingen faktisk bokning)
DRY_RUN=true TENANT_ID=landvex node run.mjs

# Hjälp
node run.mjs --help

Kategoriseringsregler

Prioritet Regex-match Konto Kategori
1 anthropic, claude, openai, aws, amazon, google, lovable, supabase, bunnycdn, gandi, 46elks, 1office, transcriptapi, duix, roamless 6230 IT/molntjänst
2 grab.com, grabcar, thai airways, 2c2p*tha, air*asia, booking.com, flights, didi taxi, didi*cab, aimo park, easypark 5801 Resekostnader affärsresa
3 cafe del mar, the zula, al yemen, thaiitalian, sugar phuket, emerald isle, villa market, big c, lotus, 7-11, tops, mozza 6072 Representation ej avdragsgill
4 alipay, alp* 6071 Representation avdragsgill
5 avgift*nordea, stripe*fee, revolut*fee 6570 Bankkostnader
6 dhl, postnord, fedex, ups 5800 Frakt och porto
7 airbnb 5800 Resekostnader logi
8 .* (fallback) 1689 Observationskonto — kräver granskning

Bokföringslogik

Utgifter (1689 hade debit — typ CARD_PAYMENT)

Debet: 6230/5801/6072/etc  (kostnadskonto)  X.XX SEK
Kredit: 1689               (observationskonto rensat)  X.XX SEK

Återbetalningar (1689 hade kredit — typ CARD_REFUND)

Debet: 1689                (observationskonto rensat)  X.XX SEK
Kredit: 6230/etc           (minskar kostnaden)  X.XX SEK

Idempotens

  • Varje auto-cat-post får source_id = "auto-cat:<revolut_id>"
  • Innan varje körning hämtas alla befintliga source_type=auto_cat poster
  • Revolut-transaktioner som redan har auto-cat hoppas över automatiskt
  • Kan köras hur många gånger som helst utan dubbletter

Cron-jobb

ID: 61fae14e-226c-4627-9a65-261b0e3d7a91
Fil: /home/bernt/.openclaw/cron/jobs.json
Schema: 0 2 * * * UTC (varje natt 02:00 UTC)
Enabled: true
Delivery: Telegram → 8783557028 (announce)
Timeout: 300 sekunder

Jobbet kör:

cd /opt/amos/services/aamos-ledger-auto-cat && TENANT_ID=landvex node run.mjs

och rapporterar sammanfattning till Telegram.


Loggar

Varje körning skriver till:

/opt/amos/logs/auto-cat-YYYY-MM-DD.log

Format:

[2026-06-17T02:00:01.234Z] AAMOS Ledger Auto-Cat startar (tenant: landvex)
[2026-06-17T02:00:01.456Z] Hämtar okategoriserade Revolut-transaktioner...
[2026-06-17T02:00:01.890Z] Hittade 42 transaktioner att kategorisera
[2026-06-17T02:00:02.100Z] Behandlar: [REVOLUT abc123] CARD_PAYMENT: Anthropic...
[2026-06-17T02:00:02.150Z]   ✓ Bokfört ver#6600: IT/molntjänst (6230) — 1190.79 SEK
...
[2026-06-17T02:00:05.000Z] SAMMANFATTNING 2026-06-17:
[2026-06-17T02:00:05.000Z]   Totalt hittade: 42
[2026-06-17T02:00:05.000Z]   Kategoriserade: 38
[2026-06-17T02:00:05.000Z]   Skippade (1689/okänd): 4
[2026-06-17T02:00:05.000Z]   Fel: 0

Tekniska detaljer

Varför inte via aamos-bank-import?

Bank-import-tjänsten hanterar CSV-filer (Swedbank, SEB, etc). Revolut-data läggs in direkt som source_type=bank poster av agent:revolut-full. Auto-cat-tjänsten arbetar efter importsteget — det är en andra pass som klassificerar observationskonto-poster.

Revolut-konton i ledger

  • 1932 = Revolut SEK Main
  • 1934 = Revolut EUR Main
  • 1935 = Revolut USD Main

Dubbelbokföring

Alla poster valideras av aamos-ledger (debet = kredit) innan de sparas. Systemet skapar draft → postar omedelbart (draft→posted i samma körning).


Testresultat (dry-run 2026-06-17)

Totalt hittade: 923
Kategoriserade (dry-run): 751
Skippade (1689/okänd): 172
Fel: 0
Körtid: 0.3s

De 172 skippade är transaktioner utan matchning i regellistan (okända mottagare, privata uttag, etc) — dessa förblir på 1689 och kräver manuell granskning.


Nästa körning

Nästa automatiska körning: Imorgon natt 02:00 UTC

För att köra manuellt nu:

cd /opt/amos/services/aamos-ledger-auto-cat && TENANT_ID=landvex node run.mjs