3.4 KiB
PRD: System Wersjonowania Plików CNC (CNC-Sync) – v1.0
1. Cel Projektu (Overview)
Stworzenie rozproszonego systemu wersjonowania plików (DVCS) dla środowisk warsztatowych (CAD/CNC). System ma zapewnić spójność plików G-code oraz projektów CAD pomiędzy komputerami projektantów a maszynami CNC w lokalnej sieci LAN, eliminując potrzebę używania pendrive'ów.
2. Model Stanów Pliku (State Machine)
Każdy plik w śledzonym folderze ("Repozytorium") musi znajdować się w jednym z czterech stanów:
- Untracked: Plik nowy, nieznany systemowi.
- Tracked: Plik zsynchronizowany z serwerem (lokalny hash == hash na serwerze).
- Modified: Plik znany systemowi, ale zmieniony lokalnie.
- Staged: Plik oznaczony przez użytkownika do wysłania (przygotowany do Commitu).
3. Funkcjonalności Kluczowe (Scope)
-
Background Watchdog: Usługa w tle monitorująca operacje:
Create,Update,Rename,Delete. -
Windows Toasts: Powiadomienia systemowe pytające użytkownika: "Czy śledzić nowy plik?" po wykryciu operacji Create.
-
System Tray App: Ikona w zasobniku z trzema opcjami:
- Zapisz (Commit UI): Okno wyboru plików ze stanu Modified/Staged, pole tekstowe na opis zmian (co i dlaczego).
- Ustawienia: Wybór folderu repozytorium, nazwa użytkownika.
- Przeglądarka Repozytorium (Explorer):
- Wgląd w pełną strukturę plików na serwerze.
- Podgląd historii wersji dla każdego pliku (kto, kiedy, co zmienił).
- Selective Sync: Możliwość zaznaczenia, które pliki/foldery mają być pobrane i utrzymywane lokalnie na danej maszynie.
- Wyjście: Zamknięcie agenta.
-
Synchronizacja: Informowanie o nowej wersji na serwerze bez automatycznego nadpisywania (użytkownik decyduje, kiedy pobrać aktualizację, zachowując tę samą nazwę pliku).
4. Architektura Techniczna
-
Serwer (Centralne Repozytorium)
- Blob Storage: Katalog z plikami, gdzie nazwa pliku to jego hash. Zapobiega to duplikacji tych samych wersji.
- Metadata DB: Baza (np. SQLite/PostgreSQL) przechowująca strukturę drzewa plików, historię commitów i powiązania hashy z nazwami plików.
-
Klient (Agent)
Instalowany na maszynach i stacjach CAD. Wykorzystuje bibliotekę watchdog do monitorowania systemu plików. Lokalna struktura zarządzania:
- Index: Plik (np. JSON lub SQLite) przechowujący aktualny stan "snapshotu" lokalnego folderu (ścieżka, hash, data ostatniej modyfikacji). Służy do szybkiego wykrywania zmian bez liczenia hashy wszystkich plików przy każdym starcie.
- Config: Plik konfiguracyjny specyficzny dla maszyny (lista plików do synchronizacji, dane serwera, nazwa użytkownika).
- Local Blobs: (Opcjonalnie) tymczasowy bufor dla plików przygotowanych do wysłania (Staged).
-
Język: Python.
-
Komunikacja: Odporna na awarie sieci, wspierająca tryb offline (buforowanie zmian lokalnie).
5. Dane i Bezpieczeństwo
- Identyfikacja: Unikalny username dla każdej instalacji.
- Selective Sync: Maszyna CNC przy tokarce nie musi posiadać plików dla frezarki. Użytkownik decyduje o subskrypcji plików w Przeglądarce Repozytorium.
- Konflikty: Brak automatycznego łączenia (merging). System informuje o nowej wersji, użytkownik akceptuje nadpisanie lokalnego pliku wersją z serwera.
- Skala: Obsługa do ok. 1000 plików w jednym repozytorium.