Vollständige Implementierung des EngineeringSync-Middleware-Tools: - Windows Service (Kestrel :5050) mit FileSystemWatcher + SignalR - WPF Tray-App mit PendingChanges- und Projektverwaltungs-Fenster - Setup-Wizard (8-Schritte-Installer) - SQLite/EF Core Datenschicht (WAL-Modus) - SHA-256-basiertes Debouncing (2s Fenster) - Backup-System mit konfigurierbarer Aufbewahrung Bugfixes & Verbesserungen: - BUG-1: AppDbContext OnConfiguring invertierte Bedingung behoben - BUG-2: Event-Handler-Leak in TrayApp (Fenster-Singleton-Pattern) - BUG-3: ProjectConfigChanged SignalR-Signal in allen CRUD-Endpoints - BUG-5: Rename-Sync löscht alte Datei im Simulations-Ordner - BUG-6: Doppeltes Dispose von SignalR verhindert - BUG-7: Registry-Deinstallation nur EngineeringSync-Eintrag entfernt - S1: Path-Traversal-Schutz via SafeCombine() im SyncManager - E1: FSW Buffer 64KB + automatischer Re-Scan bei Overflow - E2: Retry-Logik (3x) für gesperrte Dateien mit exponentiellem Backoff - E4: Channel.Writer.TryComplete() beim Shutdown - C2: HubMethodNames-Konstanten statt Magic Strings - E3: Pagination in Changes-API (page/pageSize Query-Parameter) - A1: Fire-and-Forget mit try/catch + Logging Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
713 lines
28 KiB
Markdown
713 lines
28 KiB
Markdown
# EngineeringSync – Benutzerhandbuch
|
||
|
||
**Version 1.0.0** | Stand: März 2026
|
||
|
||
---
|
||
|
||
## Inhaltsverzeichnis
|
||
|
||
1. [Einführung](#1-einführung)
|
||
2. [Systemvoraussetzungen](#2-systemvoraussetzungen)
|
||
3. [Installation](#3-installation)
|
||
- 3.1 [Setup-Assistent starten](#31-setup-assistent-starten)
|
||
- 3.2 [Schritt: Willkommen](#32-schritt-willkommen)
|
||
- 3.3 [Schritt: Installation](#33-schritt-installation)
|
||
- 3.4 [Schritt: Erstes Projekt konfigurieren](#34-schritt-erstes-projekt-konfigurieren)
|
||
- 3.5 [Schritt: Backup-Einstellungen](#35-schritt-backup-einstellungen)
|
||
- 3.6 [Schritt: Start- und Verknüpfungs-Optionen](#36-schritt-start--und-verknüpfungs-optionen)
|
||
- 3.7 [Schritt: Zusammenfassung & Installation](#37-schritt-zusammenfassung--installation)
|
||
- 3.8 [Schritt: Fertig](#38-schritt-fertig)
|
||
4. [Die Tray-App im Überblick](#4-die-tray-app-im-überblick)
|
||
5. [Projekte verwalten](#5-projekte-verwalten)
|
||
- 5.1 [Neues Projekt anlegen](#51-neues-projekt-anlegen)
|
||
- 5.2 [Projekt bearbeiten](#52-projekt-bearbeiten)
|
||
- 5.3 [Projekt löschen](#53-projekt-löschen)
|
||
- 5.4 [Dateiüberwachung konfigurieren](#54-dateiüberwachung-konfigurieren)
|
||
6. [Änderungen überwachen und synchronisieren](#6-änderungen-überwachen-und-synchronisieren)
|
||
- 6.1 [Benachrichtigungen empfangen](#61-benachrichtigungen-empfangen)
|
||
- 6.2 [Das Fenster „Ausstehende Änderungen"](#62-das-fenster-ausstehende-änderungen)
|
||
- 6.3 [Änderungen synchronisieren](#63-änderungen-synchronisieren)
|
||
- 6.4 [Änderungen ignorieren](#64-änderungen-ignorieren)
|
||
- 6.5 [Änderungshistorie](#65-änderungshistorie)
|
||
7. [Backup-Funktion](#7-backup-funktion)
|
||
8. [Windows-Dienst verwalten](#8-windows-dienst-verwalten)
|
||
9. [Deinstallation](#9-deinstallation)
|
||
10. [Technische Architektur](#10-technische-architektur)
|
||
11. [Fehlerbehebung & FAQ](#11-fehlerbehebung--faq)
|
||
|
||
---
|
||
|
||
## 1. Einführung
|
||
|
||
**EngineeringSync** ist ein Middleware-Werkzeug, das die Arbeit zwischen der Konstruktionsabteilung (CAD) und der Simulationsabteilung (z. B. Process Simulate) koordiniert.
|
||
|
||
### Das Problem ohne EngineeringSync
|
||
|
||
In der täglichen Praxis arbeiten Konstrukteure und Simulationsingenieure an denselben Dateien, aber in unterschiedlichen Verzeichnissen. Dateien werden manuell kopiert – oft zur falschen Zeit, in der falschen Version, oder sogar während eine Simulation läuft. Das kann zu:
|
||
|
||
- **Datenverlust** führen (Überschreiben aktiver Simulationsdateien)
|
||
- **Inkonsistenz** erzeugen (Simulation basiert auf veralteten CAD-Daten)
|
||
- **Zeitverlust** verursachen (manuelles Tracking von Änderungen)
|
||
|
||
### Die Lösung mit EngineeringSync
|
||
|
||
```
|
||
Konstrukteur Simulationsingenieur
|
||
│ │
|
||
│ speichert CAD-Datei │
|
||
▼ │
|
||
Engineering-Ordner Simulations-Ordner
|
||
(wird überwacht) (Sync-Ziel)
|
||
│ │
|
||
└──────── EngineeringSync ──────────┘
|
||
│
|
||
├─ erkennt Änderungen automatisch
|
||
├─ benachrichtigt den Sim-Ingenieur
|
||
├─ wartet auf Freigabe
|
||
└─ kopiert erst nach Bestätigung
|
||
```
|
||
|
||
Der Simulationsingenieur behält die volle Kontrolle: Dateien werden **nie automatisch** überschrieben – erst nach expliziter Freigabe durch die Tray-App.
|
||
|
||
---
|
||
|
||
## 2. Systemvoraussetzungen
|
||
|
||
| Komponente | Mindestanforderung |
|
||
|---|---|
|
||
| Betriebssystem | Windows 10 (64-Bit) oder Windows 11 |
|
||
| .NET Runtime | .NET 10 (wird vom Installer mitgeliefert) |
|
||
| Arbeitsspeicher | 256 MB RAM (Dienst) |
|
||
| Festplatte | 150 MB freier Speicher |
|
||
| Netzwerk | Keine (rein lokal, `localhost:5050`) |
|
||
| Benutzerrechte | Administratorrechte für die Installation |
|
||
|
||
> **Hinweis:** EngineeringSync läuft ausschließlich lokal auf einem Rechner. Netzwerkfreigaben können als überwachte Pfade genutzt werden, sofern sie als Laufwerksbuchstabe eingebunden sind.
|
||
|
||
---
|
||
|
||
## 3. Installation
|
||
|
||
### 3.1 Setup-Assistent starten
|
||
|
||
Führen Sie die Installationsdatei `EngineeringSync-Setup.exe` aus. Falls eine Sicherheitswarnung von Windows erscheint, klicken Sie auf **„Weitere Informationen"** → **„Trotzdem ausführen"**.
|
||
|
||
Der Setup-Assistent öffnet sich als modernes Fenster mit einer linken Navigationsleiste, die den aktuellen Fortschritt anzeigt.
|
||
|
||
---
|
||
|
||
### 3.2 Schritt: Willkommen
|
||
|
||
Der erste Schritt begrüßt Sie und gibt einen Überblick über die installierten Komponenten:
|
||
|
||
- **EngineeringSync-Dienst** – der Hintergrunddienst, der Dateien überwacht
|
||
- **Tray-App** – die Benutzeroberfläche im Windows-Systemtray
|
||
- **SQLite-Datenbank** – lokale Speicherung aller Änderungen und Konfigurationen
|
||
|
||
Klicken Sie auf **„Weiter →"** um fortzufahren.
|
||
|
||
---
|
||
|
||
### 3.3 Schritt: Installation
|
||
|
||
Wählen Sie den **Installationsordner**. Der Standardpfad lautet:
|
||
|
||
```
|
||
C:\Program Files\EngineeringSync\
|
||
```
|
||
|
||
Sie können über das Ordner-Symbol einen anderen Pfad wählen. Klicken Sie auf **„Weiter →"**.
|
||
|
||
---
|
||
|
||
### 3.4 Schritt: Erstes Projekt konfigurieren
|
||
|
||
Dies ist der wichtigste Konfigurationsschritt. Sie definieren hier Ihr erstes überwachtes Projekt.
|
||
|
||
#### Projektname
|
||
|
||
Vergeben Sie einen aussagekräftigen Namen, z. B. `Linie 3 – Roboterzelle` oder `Projekt Alpha`.
|
||
|
||
#### Engineering-Quellpfad *(wird überwacht)*
|
||
|
||
Der Ordner, in dem der **Konstrukteur** arbeitet und CAD-Dateien speichert. Jede Änderung in diesem Verzeichnis wird automatisch erfasst und dem Simulationsingenieur gemeldet.
|
||
|
||
Beispiel: `C:\CAD-Projekte\Linie3\`
|
||
|
||
> Klicken Sie auf das **Ordner-Symbol** rechts neben dem Eingabefeld um einen Ordner per Dialog auszuwählen.
|
||
|
||
#### Simulations-Zielpfad *(Sync-Ziel)*
|
||
|
||
Der Ordner, in dem der **Simulationsingenieur** arbeitet. Freigegebene Änderungen werden in dieses Verzeichnis kopiert (mit automatischem Backup der bestehenden Dateien).
|
||
|
||
Beispiel: `C:\ProcessSimulate\Projekte\Linie3\`
|
||
|
||
#### Überwachte Dateien
|
||
|
||
Sie können wählen, welche Dateitypen überwacht werden:
|
||
|
||
| Option | Beschreibung |
|
||
|---|---|
|
||
| **Alle Dateitypen überwachen** | Jede Dateiänderung im Ordner wird protokolliert (unabhängig von der Endung) |
|
||
| **Spezifische Endungen** | Nur bestimmte Dateitypen werden überwacht |
|
||
|
||
Für spezifische Endungen stehen Quick-Select-Buttons bereit:
|
||
|
||
| Button | Format | Verwendung |
|
||
|---|---|---|
|
||
| `.jt` | JT (Jupiter Tesselation) | Siemens NX, Teamcenter |
|
||
| `.cojt` | Compound JT | Process Simulate Assemblies |
|
||
| `.xml` | XML | Konfigurationsdateien |
|
||
| `.stp` / `.step` | STEP | CAD-Austauschformat |
|
||
| `.igs` / `.iges` | IGES | Älteres CAD-Austauschformat |
|
||
| `.prt` | Part File | NX Part-Dateien |
|
||
|
||
Sie können auch manuell Endungen (komma-getrennt) eingeben, z. B.:
|
||
`.jt, .cojt, .xml, .prt`
|
||
|
||
---
|
||
|
||
### 3.5 Schritt: Backup-Einstellungen
|
||
|
||
Bevor EngineeringSync eine Simulationsdatei überschreibt, kann automatisch eine Sicherungskopie erstellt werden.
|
||
|
||
#### Backups aktivieren
|
||
|
||
Aktivieren Sie den Schalter um Backups zu aktivieren (empfohlen). Das Backup wird unmittelbar **vor** dem Überschreiben erstellt.
|
||
|
||
Das Namensschema der Backup-Datei lautet:
|
||
`{Dateiname}_{JJJJMMTT_HHMMSS}.bak`
|
||
|
||
Beispiel: `Roboter_Arm.jt_20260315_143022.bak`
|
||
|
||
#### Backup-Speicherort
|
||
|
||
| Option | Beschreibung |
|
||
|---|---|
|
||
| **Gleicher Ordner** | Das Backup liegt neben der Originaldatei (Standard) |
|
||
| **Eigener Backup-Ordner** | Alle Backups werden zentral in einem Ordner gesammelt |
|
||
|
||
#### Aufbewahrung
|
||
|
||
Legen Sie fest, wie viele Backups **pro Datei** maximal behalten werden:
|
||
|
||
- `0` = unbegrenzt (alle Backups behalten)
|
||
- `5` = die letzten 5 Backups werden behalten, ältere werden gelöscht
|
||
|
||
---
|
||
|
||
### 3.6 Schritt: Start- und Verknüpfungs-Optionen
|
||
|
||
#### Autostart
|
||
|
||
| Option | Empfehlung | Beschreibung |
|
||
|---|---|---|
|
||
| **Windows-Dienst automatisch starten** | ✅ Empfohlen | Der Hintergrunddienst startet mit Windows |
|
||
| **Tray-App bei Anmeldung starten** | ✅ Empfohlen | Die Tray-App erscheint nach dem Login automatisch |
|
||
|
||
#### Verknüpfungen
|
||
|
||
| Option | Beschreibung |
|
||
|---|---|
|
||
| **Desktop-Verknüpfung** | Startet die Tray-App per Doppelklick vom Desktop |
|
||
| **Startmenü-Eintrag** | EngineeringSync im Windows-Startmenü |
|
||
|
||
#### Nach Installation
|
||
|
||
| Option | Beschreibung |
|
||
|---|---|
|
||
| **Tray-App nach Installation starten** | Startet die App direkt nach Abschluss |
|
||
|
||
---
|
||
|
||
### 3.7 Schritt: Zusammenfassung & Installation
|
||
|
||
Überprüfen Sie alle gewählten Einstellungen in der Zusammenfassung. Mit **„Installieren"** wird die Installation durchgeführt:
|
||
|
||
1. Dateien werden in den Installationsordner kopiert
|
||
2. Der Windows-Dienst `EngineeringSync` wird registriert
|
||
3. Der Dienst wird gestartet
|
||
4. Autostart-Einträge werden gesetzt (falls ausgewählt)
|
||
5. Verknüpfungen werden erstellt (falls ausgewählt)
|
||
|
||
Ein Fortschrittsbalken zeigt den aktuellen Status an.
|
||
|
||
---
|
||
|
||
### 3.8 Schritt: Fertig
|
||
|
||
Die Installation ist abgeschlossen. Klicken Sie auf **„Schließen"** um den Setup-Assistenten zu beenden. Falls die Option „Tray-App nach Installation starten" aktiviert war, erscheint das Tray-Icon automatisch in der Windows-Taskleiste.
|
||
|
||
---
|
||
|
||
## 4. Die Tray-App im Überblick
|
||
|
||
Die Tray-App lebt im **Windows-Systemtray** (rechte Seite der Taskleiste, neben der Uhr).
|
||
|
||
```
|
||
Taskleiste: [...] [🔔] [EngineeringSync-Icon] [Zeit]
|
||
▲
|
||
Rechtsklick-Menü:
|
||
┌─────────────────────────────────┐
|
||
│ 🔔 Ausstehende Änderungen (3) │
|
||
│ ⚙ Projekte verwalten │
|
||
│ ─────────────────────────────── │
|
||
│ ✕ Beenden │
|
||
└─────────────────────────────────┘
|
||
```
|
||
|
||
### Tray-Icon-Zustände
|
||
|
||
| Symbol | Bedeutung |
|
||
|---|---|
|
||
| Normal | Dienst läuft, keine ausstehenden Änderungen |
|
||
| Mit Zahl | Anzahl der ausstehenden Änderungen, die auf Freigabe warten |
|
||
|
||
### Toast-Benachrichtigungen
|
||
|
||
Sobald neue Dateländerungen erkannt werden, erscheint automatisch eine Windows-Benachrichtigung:
|
||
|
||
```
|
||
EngineeringSync
|
||
───────────────
|
||
Projekt "Linie 3": 2 neue Änderungen
|
||
```
|
||
|
||
Ein Klick auf die Benachrichtigung öffnet direkt das Fenster „Ausstehende Änderungen".
|
||
|
||
---
|
||
|
||
## 5. Projekte verwalten
|
||
|
||
Über **Rechtsklick → „Projekte verwalten"** öffnet sich das Projektverwaltungs-Fenster.
|
||
|
||
### 5.1 Neues Projekt anlegen
|
||
|
||
1. Klicken Sie auf **„+ Projekt hinzufügen"**
|
||
2. Füllen Sie die Felder aus (gleiche Felder wie im Setup-Assistenten)
|
||
3. Bestätigen Sie mit **„Speichern"**
|
||
|
||
Der Dienst beginnt sofort mit der Überwachung des neuen Ordners. Ein initialer Scan vergleicht vorhandene Dateien zwischen Engineering- und Simulations-Ordner und erstellt für abweichende Dateien sofort ausstehende Änderungen.
|
||
|
||
### 5.2 Projekt bearbeiten
|
||
|
||
1. Wählen Sie ein Projekt in der Liste aus
|
||
2. Klicken Sie auf **„Bearbeiten"** (oder Doppelklick)
|
||
3. Ändern Sie die gewünschten Felder
|
||
4. Bestätigen Sie mit **„Speichern"**
|
||
|
||
> **Hinweis:** Nach dem Speichern wird der Dateiwatcher automatisch neu gestartet. Laufende Scans werden abgebrochen und neu begonnen.
|
||
|
||
### 5.3 Projekt löschen
|
||
|
||
1. Wählen Sie ein Projekt in der Liste aus
|
||
2. Klicken Sie auf **„Löschen"**
|
||
3. Bestätigen Sie die Sicherheitsfrage
|
||
|
||
> **Achtung:** Beim Löschen eines Projekts werden auch alle zugehörigen ausstehenden Änderungen und die Datei-Revisionshistorie gelöscht. Die tatsächlichen Dateien auf der Festplatte werden **nicht** verändert.
|
||
|
||
### 5.4 Dateiüberwachung konfigurieren
|
||
|
||
#### Aktive / inaktive Projekte
|
||
|
||
Projekte können vorübergehend deaktiviert werden (z. B. während Wartungsarbeiten). Ein deaktiviertes Projekt erzeugt keine neuen Änderungseinträge.
|
||
|
||
#### Dateierweiterungen
|
||
|
||
Die überwachten Dateitypen können jederzeit angepasst werden. Änderungen wirken sich auf zukünftige Ereignisse aus – bestehende ausstehende Änderungen bleiben erhalten.
|
||
|
||
---
|
||
|
||
## 6. Änderungen überwachen und synchronisieren
|
||
|
||
### 6.1 Benachrichtigungen empfangen
|
||
|
||
EngineeringSync überwacht den Engineering-Ordner **in Echtzeit** mittels `FileSystemWatcher`. Folgende Ereignisse werden erfasst:
|
||
|
||
| Ereignistyp | Beschreibung |
|
||
|---|---|
|
||
| **Erstellt** | Eine neue Datei wurde im Engineering-Ordner abgelegt |
|
||
| **Geändert** | Eine bestehende Datei wurde modifiziert (SHA-256-Prüfung bestätigt tatsächliche Änderung) |
|
||
| **Umbenannt** | Eine Datei wurde umbenannt oder verschoben |
|
||
| **Gelöscht** | Eine Datei wurde aus dem Engineering-Ordner entfernt |
|
||
|
||
#### Debouncing (Entprellung)
|
||
|
||
Schnelle aufeinanderfolgende Speichervorgänge (z. B. Autosave alle 5 Sekunden) werden zu einem einzigen Ereignis zusammengefasst. Das Zeitfenster beträgt **2 Sekunden** – erst nach 2 Sekunden ohne weitere Aktivität auf derselben Datei wird das Ereignis verarbeitet.
|
||
|
||
#### SHA-256-Prüfung
|
||
|
||
Bevor eine Änderung als „ausstehend" eingetragen wird, vergleicht EngineeringSync den SHA-256-Hash der Datei mit dem zuletzt gespeicherten Hash. Nur bei tatsächlich unterschiedlichem Inhalt wird eine neue Änderung erfasst. Das verhindert Falschmeldungen bei Metadaten-Änderungen (z. B. Zeitstempel-Updates).
|
||
|
||
### 6.2 Das Fenster „Ausstehende Änderungen"
|
||
|
||
Öffnen Sie das Fenster über **Rechtsklick → „Ausstehende Änderungen"** oder per Klick auf eine Toast-Benachrichtigung.
|
||
|
||
```
|
||
┌─────────────────────────────────────────────────────────────┐
|
||
│ Ausstehende Änderungen │
|
||
│ │
|
||
│ Projekt: [Linie 3 – Roboterzelle ▼] │
|
||
│ │
|
||
│ ┌──────────────────────────────────────┬──────┬──────────┐ │
|
||
│ │ Datei │ Typ │ Datum │ │
|
||
│ ├──────────────────────────────────────┼──────┼──────────┤ │
|
||
│ │ ☑ Roboter\Arm_links.jt │ Mod. │ 14:30:22 │ │
|
||
│ │ ☑ Roboter\Arm_rechts.jt │ Neu │ 14:31:05 │ │
|
||
│ │ ☐ Basis\Grundplatte.jt │ Mod. │ 09:15:44 │ │
|
||
│ └──────────────────────────────────────┴──────┴──────────┘ │
|
||
│ │
|
||
│ [Alle wählen] [Keine] [✔ Sync] [✖ Ignorieren] │
|
||
└─────────────────────────────────────────────────────────────┘
|
||
```
|
||
|
||
#### Projektauswahl
|
||
|
||
Falls mehrere Projekte konfiguriert sind, wählen Sie das gewünschte Projekt aus dem Dropdown-Menü. Die Tabelle aktualisiert sich automatisch per SignalR – neue Änderungen erscheinen sofort ohne manuelles Neuladen.
|
||
|
||
#### Änderungstypen
|
||
|
||
| Symbol | Typ | Bedeutung |
|
||
|---|---|---|
|
||
| **Neu** | Created | Datei existiert noch nicht im Simulations-Ordner |
|
||
| **Mod.** | Modified | Datei wurde inhaltlich geändert (anderer SHA-256) |
|
||
| **Umbn.** | Renamed | Datei wurde umbenannt (Alter Name wird im Sim-Ordner entfernt) |
|
||
| **Gel.** | Deleted | Datei wurde aus dem Engineering-Ordner gelöscht |
|
||
|
||
### 6.3 Änderungen synchronisieren
|
||
|
||
1. Wählen Sie die gewünschten Änderungen per Checkbox aus (oder **„Alle wählen"**)
|
||
2. Klicken Sie auf **„✔ Sync"**
|
||
|
||
EngineeringSync verarbeitet jede ausgewählte Änderung:
|
||
|
||
**Bei „Erstellt" oder „Geändert":**
|
||
```
|
||
1. Backup der bestehenden Simulationsdatei erstellen (falls Backup aktiviert)
|
||
2. Zielverzeichnis erstellen (falls nicht vorhanden)
|
||
3. Datei aus Engineering-Ordner in Simulations-Ordner kopieren
|
||
4. Änderung als "Synchronisiert" markieren
|
||
```
|
||
|
||
**Bei „Gelöscht":**
|
||
```
|
||
1. Backup der Simulationsdatei erstellen (falls Backup aktiviert)
|
||
2. Datei aus Simulations-Ordner entfernen
|
||
3. Änderung als "Synchronisiert" markieren
|
||
```
|
||
|
||
**Bei „Umbenannt":**
|
||
```
|
||
1. Neue Datei unter neuem Namen in Simulations-Ordner kopieren
|
||
2. Alte Datei aus Simulations-Ordner entfernen
|
||
3. Änderung als "Synchronisiert" markieren
|
||
```
|
||
|
||
> **Tipp:** Sie müssen nicht auf alle Änderungen gleichzeitig reagieren. Wählen Sie gezielt die Dateien aus, die für die aktuell laufende Simulation relevant sind.
|
||
|
||
### 6.4 Änderungen ignorieren
|
||
|
||
Änderungen, die für die Simulation nicht relevant sind (z. B. temporäre Hilfsdateien, Arbeitsversionen), können ignoriert werden:
|
||
|
||
1. Wählen Sie die irrelevanten Änderungen per Checkbox aus
|
||
2. Klicken Sie auf **„✖ Ignorieren"**
|
||
|
||
Ignorierte Änderungen werden in der Hauptliste ausgeblendet und in der **Historienliste** mit dem Status „Ignoriert" gespeichert. Sie haben **keinen Einfluss** auf den Simulations-Ordner.
|
||
|
||
### 6.5 Änderungshistorie
|
||
|
||
Die Historienliste zeigt die letzten 100 bearbeiteten Änderungen (synchronisiert oder ignoriert) mit Zeitstempel und Bearbeiter-Status. Die Ansicht dient zur Nachvollziehbarkeit: Wann wurde welche Datei zuletzt synchronisiert?
|
||
|
||
---
|
||
|
||
## 7. Backup-Funktion
|
||
|
||
Das Backup-System schützt Simulationsdateien vor ungewolltem Überschreiben.
|
||
|
||
### Wann wird ein Backup erstellt?
|
||
|
||
Ein Backup wird **unmittelbar vor** dem Überschreiben einer Datei erstellt, also beim Synchronisieren einer „Geändert"-, „Erstellt"- oder „Gelöscht"-Änderung, wenn die Datei bereits im Simulations-Ordner existiert.
|
||
|
||
### Backup-Dateiname
|
||
|
||
Das Namensschema: `{Originalname}_{JJJJMMTT_HHMMSS}.bak`
|
||
|
||
Beispiele:
|
||
```
|
||
Roboter_Arm.jt_20260315_143022.bak
|
||
Grundplatte.cojt_20260316_091500.bak
|
||
```
|
||
|
||
### Backup-Speicherort
|
||
|
||
| Modus | Speicherort |
|
||
|---|---|
|
||
| Gleicher Ordner | Backup liegt neben der Simulationsdatei |
|
||
| Eigener Ordner | Alle Backups in einem zentralen Verzeichnis (Unterordnerstruktur bleibt erhalten) |
|
||
|
||
### Aufbewahrungsregel
|
||
|
||
Bei aktivierter Aufbewahrungsregel (z. B. max. 5 Backups pro Datei) wird **nach** dem Erstellen des neuen Backups geprüft, ob ältere Backups gelöscht werden müssen. Die Backups werden nach Erstellungsdatum sortiert – die ältesten werden zuerst gelöscht.
|
||
|
||
### Backup manuell wiederherstellen
|
||
|
||
EngineeringSync bietet keine automatische Wiederherstellungsfunktion. Um eine Backup-Datei manuell wiederherzustellen:
|
||
|
||
1. Navigieren Sie zum Backup-Speicherort im Windows Explorer
|
||
2. Benennen Sie die `.bak`-Datei um (entfernen Sie den Zeitstempel und `.bak`)
|
||
3. Kopieren Sie die Datei an den gewünschten Ort
|
||
|
||
---
|
||
|
||
## 8. Windows-Dienst verwalten
|
||
|
||
Der **EngineeringSync-Dienst** läuft als Windows-Dienst und ist unabhängig von der Tray-App.
|
||
|
||
### Dienst-Status prüfen
|
||
|
||
Öffnen Sie den Windows Taskmanager (Strg+Umsch+Esc) → Reiter **„Dienste"**, oder:
|
||
|
||
```powershell
|
||
# PowerShell
|
||
Get-Service EngineeringSync
|
||
|
||
# Ausgabe:
|
||
Status Name DisplayName
|
||
------ ---- -----------
|
||
Running EngineeringSync EngineeringSync
|
||
```
|
||
|
||
### Dienst manuell steuern
|
||
|
||
```powershell
|
||
# Dienst starten
|
||
Start-Service EngineeringSync
|
||
|
||
# Dienst stoppen
|
||
Stop-Service EngineeringSync
|
||
|
||
# Dienst neu starten
|
||
Restart-Service EngineeringSync
|
||
```
|
||
|
||
Alternativ über die **Windows Dienste-Verwaltung** (Win+R → `services.msc`).
|
||
|
||
### API-Endpunkt
|
||
|
||
Der Dienst stellt eine lokale REST-API unter `http://localhost:5050` bereit. Die Tray-App kommuniziert über diese API. Sie können die API auch direkt im Browser testen:
|
||
|
||
| Endpunkt | Beschreibung |
|
||
|---|---|
|
||
| `GET /api/projects` | Alle konfigurierten Projekte |
|
||
| `GET /api/changes/{projectId}` | Ausstehende Änderungen eines Projekts |
|
||
| `GET /api/changes/{projectId}/history` | Letzte 100 bearbeitete Änderungen |
|
||
|
||
> **Hinweis:** Der API-Endpunkt ist nur lokal erreichbar (`localhost`). Er ist nicht durch Authentifizierung gesichert – stellen Sie sicher, dass kein unberechtigter Netzwerkzugang besteht.
|
||
|
||
---
|
||
|
||
## 9. Deinstallation
|
||
|
||
### Über die Windows Einstellungen
|
||
|
||
1. Öffnen Sie **Einstellungen → Apps → Installierte Apps**
|
||
2. Suchen Sie nach „EngineeringSync"
|
||
3. Klicken Sie auf **„Deinstallieren"**
|
||
|
||
### Manuell
|
||
|
||
Führen Sie die Setup-Datei mit dem Parameter `/uninstall` aus:
|
||
|
||
```cmd
|
||
EngineeringSync-Setup.exe /uninstall
|
||
```
|
||
|
||
### Was wird bei der Deinstallation entfernt?
|
||
|
||
| Element | Wird entfernt? |
|
||
|---|---|
|
||
| Installationsdateien | ✅ Ja |
|
||
| Windows-Dienst | ✅ Ja (wird gestoppt und gelöscht) |
|
||
| Autostart-Eintrag | ✅ Ja (nur der EngineeringSync-Eintrag) |
|
||
| Desktop-Verknüpfung | ✅ Ja |
|
||
| Startmenü-Eintrag | ✅ Ja |
|
||
| SQLite-Datenbank | ❌ Nein (Konfiguration und Historie bleiben erhalten) |
|
||
| Backup-Dateien | ❌ Nein |
|
||
| Engineering-/Simulations-Ordner | ❌ Nein (niemals) |
|
||
|
||
> Die SQLite-Datenbank (`engineeringsync.db`) verbleibt im Installationsordner und kann manuell gelöscht werden.
|
||
|
||
---
|
||
|
||
## 10. Technische Architektur
|
||
|
||
Dieser Abschnitt richtet sich an technische Nutzer und Administratoren.
|
||
|
||
### Komponenten
|
||
|
||
```
|
||
┌─────────────────────────────────────────────────────────────┐
|
||
│ EngineeringSync │
|
||
│ │
|
||
│ ┌──────────────────┐ ┌───────────────────────────┐ │
|
||
│ │ TrayApp (WPF) │◄────│ Service (Worker Service) │ │
|
||
│ │ │ │ │ │
|
||
│ │ • Tray-Icon │ │ • FileSystemWatcher │ │
|
||
│ │ • Änderungs- │ │ • Debounce-Channel │ │
|
||
│ │ fenster │ │ • SHA-256-Hashing │ │
|
||
│ │ • Projekt- │ │ • SyncManager │ │
|
||
│ │ verwaltung │ │ • REST API (Port 5050) │ │
|
||
│ │ │ │ • SignalR Hub │ │
|
||
│ └────────┬─────────┘ └──────────────┬────────────┘ │
|
||
│ │ │ │
|
||
│ │ HTTP (REST + SignalR) │ │
|
||
│ └───────────────────────────────┘ │
|
||
│ │
|
||
│ ┌────────────────────────────────────────────────────┐ │
|
||
│ │ SQLite-Datenbank (WAL-Modus) │ │
|
||
│ │ • ProjectConfig • FileRevision • PendingChange │ │
|
||
│ └────────────────────────────────────────────────────┘ │
|
||
└─────────────────────────────────────────────────────────────┘
|
||
```
|
||
|
||
### Datenbankschema
|
||
|
||
**ProjectConfig** – Projektkonfigurationen
|
||
|
||
| Feld | Typ | Beschreibung |
|
||
|---|---|---|
|
||
| `Id` | GUID | Eindeutiger Bezeichner |
|
||
| `Name` | Text | Anzeigename des Projekts |
|
||
| `EngineeringPath` | Text | Überwachter Quellordner |
|
||
| `SimulationPath` | Text | Sync-Zielordner |
|
||
| `FileExtensions` | Text | Überwachte Dateitypen (komma-getrennt oder `*`) |
|
||
| `IsActive` | Bool | Überwachung aktiv/inaktiv |
|
||
| `BackupEnabled` | Bool | Backup aktiviert |
|
||
| `BackupPath` | Text? | Optionaler Backup-Pfad |
|
||
| `MaxBackupsPerFile` | Int | Max. Backups pro Datei (0 = unbegrenzt) |
|
||
|
||
**FileRevision** – Zuletzt bekannte Dateiversion
|
||
|
||
| Feld | Typ | Beschreibung |
|
||
|---|---|---|
|
||
| `Id` | GUID | Eindeutiger Bezeichner |
|
||
| `ProjectId` | GUID | Verweis auf Projekt |
|
||
| `RelativePath` | Text | Relativer Dateipfad |
|
||
| `FileHash` | Text | SHA-256-Hash des Dateiinhalts |
|
||
| `Size` | Long | Dateigröße in Bytes |
|
||
| `LastModified` | DateTime | Letzte Änderungszeit |
|
||
|
||
**PendingChange** – Ausstehende oder bearbeitete Änderungen
|
||
|
||
| Feld | Typ | Beschreibung |
|
||
|---|---|---|
|
||
| `Id` | GUID | Eindeutiger Bezeichner |
|
||
| `ProjectId` | GUID | Verweis auf Projekt |
|
||
| `RelativePath` | Text | Relativer Dateipfad |
|
||
| `ChangeType` | Enum | Created / Modified / Renamed / Deleted |
|
||
| `OldRelativePath` | Text? | Alter Pfad (nur bei Renamed) |
|
||
| `Status` | Enum | Pending / Synced / Ignored |
|
||
| `CreatedAt` | DateTime | Zeitpunkt der Erkennung |
|
||
| `SyncedAt` | DateTime? | Zeitpunkt der Bearbeitung |
|
||
|
||
### Kommunikation (SignalR)
|
||
|
||
Die Tray-App empfängt Echtzeit-Benachrichtigungen über SignalR (WebSockets):
|
||
|
||
| Methode | Parameter | Auslöser |
|
||
|---|---|---|
|
||
| `ReceiveChangeNotification` | `projectId, projectName, count` | Neue ausstehende Änderungen erkannt |
|
||
| `ProjectConfigChanged` | – | Projekt wurde erstellt, geändert oder gelöscht |
|
||
|
||
### Datenbankdatei
|
||
|
||
```
|
||
%ProgramFiles%\EngineeringSync\engineeringsync.db
|
||
```
|
||
|
||
Die Datenbank läuft im **WAL-Modus** (Write-Ahead Logging), was gleichzeitige Lese- und Schreibzugriffe ohne Sperren ermöglicht.
|
||
|
||
---
|
||
|
||
## 11. Fehlerbehebung & FAQ
|
||
|
||
### Die Tray-App zeigt „Dienst nicht erreichbar"
|
||
|
||
**Ursache:** Der EngineeringSync-Dienst läuft nicht oder Port 5050 ist belegt.
|
||
|
||
**Lösung:**
|
||
1. Prüfen Sie den Dienst-Status: `Get-Service EngineeringSync`
|
||
2. Starten Sie den Dienst: `Start-Service EngineeringSync`
|
||
3. Falls Port 5050 belegt ist: `netstat -ano | findstr :5050`
|
||
|
||
---
|
||
|
||
### Änderungen werden nicht erkannt
|
||
|
||
**Mögliche Ursachen und Lösungen:**
|
||
|
||
| Ursache | Lösung |
|
||
|---|---|
|
||
| Projekt ist inaktiv | In Projektverwaltung das Projekt aktivieren |
|
||
| Falsche Dateierweiterung konfiguriert | Erweiterungen prüfen oder „Alle Dateitypen" wählen |
|
||
| Engineering-Pfad nicht erreichbar | Pfad im Explorer prüfen, Netzlaufwerk verbunden? |
|
||
| Dienst gestoppt | `Start-Service EngineeringSync` |
|
||
|
||
---
|
||
|
||
### Sehr viele Änderungen auf einmal (z. B. nach Bulk-Copy)
|
||
|
||
Bei vielen gleichzeitigen Dateiereignissen kann der interne Event-Puffer des Datei-Watchers überlaufen. EngineeringSync startet in diesem Fall automatisch einen vollständigen Re-Scan des Engineering-Ordners. Dieser Vorgang kann bei großen Ordnern mehrere Minuten dauern.
|
||
|
||
---
|
||
|
||
### Eine Datei ist gesperrt und wird nicht synchronisiert
|
||
|
||
CAD-Anwendungen sperren Dateien während der Bearbeitung exklusiv. EngineeringSync versucht beim Erkennen einer gesperrten Datei automatisch bis zu **3 Wiederholungen** mit zunehmendem Warteintervall (2s, 4s, 6s). Wenn die Datei nach allen Versuchen noch gesperrt ist, wird das Ereignis in den Logs vermerkt und beim nächsten periodischen Scan erneut versucht.
|
||
|
||
**Empfehlung:** Synchronisieren Sie Dateien erst, wenn die CAD-Anwendung die Datei freigegeben hat (Datei geschlossen oder gespeichert).
|
||
|
||
---
|
||
|
||
### Wo liegen die Log-Dateien?
|
||
|
||
```
|
||
%ProgramFiles%\EngineeringSync\logs\
|
||
```
|
||
|
||
Oder im Windows Ereignisprotokoll unter:
|
||
**Ereignisanzeige → Windows-Protokolle → Anwendung** (Quelle: `EngineeringSync`)
|
||
|
||
---
|
||
|
||
### Kann ich mehrere Engineering-Ordner mit einem Simulations-Ordner verbinden?
|
||
|
||
Ja – legen Sie pro Engineering-Ordner ein eigenes Projekt an. Mehrere Projekte können auf denselben Simulations-Ordner zeigen, solange sich die relativen Pfade nicht überschneiden.
|
||
|
||
---
|
||
|
||
### Was passiert, wenn ich eine Datei im Simulations-Ordner manuell bearbeite?
|
||
|
||
EngineeringSync überwacht **nur** den Engineering-Quellordner. Änderungen im Simulations-Ordner werden nicht erfasst. Bei der nächsten Synchronisation einer entsprechenden Datei wird die manuell bearbeitete Version im Simulations-Ordner durch ein Backup gesichert und dann überschrieben.
|
||
|
||
---
|
||
|
||
### Wie hoch ist der Ressourcenverbrauch des Dienstes?
|
||
|
||
Im Normalbetrieb (Überwachung aktiv, keine Aktivität):
|
||
- CPU: < 0,1 %
|
||
- RAM: ca. 50–80 MB
|
||
|
||
Bei einem vollständigen Re-Scan großer Ordner (>10.000 Dateien) kann die CPU-Last kurzzeitig auf 10–20 % steigen.
|
||
|
||
---
|
||
|
||
### Kann ich die Datenbank auf einem Netzlaufwerk ablegen?
|
||
|
||
Nein. Die SQLite-Datenbank muss auf einem lokalen Laufwerk liegen. SQLite und Netzlaufwerke sind nicht kompatibel (Sperr-Mechanismus funktioniert über SMB nicht zuverlässig).
|
||
|
||
---
|
||
|
||
*Dieses Handbuch bezieht sich auf EngineeringSync Version 1.0.0.*
|
||
*Für Fragen und Support wenden Sie sich an den Projektverantwortlichen.*
|