Skip to content

NiMA264/GEM---LFO

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

46 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Transport & Logistics ERP System

BΓΌrotaugliches Speditions-System mit MariaDB-Persistenz.

πŸš€ Schnellstart

1. Voraussetzungen

2. Nach dem Clone: Tools wiederherstellen

# EF Core Tools lokal installieren (konsistent ΓΌber Team/CI)
dotnet tool restore

3. MariaDB starten

# Im Root-Verzeichnis des Projekts
docker compose up -d

Dies startet:

4. API und UI starten

Option A: Visual Studio (empfohlen)

  1. Γ–ffne TransportLogisticsERP.sln
  2. Rechtsklick auf Solution β†’ "Startprojekte festlegen"
  3. WΓ€hle "Mehrere Startprojekte"
  4. Setze TransportLogisticsERP.API und OfficeUI auf "Starten"
  5. DrΓΌcke F5

Option B: Kommandozeile

# Terminal 1 - API
cd src/API
dotnet run

# Terminal 2 - UI
cd src/OfficeUI
dotnet run

5. Anwendung ΓΆffnen

Dienst URL
Office UI http://localhost:5148
API http://localhost:5147
API Dokumentation http://localhost:5147/scalar/v1
phpMyAdmin http://localhost:8081

πŸ“Š Funktionen

Dashboard

  • TagesΓΌbersicht mit Auftragsstatistiken
  • Offene/Disponierte/Abrechnungsbereite AuftrΓ€ge
  • Umsatz heute

AuftrΓ€ge

  • Schnellerfassung per Telefon/E-Mail
  • Kundenauswahl mit Inline-Anlage
  • Automatische Preiskalkulation
  • Workflow: Entwurf β†’ BestΓ€tigt β†’ Disponiert β†’ Erledigt β†’ Abgerechnet

Abrechnung

  • Ein-Klick-Rechnungserstellung
  • Sammelrechnungen
  • DATEV-Export

Mandanten

  • Multi-Tenant-FΓ€higkeit
  • Eigene Nummernkreise pro Mandant
  • Individuelle Bankdaten/MwSt

βš™οΈ Konfiguration

ConnectionString (appsettings.json)

{
  "ConnectionStrings": {
    "MariaDb": "Server=localhost;Port=3306;Database=speditionsbuero;User=app;Password=app;TreatTinyAsBoolean=true;"
  },
  "DatabaseProvider": "MariaDb"
}

InMemory-Modus (ohne Docker)

Setze DatabaseProvider auf leer oder entferne es:

{
  "DatabaseProvider": ""
}

πŸ”§ Entity Framework Commands

Nach dem Clone

dotnet tool restore

Migration erstellen

dotnet tool run dotnet-ef migrations add <MigrationName> \
  --context ErpDbContext \
  --startup-project src/API \
  --project src/Infrastructure

Datenbank aktualisieren

dotnet tool run dotnet-ef database update \
  --context ErpDbContext \
  --startup-project src/API \
  --project src/Infrastructure

Migration entfernen (letzte)

dotnet tool run dotnet-ef migrations remove \
  --context ErpDbContext \
  --startup-project src/API \
  --project src/Infrastructure

Wichtig: Verwende IMMER dotnet tool run dotnet-ef (nicht dotnet ef global)!
Grund: Garantiert konsistentes Scaffolding (9.0.1) ΓΌber alle Entwickler/CI hinweg.

🐳 Docker Details

Container stoppen

docker compose down

Container mit Daten lΓΆschen

docker compose down -v

Logs anzeigen

docker compose logs -f mariadb

πŸ”§ Troubleshooting

Port 3306 bereits belegt

# PrΓΌfen was Port 3306 benutzt
netstat -an | findstr 3306

# MariaDB Container neu starten
docker compose restart mariadb

Datenbank-Migration fehlgeschlagen

# Migration manuell anwenden
cd src/API
dotnet ef database update --project ../Infrastructure/TransportLogisticsERP.Infrastructure.csproj

Seed-Daten fehlen

Die Seed-Daten werden nur beim ersten Start eingefΓΌgt. Zum ZurΓΌcksetzen:

docker compose down -v
docker compose up -d
# Dann API neu starten

πŸ“ Projektstruktur

β”œβ”€β”€ docker-compose.yml      # MariaDB + phpMyAdmin
β”œβ”€β”€ src/
β”‚   β”œβ”€β”€ API/               # REST API
β”‚   β”œβ”€β”€ Core/              # Domain-Entities
β”‚   β”œβ”€β”€ Infrastructure/    # EF Core, Repositories
β”‚   β”‚   └── Data/
β”‚   β”‚       └── Migrations/
β”‚   β”œβ”€β”€ Modules/
β”‚   β”‚   β”œβ”€β”€ TMS/          # Transport Management
β”‚   β”‚   β”œβ”€β”€ WMS/          # Warehouse Management
β”‚   β”‚   β”œβ”€β”€ Billing/      # Abrechnung
β”‚   β”‚   └── Disposition/  # Disposition
β”‚   └── OfficeUI/         # Blazor Frontend
└── tests/

πŸ” Entwicklungsdaten

Nach dem ersten Start werden automatisch Testdaten angelegt:

Typ Name Details
Mandant DEMO Demo Spedition GmbH
Mandant TEST Test Transport AG
Kunde MΓΌller & SΓΆhne KG Berlin, 30 Tage Zahlungsziel
Kunde Schmidt Handel GmbH MΓΌnchen, 14 Tage Zahlungsziel
AuftrΓ€ge 3 StΓΌck Verschiedene Status

πŸ“‘ API Endpoints

Prefix Beschreibung
/api/office/* BΓΌro-Workflow (AuftrΓ€ge, Rechnungen)
/api/driver/* Mobile Driver App (Touren, GPS)
/api/ops/* Verladung, Sendungsstatus
/api/auth/* Authentication (Token, Login)
/api/setup/* Owner-Setup (DB-Config, Migration, Status)
/scalar/v1 Interactive API Documentation

Setup & Status Endpoints

Endpoint Auth Beschreibung
GET /api/setup/status ❌ Nein System-Status (hasBusinessDb, canConnect, isMigrated)
GET /api/setup/database/status βœ… Owner Detaillierter DB-Status mit Migrations-Info
POST /api/setup/database/test βœ… Owner Verbindung testen (mit Diagnose)
POST /api/setup/database/configure βœ… Owner DB-Connection konfigurieren
POST /api/setup/database/migrate βœ… Owner Migrations manuell ausfΓΌhren
POST /api/setup/database/seed βœ… Owner Demo-Daten anlegen

Error Codes

503 Service Unavailable mit Code BUSINESS_DB_NOT_CONFIGURED:

{
  "error": "BUSINESS_DB_NOT_CONFIGURED",
  "message": "Business-Datenbank ist nicht konfiguriert",
  "hint": "Bitte als Owner einloggen und Datenbank unter /owner/connections einrichten",
  "setupUrl": "/owner/connections",
  "statusUrl": "/api/setup/status"
}

Dieser Fehler wird zurΓΌckgegeben wenn:

  • Business-DB nicht konfiguriert ist
  • Ein Endpoint aufgerufen wird, der Business-DB benΓΆtigt
  • Middleware schΓΌtzt vor 500-Fehlern

πŸ”„ Auto-Migration

Die API fΓΌhrt beim Start automatisch Migrations aus:

  1. Settings-DB (SQLite) - Immer
  2. Business-DB (MariaDB) - Falls konfiguriert und erreichbar

Robust: API startet auch wenn Business-DB nicht erreichbar ist!

# Status prΓΌfen
curl http://localhost:5147/api/setup/status

# Migration manuell triggern
curl -X POST http://localhost:5147/api/setup/database/migrate \
  -H "Authorization: Bearer YOUR_TOKEN"

# Oder: Container neu starten
docker compose restart api

πŸ—οΈ Architektur

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚           OfficeUI (Blazor Server)          β”‚
β”‚  - Dashboard, Auftragserfassung, Abrechnung β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                   β”‚ HTTP/Cookie+JWT
                   β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚           REST API (ASP.NET Core)           β”‚
β”‚  - JWT Auth, Multi-Tenant, OpenAPI/Scalar  β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                   β”‚
        β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
        β–Ό                     β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”      β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ Settings-DB  β”‚      β”‚ Business-DB  β”‚
β”‚  (SQLite)    β”‚      β”‚  (MariaDB)   β”‚
β”‚  - Config    β”‚      β”‚  - Tenants   β”‚
β”‚  - Users     β”‚      β”‚  - Orders    β”‚
β”‚  - Roles     β”‚      β”‚  - Shipments β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜      β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Docker Setup mit Init-Container

docker compose up
    β”‚
    β”œβ”€ db (MariaDB)
    β”‚  └─ Healthcheck βœ…
    β”‚     β”‚
    β”œβ”€ init (One-Shot) ← Wartet auf db
    β”‚  β”œβ”€ Provision Business-DB Connection
    β”‚  β”œβ”€ Run Migrations
    β”‚  └─ Exit(0) βœ…
    β”‚     β”‚
    β”œβ”€ api ← Wartet auf init completion
    β”‚  └─ Settings-DB bereits konfiguriert
    β”‚     β”‚
    └─ officeui ← Wartet auf api
       └─ Ready βœ…

Vorteil: API-Container bleibt sauber - Init-Container macht Setup!

Mobile readiness package

The _mobile_readiness_package/ directory contains a standalone deliverable and verification bundle that we keep outside Git. Review or publish it independently but do not track it in the main repo.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors