first prd
This commit is contained in:
52
PRD.md
Normal file
52
PRD.md
Normal file
@@ -0,0 +1,52 @@
|
||||
# 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.
|
||||
Reference in New Issue
Block a user