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
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
[package]
|
||||
name = "kvitt-import"
|
||||
description = "Splitwise CSV importer for Kvitt (SPEC §10.8). Stub until milestone M9."
|
||||
description = "Splitwise CSV importer for Kvitt (SPEC §10.8)."
|
||||
version.workspace = true
|
||||
edition.workspace = true
|
||||
rust-version.workspace = true
|
||||
@@ -9,6 +9,23 @@ 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"] }
|
||||
|
||||
Reference in New Issue
Block a user