# Koncepcja wykonania systemu
## Cel dokumentacji
Niniejszy dokument ma na celu przedstawienie koncepcji wymagań systemu. Można w nim przeczytać szczegółowy opis działania systemu
## Sceneriusze przypadków użycia
#### Rozpoczęcie procesu monitoringu danych użytkownika
Aktor: Zarejestrowany użytkownik
Warunki początkowe: Użytkownik zalogowany do systemu
Warunki końcowe: Dane użytkownika są monitorowane przez nasz system
Scenariusz główny:
1. Użytkownik przechodzi do panelu głównego
2. Użytkownik klika w kafelek "Monitoring danych"
3. Użytkownik klika w przycisk "Dodaj swoje dane"
4. Użytkownik wypełnia pola swoimi danymi i klika "Zapisz"
5. Ekran potwierdzający wyświtla się, jeśli wprowadzone dane są dobre użytkownik klika "Potwierdź"
6. Użytkownik wybiera forme powiadamiania o odnalezieniu jego danych w wycieku po czym klika zatwierdź
7. Użytkownik widzi ekran opisujący jak monitorowanie danych działa
8. Użytkownik klika "Potwierdź" i zostaje przeniesiony do ekranu głównego, jego dane zostały pomyślnie zapisane i są już monitorowane
Rozszerzenia
5a. - Użytkownik spostrzega, że wprowadzone dane są niepoprawne
- Użytkownik klika edytuj
- Użytkownik edytuje swoje dane i klika zapisz
- Użytkownik wraca do ekranu kroku 5
7a -Użytkownik klika "Dowiedz się więcej"
- W nowej karcie otwiera się strona z dokumentacją
#### Ocena bezpieczeństwa użytkownika
Aktor: Zarejestrowany użytkownik
Warunki początkowe: Użytkownik zalogowany do systemu
Warunki końcowe: Wygenerowanie dokładnego raportu z oceną bezpieczeństwa użytkownika
Scenariusz główny:
1. Użytkownik klika w panel "Generuj ocene"
2. Użytkownik wypełnia wyświetloną ankiete na temat jego zachowań i etyki w interneci oraz systemie operacyjnym
3. Użytkownik klika "Zatwierdź"
4. Użytkownik czeka chwilke, gdy system zaciąga informacje z BlackEye agenta oraz bazy danych.
5. Użytkownik widzi ocene oraz szczegółowe uzasadnienie tego czemu ocena jest jaka jest. Dodatkowo dostaje porady jak zwiększyć swoje bezpieczeństwo.
Rozszerzenia:
5a - Użytkownik klika "Pobierz"
-Użytkownik ma teraz na swoim komputerze raport w forme pdf
#### Linia nagłej pomocy
Aktor: Zarejestrowany użytkownik
Warunki początkowe: Użytkownik zalogowany do systemu
Warunki końcowe: Uzyskanie pomocy z lini nagłej pomocy
Scenariusz główny:
1. Użytkownik przechodzi do panelu głównego
2. Uzytkownik klika w panel "Linia nagłej pomocy"
3. Użytkownik wypełnia wyświetloną ankiete
4. Użytkownik klika "Zapisz"
5. Uzytkownik rozmawia z botem na temat swojego problemu
6. Użytkownik rozwiązuje swój problem
7. Użytkownik klika "Rozwiązałem problem"
8. Użytkownik ocenia rozmowe(w skali 1-5) i pisze o swoich następnych krokach
9. Uzytkownik klika Zapisz i zostaje przeniesiony do ekranu głównego
Rozszerzenia:
5a -Użytkownik klika przycisk "Bot nie był w stanie mi pomóc"
-Użytkownik zostaje przeniesiony do chatu z prawdziwym ekspertem
#### BlackEye Agent
Aktor: Zarejestrowany użytkownik
Warunki początkowe: Użytkownik zalogowany do systemu
Warunki końcowe: Agent zostaje zainstalowany i uruchomiony na urządzeniu urzytkownika
Scenariusz główny:
1. Użytkownik przechodzi do panelu głównego
2. Uzytkownik klika w panel "BlackEye Agent"
3. Uzytkownik klika w panel "Nowe urządzenie"
4. Użytkownik wypełnia ankiete(jaki OS?, która wersja?, czy to konto to admin?...) i klika "zapisz"
5. Agent pobiera się
6. Użytkownik przeklikuje instalacje
7. Użytkownik wraca do panelu "Black Eye"
8. Użytkownik klika "generuj nowy klucz"
9. Użytkownik nazywa go oraz dodaje opis
10. Użytkownik klika "generuj"
11. Użytkownik przepisuje klucz do BlackEye Agent oraz klika zapisz
12. Użytkownik sprawdza czy w panelu "BlackEye agent" nowy agent został dodany
## Projekty dialogów
Dialog 1. Dowdawanie danych do monitoringu

Dialog 2. Generowanie oceny

Plik pdf gotowy do pobrania

Dialog 3. Chat

## Architektura systemu
* aplikacja będzie początkowo przeznaczona na najpopularniejsze systemy operacyjne, czyli: Windows 10 i następne, oraz Android
* język programowania Python na backend i framework React Native na frontend w środowisku Microsoft Visual Studio Professional
* bazy danych: MySQL
* Hosting: AWS
* Testowanie: wykorzystamy narzędzia dostarczane przez Selenium do automatycznego testowania, a także pytest
## Schemat bazy danych

## Zasady tworzenia kodu
Skorzystanie ze standardu PEP8 dla części projektu napisanej w języku Python. W części frontendowej wykorzystamy wytyczne i dobre praktyki dla pisania kodu w React Native. Dodatkowo każda funkcja będzie musiała posiadać komentarze w formacie akceptowanym przez automatyczne generatory komentarzy. Wszystkie nazwy będą w języku angielskim i pisane camelCasem.
## Zarządzanie ryzykiem
* wolne działanie aplikacji, gdyż została napisana w Pythonie. By to naprawić zoptymalizujemy kod lub część aplikacji przepiszemy w innym języku, jeśli zajdzie taka potrzeba
* niekompletna specyfikacja, konieczność zmiany początkowych założeń. W celu uniknięcia stworzenia niedokładnych planów będziemy zapisywali informacje o historii zmian w odpowiednim dokumencie
* błędy i podatności bezpieczeństwa w kodzie źródłowym. Żeby zapewnić prawidłowe działanie aplikacji i wszystkich jej funkcji napiszemy wiele testów, które będą przy okazji weryfikować zgodność wytworzonego produktu z projektem, oraz zatrudnimy profesjonalnych testerów
## Zgodność z planem
Wykonana praca jest zgodna ze specyfikacją wymagań i założeniami przedstawionymi w tablicy koncepcyjnej, na tym etapie zostały dodane jedynie kolejne szczegóły rozwiązania.