Skip to content

Systemarchitektur ​

Überblick ​

┌─────────────────┐     Bearer Token      ┌──────────────────────┐
│  Vue.js Frontend │ ──────────────────── ▶│  Laravel API         │
│  venturo.saw-sg.de  │ ◀──────────────────── │  api.saw-sg.de/v1   │
└─────────────────┘     JSON Response      └──────────┬───────────┘
                                                       │
                                           ┌───────────▼───────────┐
                                           │  MariaDB / MySQL       │
                                           │  (vto_* Tabellen)      │
                                           └───────────────────────┘

Simulation Engine ​

Die Engine ist eine sequenzielle Processor-Pipeline. Jeder Tick durchläuft dieselben Schritte in fester Reihenfolge.

POST /simulation/{id}/tick
         │
         ▼
   SimulationEngine::tick()
         │
         ├── 1. TimeProcessor        Tick +1, Datum voranschreiten
         ├── 2. BureaucracyProcessor  (Phase 2)
         ├── 3. CustomerProcessor     (Phase 3)
         ├── 4. FinanceProcessor      (Phase 3)
         ├── 5. TaxProcessor          (Phase 3)
         ├── 6. GrowthProcessor       (Phase 6)
         ├── 7. EventProcessor        (Phase 2)
         ├── 8. KpiProcessor          Monatlicher Snapshot
         └── 9. AchievementProcessor  (Phase 6)
                   │
                   ▼
         DB::transaction() — alles oder nichts

TickContext ​

Geteilter Zustand zwischen allen Processors. Kein Processor schreibt direkt in die DB — er trägt Änderungen in den Context ein. Am Ende persistiert die Engine alles in einer einzigen DB-Transaction.

php
$context->advance(1);                // Zeit voranschreiten
$context->addEvent('type', ...);     // Event vormerken
$context->addTransaction('income', 49.00, 'Kundenzahlung', 'revenue');

Tick-Geschwindigkeit ​

tick_speedTage pro Klick
day1 Tag
week7 Tage
month30 Tage

KPI-Snapshots ​

Werden monatlich (wenn monthChanged = true) gespeichert. Basis für alle Charts — vorberechnet, sofort abfragbar.


Datenbank ​

Prefix: vto_ (konfigurierbar via DB_PREFIX in .env)
53 Tabellen in 12 Domänen (Platform, Kern, Bürokratie, Kunden, Finanzen, Personal, Wachstum, Institutionen, Investoren, Gamification, KI, Connector)

Migrations-Reihenfolge: 6 Stufen nach FK-Abhängigkeiten (siehe backend/database/migrations/)


Authentifizierung ​

Laravel Sanctum mit Bearer Token (kein Cookie/CSRF).

POST /v1/auth/login → { token: "1|abc..." }
GET  /v1/auth/me    → Authorization: Bearer 1|abc...

Deployment ​

Monorepo (venturo/) mit zwei Apps in Coolify:

  • backend/ → api.saw-sg.de (Laravel + PHP-FPM + Nginx + Supervisor)
  • frontend/ → venturo.saw-sg.de (Multi-Stage Docker: Node build → Nginx)
  • docs/ → docs.saw-sg.de (VitePress static)

Auto-Deploy bei git push origin main via GitHub-Webhook.

Venturo — Simulate Your Venture