All checks were successful
Build Documentation / budowanie_dokumentacji (push) Successful in 1m58s
326 lines
22 KiB
TeX
326 lines
22 KiB
TeX
\documentclass{sprz}
|
||
|
||
\usepackage[utf8]{inputenc}
|
||
\usepackage[polish]{babel}
|
||
\usepackage{graphicx}
|
||
\usepackage{multirow}
|
||
\usepackage{tabularx}
|
||
\usepackage{enumitem}
|
||
\usepackage{colortbl}
|
||
\usepackage{array}
|
||
\newcommand{\uwaga}[1]{\textcolor{red}{\textbf{#1}}}
|
||
\usepackage{docmute} % Usuwa dokumentclass z innych dodanych dokumentów do DZW w moment wklejania
|
||
\usepackage{float}
|
||
\usepackage{tikz}
|
||
\usepackage{pgf-pie}
|
||
\usepackage{pgfplots}
|
||
\pgfplotsset{compat=1.18}
|
||
\usepackage{booktabs}
|
||
|
||
\begin{document}
|
||
\pagestyle{empty}
|
||
\sffamily
|
||
\renewcommand{\arraystretch}{1.4}
|
||
\noindent
|
||
\begin{tabularx}{\textwidth}{|X|m{2.5cm}|c|}
|
||
\hline
|
||
|
||
\textbf{\footnotesize Numer zlecenia oraz nazwa i akronim projektu:} \newline
|
||
\textbf{Archivium}
|
||
&
|
||
\textbf{\footnotesize Zleceniodawca: PJATK}
|
||
&
|
||
\textbf{\footnotesize Zleceniobiorca:} \\
|
||
|
||
\cline{1-2}
|
||
|
||
\begin{minipage}[t]{\linewidth}
|
||
\textbf{\footnotesize Zespół projektowy:}
|
||
\begin{itemize}[nosep, leftmargin=1em, label=$\bullet$]
|
||
\item Oleksii Sumrii
|
||
\item Krzysztof Cieślik
|
||
\item Robert Elwart
|
||
\item Szymon Stefański
|
||
\item Mateusz Falkowski
|
||
\end{itemize}
|
||
\vspace{0.2cm}
|
||
\end{minipage}
|
||
&
|
||
|
||
% Komórka Kierownika
|
||
\begin{minipage}[t]{\linewidth}
|
||
\textbf{\footnotesize Kierownik projektu:} \newline
|
||
Krzysztof Cieślik
|
||
\vspace{2cm}
|
||
\end{minipage}
|
||
&
|
||
|
||
\multirow{-2}{*}{\centering\includegraphics[width=5cm, keepaspectratio]{sprz/logoPjatk.png}}
|
||
|
||
\\ \hline
|
||
|
||
\textbf{\footnotesize Nazwa dokumentu:} \newline
|
||
\textit{Dokument Założeń Wstępnych}
|
||
&
|
||
\textbf{\footnotesize Odpowiedzialny za dokument:} \newline
|
||
\textit{Zespół projektowy}
|
||
&
|
||
\textbf{\footnotesize Opiekun projektu:} \newline
|
||
Pawel Pisarski \\ \hline
|
||
|
||
\end{tabularx}
|
||
\newline
|
||
\begin{table}[h!]
|
||
\centering
|
||
\begin{tabular}{|l|p{0.3\textwidth}|l|l|l|}
|
||
\hline
|
||
\textbf{Wersja} & \textbf{Opis modyfikacji} & \textbf{Rozdział} & \textbf{Autor} & \textbf{Data} \\ \hline
|
||
v1 & Wersja wstępna & całość & Oleksii Sumrii & 12/11/2025 \\ \hline
|
||
v2 & Wersja wstępna & całość & Mateusz Falkowski & 12/11/2025 \\ \hline
|
||
v3 & Wersja wstępna & całość & Oleksii Sumrii & 05/01/2025 \\ \hline
|
||
v4 & Wersja wstepna & całość & Krzysztof Cieślik & 05/01/2025 \\ \hline
|
||
\end{tabular}
|
||
\end{table}
|
||
|
||
\chapter{Opis problemu}
|
||
Współcześnie dostępne oprogramowanie przeznaczone do tworzenia dokumentów i notatek, mimo szerokiego zakresu złożonych funkcji edycji tekstu oraz mediów, w ograniczonym stopniu wspiera proces długoterminowego przechowywania i systematyzowania treści. Dostępne rozwiązania rzadko zintegrowane samodzielne mechanizmy umożliwiające standaryzację, zarządzanie wersjami oraz tworzenie powiązań między dokumentami i plikami.
|
||
W przypadkach ,gdy takie funkcje są dostępne często wymagają one zaawansowanej wiedzy lub/i konfiguracji lub występują wyłącznie w płatnych wersjach oprogramowania.
|
||
|
||
Dodatkowo, liczne narzędzia biurowe charakteryzują się wysokim poziomem złożoności interfejsu, co sprawia, że nawet podstawowe operacje - takie jak wstawianie grafiki w poprawny sposób bez naruszenia formatowania tekstu - mogą być dla użytkownika nieintuicyjne i utrudniać efektywną pracę z dokumentami.
|
||
|
||
\chapter{Cele systemu}
|
||
Program jest przeznaczony do użytku przez jednego użytkownika i ma oferować:
|
||
\begin{itemize}
|
||
\item \textbf{Bezpieczeństwo Danych:} Gwarancja pełnej poufności danych użytkownika poprzez zastosowanie domyślnego szyfrowania AES-256 (za pomocą SQLCipher) dla wszystkich informacji przechowywanych w lokalnych bazach danych.
|
||
\newline
|
||
\textbf{Cel:} 100\% dokumentów użytkownika i metadanych muszą być zaszyfrowane przy użyciu AES-256 bez możliwość wyłączenia szyfrowania przez użytkownika.
|
||
\newline
|
||
\textbf{Miernik:} Wynik automatycznych testów walidacyjnych potwierdzających wymuszenie szyfrowania dla nowych i modyfikowanych danych.
|
||
|
||
\item \textbf{Wersjonowanie dokumentów:} System ma umożliwiać wersjonowanie dokumentów co ma zwiększyć wygodę pracy nad dokumentami między innymi poprzez możliwość przywrócenia poprzednich wersji dokumentów co zabezpiecza użytkownika przed możliwością utraty ważnych informacji.
|
||
\newline
|
||
\textbf{Cel:} Zapewnienie automatycznego tworzenia wersji oraz łatwego przywracania.
|
||
Nowa wersja tworzona jest automatycznie jeśli po dokonanych zmianach w ciągu określonego przez użytkownika czasu nie wykonano manualnego zapisu.
|
||
Nowa wersja dokumentu jest tworzona automatycznie również podczas zdarzeń krytycznych
|
||
takich jak np. wystąpienie błędu w programie.
|
||
Nowa wersja dokumentu może zostać również stworzona manualnie przy pomocy opcji “zapisz” każde zapisanie pliku będzie powodować utworzenie nowej wersji.
|
||
\newline
|
||
\textbf{Miernik:} Wynik testów walidacyjnych potwierdzający, że system utworzył nową wersję w tle w ciągu 5 sekund od wystąpienia zdefiniowanego zdarzenia (np. upływ 5 minut od ostatniego zapisu lub zamknięcie pliku).
|
||
|
||
\item \textbf{Podstawowe Funkcje Edytora:} Tworzenie, edycja,formatowanie oraz bezpieczne przechowywanie dokumentów.
|
||
\newline
|
||
Edytor powinien oferować podstawowe narzędzia wymagane do pracy z dokumentami tj. np.:
|
||
\begin{itemize}
|
||
\item Tabele o określonych wymiarach.
|
||
\item Listy
|
||
\item Wstawianie multimediów np. zdjęcia
|
||
\item Obsługa hiperłączy
|
||
\item Formuły matematyczne
|
||
\end{itemize}
|
||
\textbf{Cel:} Zapewnienie, że podstawowe funkcje edytora są w pełni funkcjonalne, stabilne i intuicyjne. System musi gwarantować poprawne renderowanie i manipulację wszystkimi kluczowymi elementami (tabelami, listami, multimediami, hiperłączami, formułami matematycznymi) \textbf {bez naruszania globalnego formatowania} dokumentu podczas edycji.
|
||
\newline
|
||
\textbf{Miernik:}
|
||
\newline
|
||
\textbf{Testy Akceptacyjne} pozytywny wynik testów potwierdzający, że 100\% z listy 5 podstawowych elementów edytora (Tabele, Listy, Multimedia, Hiperłącza, Formuły matematyczne) może być wstawione, edytowane i poprawnie wyświetlone w dokumencie testowym.
|
||
\newline
|
||
\textbf{Wydajność:} Czas otwarcia i pełnego załadowania 5-stronicowego dokumentu testowego (zawierającego wszystkie kluczowe elementy) nie przekroczy 2 sekund na komputerze walidacyjnym.
|
||
|
||
\item \textbf{Prostota i Spójność Interfejsu (UI/UX):} System musi posiadać interfejs użytkownika zaprojektowany w oparciu o zasady minimalizmu i spójności,tak aby umożliwić użytkownikom bez zaawansowanej wiedzy technicznej efektywną i bezproblemową pracę z dokumentami.
|
||
\newline
|
||
System ma charakteryzować się minimalistycznym i logicznym układem elementów, który zapewnia spójność wizualną i operacyjną we wszystkich modułach. Głównym celem jest umożliwienie użytkownikowi o podstawowej wiedzy technicznej natychmiastowe zrozumienie i efektywne wykonanie kluczowych zadań (jak tworzenie, edycja i archiwizacja) bez konieczności zaawansowanej konfiguracji, eliminując typowe frustracje związane ze złożonością tradycyjnych edytorów.
|
||
\newline
|
||
\textbf{Spójność Elementów Akcji}
|
||
\newline
|
||
\textbf{Cel:} 100\% kluczowych przycisków akcji (np. "Zapisz", "Eksportuj", "Ustawienia") musi być umieszczonych w stałym miejscu (np. zawsze w prawym górnym lub dolnym rogu) we wszystkich głównych widokach i oknach dialogowych.
|
||
\newline
|
||
\textbf{Miernik:} Wewnętrzna lista kontrolna zespołu potwierdzająca stałe położenie dla kluczowych elementów interfejsu.
|
||
\newline
|
||
\textbf{Dostępność Kluczowych Funkcji}
|
||
\newline
|
||
\textbf{Cel:} Dostęp do najważniejszych funkcji edytora i archiwizacji (np. Wyszukiwanie, Eksport do PDF, Przegląd Wersji) nie wymaga więcej niż 2 kliknięcia z głównego widoku.
|
||
\newline
|
||
\textbf{Miernik:} Zespół sporządza listę kluczowych zadań i weryfikuje liczbę kliknięć dla każdego z nich.
|
||
\newline
|
||
\textbf{Zgodność Etykiet}
|
||
\newline
|
||
\textbf{Cel:} Terminologia używana do opisu tych samych funkcji w różnych miejscach aplikacji musi być w 100\% spójna (np. zawsze używane jest "Archiwizuj", a nie raz "Archiwizuj", raz "Zapisz do Archiwum").
|
||
\newline
|
||
\textbf{Miernik:} Zespół tworzy Słownik Pojęć UI (maksymalnie 20 kluczowych terminów) i weryfikuje ich użycie w aplikacji.
|
||
|
||
\item \textbf{Niezależność:} Zapewnienie pełnej niezależności od dostawców usług chmurowych i internetu.
|
||
\newline
|
||
\textbf{Cel:} Gwarancja, że cały system działa całkowicie niezależnie od sieci zewnętrznej.
|
||
\newline
|
||
\textbf{Wskaźnik Dostępności Offline}
|
||
\newline
|
||
\textbf{Miernik:}
|
||
\newline
|
||
Wynik testów funkcjonalnych potwierdzający, że wszystkie zdefiniowane kluczowe zadania (np. utworzenie nowego dokumentu, wstawienie multimediów, zapisanie nowej wersji, wyszukiwanie OCR) zakończyły się powodzeniem w środowisku, w którym komputer walidacyjny jest odłączony od sieci (w tym LAN i Wi-Fi).
|
||
\newline
|
||
\textbf{Brak Zależności Zewnętrznych}
|
||
\newline
|
||
\textbf{Miernik:}
|
||
\newline
|
||
Wynik testów walidacyjnych, które za pomocą narzędzi diagnostycznych (np. firewall/sniffing) potwierdzają, że aplikacja nie wykonuje żadnych prób połączeń wychodzących z zewnętrznymi serwerami ani usługami chmurowymi podczas wykonywania kluczowych operacji.
|
||
\end{itemize}
|
||
|
||
Spodziewanym efektem wdrożenia systemu \textbf{Archivium} jest \textbf{znaczące usprawnienie prac biurowych} poprzez połączenie prostoty edytora tekstu z zaawansowanym systemem archiwizacji; automatyczne i bezpieczne wersjonowanie eliminuje ryzyko utraty danych, a intuicyjny interfejs (UI/UX) w połączeniu z szybkim wyszukiwaniem (również OCR) skraca czas potrzebny na zarządzanie dokumentami. Ponadto, lokalne szyfrowanie AES-256 oraz niezależność od usług chmurowych zapewniają pełną poufność i ciągłość pracy, przekładając się na wyższą efektywność i bezpieczeństwo operacyjne użytkownika indywidualnego.
|
||
|
||
\chapter{Kontekst systemu}
|
||
System \textbf{"Archivium"} jest lokalną aplikacją, której celem jest bezpiecznie zarządzanie dokumentami użytkowników. Aplikacja działa całkowicie offline, co gwarantuje prywatność danych i niezależność od zewnętrznych serwerów czy chmur.
|
||
Użytkownik może tworzyć i eksportować dokumenty, pliki PDF, a następnie opisywać je za pomocą metadanych. System automatycznie szyfruje oraz pozwala wyszukiwać dokumenty po nazwie, dacie lub treści rozpoznanej przez moduł OCR.
|
||
\newline
|
||
Projektowany system \textbf{"Archivium"} ma stanowić lokalną aplikację desktopową przeznaczoną do archiwizacji, organizacji oraz manipulacji dokumentami i plikami użytkownika.
|
||
System skierowany jest do użytkowników indywidualnych oraz małych organizacji/zespołów które potrzebują bezpiecznego i prywatnego sposobu pracy na dokumentach oraz notatkach bez korzystania z usług chmurowych.
|
||
\newline
|
||
Aplikacja ma działać w pełni lokalnie na komputerze osobistym, nie wymaga połączenia z internetem , z wyjątkiem ewentualnych aktualizacji. Dane użytkownika będą przechowane w lokalnej zaszyfrowanej bazie danych na komputerze użytkownika, co zapewnia wysoki poziom prywatności i bezpieczeństwa.
|
||
\newline
|
||
System nie będzie bezpośredni zintegrowany z zewnętrznymi platformami, formatami ani bazami danych jednak umożliwii eksport dokumentów i całych archiwów do standardowych formatów do odczytu takich jak np. pdf oraz skompresowanych archiwów.
|
||
\newline
|
||
Dzięki temu użytkownik będzie mógł w łatwy sposób tworzyć kopie oraz przenosić dane lub udostępniać je innym osobom w formatach do odczytu na każdym komputerze operacyjnym bez konieczności instalacji oprogramowania \textbf{"Archivium"}.
|
||
\newline
|
||
Środowisko użytkowe systemu obejmuje komputery osobiste z systemami operacyjnymi Windows oraz Linux.
|
||
Użytkownicy nie muszą posiadać zaawansowanej wiedzy technicznej - interfejs aplikacji zostanie zaprojektowany w intuicyjny i spójny sposób, eliminując problemy często spotykane w tradycyjnych szczególnie w darmowych programach biurowych (np. nieintuicyjne zarządzanie formatowaniem, złożone układy menu czy trudności z wstawianiem multimediów).
|
||
\newline
|
||
Pod względem ról użytkowników system zakłada istnienie tylko jednego poziomu uprawnień - użytkownika lokalnego, który ma pełny dostęp do danych przechowywanych w aplikacji i pełnego zakresu funkcji aplikacji.
|
||
\newline
|
||
Na rynku istnieją rozwiązania częściowo pokrywające się z założeniami “Archivium”, takie jak
|
||
Microsoft OneNote, Joplin, Wiki.js, Obsidian, czy Evernote/ Ich zaletą jest rozbudowana funkcjonalność, w zakresie edycji treści i synchronizacji danych. Jednak większość z nich wymaga połączenia z chmurą lub/i rejestracji w systemie ich wydawcy ,co budzi wątpliwości dotyczące prywatności.
|
||
\newline
|
||
Dodatkowo, bardziej zaawansowane funkcje, takie jak wersjonowanie czy szablony dokumentów, są często dostępne jedynie w płatnych planach lub jako zewnętrzne dodatki.
|
||
\newline
|
||
W przeciwieństwie do tych rozwiązań, \textbf{"Archivium"} ma na celu dostarczenie w pełni lokalnego, prostego w obsłudze i bezpiecznego środowiska do zarządzania dokumentami, łączącego zalety klasycznego edytora tekstu z funkcjonalnością systemu archiwizacji i wersjonowania danych.
|
||
\begin{figure}[h!]
|
||
\centering
|
||
\includegraphics[width=1\textwidth]{sprz/funkcjonalnosc}
|
||
\label{png:funkcjonalnosc}
|
||
\end{figure}
|
||
\newpage
|
||
|
||
\chapter{Zakres systemu (funkcjonalność)}
|
||
\begin{itemize}
|
||
\item Tworzenie, edytowanie, wyszukiwanie i podgląd dokumentów oraz ich opisów bezpośrednio w aplikacji.
|
||
\item Szyfrowanie danych -- wszystkie informacje są przechowywane w lokalnej bazie SQLite zabezpieczonej SQLCipher.
|
||
\item Eksport dokumentów w PDF i do skompresowanego archiwum.
|
||
\item Ustawienia użytkownika, w tym zmiana hasła głównego i nazwy użytkownika.
|
||
\item Wsparcie automatycznego wersjonowania dokumentów.
|
||
\item Możliwość tworzenia formatek dokumentów.
|
||
\end{itemize}
|
||
|
||
{Opis systemu docelowego w jego środowisku zastosowania, integracja z innymi systemami (interfejsy), współdzielone bazy danych, konieczność wykorzystania szablonów, wzorców, standardów wewnątrzorganizacyjnych; użytkownicy, ich kategorie, specyfika, także ich uprawnienia dostępu do poszczególnych danych / modułów w poszczególnych trybach pracy systemu; zakładana liczebność użytkowników poszczególnych kategorii; rozwiązania konkurencyjne – ich plusy i minusy.}
|
||
|
||
\chapter{Wymagania jakościowe i inne}
|
||
\begin{itemize}
|
||
\item Aplikacja musi działać lokalnie na standardowym współczesnym komputerze z systemem Windows 10/11 lub Linux (testowane dla Ubuntu 24.04.3 LTS).
|
||
\item System powinien posiadać prosty i intuicyjny interfejs użytkownika.
|
||
\item Dane użytkownika muszą być w pełni zabezpieczone (szyfrowane przy pomocy AES-256 bez możliwości wyłączenia), a hasło użytkownika musi być hashowane przy użyciu algorytmu odpornego na ataki typu brute-force.
|
||
\item Dokumentacja techniczna powinna być kompletna i zgodna ze standardami.
|
||
\end{itemize}
|
||
|
||
W celu spełnienia wymagań niezawodności i bezpieczeństwa, proces wytwórczy obejmie:
|
||
\begin{itemize}
|
||
\item \textbf{Testy Jednostkowe (Unit Tests):} Weryfikacja logiki biznesowej backendu przy użyciu.
|
||
\item \textbf{Testy Integracyjne:} Sprawdzenie poprawnej komunikacji między procesem Tauri a Sidecarem Pythonowym.
|
||
\item \textbf{Testy Bezpieczeństwa:} Automatyczna weryfikacja poprawności szyfrowania bazy danych (próba otwarcia pliku \textbf{.db} bez klucza) jako część CI/CD.
|
||
\end{itemize}
|
||
|
||
\textbf{Zarządzanie Ryzykiem:}
|
||
Zidentyfikowano kluczowe ryzyka wpływające na jakość:
|
||
\begin{itemize}
|
||
\item Fragmentacja bibliotek systemowych Linux. Mitygacja: Zastosowanie konteneryzacji (Docker manylinux) i statycznego linkowania (StaticX).
|
||
\item Ryzyko: Wydajność przy dużych plikach. Mitygacja: Implementacja mechanizmu Lazy Loading oraz kompresji zlib przed szyfrowaniem oraz ograniczenia rozmiaru obsługiwanych plików już na poziomie GUI.
|
||
\end{itemize}
|
||
|
||
{Najważniejsze wymagania dotyczące ochrony, bezpieczeństwa, przenośności, elastyczności, konfigurowalności, niezawodności, wydajności itp.}
|
||
|
||
\chapter{Wizja konstrukcyjna}
|
||
\textbf{Proponowany wstępny diagram architektury systemu}
|
||
\begin{figure}[h!]
|
||
\centering
|
||
\includegraphics[width=1\textwidth]{sprz/diagramAplikacji}
|
||
\label{png:diagramAplikacji}
|
||
\end{figure}
|
||
\newpage
|
||
|
||
\begin{itemize}
|
||
\item \textbf{Baza danych:} SQLite z SQLCipher
|
||
\item \textbf{Języki programowania backend:} Python
|
||
\item \textbf{Framework backend:} FastAPI
|
||
\item \textbf{Języki programowania frontend:} JavaScript
|
||
\item \textbf{Framework frontend:} React, TipTap, Lucide React.
|
||
\item \textbf{Warstwa prezentacji:} Tauri Core.
|
||
\item \textbf{Dokumentacja:} LaTeX, Markdown oraz komentarze w kodzie zgodne z ogólnie przyjętymi standardami danego języka.
|
||
\end{itemize}
|
||
|
||
Aplikacja będzie programem desktopowym działającym zarówno na systemach windows (10 i 11) jak i większości dystrybucji linuksa, przedstawiona na diagramie propozycja architektury programu opiera się o wzorzec \textbf{Sidecar “przyczepka”}, łącząc lekki fronted w Tauri korzystający z systemowego webview zmniejszając w ten sposób rozmiar aplikacji dzięki wyeliminowaniu potrzeby dostarczenia całego webview razem z aplikacją np. w postaci Electron. Warstwa prezentacji wyświetlana przez webview zostanie zbudowana w oparciu o typowe technologie webowe takie jak JavaScript w połączeniu z frameworkiem React korzystającym z zewnętrznych bibliotek np. gotowy edytor tekstu TipTap.
|
||
Warstwa prezentacji będzie łączyć się przy pomocy TanStack Query z “przyczepką” w postaci lokalnego backendu w Pythonie który będzie serwował serwer http przy pomocy FastAPI oraz Uvicorn.
|
||
\newline
|
||
Dane będą zapisane w dwóch bazach danych jedna opisana na diagramie jako \textbf{archivium.db} będzie zawierać dokumenty w postaci niebinarnej oraz dane OCR przetworzonych multimediów umożliwiając szybkie wczytywanie dokumentów oraz możliwość przeszukiwania tekstowego, druga baza będzie zawierać pliki multimedialne użytkownika,a komunikacja pomiędzy Warstwą logiki ,a bazą danych będzie przebiegać z wykorzystaniem SQLAlchemy ORM. Opcjonalnie system zostanie rozbudowany o moduł wektorowej bazy danych, umożliwiający semantyczne przeszukiwanie treści dokumentów. Oraz przewiduje się możliwość integracji z lokalnym modelem językowym w architekturze RAG, pozwalającym na inteligentną analizę zaszyfrowanych notatek.
|
||
\newline
|
||
Obie bazy danych będą zaszyfrowane przy pomocy SQLCipher AES-256 dostęp do zaszyfrowanych po podaniu hasła zapewni SQLAlchemy ORM wraz z Modułem bezpieczeństwa który będzie odpowiedzialny za weryfikację hasła z zapisanym zahaszowanym hasłem przy pomocy odpornego na ataki brute force Argon2.
|
||
\newline
|
||
Moduł logiki będzie również oferował eksport danych do formatu pdf lub skompresowanego archiwum.
|
||
\newline
|
||
Synchronizacja procesów będzie prowadzona przez Tauri Core ta część aplikacji zajmie się uruchomieniem całego systemu i weryfikacją integralności (np. czy baza danych istnieje) ,a następnie uruchomieniem wszystkich procesów i ustanowieniem połączenia pomiędzy nimi.
|
||
\newline
|
||
Moduł ten zajmie się również wyłączeniem aplikacji czyli zamknięciem wszystkich wątków w bezpieczny sposób i zapewnieniem bezpieczeństwa danych podczas tego procesu.
|
||
\newline
|
||
|
||
\textbf{Proponowany system budowania aplikacji}
|
||
\newline
|
||
Całość będzie dystrybuowana jako przenośny program nie wymagający instalacji w postaci pliku .exe dla systemów windows 10 i 11 jak i paczki AppImage dla systemów linux (64 bit).
|
||
\newline
|
||
Zbudowanie programu składającego się z tak wielu technologii wymaga opracowania odpowiedniego Build Pipeline.
|
||
\newline
|
||
\textbf{Windows:}
|
||
\newline
|
||
Backend Pythonowy jest kompilowany bezpośrednio w systemie przy użyciu PyInstallera do pliku \textbf{.exe}. Następnie Tauri Bundler łączy go z Frontendem i tworzy standardowy instalator \textbf{.msi}.
|
||
\newline
|
||
\textbf{Linux:}
|
||
\newline
|
||
Aby uniknąć problemów z bibliotekami systemowymi, Backend budowany jest wewnątrz kontenera \textbf{Docker (manylinux)} i dodatkowo "zamrażany" narzędziem \textbf{ StaticX}. Uzyskany w ten sposób uniwersalny plik binarny jest pakowany przez Tauri do przenośnego formatu \textbf{.AppImage}, działającego na większości dystrybucji bez instalacji.
|
||
|
||
{Założenia architektoniczne i technologiczne.}
|
||
|
||
\chapter{Ograniczenia}
|
||
\begin{itemize}
|
||
\item Aplikacja działa wyłącznie lokalnie na przeciętnym współczesnym komputerze
|
||
do walidacji tego przeznaczono komputer z procesorem i5 7400, 12GB pamięci ram i dyskiem ssd sata.
|
||
\item Budżet projektu ograniczony do 250zł - wykorzystane zostaną głównie narzędzia i licencje darmowe (Open Source) lub darmowe do użytku edukacyjnego.
|
||
\item Produkt musi zostać ukończony w ciągu 10 miesięcy przez 5 studentów.
|
||
\item Z względu na przyjęta licencję GPL v3 projekt musi wykorzystywać licencje kompatybilne np.:
|
||
MIT(React, FastAPI, SQLAlchemy, Pydantic), Apache 2.0 (Tauri, Tesseract OCR), BSD.
|
||
Użycie zewnętrznego kodu, narzędzi lub zasobów wymaga sprawdzenia kompatybilności licencji.
|
||
\item Implementacja lokalnego modelu językowego (RAG) jest uzależniona od dostępnych zasobów sprzętowych użytkownika i może wymagać opcjonalnego pobrania lokalnego modelu LLM przez moduł Sidecar.
|
||
\end{itemize}
|
||
|
||
{Ograniczenia, które mają wpływ na kształt systemu dotyczące produktu: interfejsów, działania specyficznych warunkach; projektowych: czasowe, ludzkie, sprzętowe, oprogramowanie; finansowania prac projektowych/finansowanie przedsięwzięcia}
|
||
|
||
\input{ankieta.tex}
|
||
\newpage
|
||
|
||
\chapter{Persony}
|
||
\input{Aneta_Suchodolska.tex}
|
||
\newpage
|
||
\input{Danuta_Krajewska.tex}
|
||
\newpage
|
||
\input{Janusz_Tracz.tex}
|
||
\newpage
|
||
\input{Ola_Janowska.tex}
|
||
\newpage
|
||
\input{Stefan_Myszak.tex}
|
||
\newpage
|
||
|
||
|
||
|
||
\chapter{Słownik pojęć:}
|
||
\begin{itemize}
|
||
\item \textbf{SQLCipher:} Rozszerzenie bazy danych SQLite, które zapewnia domyślne, przezroczyste szyfrowanie przy użyciu algorytmu szyfrowania AES-256, co gwarantuje poufność danych.
|
||
\item \textbf{OCR:} Optical Character Recognition (Optyczne Rozpoznawanie Znaków). Technologia umożliwiająca rozpoznawanie tekstu wewnątrz obrazów.
|
||
\item \textbf{Sidecar:} Wzorzec architektoniczny polegający na dołączeniu procesu pomocniczego.
|
||
\item \textbf{AppImage:} Format dystrybucji oprogramowania w systemie Linux.
|
||
\item \textbf{Argon2id:} Najnowszy i zalecany algorytm wyprowadzania klucza do haszowania haseł
|
||
\item \textbf{TanStack Query:} Biblioteka do zarządzania stanem asynchronicznym w aplikacjach webowych.
|
||
\item \textbf{ORM (Object-Relational Mapping):} Odwzorowanie obiektowo-relacyjne.
|
||
\end{itemize}
|
||
\end{document} |