Files
kvitt/server/crates/kvitt-import/Cargo.toml
T
jacobh2 50339aef6d M9: kvitt-import Splitwise importer (SPEC §10.8, FR-17)
CLI per §10.8 with --help, --dry-run and a summary; English and Swedish
headers with member columns matched by name; CSV quoting; payments as
settlements with one allocation; trailing totals row used to reconcile
the account balance (mismatch rolls back, exit 4); non-SEK rows abort
unless --fx; committed category table data/splitwise_categories.csv;
idempotent re-runs through import_key; rows validated with the server's
push checks, audited with source import, no pushes; one BEGIN IMMEDIATE
transaction. Tests over synthetic fixtures only.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TQd3pEP9UeN2uifbHknQ7B
2026-10-18 07:45:37 +02:00

32 lines
898 B
TOML

[package]
name = "kvitt-import"
description = "Splitwise CSV importer for Kvitt (SPEC §10.8)."
version.workspace = true
edition.workspace = true
rust-version.workspace = true
publish.workspace = true
[lints]
workspace = true
[lib]
path = "src/lib.rs"
[[bin]]
name = "kvitt-import"
path = "src/main.rs"
[dependencies]
chrono = { version = "0.4.45", default-features = false, features = ["clock", "std"] }
clap = { version = "4.6.7", features = ["derive"] }
csv = "1.4.0"
kvitt-domain = { version = "0.1.0", path = "../kvitt-domain" }
kvitt-server = { version = "0.1.0", path = "../kvitt-server" }
serde_json = "1.0.154"
sqlx = { version = "0.9.0", default-features = false, features = ["runtime-tokio", "sqlite"] }
tokio = { version = "1.53.3", features = ["rt"] }
uuid = { version = "1.28.0", features = ["v7"] }
[dev-dependencies]
tokio = { version = "1.53.3", features = ["rt", "macros"] }