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
- Loggen Sie sich in Fortuna Softec ein
- Navigieren Sie zu:
- Angebote → Button "Angebots-Konstruktor öffnen", oder
- Projekt-Details → Button "Angebots-Konstruktor"
- Ein neuer Tab öffnet sich mit dem Angebot-Konstruktor
- 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 erstellt | Beschreibung |
|---|---|
| Projekt | Neues Projekt mit Angebotsdaten |
| Budget (Herzstück) | Alle Positionen als Budget-Einträge |
| Gewerke | Werden zu Budget-Kategorien |
| Kundendaten | Werden dem Projekt zugeordnet |
Export durchführen
Voraussetzungen
- Ein fertiges Angebot im Angebot-Konstruktor
- Konfigurierte Softec-Verbindung (siehe Einstellungen)
- Berechtigung in Fortuna Softec (Admin oder Backoffice)
Schritt für Schritt
- Öffnen Sie das Angebot
- Klicken Sie auf Zu Softec exportieren
- Prüfen Sie die Zusammenfassung:
- Projektname
- Kunde
- Anzahl Positionen
- Gesamtsumme
- Wählen Sie die Umgebung (Dev oder Prod)
- 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
| Feld | Quelle |
|---|---|
| Projektname | Angebots-Titel |
| Kunde | Angebots-Kunde |
| Beschreibung | Angebots-Beschreibung |
| Erstellt am | Export-Datum |
| Erstellt von | Ihr Benutzer |
Budget-Einträge
Jede Angebots-Position wird zu einem Budget-Eintrag:
| Angebot | → | Herzstück (Budget) |
|---|---|---|
| Positionsnummer | → | Position |
| Beschreibung | → | Bezeichnung |
| Menge | → | Soll-Menge |
| Einheit | → | Einheit |
| Einzelpreis | → | Soll-EP |
| Gesamtpreis | → | Soll-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
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
| Fehler | Ursache | Lösung |
|---|---|---|
| Verbindungsfehler | Keine Verbindung zu Softec | Internet prüfen, Credentials prüfen |
| Authentifizierung fehlgeschlagen | Falsches Token/Passwort | Einstellungen prüfen |
| Keine Berechtigung | Benutzer hat keine Rechte | Admin kontaktieren |
| Projekt existiert | Gleichnamiges Projekt vorhanden | Projektname ändern |
| SSO nicht konfiguriert | Shared Secret fehlt | Admin: Env-Vars prüfen |
SSO-Fehler beheben
Falls SSO nicht funktioniert:
-
"SSO nicht konfiguriert"
SSO_SHARED_SECRETin beiden Apps setzen- Beide Apps neu starten/redeployen
-
"Token abgelaufen"
- Token ist älter als 60 Sekunden
- Erneut über Softec einsteigen
-
"Ungültiger Token"
- Shared Secret stimmt nicht überein
- Gleichen Wert in beiden Apps verwenden
Retry
Bei temporären Fehlern:
- Warten Sie einige Sekunden
- Klicken Sie auf Erneut versuchen
- Bei wiederholtem Fehler: Support kontaktieren
Nach dem Export
In Softec
Nach erfolgreichem Export finden Sie das Projekt in Fortuna Softec:
- Öffnen Sie Projekte
- Suchen Sie nach dem Projektnamen
- Öffnen Sie das Herzstück
- 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
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üft | Beschreibung |
|---|---|
| Bestehende Arbeit | Gibt es TimeEntries, Expenses? |
| Anzahl Verknüpfungen | Wie viele Einträge sind betroffen? |
| Matching-Quote | Wie 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
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?
| Szenario | Verhalten |
|---|---|
| Position umbenannt | Bleibt auf altem Task, manuell zuordnen |
| Position gelöscht | Bleibt auf altem Task, sichtbar in Reports |
| Neue Position | Keine 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ät | Kriterium | Beispiel |
|---|---|---|
| 1 | Exakter Name | "Rohbau" = "Rohbau" ✓ |
| 2 | Ähnlicher Name | "Rohbau" ≈ "Rohbauarbeiten" ✓ |
| 3 | Positionsnummer | "1.1.10" = "1.1.10" ✓ |
Best Practices
- Positionsnamen beibehalten: Ändern Sie Namen nicht unnötig
- Struktur beibehalten: Gleiche Gewerke, gleiche Reihenfolge
- Vor Import prüfen: Schauen Sie sich die Warnung genau an
- 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
Der Export ist eine Einweg-Übertragung. Änderungen in Softec werden nicht zurück zum Angebot-Konstruktor synchronisiert.
Wenn Sie Änderungen am Angebot vornehmen:
- Bearbeiten Sie das Angebot im Konstruktor
- Exportieren Sie erneut → Migration greift automatisch
- 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.