bae705aa97
- 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
121 lines
2.7 KiB
Markdown
121 lines
2.7 KiB
Markdown
# aamos-ledger-rust
|
|
|
|
En Rust-prototyp för aamos-ledger med följande funktionalitet:
|
|
|
|
## Funktioner
|
|
|
|
- **Konton (Accounts)** - CRUD för konton med kod, namn och kontotyp
|
|
- **Verifikat (Journal Entries)** - Bokföringsverifikat med journalrader
|
|
- **Dubbel bokföring** - Debet/kredit-validering
|
|
- **Rapporter** - Trial balance (saldoöversikt)
|
|
- **JWT-autentisering** - Skyddade endpoints
|
|
|
|
## Teknikstack
|
|
|
|
- **tokio** - Async runtime
|
|
- **axum** - Web framework
|
|
- **sqlx** - PostgreSQL-anslutning med compile-time query checking
|
|
- **serde** - Serialisering
|
|
- **jsonwebtoken** - JWT-hantering
|
|
- **tracing** - Logging
|
|
|
|
## Komma igång
|
|
|
|
### 1. PostgreSQL
|
|
|
|
```bash
|
|
# Skapa databas
|
|
createdb aamos_ledger
|
|
```
|
|
|
|
### 2. Miljövariabler
|
|
|
|
```bash
|
|
cp .env.example .env
|
|
# Redigera .env med dina inställningar
|
|
```
|
|
|
|
### 3. Bygg och kör
|
|
|
|
```bash
|
|
cargo run
|
|
```
|
|
|
|
Servern startar på `http://0.0.0.0:3000`
|
|
|
|
## API Endpoints
|
|
|
|
### Publika endpoints
|
|
|
|
| Metod | Endpoint | Beskrivning |
|
|
|-------|----------|-------------|
|
|
| GET | `/health` | Hälsokontroll |
|
|
| POST | `/login` | Logga in (username + password) |
|
|
|
|
### Skyddade endpoints (kräver JWT)
|
|
|
|
| Metod | Endpoint | Beskrivning |
|
|
|-------|----------|-------------|
|
|
| GET | `/accounts` | Lista alla konton |
|
|
| POST | `/accounts` | Skapa nytt konto |
|
|
| GET | `/accounts/:id` | Hämta konto efter ID |
|
|
| GET | `/journal-entries` | Lista verifikat |
|
|
| POST | `/journal-entries` | Skapa nytt verifikat |
|
|
| GET | `/journal-entries/:id` | Hämta verifikat med rader |
|
|
| GET | `/trial-balance` | Saldoöversikt |
|
|
|
|
## Exempelanrop
|
|
|
|
### Logga in
|
|
|
|
```bash
|
|
curl -X POST http://localhost:3000/login \
|
|
-H "Content-Type: application/json" \
|
|
-d '{"username":"admin","password":"password"}'
|
|
```
|
|
|
|
### Skapa konto
|
|
|
|
```bash
|
|
curl -X POST http://localhost:3000/accounts \
|
|
-H "Content-Type: application/json" \
|
|
-H "Authorization: Bearer <token>" \
|
|
-d '{"code":"7000","name":"Kontorsmaterial","account_type":"Expense"}'
|
|
```
|
|
|
|
### Skapa verifikat
|
|
|
|
```bash
|
|
curl -X POST http://localhost:3000/journal-entries \
|
|
-H "Content-Type: application/json" \
|
|
-H "Authorization: Bearer <token>" \
|
|
-d '{
|
|
"entry_number":"V001",
|
|
"description":"Försäljning kontant",
|
|
"entry_date":"2025-01-15T00:00:00Z",
|
|
"lines":[
|
|
{"account_id":"<kassa-id>","debit":"1000.00","credit":null},
|
|
{"account_id":"<försäljning-id>","debit":null,"credit":"1000.00"}
|
|
]
|
|
}'
|
|
```
|
|
|
|
### Hämta trial balance
|
|
|
|
```bash
|
|
curl http://localhost:3000/trial-balance \
|
|
-H "Authorization: Bearer <token>"
|
|
```
|
|
|
|
## Standardkonton
|
|
|
|
Databasen seedas med svenska BAS-konton:
|
|
- 1000 Kassa (Tillgång)
|
|
- 1500 Bankkonto (Tillgång)
|
|
- 2000 Leverantörsskulder (Skuld)
|
|
- 2400 Moms skuld (Skuld)
|
|
- 3000 Försäljning (Intäkt)
|
|
- 4000 Varukostnad (Kostnad)
|
|
- 5000 Lönekostnad (Kostnad)
|
|
- 6000 Hyra (Kostnad)
|