- 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
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-import— aktiv 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_catochsource_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 reglerfetchUncategorizedRevolutEntries()— hämtar alla bank-poster med 1689 som inte auto-cat:atspostAutoCatEntry(entry, log)— skapar och kontera omföringspost (draft→posted)createLogger(date)— loggare till /opt/amos/logs/auto-cat-YYYY-MM-DD.logrun(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_catposter - 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 Main1934= Revolut EUR Main1935= 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