Files
DuckGit/PRD.md
2026-03-07 15:42:30 +01:00

3.4 KiB
Raw Blame History

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.