Zum Hauptinhalt springen

Softec-Integration

Der Angebot-Konstruktor ist nahtlos in Fortuna Softec integriert. Sie können direkt aus Softec einsteigen (SSO) und fertige Angebote als Projekte exportieren.

Single Sign-On (SSO)

Mit SSO können Sie den Angebot-Konstruktor direkt aus Fortuna Softec öffnen – ohne erneute Passworteingabe.

So funktioniert's

  1. Loggen Sie sich in Fortuna Softec ein
  2. Navigieren Sie zu:
    • Angebote → Button "Angebots-Konstruktor öffnen", oder
    • Projekt-Details → Button "Angebots-Konstruktor"
  3. Ein neuer Tab öffnet sich mit dem Angebot-Konstruktor
  4. Sie sind automatisch eingeloggt (SSO-Token)

Technischer Hintergrund

Fortuna Softec                     Angebot-Konstruktor
│ │
│ 1. User klickt "Öffnen" │
│ │
│ 2. POST /api/auth/sso-token │
│ → JWT wird generiert (60 Sek) │
│ │
│ 3. Redirect zu /sso?token=xxx │
│──────────────────────────────────>│
│ │
│ 4. Token wird │
│ validiert │
│ │
│ 5. Session │
│ erstellt │
│ │

Sicherheit

  • JWT-basiert: Token ist signiert und nicht manipulierbar
  • Kurze Gültigkeit: Token läuft nach 60 Sekunden ab
  • Shared Secret: Beide Apps teilen ein kryptografisches Geheimnis
  • Einmalverwendung: Token wird nach Verwendung ungültig

Export zu Softec

Exportieren Sie fertige Angebote direkt in die Fortuna Softec Bauapp. Das Angebot wird automatisch als Projekt mit Budget angelegt.

Was wird erstellt?

Was wird erstelltBeschreibung
ProjektNeues Projekt mit Angebotsdaten
Budget (Herzstück)Alle Positionen als Budget-Einträge
GewerkeWerden zu Budget-Kategorien
KundendatenWerden dem Projekt zugeordnet

Export durchführen

Voraussetzungen

  1. Ein fertiges Angebot im Angebot-Konstruktor
  2. Konfigurierte Softec-Verbindung (siehe Einstellungen)
  3. Berechtigung in Fortuna Softec (Admin oder Backoffice)

Schritt für Schritt

  1. Öffnen Sie das Angebot
  2. Klicken Sie auf Zu Softec exportieren
  3. Prüfen Sie die Zusammenfassung:
    • Projektname
    • Kunde
    • Anzahl Positionen
    • Gesamtsumme
  4. Wählen Sie die Umgebung (Dev oder Prod)
  5. Klicken Sie auf Exportieren

Export-Dialog

Im Dialog sehen Sie:

  • Projektname: Wird aus Angebot übernommen (editierbar)
  • Kunde: Aus Angebotsdaten oder manuell wählen
  • Beschreibung: Optionale Projektbeschreibung
  • Umgebung: Entwicklung oder Produktion

Was wird übertragen?

Projektdaten

FeldQuelle
ProjektnameAngebots-Titel
KundeAngebots-Kunde
BeschreibungAngebots-Beschreibung
Erstellt amExport-Datum
Erstellt vonIhr Benutzer

Budget-Einträge

Jede Angebots-Position wird zu einem Budget-Eintrag:

AngebotHerzstück (Budget)
PositionsnummerPosition
BeschreibungBezeichnung
MengeSoll-Menge
EinheitEinheit
EinzelpreisSoll-EP
GesamtpreisSoll-Summe

Gewerk-Mapping

Gewerke werden zu Budget-Kategorien:

Angebot                     →  Herzstück
├── Gewerk: Rohbau → Kategorie: Rohbau
│ ├── Position 1 → Budget-Eintrag 1
│ └── Position 2 → Budget-Eintrag 2
└── Gewerk: Elektro → Kategorie: Elektro
└── Position 3 → Budget-Eintrag 3

Umgebungswahl

Entwicklung (Dev)

  • URL: dev.fortuna-softec.com
  • Für Tests und Vorschauen
  • Keine Auswirkung auf Produktivdaten

Produktion (Prod)

  • URL: app.fortuna-softec.com
  • Echte Projekte werden angelegt
  • Nur verwenden, wenn Angebot final ist
Achtung

Exporte in die Produktionsumgebung erstellen echte Projekte. Stellen Sie sicher, dass alle Daten korrekt sind.

Atomic Creation

Der Export nutzt "Atomic Creation":

  • Projekt und Budget werden in einer Transaktion erstellt
  • Bei Fehlern wird nichts angelegt (kein halbes Projekt)
  • Entweder vollständiger Erfolg oder vollständiger Abbruch

Fehlerbehandlung

Häufige Fehler

FehlerUrsacheLösung
VerbindungsfehlerKeine Verbindung zu SoftecInternet prüfen, Credentials prüfen
Authentifizierung fehlgeschlagenFalsches Token/PasswortEinstellungen prüfen
Keine BerechtigungBenutzer hat keine RechteAdmin kontaktieren
Projekt existiertGleichnamiges Projekt vorhandenProjektname ändern
SSO nicht konfiguriertShared Secret fehltAdmin: Env-Vars prüfen

SSO-Fehler beheben

Falls SSO nicht funktioniert:

  1. "SSO nicht konfiguriert"

    • SSO_SHARED_SECRET in beiden Apps setzen
    • Beide Apps neu starten/redeployen
  2. "Token abgelaufen"

    • Token ist älter als 60 Sekunden
    • Erneut über Softec einsteigen
  3. "Ungültiger Token"

    • Shared Secret stimmt nicht überein
    • Gleichen Wert in beiden Apps verwenden

Retry

Bei temporären Fehlern:

  1. Warten Sie einige Sekunden
  2. Klicken Sie auf Erneut versuchen
  3. Bei wiederholtem Fehler: Support kontaktieren

Nach dem Export

In Softec

Nach erfolgreichem Export finden Sie das Projekt in Fortuna Softec:

  1. Öffnen Sie Projekte
  2. Suchen Sie nach dem Projektnamen
  3. Öffnen Sie das Herzstück
  4. Alle Budget-Einträge sind vorhanden

Weiterarbeit

Im Herzstück können Sie:

  • Positionen weiter bearbeiten
  • Ist-Werte erfassen
  • Soll-Ist-Vergleich durchführen
  • Berichte erstellen

Budget-Re-Import

Wichtig: Bestehende Arbeitsdaten

Wenn Sie ein Budget in ein bestehendes Projekt importieren, das bereits Arbeitsdaten enthält (Zeiteinträge, Ausgaben, Material), greift ein spezielles Migrations-Verfahren.

Das Problem

Ein Projekt kann bereits erfasste Daten haben:

  • TimeEntries: Stundenerfassungen der Mitarbeiter
  • Expenses: Ausgaben und Materialkosten
  • Dokumente: Fotos, Berichte, etc.

Diese Daten sind an Budget-Positionen verknüpft. Wenn Sie ein neues Budget importieren, müssen diese Verknüpfungen erhalten bleiben.

Die Lösung: Automatische Migration

Der Import prüft und migriert automatisch:

Vor Import:
├── Position "Rohbau" (alt) ← 45 Stundeneinträge verknüpft
├── Position "Elektro" (alt) ← 12 Stundeneinträge verknüpft
└── Position "Sanitär" (alt) ← 5 Stundeneinträge verknüpft

Nach Import:
├── Position "Rohbau" (neu) ← 45 Stundeneinträge migriert ✓
├── Position "Elektro" (neu) ← 12 Stundeneinträge migriert ✓
├── Position "Sanitär" (neu) ← 5 Stundeneinträge migriert ✓
└── Position "Malerarbeiten" (neu) ← Neu, keine Daten

Ablauf beim Re-Import

1. Impact-Check

Vor dem Import prüft das System automatisch:

GeprüftBeschreibung
Bestehende ArbeitGibt es TimeEntries, Expenses?
Anzahl VerknüpfungenWie viele Einträge sind betroffen?
Matching-QuoteWie viele Positionen können zugeordnet werden?

2. Warnung mit Statistiken

Sie sehen eine Warnung mit konkreten Zahlen:

⚠️ Bestehende Daten gefunden

Dieses Projekt enthält bereits:

  • 62 Stundeneinträge
  • 8 Ausgaben

Diese werden automatisch auf die neuen Budget-Positionen migriert.

3. Bestätigung erforderlich

Sie müssen den Import explizit bestätigen:

  • Ich verstehe, dass bestehende Verknüpfungen migriert werden

4. Automatische Migration

Nach Bestätigung führt Softec die Migration durch:

  • Positionen werden nach Name/Beschreibung gematcht
  • Gefundene Matches werden automatisch verknüpft
  • Kein manuelles Eingreifen erforderlich

5. Ergebnis-Zusammenfassung

Nach dem Import sehen Sie das Ergebnis:

Import erfolgreich

  • 60 von 62 Verknüpfungen migriert
  • 2 Einträge konnten nicht zugeordnet werden

Nicht-gematchte Positionen

Kein Datenverlust

Wenn eine Position nicht gematcht werden kann, werden die Daten NICHT gelöscht. Sie bleiben auf den alten Tasks erhalten.

Was passiert mit nicht-gematchten Einträgen?

SzenarioVerhalten
Position umbenanntBleibt auf altem Task, manuell zuordnen
Position gelöschtBleibt auf altem Task, sichtbar in Reports
Neue PositionKeine Migration nötig (leer)

Warum so?

  • Datenverlust vermeiden: Erfasste Stunden sind wertvoll
  • Transparenz: Sie sehen "verwaiste" Einträge in Reports
  • Reversibilität: Nichts wird unwiderruflich getrennt
  • Kontext erhalten: "Diese Stunden gehörten zu Position X" bleibt sichtbar

Matching-Logik

Positionen werden nach folgenden Kriterien gematcht:

PrioritätKriteriumBeispiel
1Exakter Name"Rohbau" = "Rohbau" ✓
2Ähnlicher Name"Rohbau" ≈ "Rohbauarbeiten" ✓
3Positionsnummer"1.1.10" = "1.1.10" ✓

Best Practices

Für hohe Matching-Quote
  1. Positionsnamen beibehalten: Ändern Sie Namen nicht unnötig
  2. Struktur beibehalten: Gleiche Gewerke, gleiche Reihenfolge
  3. Vor Import prüfen: Schauen Sie sich die Warnung genau an
  4. Nach Import prüfen: Kontrollieren Sie die Migration in Reports

Technischer Hintergrund

Die Migration läuft komplett in Softec:

  • Single Source of Truth: Softec kennt die Datenstrukturen
  • Atomare Transaktion: Entweder komplett oder gar nicht
  • Audit-Trail: Alle Migrationen werden protokolliert
Angebot-Konstruktor                    Softec
│ │
│ 1. GET /check-budget-impact │
│─────────────────────────────────>│
│ { hasWork: true, count: 62 } │
│<─────────────────────────────────│
│ │
│ 2. User bestätigt │
│ │
│ 3. POST /create-project │
│─────────────────────────────────>│
│ │ (Migration läuft)
│ { migrated: 60, unmatched: 2 }│
│<─────────────────────────────────│

Synchronisation

Einweg-Export

Der Export ist eine Einweg-Übertragung. Änderungen in Softec werden nicht zurück zum Angebot-Konstruktor synchronisiert.

Wenn Sie Änderungen am Angebot vornehmen:

  1. Bearbeiten Sie das Angebot im Konstruktor
  2. Exportieren Sie erneut → Migration greift automatisch
  3. Oder: Bearbeiten Sie direkt in Softec

Konfiguration für Administratoren

SSO einrichten

Beide Anwendungen benötigen das gleiche SSO_SHARED_SECRET:

In Fortuna Softec (.env):

SSO_SHARED_SECRET=your-32-byte-secret-here
ANGEBOT_KONSTRUKTOR_URL=https://angebot.fortuna-softec.com

Im Angebot-Konstruktor (.env):

SSO_SHARED_SECRET=your-32-byte-secret-here

Secret generieren

# Auf Mac/Linux:
openssl rand -hex 32

Docker/Dokploy

Bei Docker-Deployments müssen die Env-Vars in der docker-compose.dokploy.yml whitelisted sein:

services:
app:
environment:
SSO_SHARED_SECRET: ${SSO_SHARED_SECRET}
ANGEBOT_KONSTRUKTOR_URL: ${ANGEBOT_KONSTRUKTOR_URL}

Nach Änderungen: Redeploy erforderlich.