Dokumentecja w gitea
70
.gitignore
vendored
Normal file
@@ -0,0 +1,70 @@
|
|||||||
|
# --- generowane przez LaTeX ---
|
||||||
|
*.aux
|
||||||
|
*.lof
|
||||||
|
*.log
|
||||||
|
*.lot
|
||||||
|
*.fls
|
||||||
|
*.out
|
||||||
|
*.toc
|
||||||
|
*.fmt
|
||||||
|
*.fot
|
||||||
|
*.cb
|
||||||
|
*.cb2
|
||||||
|
*.lb
|
||||||
|
|
||||||
|
# --- Bibliografia i indeksy ---
|
||||||
|
*.bbl
|
||||||
|
*.bcf
|
||||||
|
*.blg
|
||||||
|
*.-blx.aux
|
||||||
|
*.-blx.bib
|
||||||
|
*.run.xml
|
||||||
|
*.ind
|
||||||
|
*.ilg
|
||||||
|
*.glg
|
||||||
|
*.glo
|
||||||
|
*.gls
|
||||||
|
*.idx
|
||||||
|
*.ist
|
||||||
|
|
||||||
|
# --- Build Tools ---
|
||||||
|
# Pliki generowane przez latexmk
|
||||||
|
*.fdb_latexmk
|
||||||
|
*.synctex.gz
|
||||||
|
*.synctex(busy)
|
||||||
|
*.pdf_tex
|
||||||
|
|
||||||
|
# --- Pliki binarne ---
|
||||||
|
# Zazwyczaj nie wrzuca się PDF-ów do repozytorium kodu,
|
||||||
|
# ale jeśli chcesz wersjonować wynikowy PDF, usuń poniższą linię.
|
||||||
|
*.pdf
|
||||||
|
*.dvi
|
||||||
|
*.ps
|
||||||
|
|
||||||
|
# --- Edytory i IDE ---
|
||||||
|
|
||||||
|
# VS Code (LaTeX Workshop)
|
||||||
|
.vscode/
|
||||||
|
*.chktex
|
||||||
|
*.chktexrc
|
||||||
|
|
||||||
|
# TeXStudio / TeXmaker
|
||||||
|
*.synctex.gz
|
||||||
|
*.user
|
||||||
|
*.bak
|
||||||
|
*.sav
|
||||||
|
|
||||||
|
# Overleaf
|
||||||
|
.project
|
||||||
|
.load
|
||||||
|
|
||||||
|
# Kile
|
||||||
|
*.kilepr
|
||||||
|
|
||||||
|
# LyX
|
||||||
|
*.lyx#
|
||||||
|
*.lyx~
|
||||||
|
|
||||||
|
# --- Systemowe ---
|
||||||
|
.DS_Store
|
||||||
|
Thumbs.db
|
||||||
20
.gitlab-ci.yml
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
# Używamy gotowego obrazu Docker, który ma zainstalowanego LaTeXa i wszystkie potrzebne pakiety
|
||||||
|
image: registry.gitlab.com/islandoftex/images/texlive:latest
|
||||||
|
|
||||||
|
stages:
|
||||||
|
- build
|
||||||
|
|
||||||
|
# Zadanie budowania dokumentacji
|
||||||
|
budowanie_dokumentacji:
|
||||||
|
stage: build
|
||||||
|
script:
|
||||||
|
# Wywołujemy komendę z naszego Makefile
|
||||||
|
- make all
|
||||||
|
|
||||||
|
# Tutaj definiujemy, co GitLab ma zachować po zakończeniu budowania
|
||||||
|
artifacts:
|
||||||
|
name: "Dokumentacja_Archivium_v$CI_PIPELINE_ID"
|
||||||
|
paths:
|
||||||
|
# Zachowaj wszystkie pliki kończące się na .pdf
|
||||||
|
- "*.pdf"
|
||||||
|
expire_in: 1 week
|
||||||
82
Aneta_Suchodolska.tex
Normal file
@@ -0,0 +1,82 @@
|
|||||||
|
|
||||||
|
\subsection{Aneta Suchodolska}
|
||||||
|
|
||||||
|
\begin{figure}[h!]
|
||||||
|
\centering
|
||||||
|
\includegraphics[width=0.5\textwidth]{PersonyObrazki/Aneta}
|
||||||
|
\label{png:Aneta}
|
||||||
|
\end{figure}
|
||||||
|
|
||||||
|
\vspace{-30pt}
|
||||||
|
|
||||||
|
\begin{center}
|
||||||
|
{\tiny Źródło zdjęcia: https://chatgpt.com/}
|
||||||
|
\end{center}
|
||||||
|
|
||||||
|
\subsubsection{Cytat}
|
||||||
|
"Mam dość papierologii!!! Chcę wreszcie mieć wszystko uporządkowane i dostępne jednym kliknięciem!!!"
|
||||||
|
|
||||||
|
\subsubsection{BIO}
|
||||||
|
\begin{itemize}
|
||||||
|
\item Płeć: Kobieta
|
||||||
|
\item Wiek: 55 lat
|
||||||
|
\item Stan cywilny: Zamężna
|
||||||
|
\item Rodzina: Mąż, trójka dzieci
|
||||||
|
\item Stanowisko: Starsza Specjalistka HR
|
||||||
|
\item Dział: HR(Zasoby ludzkie)
|
||||||
|
\item Wykształcenie: Wyższe, Magister Zarządzania
|
||||||
|
\item Miejsce zamieszkania: Gdańsk
|
||||||
|
\item Staż pracy: 30 lat, z czego 10 lat w obecnej firmie
|
||||||
|
\item Firma: Średniej wielkości przedsiębiorstwo (ok. 200 pracowników)
|
||||||
|
\end{itemize}
|
||||||
|
|
||||||
|
\subsubsection{Kim jest?}
|
||||||
|
Aneta Suchodolska to doświadczona, skrupulatna i odpowiedzialna pracownica działu HR będąca specjalistą w swojej dziedzinie. Od lat zajmuje się prowadzeniem dokumentacji kadrowej,
|
||||||
|
archiwizacją umów, szkoleniami i zajmowaniem się codziennymi problemami pracowników w firmie. Lubi mieć wszystko pod kontrolą, ale coraz bardziej odczuwa zmęczenie wynikające z
|
||||||
|
konieczności utrzymywania porządku w papierowych aktach i segregatorach.
|
||||||
|
|
||||||
|
\subsubsection{Co myśli i czuje?}
|
||||||
|
\begin{itemize}
|
||||||
|
\item Frustruje ją panujący obecnie chaos dokumentacyjny i konieczność ręcznego wyszukiwania danych.
|
||||||
|
\item Czuje presję związaną z utrzymaniem porządku w archiwum kadrowym firmy.
|
||||||
|
\item Ma poczucie, że traci czas na czynności, które można by w jakiś sposób uprościć i zautomatyzować.
|
||||||
|
\item Chce usprawnić pracę działu HR i mieć pewność, że żaden dokument nie zaginie i będzie łatwy do odnalezienia.
|
||||||
|
\item Chciałaby wiedzieć gdy ktoś coś zmienia w dokumentach i w jaki sposób się to dzieje.
|
||||||
|
\end{itemize}
|
||||||
|
|
||||||
|
\subsubsection{Motywacje}
|
||||||
|
\begin{itemize}
|
||||||
|
\item Chce ograniczyć ilość obiegu papierowych dokumentów firmowych do absolutengo do minimum.
|
||||||
|
\item Chce łatwo wyszukiwać dane pracowników, umowy i notatki bez zbędnych nerwów.
|
||||||
|
\item Pragnie wprowadzić ład i porządek w procesie obiegu dokumentów firmowych.
|
||||||
|
\item Szuka sposobu na bezpieczne przechowywanie danych HR bez korzystania z zewnętrznych usług np. aplikacji internetowych.
|
||||||
|
\end{itemize}
|
||||||
|
|
||||||
|
\subsubsection{Frustracje}
|
||||||
|
\begin{itemize}
|
||||||
|
\item Gubi się w coraz większej liczbie segregatorów i firmowych archiwach pełnych starych dokumentów.
|
||||||
|
\item Denerwuje ją brak szybkiego i łatwego dostępu do starszych dokumentów w firmie.
|
||||||
|
\item Czuje się przytłoczona ilością papierowych obowiązków i ciągłym ręcznym wertowaniem kartek papieru.
|
||||||
|
\item Obawia się, że ważne dokumenty mogą zostać zgubione lub zniszczone i tego, że nikt tak naprawdę nie panuje nad ich obiegiem.
|
||||||
|
\end{itemize}
|
||||||
|
|
||||||
|
\subsubsection{Styl życia}
|
||||||
|
\begin{itemize}
|
||||||
|
\item Ceni sobie stabilność i porządek.
|
||||||
|
\item Lubi mieć zaplanowany dzień i przewidywalne obowiązki bez nieprzewidzianych sytuacji.
|
||||||
|
\item Po pracy spędza czas z rodziną, przyjaciółkami albo czyta opowiadania grozy Stephena Kinga.
|
||||||
|
\item Technologia nie jest jej pasją, ale chętnie uczy się narzędzi, które realnie ułatwiają pracę.
|
||||||
|
\end{itemize}
|
||||||
|
|
||||||
|
\subsubsection{Potrzeby}
|
||||||
|
\begin{itemize}
|
||||||
|
\item Jako osoba starsza potrzebuje maksymalnie prostego i intuicyjnego narzędzia do archiwizacji dokumentów.
|
||||||
|
\item Chce mieć możliwość tworzenia notatek i wersjonowania plików tak by móc usystematyzować przebieg dokumentów i mieć wgląd do wprowadzanych zmian.
|
||||||
|
\item Oczekuje aplikacji, która zapewni jej łatwy sposób do utrzymywania porządku w dokumentach.
|
||||||
|
\item Potrzebuje aplikacji, która oszczędzi jej czas i stres związany z papierologią.
|
||||||
|
\end{itemize}
|
||||||
|
|
||||||
|
\subsubsection{Dlaczego potrzebuje Archivium?}
|
||||||
|
Aneta potrzebuje aplikacji Archivium, ponieważ ma dość papierologii, szukania dokumentów w segregatorach i dbania o fizyczny porządek w aktach.
|
||||||
|
Chce przechowywać i wersjonować pliki cyfrowo, tworzyć notatki oraz mieć szybki dostęp do każdego dokumentu w bezpiecznym środowisku.
|
||||||
|
Archivium pozwoli jej zyskać spokój, porządek i więcej czasu na faktyczną pracę z ludźmi, zamiast z papierami.
|
||||||
67
Danuta_Krajewska.tex
Normal file
@@ -0,0 +1,67 @@
|
|||||||
|
|
||||||
|
\subsection{Danuta Krajewska}
|
||||||
|
|
||||||
|
\begin{figure}[h!]
|
||||||
|
\centering
|
||||||
|
\includegraphics[width=0.5\textwidth]{PersonyObrazki/Danuta}
|
||||||
|
\label{png:Danuta}
|
||||||
|
\end{figure}
|
||||||
|
|
||||||
|
\vspace{-30pt}
|
||||||
|
|
||||||
|
\begin{center}
|
||||||
|
{\tiny Źródło zdjęcia: https://chatgpt.com/}
|
||||||
|
\end{center}
|
||||||
|
|
||||||
|
\subsubsection{Cytat}
|
||||||
|
"Porządek w dokumentach to porządek w finansach i spokój ducha."
|
||||||
|
\subsubsection{BIO}
|
||||||
|
\begin{itemize}
|
||||||
|
\item Płeć: Kobieta\\
|
||||||
|
\item Wiek: 58\\
|
||||||
|
\item Zawód: Główna Księgowa, 11000 brutto, pracuje w średniej wielkości biurze rachunkowym, obsługuje kilkanaście firm, pracuje stacjonarnie w pełnym wymiarze godzin.\\
|
||||||
|
\item Stan cywilny: Mężatka.\\
|
||||||
|
\item Miejsce zamieszkania: Poznań.\\
|
||||||
|
\item Wykształcenie: Wyższe magisterskie (Finanse i Rachunkowość).\\
|
||||||
|
\item Rodzina: Mąż i dwoje dorosłych, studiujących dzieci.\\
|
||||||
|
\item Codziennie tonie w różnych formatach plików od klientów (JPG, PNG, HEIC, PDF, DOCX, RTF, MD..) i szuka jednego, bezpiecznego narzędzia, które pozwoli jej to wszystko ujednolicić i zarchiwizować.
|
||||||
|
\end{itemize}
|
||||||
|
\subsubsection{Kim jest}
|
||||||
|
Danuta zaczyna poranek od mocnej kawy i sprawdzenia kalendarza podatkowego. Jej praca to ciągłe żonglowanie terminami (ZUS, VAT, JPK). Jest skrupulatna, precyzyjna i ceni sobie sprawdzone rozwiązania. Używa na co dzień profesjonalnego oprogramowania księgowego, ale chaos panuje w dokumentach "przychodzących" od klientów. Próbuje trzymać potrzebne notatki dotyczące zmian w przepisach (np. Nowy Ład) w jednym miejscu, ale niestety kończy z plikami tekstowymi na pulpicie i żółtymi karteczkami samoprzylepnymi na monitorze.
|
||||||
|
\subsubsection{Co myśli i czuje}
|
||||||
|
\begin{itemize}
|
||||||
|
\item Czuje się przytłoczona ilością formatów plików, jakie wysyłają jej klienci – zdjęcia faktur z telefonu, skany, pliki Word, nieedytowalne PDF-y.
|
||||||
|
\item Chciałaby mieć "cyfrowy sejf" na najważniejsze dokumenty (swoje i klientów), ale boi się rozwiązań chmurowych, o których słyszała, że bywają zawodne.
|
||||||
|
\item Zaczyna myśleć o przyszłości. Co stałoby się z jej prywatnymi dokumentami (akty notarialne, polisy na życie, testament), gdyby nagle jej zabrakło? Czy jej mąż i dzieci wiedzieliby, gdzie wszystko znaleźć?
|
||||||
|
\end{itemize}
|
||||||
|
\subsubsection{Motywacje}
|
||||||
|
\begin{itemize}
|
||||||
|
\item Chce zautomatyzować proces konwersji i porządkowania dokumentów, aby oszczędzić czas.
|
||||||
|
\item Pragnie mieć jedno bezpieczne miejsce na najważniejsze prywatne dokumenty (polisy, testament, akty własności).
|
||||||
|
\item Chce zapewnić rodzinie i samej sobie spokój, i łatwy dostęp do ważnych informacji finansowych i prawnych na "czarną godzinę".
|
||||||
|
\item Chce, aby jej notatki dotyczące interpretacji przepisów były w jednym miejscu, bezpieczne i łatwe do przeszukiwania.
|
||||||
|
\end{itemize}
|
||||||
|
\subsubsection{Frustracje}
|
||||||
|
\begin{itemize}
|
||||||
|
\item Denerwuje się, gdy musi prosić klienta o ponowne wysłanie dokumentu w innym formacie, bo obecny jest nieczytelny lub niekompatybilny.
|
||||||
|
\item Frustruje ją, że jej prywatne ważne dokumenty są rozrzucone, część fizycznie w (segregatorze, część na starym dysku, część w mailu).
|
||||||
|
\item Obawia się o RODO i bezpieczeństwo danych klientów.
|
||||||
|
\item Irytuje ją szukanie tej jednej, konkretnej notatki o zmianie w VAT, którą zapisała "gdzieś" trzy miesiące temu.
|
||||||
|
\end{itemize}
|
||||||
|
\subsubsection{Styl życia}
|
||||||
|
\begin{itemize}
|
||||||
|
\item Po pracy lubi dbać o swój ogród.
|
||||||
|
\item Ceni stabilizację i przewidywalność.
|
||||||
|
\item Lubi czytać książki i oglądać seriale.
|
||||||
|
\item Dba o finanse rodziny i planuje wydatki z wyprzedzeniem. Jest "kierownikiem" rodziny.
|
||||||
|
\end{itemize}
|
||||||
|
\subsubsection{Potrzeby}
|
||||||
|
\begin{itemize}
|
||||||
|
\item Potrzebuje narzędzia "all-in-one", które zastąpi jej kilka mniejszych programów (do konwersji, do notatek, do archiwizacji).
|
||||||
|
\item Kluczowa jest dla niej funkcja masowej konwersji (np. 50 zdjęć faktur do jednego pliku PDF).
|
||||||
|
\item Wymaga gwarancji bezpieczeństwa danych na najwyższym poziomie.
|
||||||
|
\item Potrzebuje prostej i niezawodnej funkcji "cyfrowego testamentu" – chce móc wyznaczyć męża jako osobę, która uzyska dostęp do jej prywatnego sejfu po jej śmierci.
|
||||||
|
\end{itemize}
|
||||||
|
\subsubsection{Dlaczego potrzebuje Archivium?}
|
||||||
|
Danuta potrzebuje Archivium jako niezawodnego narzędzia "all-in-one", które pozwoli jej błyskawicznie ujednolicać formaty dokumentów otrzymywanych od klientów dzięki masowej konwersji.
|
||||||
|
Traktuje aplikację jako bezpieczny, cyfrowy sejf na najważniejsze dokumenty prywatne i zawodowe, który zapewni jej rodzinie dostęp do kluczowych informacji w nagłych sytuacjach, bez ryzyka wycieku danych do sieci.
|
||||||
71
Janusz_Tracz.tex
Normal file
@@ -0,0 +1,71 @@
|
|||||||
|
|
||||||
|
\subsection{Janusz Tracz}
|
||||||
|
|
||||||
|
\begin{figure}[h!]
|
||||||
|
\centering
|
||||||
|
\includegraphics[width=0.5\textwidth]{PersonyObrazki/Janusz}
|
||||||
|
\label{png:Janusz}
|
||||||
|
\end{figure}
|
||||||
|
|
||||||
|
\vspace{-30pt}
|
||||||
|
|
||||||
|
\begin{center}
|
||||||
|
{\tiny Źródło zdjęcia: https://chatgpt.com/}
|
||||||
|
\end{center}
|
||||||
|
|
||||||
|
\subsubsection{Cytat}
|
||||||
|
"Nie odmawia się, kiedy pieniądz woła"
|
||||||
|
|
||||||
|
\subsubsection{BIO}
|
||||||
|
\begin{itemize}
|
||||||
|
\item Płeć: Mężczyzna
|
||||||
|
\item Wiek: 45
|
||||||
|
\item Zawód: Menager IT, 15000 brutto, pracuje w pełnym wymiarze godzin z dodatkową pracą zdalną jako freelancer, zarządza zespołami IT, kieruje zespołami.
|
||||||
|
\item Stan cywilny: Żonaty.
|
||||||
|
\item Miejsce zamieszkania: Gdynia.
|
||||||
|
\item Wykształcenie: Magister-Inżynier.
|
||||||
|
\item Rodzina: ma dwójke dzieci i żonę.
|
||||||
|
\item Chce zaoszczędzić pieniądzę i szuka jakieś darmowej aplikacji do zarządzania dokumentami, szuka nowych rozwiązań.
|
||||||
|
\end{itemize}
|
||||||
|
|
||||||
|
\subsubsection{Kim jest}
|
||||||
|
Wstaje codziennie o 6:00, uprawia gimnastyke, bierze pod zimny prysznic to pobudza jego umysł i jest w stanie przyjmowac nowe informacje, przegląda wiadomości ze świata IT, przegląda ważne dokumenty przed pracą, mówi o sobie że jest typowym milenialsem, pracuje w średniej firmie ponad 500 osób, ceni sobie stałe nawyki i porządek. Jako menedżer IT, często musi edytować dokumenty firmowe i tworzyć własne szablony formularzy dla zespołu.
|
||||||
|
|
||||||
|
\subsubsection{Co myśli i czuje}
|
||||||
|
\begin{itemize}
|
||||||
|
\item Chce ułatwić sobie i innym wykonywanie pracy
|
||||||
|
\item Szkoda mu czasu na domysły dla tego chciałby zoptymalizować proces całego obiegu dokumentów.
|
||||||
|
\end{itemize}
|
||||||
|
|
||||||
|
\subsubsection{Motywacje}
|
||||||
|
\begin{itemize}
|
||||||
|
\item Chce marnować mniej czasu.
|
||||||
|
\item Chce być bardziej efektywnym menedżerem
|
||||||
|
\item Chce przychowywać swoje dokumenty w biezpiecznym miejscu
|
||||||
|
\item Chciałby móc wersjonować dokumenty firmowe i tworzyć własne szablony formularzy dla zespołu.
|
||||||
|
\end{itemize}
|
||||||
|
|
||||||
|
\subsubsection{Frustracje}
|
||||||
|
\begin{itemize}
|
||||||
|
\item Denerwuje się że obieg dokumentów w firmie nie jest usystymatyzowany.
|
||||||
|
\item Frustruje go wyrzucenie czasu na poszukiwanie informacji
|
||||||
|
\item Widzi w śród swoich pracowników ten sam problem, frustruje go zagubione informacje.
|
||||||
|
\item Obawia się o bezpieczeństwo swoich danych, nie ufa chmurom.
|
||||||
|
\end{itemize}
|
||||||
|
|
||||||
|
\subsubsection{Styl życia}
|
||||||
|
\begin{itemize}
|
||||||
|
\item Lubi jeździć rowerem.
|
||||||
|
\item Lubi spędzać czas ze swoją rodzinną.
|
||||||
|
\item Lubi prowadzić zdrowy styl życia.
|
||||||
|
\end{itemize}
|
||||||
|
|
||||||
|
\subsubsection{Potrzeby}
|
||||||
|
\begin{itemize}
|
||||||
|
\item Ceni prostotę i funkcjonalność w aplikacjach – chce rozwiązania, które jest łatwe w obsłudze i szybko reaguje na jego potrzeby.
|
||||||
|
\item Szuka rozwiązań, które pozwolą mu szybciej wykonywać codzienne obowiązki, aby mieć więcej czasu na swoje pasje i odpoczynek.
|
||||||
|
\item Potrzebuje ustrukturyzować swoje potrzeby w dokumentach i w notatkach.
|
||||||
|
\end{itemize}
|
||||||
|
\subsubsection{Dlaczego potrzebuje Archivium?}
|
||||||
|
Janusz potrzebuje Archivium, aby zoptymalizować procesy zarządcze i wyeliminować straty czasu wynikające z bałaganu w dokumentacji firmowej.
|
||||||
|
Możliwość wersjonowania plików oraz tworzenia dedykowanych szablonów formularzy pozwoli mu usprawnić pracę zespołu IT, a działanie offline zagwarantuje bezpieczeństwo danych, które jest dla niego priorytetem.
|
||||||
46
Karta_Projektu.tex
Normal file
@@ -0,0 +1,46 @@
|
|||||||
|
\documentclass{sprz}
|
||||||
|
|
||||||
|
\usepackage[utf8]{inputenc}
|
||||||
|
\usepackage[T1]{fontenc}
|
||||||
|
\usepackage[polish]{babel}
|
||||||
|
|
||||||
|
\title{Praca inżynierska na temat "Aplikacja lokalna do archiwizacji i manipulacji dokumentami i plikami."}
|
||||||
|
|
||||||
|
\engtitle{Engineer's thesis on the topic "Local application for archiving and manipulation of documents and files."}
|
||||||
|
|
||||||
|
\acronym{Archivium}
|
||||||
|
|
||||||
|
\titledate{2026-?-?}
|
||||||
|
|
||||||
|
\supervisor{dr Puźniakowski Tadeusz}
|
||||||
|
|
||||||
|
\consultant{--- brak ---}
|
||||||
|
|
||||||
|
\projectgoals{Umożliwienie użytkownikom tworzenia, organizowania, formatowania i wersjonowania dokumentów. Zastosowania szyfrowania, aby zapewnić prywatność i bezpieczeństwo danych użytkownika. Stworzenie intuicyjnego i prostego interfejsu, umożliwiającego szybkie dodawanie oraz eksportowanie danych do archiwów oraz tworzenia formatek dokumentów.}
|
||||||
|
|
||||||
|
\productsandservices{Moduł szyfrowania danych(lokalne przechonywanie , brak połączenia z chmurą i szyfrowanie plików za pomocą SQL Cipher). Działająca aplikacja desktopowa umożliwiająca tworzenie i edycję dokumentów. Dokumentacja techniczna i użytkowa projektu. Dokumentacja techniczna i użytkowa projektu. Mechanizm eksportu dokumentów do Archiwum (.zip / .rar) oraz formatu pdf \newline Tu wpisujemy oczekiwane funkcjonalności}
|
||||||
|
\mainfunctionalities{}
|
||||||
|
|
||||||
|
\successmeasure{Aplikacja działa poprawnie w środowisku lokalnym bez błędów krytycznych. Wszystkie kluczowe funkcji działają zgodnie z założeniami projektowymi.}
|
||||||
|
|
||||||
|
\projlimitations{Aplikacja działa wyłącznie lokalnie, bez integracji z chmurą. Pierwsza wersja MVP obejmuje wyłącznie podstawowe funkcje archiwizacji i szyfrowania. Termin, wielkosc zespołu, budżet.}
|
||||||
|
|
||||||
|
\author{Krzysztof Cieślik}{S27115}{Aplikacje Internetowe}{niestacjonarne}
|
||||||
|
\author{Oleksii Sumrii}{S22775}{Cyberbezpieczeństwo}{niestacjonarne}
|
||||||
|
\author{Robert Elwart}{S26838}{Cyberbezpieczeństwo}{niestacjonarne}
|
||||||
|
\author{Szymon Stefański}{S22043}{Sztuczna inteligencja}{niestacjonarne}
|
||||||
|
\author{Mateusz Falkowski}{S27426}{Sztuczna inteligencja}{niestacjonarne}
|
||||||
|
|
||||||
|
\finishdate{15 lutego 2026}
|
||||||
|
\reviewer{prof. dr hab. inż. lek. Jamroży Omnibus}
|
||||||
|
|
||||||
|
|
||||||
|
\begin{document}
|
||||||
|
\vspace*{-3cm}
|
||||||
|
\begin{figure}[h!]
|
||||||
|
\centering
|
||||||
|
\includegraphics[width=0.5\textwidth]{sprz/pjatk}
|
||||||
|
\label{png:pjatk}
|
||||||
|
\end{figure}
|
||||||
|
\makeprojectcard
|
||||||
|
\end{document}
|
||||||
32
Makefile
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
DOCS = Karta_Projektu dzw SWS_Archivium
|
||||||
|
MAIN = main
|
||||||
|
|
||||||
|
PDFS = $(addsuffix .pdf, $(DOCS))
|
||||||
|
|
||||||
|
.PHONY: all clean przygotuj_pliki
|
||||||
|
|
||||||
|
all: $(PDFS) $(MAIN).pdf
|
||||||
|
|
||||||
|
przygotuj_pliki:
|
||||||
|
# Kolejność jest kluczowa, aby nie nadpisać wielokrotnie tych samych słów!
|
||||||
|
sed -e 's/\\subsubsection{/\\paragraph{/g' \
|
||||||
|
-e 's/\\subsection{/\\subsubsection{/g' \
|
||||||
|
-e 's/\\section{/\\subsection{/g' \
|
||||||
|
-e 's/\\chapter{/\\section{/g' dzw.tex > dzw_zmienione.tex
|
||||||
|
|
||||||
|
sed -e 's/\\subsubsection{/\\paragraph{/g' \
|
||||||
|
-e 's/\\subsection{/\\subsubsection{/g' \
|
||||||
|
-e 's/\\section{/\\subsection{/g' \
|
||||||
|
-e 's/\\chapter{/\\section{/g' SWS_Archivium.tex > SWS_zmienione.tex
|
||||||
|
|
||||||
|
%.pdf: %.tex
|
||||||
|
latexmk -pdf -f -shell-escape -interaction=nonstopmode $<
|
||||||
|
|
||||||
|
$(MAIN).pdf: przygotuj_pliki $(MAIN).tex
|
||||||
|
latexmk -pdf -f -shell-escape -interaction=nonstopmode $(MAIN).tex
|
||||||
|
|
||||||
|
clean:
|
||||||
|
latexmk -C
|
||||||
|
rm -f *.run.xml *.bcf *.fdb_latexmk *.fls *.synctex.gz
|
||||||
|
rm -f $(MAIN).pdf $(PDFS)
|
||||||
|
rm -f dzw_zmienione.tex SWS_zmienione.tex
|
||||||
79
Ola_Janowska.tex
Normal file
@@ -0,0 +1,79 @@
|
|||||||
|
|
||||||
|
\subsection{Ola Janowska}
|
||||||
|
|
||||||
|
\begin{figure}[h!]
|
||||||
|
\centering
|
||||||
|
\includegraphics[width=0.5\textwidth]{PersonyObrazki/Ola}
|
||||||
|
\label{png:Ola}
|
||||||
|
\end{figure}
|
||||||
|
|
||||||
|
\vspace{-30pt}
|
||||||
|
|
||||||
|
\begin{center}
|
||||||
|
{\tiny Źródło zdjęcia: https://chatgpt.com/}
|
||||||
|
\end{center}
|
||||||
|
|
||||||
|
\subsubsection{Cytat}
|
||||||
|
"Lubię mieć porządek w chaosie – zdjęcia, faktury i umowy muszą być zawsze pod ręką."
|
||||||
|
|
||||||
|
\subsubsection{BIO}
|
||||||
|
\begin{itemize}
|
||||||
|
\item \textbf{Płeć:} Kobieta
|
||||||
|
\item \textbf{Wiek:} 34 lata
|
||||||
|
\item \textbf{Zawód:} Fotografka freelancerka
|
||||||
|
\item \textbf{Wykształcenie:} Wyższe artystyczne
|
||||||
|
\item \textbf{Miejsce zamieszkania:} Gdańsk
|
||||||
|
\item \textbf{Rodzina:} W związku, bez dzieci
|
||||||
|
\item \textbf{Tryb pracy:} Pracuje zdalnie, realizuje zlecenia dla klientów indywidualnych i agencji reklamowych
|
||||||
|
\end{itemize}
|
||||||
|
|
||||||
|
\subsubsection{Kim jest}
|
||||||
|
Ola prowadzi jednoosobową działalność gospodarczą jako fotografka.
|
||||||
|
Pracuje głównie z materiałami graficznymi i dokumentami – podpisuje umowy, wystawia faktury, archiwizuje zgody RODO, referencje oraz kopie sesji zdjęciowych.
|
||||||
|
Często korzysta z różnych urządzeń, ale nie chce trzymać danych w chmurze z uwagi na bezpieczeństwo i prywatność klientów.
|
||||||
|
Ceni sobie ład i prostotę w narzędziach pracy.
|
||||||
|
|
||||||
|
\subsubsection{Co myśli i czuje}
|
||||||
|
\begin{itemize}
|
||||||
|
\item Chce mieć wszystkie swoje dokumenty i projekty uporządkowane w jednym miejscu.
|
||||||
|
\item Obawia się utraty danych lub wycieku zdjęć klientów.
|
||||||
|
\item Szuka prostego i bezpiecznego narzędzia, które nie wymaga internetu.
|
||||||
|
\item Lubi, gdy aplikacje są estetyczne i intuicyjne, bez zbędnych opcji.
|
||||||
|
\end{itemize}
|
||||||
|
|
||||||
|
\subsubsection{Motywacje}
|
||||||
|
\begin{itemize}
|
||||||
|
\item Chce mieć szybki dostęp do umów, faktur i zgód klientów.
|
||||||
|
\item Potrzebuje narzędzia, które pozwoli jej przechowywać i opisywać pliki taki jak zdjęcia, umowy i td. w sposób uporządkowany.
|
||||||
|
\item Zależy jej na bezpieczeństwie danych i prywatności.
|
||||||
|
\end{itemize}
|
||||||
|
|
||||||
|
\subsubsection{Frustracje}
|
||||||
|
\begin{itemize}
|
||||||
|
\item Obecne programy do zarządzania dokumentami są przeładowane funkcjami i wymagają konta online.
|
||||||
|
\item Nie ufa chmurom, obawia się naruszenia prywatności swoich klientów.
|
||||||
|
\item Często gubi pliki między folderami i nośnikami USB.
|
||||||
|
\item Frustruje ją konieczność używania wielu różnych aplikacji biurowych.
|
||||||
|
\item Backupy danych są czasochłonne i trudne do wykonania ręcznie.
|
||||||
|
\end{itemize}
|
||||||
|
|
||||||
|
\subsubsection{Styl życia}
|
||||||
|
Ola prowadzi dynamiczny tryb życia.
|
||||||
|
Pracuje w różnych lokalizacjach taki jak studie, u klientów lub w domu.
|
||||||
|
Korzysta z laptopa z systemem Windows i zewnętrznych dysków SSD do przechowywania sesji zdjęciowych.
|
||||||
|
Nie jest specjalistką IT, ale potrafi korzystać z prostych aplikacji, jeśli interfejs jest intuicyjny.
|
||||||
|
Lubi minimalizm i estetyczne, uporządkowane rozwiązania.
|
||||||
|
|
||||||
|
\subsubsection{Potrzeby}
|
||||||
|
\begin{itemize}
|
||||||
|
\item Potrzebuje aplikacji, która bezpiecznie przechowuje dokumenty offline.
|
||||||
|
\item Chce mieć szybki dostęp do swoich plików z możliwością wyszukiwania.
|
||||||
|
\item Oczekuje pełnej prywatności, dane muszą być zaszyfrowane.
|
||||||
|
\item Potrzebuje prostego eksportu dokumentów do PDF, np. w celu wysłania klientowi.
|
||||||
|
\item Nie chce konfigurować ani synchronizować aplikacji z chmurą.
|
||||||
|
\end{itemize}
|
||||||
|
|
||||||
|
\subsubsection{Dlaczego potrzebuje Archivium?}
|
||||||
|
Ola potrzebuje Archivium, aby zapanować nad chaosem w dokumentacji swojej jednoosobowej działalności bez konieczności powierzania danych chmurze.
|
||||||
|
Aplikacja pozwoli jej w prosty i estetyczny sposób archiwizować umowy oraz zgody RODO offline, gwarantując bezpieczeństwo wizerunku jej klientów.
|
||||||
|
Dzięki Archivium odzyska poczucie kontroli i nie będzie tracić czasu na szukanie plików na różnych nośnikach.
|
||||||
BIN
PersonyObrazki/Aneta.png
Normal file
|
After Width: | Height: | Size: 6.2 MiB |
BIN
PersonyObrazki/Danuta.png
Normal file
|
After Width: | Height: | Size: 6.8 MiB |
BIN
PersonyObrazki/Janusz.png
Normal file
|
After Width: | Height: | Size: 6.5 MiB |
BIN
PersonyObrazki/Ola.png
Normal file
|
After Width: | Height: | Size: 6.7 MiB |
BIN
PersonyObrazki/Stefan.png
Normal file
|
After Width: | Height: | Size: 6.9 MiB |
722
SWS_Archivium.tex
Normal file
@@ -0,0 +1,722 @@
|
|||||||
|
\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{placeins}
|
||||||
|
|
||||||
|
\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{Specyfikacji Wymagań Systemowych}
|
||||||
|
&
|
||||||
|
\textbf{\footnotesize Odpowiedzialny za dokument:} \newline
|
||||||
|
\textit{Zespół projektowy}
|
||||||
|
&
|
||||||
|
\textbf{\footnotesize Opiekun projektu:} \newline
|
||||||
|
Tadeusz Puźniakowski \\ \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 wstępna & całość & Krzysztof Cieślik & 20/01/2026 \\ \hline
|
||||||
|
v5 & Wersja wstępna & całość & Szymon Stefański & 25/01/2026 \\ \hline
|
||||||
|
\end{tabular}
|
||||||
|
\end{table}
|
||||||
|
|
||||||
|
\uwaga{Do promotora:
|
||||||
|
- Formatowanie,fonty itd dokumentu nie zostało tutaj wykonane w poprawny sposób ponieważ i tak planujemy przeniesienie tego na LaTeX.}
|
||||||
|
|
||||||
|
\uwaga{uwagi, przyszłe zmiany będą w tym kolorze.}
|
||||||
|
|
||||||
|
|
||||||
|
\chapter{Wprowadzenie – o dokumencie}
|
||||||
|
|
||||||
|
\section{Cel dokumentu}
|
||||||
|
Celem niniejszego dokumentu jest zdefiniowanie i usystematyzowanie wymagań funkcjonalnych, pozafunkcjonalnych oraz środowiskowych dla systemu Archivium.
|
||||||
|
Dokument powstał na podstawie badania ankietowego, opracowanych person i analizy rozwiązań konkurencyjnych.
|
||||||
|
|
||||||
|
\section{Zakres dokumentu}
|
||||||
|
Dokument obejmuje analizę potrzeb użytkowników, określenie wymagań funkcjonalnych i pozafunkcjonalnych oraz założeń architektonicznych.
|
||||||
|
\newline
|
||||||
|
Dokument opiera się na wstępnej analizie dokonanej w dokumencie DZW oraz przeprowadzonej ankiecie i wytworzonych personach oraz wytworzonym rich picture.
|
||||||
|
|
||||||
|
\uwaga{tu pojawi się jeszcze jeśli się uda Burza mózgów}
|
||||||
|
\uwaga{
|
||||||
|
Metoda polegająca na zbieraniu pomysłów od uczestników spotkania. Żaden pomysł nie może być krytykowany ani negowany podczas panelu. Na koniec należy wybrać najlepsze propozycje i je poddać dalszej analizie.
|
||||||
|
}
|
||||||
|
|
||||||
|
\uwaga{
|
||||||
|
i Grupy focusowe
|
||||||
|
(
|
||||||
|
Metoda przydatna do pozyskiwania danych jakościowych, polegająca na zaproszeniu wybranej grupy uczestników i przeprowadzeniu z nimi moderowanej dyskusji na konkretny temat.}
|
||||||
|
|
||||||
|
\uwaga{
|
||||||
|
W planach jest próba spotkania się z zarządem organizacji hackerspace pomorze która mogłaby używać tego programu i z kilkoma osobami które mają zawodowe doświadczenie w tworzeniu dokumentacji projektowej.
|
||||||
|
Wtedy też pojawi się dodatkowy udziałowiec
|
||||||
|
)}
|
||||||
|
\newpage
|
||||||
|
\section{Rich Picture}
|
||||||
|
\begin{figure}[h!]
|
||||||
|
\centering
|
||||||
|
\includegraphics[width=1.27\textwidth, angle=90]{sprz/richPicture}
|
||||||
|
\label{png:richPicture}
|
||||||
|
\end{figure}
|
||||||
|
\newpage
|
||||||
|
|
||||||
|
\section{Dokumenty powiązane}
|
||||||
|
\begin{itemize}
|
||||||
|
\item Karta\_projektu-Gr73c(SCESF)-v0\_Archivium
|
||||||
|
\item DZW-Gr73c(SCESF)-v0\_Archivium
|
||||||
|
\item IEC 82079-1
|
||||||
|
\item Art. 54-60 (RODO)
|
||||||
|
\item PRZ1 proj\_dyp
|
||||||
|
\item Zasady redagowania instrukcji
|
||||||
|
\end{itemize}
|
||||||
|
|
||||||
|
\section{Odbiorcy}
|
||||||
|
Zespół projektowy, zleceniodawca i opiekun projektu.
|
||||||
|
|
||||||
|
\section{Słownik pojęć}
|
||||||
|
\begin{description}
|
||||||
|
\item \textbf{SQLCipher} - Rozszerzenie SQLite umożliwiające szyfrowanie bazy danych za pomocą algorytmu AES-256.
|
||||||
|
\item \textbf{OCR (Optical Character Recognition)} - technologia rozpoznawania tekstu z obrazów lub skanów dokumentów
|
||||||
|
\item \textbf {Użytkownik końcowy} - Osoba korzystająca z systemu do zarządzania swoimi dokumentami.
|
||||||
|
\item \textbf{DZW} - Dokument Założeń Wstępnych.
|
||||||
|
\item \textbf{Wyszukiwanie semantyczne} - Metoda przeszukiwania bazy danych, która rozumie intencję użytkownika i kontekst zapytania.
|
||||||
|
\item \textbf{LLM (Large Language Model)} - Rodzaj sztucznej inteligencji wyszkolonej na ogromnych zbiorach danych, zdolny do generowania tekstu, streszczania dokumentów i odpowiadania na pytania w języku naturalnym.
|
||||||
|
\item \textbf{RWD (Responsive Web Design)} - Interfejs dopasowywujący się do wielkości ekranu.
|
||||||
|
\item \textbf{WCAG (Web Content Accessibility Guidelines)} - Standardy dostępności dla osób z niepełnosprawnościami.
|
||||||
|
\end{description}
|
||||||
|
|
||||||
|
\chapter{Projekt w kontekście}
|
||||||
|
|
||||||
|
\section{Kontekst biznesowy}
|
||||||
|
Program ma dostarczać funkcjonalności potrzebne do pracy z dokumentami tekstowymi z dodatkowymi funkcjonalnościami których nie posiada konkurencyjne oprogramowania szczególnie open source takimi jak wersjonowanie dokumentów, automatyczne szyfrowanie.
|
||||||
|
|
||||||
|
\section{Udziałowcy}
|
||||||
|
\begin{itemize}
|
||||||
|
\item \textbf{Użytkownicy indywidualni} – osoby korzystające z aplikacji w celach osobistych lub zawodowych, które potrzebują prostego narzędzia do tworzenia, edytowania i organizowania własnych dokumentów.
|
||||||
|
\item \textbf{Firmy i organizacje} – klienci instytucjonalni wykorzystujący aplikację do zarządzania dokumentacją wewnętrzną i archiwizowania projektów.
|
||||||
|
\item \textbf{Zespół programistyczny} - odpowiedzialny za tworzenie i rozwijanie funkcjonalności aplikacji.
|
||||||
|
\item \textbf{Infrastruktura techniczna} - docelowy komputer osobisty na którym będzie działać oprogramowanie.
|
||||||
|
\newline
|
||||||
|
(udziałowiec nieożywiony).
|
||||||
|
\end{itemize}
|
||||||
|
|
||||||
|
\FloatBarrier
|
||||||
|
|
||||||
|
\begin{stakeholder}[label={stk:utk01}, caption={Użytkownicy indywidualni}]
|
||||||
|
\id{UTK 01}
|
||||||
|
\name{Użytkownicy indywidualni}
|
||||||
|
\descr{Są to osoby fizyczne wykorzystujące aplikację do celów osobistych. W strukturze projektu są określani jako klienci zewnętrzni, którzy potrzebują wygodnego narzędzia do organizowania dokumentów.}
|
||||||
|
\type{Ożywiony}
|
||||||
|
\viewpoint{Użytkownik końcowy. Interesuje go przede wszystkim warstwa użytkowa i funkcjonalność aplikacji, a nie jej wewnętrzna architektura.}
|
||||||
|
\limitations{Wiedza techniczna, korzystanie z urządzeń o różnych parametrach.
|
||||||
|
Korzystają z urządzeń o różnych parametrach sprzętowych.}
|
||||||
|
\requ{NF01, NF03, NF02, ŚD01, W04, Wszystkie Wymagania Funkcjonalne}
|
||||||
|
\end{stakeholder}
|
||||||
|
|
||||||
|
\FloatBarrier
|
||||||
|
|
||||||
|
\begin{stakeholder}[label={stk:utk02}, caption={Firmy i organizacje}]
|
||||||
|
\id{UTK 02}
|
||||||
|
\name{Firmy i organizacje}
|
||||||
|
\descr{Instytucje wdrażające aplikację jako autonomiczne oprogramowanie desktopowe/lokalne dla poszczególnych użytkowników, pozbawione centralnej administracji serwerowej w procesie użytkowania.}
|
||||||
|
\type{Ożywiony}
|
||||||
|
\viewpoint{Użytkownik końcowy}
|
||||||
|
\limitations{Ograniczone możliwości zdalnego wsparcia technicznego wynikające z braku centralnego panelu administracyjnego.
|
||||||
|
Samodzielna instalacja i aktualizacja oprogramowania na rozproszonych stanowiskach pracy.
|
||||||
|
\newline
|
||||||
|
Praca w środowisku lokalnym bez dostępu do centralnej bazy danych.
|
||||||
|
Konieczność zapewnienia bezpieczeństwa danych na poziomie stacji roboczej (zgodnie z polityką organizacji).}
|
||||||
|
\requ{NF01, NF03, ŚD01}
|
||||||
|
\end{stakeholder}
|
||||||
|
|
||||||
|
\FloatBarrier
|
||||||
|
|
||||||
|
\begin{stakeholder}[label={stk:utk03}, caption={Zespół programistyczny}]
|
||||||
|
\id{ZPR 01}
|
||||||
|
\name{Zespół programistyczny}
|
||||||
|
\descr{Pięcioosobowy zespół odpowiedzialny za projektowanie, implementację, testowanie oraz dokumentację systemu.}
|
||||||
|
\type{Ożywiony}
|
||||||
|
\viewpoint{Twórca systemu}
|
||||||
|
\limitations{
|
||||||
|
\begin{itemize}
|
||||||
|
\item \textbf{Zasoby i harmonogram:} - Sztywny budżet projektu wynoszący 250 PLN oraz konieczność ukończenia prac w ciągu 10 miesięcy.
|
||||||
|
\item \textbf{Prawne i licencyjne:} - Obowiązek stosowania bibliotek zgodnych z przyjętą licencją GPL v3 (np. MIT, Apache 2.0, BSD).
|
||||||
|
\end{itemize}
|
||||||
|
}
|
||||||
|
\requ{NF01, NF03, ŚD01, ŚD02}
|
||||||
|
\end{stakeholder}
|
||||||
|
|
||||||
|
\FloatBarrier
|
||||||
|
|
||||||
|
\begin{stakeholder}[label={stk:utk04}, caption={Lokalna stacja robocza (Komputer osobisty)}]
|
||||||
|
\id{UNP 01}
|
||||||
|
\name{Lokalna stacja robocza (Komputer osobisty)}
|
||||||
|
\descr{Środowisko sprzętowe i systemowe (Windows/Linux), na którym lokalnie zainstalowana jest aplikacja Archivium. Zapewnia zasoby procesora, pamięci RAM oraz miejsce na dysku niezbędne do działania programu.}
|
||||||
|
\type{Nieożywiony}
|
||||||
|
\viewpoint{Środowisko uruchomieniowe}
|
||||||
|
\limitations{Całość przetwarzania i składowania danych musi zamknąć się w zasobach lokalnego komputera.
|
||||||
|
\newline
|
||||||
|
Konieczność płynnego działania na współczesnych procesorach klasy konsumenckiej}
|
||||||
|
\requ{NF01, NF03, ŚD01, ŚD02, NF02}
|
||||||
|
\end{stakeholder}
|
||||||
|
|
||||||
|
\FloatBarrier
|
||||||
|
|
||||||
|
\begin{stakeholder}[label={stk:utk05}, caption={Licencja GPL v3}]
|
||||||
|
\id{UNP 02}
|
||||||
|
\name{Licencja GPL v3}
|
||||||
|
\descr{Wybrana licencja wpływa na wybór zastosowanych bibliotek i komponentów w systemie oraz spełnienia ich warunków licencyjnych.}
|
||||||
|
\type{Nieożywiony}
|
||||||
|
\viewpoint{Zespół programistyczny}
|
||||||
|
\limitations{Zastosowane biblioteki muszą pozwalać na stosowanie ich w programie wydanym na licencji GPL v3.}
|
||||||
|
\requ{Wszsytkie wymagania funkcjonalne, W02}
|
||||||
|
\end{stakeholder}
|
||||||
|
|
||||||
|
\FloatBarrier
|
||||||
|
|
||||||
|
\clearpage
|
||||||
|
\section{Klienci}
|
||||||
|
|
||||||
|
\subsection{Klienci wewnętrzni}
|
||||||
|
\begin{itemize}
|
||||||
|
\item \textbf{Zespół projektowy} – odpowiedzialny za tworzenie i wdrażanie funkcjonalności aplikacji. Ich potrzeby obejmują jasne wymagania projektowe oraz stabilne środowisko techniczne, które umożliwia testowanie i rozwijanie aplikacji.
|
||||||
|
\end{itemize}
|
||||||
|
|
||||||
|
\subsection{Klienci zewnętrzni}
|
||||||
|
\begin{itemize}
|
||||||
|
\item \textbf{Użytkownicy indywidualni} - Osoby korzystające z aplikacji w celach osobistych lub zawodowych, które potrzebują wygodnego narzędzia do organizowania dokumentów. Zwykle nie posiadają zaawansowanej wiedzy technicznej dlatego wymagają prostego, intuicyjnego interfejsu oraz dostępności aplikacji na różnych urządzeniach.
|
||||||
|
\item \textbf{Firmy i organizacje} - Klienci instytucjonalni wykorzystujący aplikację do zarządzania dokumentacją wewnętrzną i archiwizacji projektów. Zazwyczaj posiadają własne procedury dotyczące przechowywania i przetwarzania danych, dlatego wymagają bezpieczeństwa danych i zgodności z przepisami. Dodatkowo kontrola wersji i archiwizacja pozytywnie wpłynie na przepływ informacji w firmie.
|
||||||
|
\end{itemize}
|
||||||
|
|
||||||
|
\section{Charakterystyka użytkowników}
|
||||||
|
\begin{itemize}
|
||||||
|
\item \textbf{Użytkownicy indywidualni}: Osoby fizyczne korzystające z aplikacji w celach osobistych lub zawodowych.
|
||||||
|
\newline
|
||||||
|
\textbf{Uprawnienia dostępu}: Użytkownicy mają dostęp do wszystkich funkcji aplikacji, umożliwiających tworzenie, edycję, organizację, wersjonowanie i eksport dokumentów.
|
||||||
|
\end{itemize}
|
||||||
|
\begin{itemize}
|
||||||
|
\item \textbf{Firmy i organizacje}: Klienci instytucjonalni wykorzystujący aplikację do zarządzania dokumentacją wewnętrzną i archiwizacji projektów. Aplikacja jest przeznaczona do użytku przez jednego użytkownika w organizacji, na przykład do zarządzania osobistymi zbiorami dokumentów lub archiwizacji w małych jednostkach.
|
||||||
|
\newline
|
||||||
|
\textbf{Uprawnienia dostępu}: Zarządzanie strukturą dokumentów i archiwów organizacyjnych, kontrola wersji i śledzenie historii zmian w dokumentach.
|
||||||
|
\end{itemize}
|
||||||
|
|
||||||
|
|
||||||
|
\chapter{Wymagania}
|
||||||
|
\section{Wymagania ogólne i dziedzinowe}
|
||||||
|
|
||||||
|
\begin{requirementstab}[label={tab:requirements:W01},caption={Bezpieczne przechowywanie dokumentów}]
|
||||||
|
\id{W01}
|
||||||
|
\priority{M}
|
||||||
|
\name{Bezpieczne przechowywanie dokumentów}
|
||||||
|
\descr{System musi umożliwiać lokalne, zaszyfrowane przechowywanie danych bez konieczności dostępu do sieci Internet. Wszystkie dokumenty i metadane są zapisywane w pliku bazy danych na urządzeniu użytkownika.
|
||||||
|
\newline
|
||||||
|
Plik bazy danych jest nieczytelny dla zewnętrznych edytorów bez podania klucza szyfrującego.}
|
||||||
|
\sholder{ZPR 01, UTK 01, UTK 02}
|
||||||
|
\reqrelated{WF01, WF07, NF01}
|
||||||
|
\end{requirementstab}
|
||||||
|
|
||||||
|
\FloatBarrier
|
||||||
|
|
||||||
|
\begin{requirementstab}[label={tab:requirements:W02},caption={Kreator dokumentów}]
|
||||||
|
\id{W02}
|
||||||
|
\priority{M}
|
||||||
|
\name{Kreator dokumentów}
|
||||||
|
\descr{Użytkownik może tworzyć nowe i edytować istniejące dokumenty. System zapisuje dokument w lokalnej bazie danych.}
|
||||||
|
\sholder{ZPR 01, UTK 01, UTK 02}
|
||||||
|
\reqrelated{WF01, WF07, WF08, I01, WF04}
|
||||||
|
\end{requirementstab}
|
||||||
|
|
||||||
|
\FloatBarrier
|
||||||
|
|
||||||
|
\begin{requirementstab}[label={tab:requirements:W03},caption={Edytor dokumentów obsługujący podstawowe funkcjonalności}]
|
||||||
|
\id{W03}
|
||||||
|
\priority{M}
|
||||||
|
\name{Edytor dokumentów obsługujący podstawowe funkcjonalności}
|
||||||
|
\descr{Edytor wspiera: zaawansowane formatowanie tekstu, tabele o określonych wymiarach, listy, wstawianie multimediów (np. zdjęcia), obsługę hiperłączy oraz formuły matematyczne.}
|
||||||
|
\sholder{ZPR 01, UTK 01, UTK 02}
|
||||||
|
\reqrelated{WF01, WF07, WF08, I01, WF04}
|
||||||
|
\end{requirementstab}
|
||||||
|
|
||||||
|
\FloatBarrier
|
||||||
|
|
||||||
|
\begin{requirementstab}[label={tab:requirements:W04},caption={Wydajność}]
|
||||||
|
\id{W04}
|
||||||
|
\priority{M}
|
||||||
|
\name{Wydajność}
|
||||||
|
\descr{Program musi działać płynnie na urządzeniu docelowym zgodnie z ogólnie przyjętymi dobrymi praktykami dotyczącymi responsywności UX/UI}
|
||||||
|
\sholder{ZPR 01, UTK 01, UTK 02, UNP 01}
|
||||||
|
\reqrelated{WF07, W02, NF03, ŚD01}
|
||||||
|
\end{requirementstab}
|
||||||
|
|
||||||
|
\FloatBarrier
|
||||||
|
|
||||||
|
\begin{requirementstab}[label={tab:requirements:W05},caption={Intuicyjność interfejsu}]
|
||||||
|
\id{W05}
|
||||||
|
\priority{M}
|
||||||
|
\name{Intuicyjność interfejsu}
|
||||||
|
\descr{UI programu musi być prosty i jednolity zgodnie z dobrymi praktykami dotyczącymi responsywności UX/UI takich jak heurystykami Nielsena, Three-click rule, RWD, WCAG, Prawo Fittsa.}
|
||||||
|
\sholder{UTK 01, UTK 02}
|
||||||
|
\reqrelated{W02}
|
||||||
|
\end{requirementstab}
|
||||||
|
|
||||||
|
\FloatBarrier
|
||||||
|
|
||||||
|
%3.2
|
||||||
|
\section{Wymagania funkcjonalne}
|
||||||
|
%3.2.1
|
||||||
|
\subsection{Nazwa funkcji/usługi}
|
||||||
|
|
||||||
|
\begin{requirementstab}[label={tab:requirements:WF01},caption={Pryzkładowa tabela z wymaganiami na interfejs z otoczeniem}]
|
||||||
|
\id{WF01}
|
||||||
|
\priority{M}
|
||||||
|
\name{Dodawanie dokumentów.}
|
||||||
|
\descr{Użytkownik ma możliwość utworzenia nowego dokumentu. Aplikacja wyświetla pusty plik, który w każdym momencie może zostać zapisany tekstem, mogą zostać utworzone tabelki, listy punktowe, mogą zostać wklejona zdjęcia czy wzory matematyczne. Cały proces kończy się powstaniem nowego dokumentu, gdy użytkownik kliknie przycisk “Zapisz”.}
|
||||||
|
\acceptcrit{
|
||||||
|
Dodany dokument jest widoczny w aplikacji i zapisany w bazie danych.
|
||||||
|
\newline
|
||||||
|
Użytkownik może poprawnie wstawić, i wyświetlić wszystkie kluczowe elementy: \textbf{tabele, listy, multimedia, hiperłącza oraz formuły matematyczne.}
|
||||||
|
\newline
|
||||||
|
Po ponownym uruchomieniu aplikacji cała treść (w tym wstawione multimedia i wzory) pozostaje dostępna i poprawnie wyrenderowana.}
|
||||||
|
\inputdata{Akcja użytkownika - polecenie utworzenia nowego dokumentu; tytuł dokumentu}
|
||||||
|
\preconditions{Aplikacja uruchomiona; użytkownik zalogowany;}
|
||||||
|
\postconditions{Dokument zostanie zapisany w zaszyfrowanej bazie i widoczny w interfejsie użytkownika.}
|
||||||
|
\exceptions{Błąd przy tworzeniu pliku, brak miejsca na dysku, przerwanie zapisu.}
|
||||||
|
\implementation{Integracja z modułem bazy danych SQLCipher przy pomocy SQLAlchemy; funkcja importu pliku i generowania metadanych.}
|
||||||
|
\sholder{UTK 01, UTK 02}
|
||||||
|
\reqrelated{W01, W02, I02}
|
||||||
|
\end{requirementstab}
|
||||||
|
|
||||||
|
\FloatBarrier
|
||||||
|
|
||||||
|
\begin{requirementstab}[label={tab:requirements:WF02},caption={Edycja dokumentów}]
|
||||||
|
\id{WF02}
|
||||||
|
\priority{M}
|
||||||
|
\name{Edycja dokumentów}
|
||||||
|
\descr{Użytkownik wybiera istniejący dokument a aplikacja musi wyświetlić go dokładnie tak, jak został zapisany. Użytkownik może dopisać nowe zdania, poprawić błędy, dodać lub usunąć nowe elementy jak np.\textbf{tabele, listy, multimedia, hiperłącza oraz formuły matematyczne.} Po kliknięciu “Zapisz” stara wersja pliku jest archiwizowana ,a wyedytowana staje się obowiązującą.}
|
||||||
|
\acceptcrit{
|
||||||
|
Nowa wersja dokumentu jest widoczna w aplikacji jako obecna, a stara jest zapisywana w bazie danych.
|
||||||
|
\newline
|
||||||
|
Użytkownik może zmienić treść istniejącego dokumentu poprzez wstawianie, modyfikowanie i usuwanie wszystkie elementów dokumentu.
|
||||||
|
\newline
|
||||||
|
Po ponownym uruchomieniu aplikacji cała treść (w tym wstawione, zmodyfikowane multimedia i wzory) pozostaje dostępna i poprawnie wyrenderowana.}
|
||||||
|
\inputdata{Dokument zapisany w bazie danych}
|
||||||
|
\preconditions{Aplikacja uruchomiona; użytkownik zalogowany;}
|
||||||
|
\postconditions{Nowa i stara wersja dokumentu zostanie zapisana w zaszyfrowanej bazie. Nowa wersja aktywa w edytorze.}
|
||||||
|
\exceptions{Błąd przy odczycie pliku, brak miejsca na dysku, przerwanie zapisu.}
|
||||||
|
\implementation{Integracja z modułem bazy danych SQLCipher przy pomocy SQLAlchemy; funkcja importu pliku i generowania metadanych.}
|
||||||
|
\sholder{UTK 01, UTK 02}
|
||||||
|
\reqrelated{W01, W02, I02}
|
||||||
|
\end{requirementstab}
|
||||||
|
|
||||||
|
\FloatBarrier
|
||||||
|
|
||||||
|
\begin{requirementstab}[label={tab:requirements:WF03},caption={Wyszukiwanie dokumentów}]
|
||||||
|
\id{WF03}
|
||||||
|
\priority{M}
|
||||||
|
\name{Wyszukiwanie dokumentów}
|
||||||
|
\descr{System umożliwia wyszukiwanie dokumentów po nazwie, dacie lub treści rozpoznanej przez moduł OCR.}
|
||||||
|
\acceptcrit{Wyniki wyświetlają się poprawnie zgodnie z zapytaniem użytkownika; czas wyszukiwania nie przekracza 2 sekund.}
|
||||||
|
\inputdata{Fraza wyszukiwania, wybrane filtry(np. data, tagi)}
|
||||||
|
\preconditions{Baza danych zawiera co najmniej 1 dokument.}
|
||||||
|
\postconditions{Zwrócona lista dokumentów odpowiada zadanym kryteriom.}
|
||||||
|
\exceptions{Brak wyników wyszukiwania; błędne dane wejściowe;}
|
||||||
|
\implementation{Indeksowanie danych tekstowych i metadanych w bazie SQLite;}
|
||||||
|
\sholder{UTK 01, UTK 02, UNP 01}
|
||||||
|
\reqrelated{WF01, W04, I02}
|
||||||
|
\end{requirementstab}
|
||||||
|
|
||||||
|
\FloatBarrier
|
||||||
|
|
||||||
|
\begin{requirementstab}[label={tab:requirements:WF03.1},caption={Semantyczne wyszukiwanie dokumentów}]
|
||||||
|
\id{WF03.1}
|
||||||
|
\priority{S}
|
||||||
|
\name{Semantyczne wyszukiwanie dokumentów}
|
||||||
|
\descr{System powinien oferować możliwość wyszukiwania dokumentów na podstawie ich kontekstu, a nie tylko dokładnych fraz wpisanych przez użytkownika. Wykorzystuje to lokalne modele embeddingowe do generowania wektorów zapisywanych w zaszyfrowanej bazie danych.}
|
||||||
|
\acceptcrit{System zwraca dokumenty powiązane znaczeniowo.}
|
||||||
|
\inputdata{Zapytanie użytkownika w języku naturalnym.}
|
||||||
|
\preconditions{Baza danych zawiera co najmniej 1 element.}
|
||||||
|
\postconditions{Wyświetlenie listy dokumentów posortowanych według stopnia podobieństwa semantycznego.}
|
||||||
|
\exceptions{Uszkodzona baza danych, zbyt krótka fraza wyszukiwania.}
|
||||||
|
\implementation{Wykorzystanie rozszerzenia wektorowego dla SQLite.}
|
||||||
|
\sholder{UTK 01, UTK 02, ZPR 01}
|
||||||
|
\reqrelated{WF02}
|
||||||
|
\end{requirementstab}
|
||||||
|
|
||||||
|
\FloatBarrier
|
||||||
|
|
||||||
|
\begin{requirementstab}[label={tab:requirements:WF03.2},caption={Interaktywna analiza dokumentacji}]
|
||||||
|
\id{WF03.2}
|
||||||
|
\priority{C}
|
||||||
|
\name{Interaktywna analiza dokumentacji}
|
||||||
|
\descr{System może oferować funkcję rozmowy z lokalnym modelem językowy (LLM), który odpowiada na pytania użytkownika w oparciu o treść zgromadzoną w bazie danych, bez wysyłania danych na serwery zewnętrzne.}
|
||||||
|
\acceptcrit{Użytkownik otrzymuje wygenerowaną odpowiedź tekstową, która bazuje wyłącznie na faktach zawartych w jego prywatnej bazie dokumentów.}
|
||||||
|
\inputdata{Pytanie zadane przez użytkownika w oknie asystenta.}
|
||||||
|
\preconditions{Aktywny moduł wektorowy (WF02.1). Aktywny lokalny model językowy.}
|
||||||
|
\postconditions{Wyświetlenie wygenerowanej odpowiedzi wraz z odnośnikami do dokumentów źródłowych.}
|
||||||
|
\exceptions{Niewystarczająca moc obliczeniowa do uruchomienia modelu, model nie znajduje odpowiedzi dla danego kontekstu.}
|
||||||
|
\implementation{Integracja z lokalnym silnikiem LLM poprzez Python FastAPI.}
|
||||||
|
\sholder{ZPR 01}
|
||||||
|
\reqrelated{WF02}
|
||||||
|
\end{requirementstab}
|
||||||
|
|
||||||
|
\FloatBarrier
|
||||||
|
|
||||||
|
\begin{requirementstab}[label={tab:requirements:WF04},caption={Szyfrowanie danych}]
|
||||||
|
\id{WF04}
|
||||||
|
\priority{M}
|
||||||
|
\name{Szyfrowanie danych}
|
||||||
|
\descr{System automatycznie szyfruje wszystkie dane użytkownika w lokalnej bazie danych przy użyciu biblioteki SQLCipher i klucza AES-256}
|
||||||
|
\acceptcrit{Brak możliwości odczytu danych z pliku bazy danych bez hasła głównego.
|
||||||
|
W ustawieniach aplikacji nie istnieje opcja wyłączenia szyfrowania bazy danych.}
|
||||||
|
\inputdata{Dane użytkownika (np. pliki, opisy)}
|
||||||
|
\preconditions{Baza danych utworzona z poprawnym kluczem szyfrującym.}
|
||||||
|
\postconditions{Dane zapisane w postaci zaszyfrowanej w pliku bazy.}
|
||||||
|
\exceptions{Utrata klucza szyfrującego; przerwanie procesu zapisu; błędny algorytm.}
|
||||||
|
\implementation{Generowanie i zarządzanie kluczem szyfrującym.}
|
||||||
|
\sholder{UTK 01, UTK 02, UNP 01}
|
||||||
|
\reqrelated{ZPR 01, I02}
|
||||||
|
\end{requirementstab}
|
||||||
|
|
||||||
|
\FloatBarrier
|
||||||
|
|
||||||
|
\begin{requirementstab}[label={tab:requirements:WF05},caption={Eksport dokumentów do PDF}]
|
||||||
|
\id{WF05}
|
||||||
|
\priority{M}
|
||||||
|
\name{Eksport dokumentów do PDF}
|
||||||
|
\descr{System umożliwia użytkownikowi eksport wybranego dokumentu do formatu pdf}
|
||||||
|
\acceptcrit{Wyeksportowane pliki są poprawne i otwierają się w zewnętrznych programach.}
|
||||||
|
\inputdata{Wybrane dokumenty w formacie PDF.}
|
||||||
|
\preconditions{Baza danych zawiera dokumenty do raportu.}
|
||||||
|
\postconditions{Plik PDF zapisany lokalnie na dysku użytkownika.}
|
||||||
|
\exceptions{Brak miejsca na dysku, błąd podczas zapisu, przerwanie generowanie pliku.}
|
||||||
|
\implementation{Zapis pliku w formacie PDF.}
|
||||||
|
\sholder{UTK 01, UTK 02}
|
||||||
|
\reqrelated{WF01, I02}
|
||||||
|
\end{requirementstab}
|
||||||
|
|
||||||
|
\FloatBarrier
|
||||||
|
|
||||||
|
\begin{requirementstab}[label={tab:requirements:WF06},caption={Kopia zapasowa danych}]
|
||||||
|
\id{WF06}
|
||||||
|
\priority{C}
|
||||||
|
\name{Kopia zapasowa danych}
|
||||||
|
\descr{Użytkownik może wykonać kopie zapasową zaszyfrowanej bazy dannych w formacie ZIP lub TAR i odtworzyć ją w tym samym urządzeniu.}
|
||||||
|
\acceptcrit{Po przywróceniu kopii zapasowej dane są w pełni dostępne po podaniu hasła głównego.}
|
||||||
|
\inputdata{Plik bazy danych.}
|
||||||
|
\preconditions{Aplikacja uruchomiona, dostęp do systemów plików}
|
||||||
|
\postconditions{Kopia bazy zapisana w wybranej lokalizacji.}
|
||||||
|
\exceptions{Brak dostępu do lokalizacji; przerwanie zapisu; błędny format zapisu.}
|
||||||
|
\implementation{zapis kopii w zaszyfrowanym archiwum ZIP/TAR}
|
||||||
|
\sholder{ZPR 01}
|
||||||
|
\reqrelated{WF04, I02}
|
||||||
|
\end{requirementstab}
|
||||||
|
|
||||||
|
\FloatBarrier
|
||||||
|
|
||||||
|
\begin{requirementstab}[label={tab:requirements:WF07},caption={System logowania}]
|
||||||
|
\id{WF07}
|
||||||
|
\priority{M}
|
||||||
|
\name{System logowania}
|
||||||
|
\descr{Użytkownik aby uzyskać dostęp do danych bazy musi podać hasło dostępu lub użyć klucza przywracania.}
|
||||||
|
\acceptcrit{System blokuje dostęp dla użytkowników bez hasła; restart hasła wykonuje się prawidłowo.}
|
||||||
|
\inputdata{Hasło dostępu do bazy danych; klucz przywracania.}
|
||||||
|
\preconditions{Aplikacja uruchomiona, brak dostępu do bazy danych.}
|
||||||
|
\postconditions{Uzyskanie dostępu do bazy; restart hasła.}
|
||||||
|
\exceptions{Błędne hasło, błąd wczytywania bazy danych.}
|
||||||
|
\implementation{Ograniczenie dostępu do danych wymogiem hasła lub klucza przywracania.}
|
||||||
|
\sholder{UTK 01, UTK 02}
|
||||||
|
\reqrelated{WF03, W01, W04, I02}
|
||||||
|
\end{requirementstab}
|
||||||
|
|
||||||
|
\FloatBarrier
|
||||||
|
|
||||||
|
\begin{requirementstab}[label={tab:requirements:WF08},caption={Obsługa funkcji “Przeciągnij i upuść” (Drag and Drop) }]
|
||||||
|
\id{WF08}
|
||||||
|
\priority{S}
|
||||||
|
\name{Obsługa funkcji “Przeciągnij i upuść” (Drag and Drop) }
|
||||||
|
\descr{System umożliwia dodawanie dokumentów poprzez przeciągnięcie pliku z poziomu systemu operacyjnego na okno aplikacji. Upuszczenie pliku automatycznie uruchamia procedurę dodawania dokumentu.}
|
||||||
|
\acceptcrit{Użytkownik może przeciągnąć plik PDF lub jakikolwiek na obszar roboczy aplikacji, co skutkuje otwarciem okna edycji dla nowego dokumentu.}
|
||||||
|
\inputdata{Drag and Drop, ścieżka do pliku źródłowego.}
|
||||||
|
\preconditions{Aplikacja uruchomiona, użytkownik zalogowany, widoczne główne okno.}
|
||||||
|
\postconditions{Rozpoczęcie procesu importu.}
|
||||||
|
\exceptions{Upuszczenie pliku w nieobsługiwanym formacie lub w nieobjętym tym wyjątkiem obszarze.
|
||||||
|
\newline
|
||||||
|
Brak uprawnień do odczytu pliku źródłowego.}
|
||||||
|
\implementation{Obsługa zdarzeń GUI (dragEnterEvent, dropEvent).
|
||||||
|
\newline
|
||||||
|
Weryfikacja rozszerzenia pliku przed uruchomieniem procedury importu.}
|
||||||
|
\sholder{Użytkownicy końcowi.}
|
||||||
|
\reqrelated{WF01, I01, I02}
|
||||||
|
\end{requirementstab}
|
||||||
|
|
||||||
|
\FloatBarrier
|
||||||
|
|
||||||
|
\begin{requirementstab}[label={tab:requirements:WF09},caption={Wersjonowanie dokumentów.}]
|
||||||
|
\id{WF09}
|
||||||
|
\priority{M}
|
||||||
|
\name{Wersjonowanie dokumentów.}
|
||||||
|
\descr{System automatycznie zarządza historią zmian w plikach, tworząc punkty przywracania w kluczowych momentach oraz na żądanie.}
|
||||||
|
\acceptcrit{
|
||||||
|
\begin{itemize}
|
||||||
|
\item (Opcjonalnie)Braku aktywności użytkownika po zadanym czasie.
|
||||||
|
\item Zamknięcia edytowanego pliku.
|
||||||
|
\item Ręcznego wymuszenia zapisu przez użytkownika (CTRL+S).
|
||||||
|
\end{itemize}}
|
||||||
|
\inputdata{Istniejący w programie dokument i jego poprzednie wersje.}
|
||||||
|
\preconditions{Dokument istnieje w bazie danych. Użytkownik zalogowany
|
||||||
|
}
|
||||||
|
\postconditions{Nowa wersja pliku jest aktualna, stare wersje są dostępne w historii.}
|
||||||
|
\exceptions{Brak miejsca na dysku. Uszkodzona baza danych}
|
||||||
|
\implementation{Pliki dokumentów będą przechowywane w całości w bazie danych.}
|
||||||
|
\sholder{UTK 01, UTK 02}
|
||||||
|
\reqrelated{WF01, WF03, I02}
|
||||||
|
\end{requirementstab}
|
||||||
|
|
||||||
|
\FloatBarrier
|
||||||
|
|
||||||
|
\begin{requirementstab}[label={tab:requirements:WF10},caption={Indeksowanie treści z obrazów (OCR)}]
|
||||||
|
\id{WF10}
|
||||||
|
\priority{S}
|
||||||
|
\name{Indeksowanie treści z obrazów (OCR)}
|
||||||
|
\descr{System automatycznie przetwarza obrazy wklejone lub zaimportowane do notatek, rozpoznając na nich tekst (technologia OCR) i indeksując go. Umożliwia to użytkownikowi wyszukiwanie notatek na podstawie słów kluczowych znajdujących się wewnątrz grafik (np. zrzutów ekranu, skanów dokumentów).}
|
||||||
|
\acceptcrit{Po wklejeniu do notatki obrazka zawierającego czytelny tekst (np. fragment artykułu), system w tle przetwarza grafikę.
|
||||||
|
\newline
|
||||||
|
Po wpisaniu w pole wyszukiwania frazy widocznej tylko na obrazku, system zwraca notatkę zawierającą ten obrazek na liście wyników.}
|
||||||
|
\inputdata{Plik graficzny (PNG, JPG, WebP) umieszczony w treści notatki.}
|
||||||
|
\preconditions{Użytkownik dodał grafikę do notatki; Proces Sidecar odpowiedzialny za OCR jest aktywny.}
|
||||||
|
\postconditions{Tekst rozpoznany z grafiki został zapisany w indeksie wyszukiwania w bazie danych powiązanym z daną notatką.}
|
||||||
|
\exceptions{Jakość obrazu jest zbyt niska do rozpoznania tekstu.
|
||||||
|
\newline
|
||||||
|
Błąd procesu Sidecar/Python (brak odpowiedzi silnika OCR) – operacja jest ponawiana lub logowana jako błąd, bez przerywania pracy edytora.}
|
||||||
|
\implementation{Pliki dokumentów będą przechowywane w całości w bazie danych.}
|
||||||
|
\sholder{UTK 01, UTK 02}
|
||||||
|
\reqrelated{WF02, WF01}
|
||||||
|
\end{requirementstab}
|
||||||
|
|
||||||
|
\FloatBarrier
|
||||||
|
|
||||||
|
\begin{requirementstab}[label={tab:requirements:WF11},caption={Tworzenie własnych formatek dokumentów}]
|
||||||
|
\id{WF11}
|
||||||
|
\priority{C}
|
||||||
|
\name{Tworzenie własnych formatek dokumentów}
|
||||||
|
\descr{System umożliwia użytkownikowi tworzenie własnych formatek dokumentów do uzupełnienia.}
|
||||||
|
\acceptcrit{Działający kreator formatek.}
|
||||||
|
\inputdata{Plik formatki dokumentu zapisany w bazie danych}
|
||||||
|
\preconditions{Użytkownik zalogowany}
|
||||||
|
\postconditions{Formatka dokumentu została poprawnie utworzona i zapisana w bazie danych}
|
||||||
|
\exceptions{Brak miejsca na dysku. Uszkodzona baza danych}
|
||||||
|
\implementation{Wykorzystanie edytora textbf{TipTap (React)} do generowania struktury dokumentu. Formatki przechowywane są w bazie textbf{SQLite (archivium.db)} obsługiwanej przez textbf{SQLAlchemy ORM} w backendzie Pythonowym.
|
||||||
|
\newline
|
||||||
|
Dodatkowo wytworzony format zapisu formatki i moduł do ich obsługi będzie kontrolować to czy wszystkie pola zostały uzupełnione.}
|
||||||
|
\sholder{UTK 01, UTK 02}
|
||||||
|
\reqrelated{WF02, WF01}
|
||||||
|
\end{requirementstab}
|
||||||
|
|
||||||
|
\FloatBarrier
|
||||||
|
|
||||||
|
\subsection{Interfejs z otoczeniem}
|
||||||
|
|
||||||
|
\begin{requirementstab}
|
||||||
|
[label={tab:requirements:I01},caption={Interfejs użytkownika}]
|
||||||
|
\id{I01}
|
||||||
|
\priority{M}
|
||||||
|
\name{Interfejs użytkownika}
|
||||||
|
\descr{System musi udostępniać graficzny interfejs użytkownika umożliwiający dodawanie, wyszukiwanie, przeglądanie oraz eksport dokumentów. Interfejs powinien być responsywny, czytelny i spójny z konwencją systemową (ciemny i jasny tryb).}
|
||||||
|
\acceptcrit{
|
||||||
|
Użytkownik może przełączać się między trybem jasnym i ciemnym; ustawienie jest zapamiętywane.
|
||||||
|
Nawigacja między głównymi modułami odbywa się za pomocą paska bocznego/menu i działa bez przeładowania aplikacji.
|
||||||
|
Interfejs skaluje się poprawnie przy zmianie rozmiaru okna, nie ukrywając kluczowych przycisków.
|
||||||
|
Wszystkie akcje (CRUD) są dostępne z poziomu UI (kliknięcia) bez konieczności używania konsoli.}
|
||||||
|
\inputdata{Działania użytkownika (kliknięcia myszą, skróty klawiszowe, wprowadzanie tekstu), preferencje systemowe (motyw).}
|
||||||
|
\preconditions{Aplikacja uruchomiona}
|
||||||
|
\postconditions{Interfejs odzwierciedla stan systemu po wykonanej akcji (np. odświeżona lista dokumentów, komunikat o sukcesie zapisu).}
|
||||||
|
\exceptions{"Zamrożenie" interfejsu (brak responsywności UI na akcje); błędy renderowania komponentów React; nieczytelność elementów przy ekstremalnie małym rozmiarze okna.}
|
||||||
|
\implementation{Warstwa wizualna oparta na frameworku textbf{React}. Stylizacja realizowana za pomocą textbf{Tailwind CSS} (zapewnienie spójności i responsywności). Ikony interfejsu dostarczane przez bibliotekę textbf{Lucide React}. Całość renderowana w oknie natywnym dzięki textbf{Tauri}.}
|
||||||
|
\sholder{UTK 01, UTK 02}
|
||||||
|
\reqrelated{WF01, WF03, W02, WF07, W03}
|
||||||
|
\end{requirementstab}
|
||||||
|
|
||||||
|
\FloatBarrier
|
||||||
|
|
||||||
|
\begin{requirementstab}[label={tab:requirements:I02},caption={Interfejs z systemem plików}]
|
||||||
|
\id{I02}
|
||||||
|
\priority{M}
|
||||||
|
\name{Interfejs z systemem plików}
|
||||||
|
\descr{System komunikuje się z lokalnym systemem plików użytkownika w celu realizacji operacji odczytu (import dokumentów, załączników) i zapisu (eksport do PDF, kopia zapasowa). Operacje wykorzystują natywne okna dialogowe systemu operacyjnego i odbywają się bez dostępu do internetu.}
|
||||||
|
\acceptcrit{
|
||||||
|
Wywołanie funkcji importu/eksportu otwiera natywne okno wyboru pliku/katalogu właściwe dla danego systemu operacyjnego (Windows/Linux).
|
||||||
|
System poprawnie wczytuje pliki o obsługiwanych rozszerzeniach (.pdf, .jpg, .png) do pamięci aplikacji.
|
||||||
|
Eksportowane pliki pojawiają się we wskazanej przez użytkownika lokalizacji z poprawną strukturą danych
|
||||||
|
Próba dostępu do lokalizacji bez uprawnień zwraca czytelny komunikat błędu, a aplikacja nie ulega awarii.}
|
||||||
|
\inputdata{Ścieżka do pliku/katalogu wybrana przez użytkownika, strumień danych pliku (binary stream), nazwa pliku docelowego.}
|
||||||
|
\preconditions{Użytkownik ma dostęp do lokalnego systemu plików i uprawnienia do zapisu i odczytu.}
|
||||||
|
\postconditions{Plik został zaimportowany do bazy danych (jako BLOB lub tekst po OCR) LUB plik wynikowy został zapisany w systemie plików hosta.}
|
||||||
|
\exceptions{Brak uprawnień, brak miejsca na dysku, ścieżka nieprawidłowa.}
|
||||||
|
\implementation{Walidacja ścieżek; kontrola błędów zapisu.}
|
||||||
|
\sholder{UNP 01, UTK 02, UTK 01}
|
||||||
|
\reqrelated{WF01, WF04, WF09, NF01}
|
||||||
|
\end{requirementstab}
|
||||||
|
|
||||||
|
\FloatBarrier
|
||||||
|
|
||||||
|
\subsection{Wymagania pozafunkcjonalne}
|
||||||
|
|
||||||
|
\begin{requirementstab}[label={tab:requirements:NF01},caption={Stabilność działania aplikacji lokalnej}]
|
||||||
|
\id{NF01}
|
||||||
|
\priority{M}
|
||||||
|
\name{Stabilność działania aplikacji lokalnej}
|
||||||
|
\descr{Aplikacja uruchamiana jest lokalnie na komputerze użytkownika i musi zachować stabilność podczas sesji pracy, nie powodując utraty danych w wyniku błędów wewnętrznych.}
|
||||||
|
\acceptcrit{Brak krytycznych błędów (zamknięcie aplikacji, zamrożenie interfejsu na > 5s) podczas 4-godzinnej sesji testowej ciągłej pracy z edytorem.
|
||||||
|
\newline
|
||||||
|
Podczas testu nie może dojść do wycieku pamięci.}
|
||||||
|
\sholder{Użytkownicy końcowi}
|
||||||
|
\reqrelated{W02}
|
||||||
|
\end{requirementstab}
|
||||||
|
|
||||||
|
\FloatBarrier
|
||||||
|
|
||||||
|
\begin{requirementstab}[label={tab:requirements:NF02},caption={Intuicyjność interfejsu}]
|
||||||
|
\id{NF02}
|
||||||
|
\priority{M}
|
||||||
|
\name{Intuicyjność interfejsu}
|
||||||
|
\descr{Interfejs powinien być prosty i intuicyjny w obsłudze, aby nowi użytkownicy mogli łatwo nawigować i korzystać z funkcji aplikacji bez potrzeby dodatkowego wsparcia.}
|
||||||
|
\acceptcrit{Wykonanie scenariusza testowego "Tworzenie dokumentu i wyszukiwanie go" w czasie poniżej 30 sekund przez testera niebędącego autorem tego modułu (weryfikacja wewnątrz zespołu).}
|
||||||
|
\sholder{Użytkownicy końcowi}
|
||||||
|
\reqrelated{W03, I01}
|
||||||
|
\end{requirementstab}
|
||||||
|
|
||||||
|
\FloatBarrier
|
||||||
|
|
||||||
|
\begin{requirementstab}[label={tab:requirements:NF03},caption={Wydajność}]
|
||||||
|
\id{NF03}
|
||||||
|
\priority{M}
|
||||||
|
\name{Wydajność}
|
||||||
|
\descr{Czas uruchamiania systemu i wczytywania danych powinien być krótki, aby zapewnić płynne doświadczenie użytkownika.}
|
||||||
|
\acceptcrit{Uruchomienie programu w mniej niż 10 sekund na wskazanym komputerze testowym.
|
||||||
|
\newline
|
||||||
|
Otwarcie dokumentu tekstowego o długości 5 stron A4 (z obrazkami) w czasie poniżej 2 sekund.}
|
||||||
|
\sholder{Użytkownicy końcowi}
|
||||||
|
\reqrelated{W02}
|
||||||
|
\end{requirementstab}
|
||||||
|
|
||||||
|
\FloatBarrier
|
||||||
|
|
||||||
|
\subsection{Wymagania na środowisko docelowe}
|
||||||
|
|
||||||
|
\begin{requirementstab}[label={tab:requirements:ŚD01},caption={Obsługa różnych systemów operacyjnych}]
|
||||||
|
\id{ŚD01}
|
||||||
|
\priority{M}
|
||||||
|
\name{Obsługa różnych systemów operacyjnych}
|
||||||
|
\descr{Aplikacja powinna działać na popularnych systemach operacyjnych Windows.}
|
||||||
|
\acceptcrit{Płynne działanie na Windows 10 i nowszych.}
|
||||||
|
\sholder{UNP 01, ZPR 01}
|
||||||
|
\reqrelated{W03}
|
||||||
|
\end{requirementstab}
|
||||||
|
|
||||||
|
\FloatBarrier
|
||||||
|
|
||||||
|
\begin{requirementstab}[label={tab:requirements:ŚD02},caption={Obsługa różnych systemów operacyjnych}]
|
||||||
|
\id{ŚD02}
|
||||||
|
\priority{S}
|
||||||
|
\name{Obsługa różnych systemów operacyjnych}
|
||||||
|
\descr{Aplikacja powinna działać na popularnych systemach operacyjnych Linux.}
|
||||||
|
\acceptcrit{Linux (testowane dla ubuntu 20.04.6 LTS)}
|
||||||
|
\sholder{UNP 01, ZPR 01}
|
||||||
|
\reqrelated{W03}
|
||||||
|
\end{requirementstab}
|
||||||
|
|
||||||
|
\FloatBarrier
|
||||||
|
|
||||||
|
\begin{requirementstab}[label={tab:requirements:ŚD03},caption={Kompatybilność z urządzeniami o średniej wydajności}]
|
||||||
|
\id{ŚD03}
|
||||||
|
\priority{M}
|
||||||
|
\name{Kompatybilność z urządzeniami o średniej wydajności}
|
||||||
|
\descr{Program musi działać płynnie na urządzeniach o średniej wydajności, takich jak komputery PC i laptopy.
|
||||||
|
\newline
|
||||||
|
Platforma testowa została opisana w DZW.}
|
||||||
|
\acceptcrit{System działa płynnie na wskazanej platformie testowej}
|
||||||
|
\sholder{UNP 01, ZPR 01}
|
||||||
|
\reqrelated{ŚD01,W03}
|
||||||
|
\end{requirementstab}
|
||||||
|
|
||||||
|
\FloatBarrier
|
||||||
|
|
||||||
|
\begin{requirementstab}[label={tab:requirements:ŚD04},caption={Przenośność aplikacji (Portable)}]
|
||||||
|
\id{ŚD04}
|
||||||
|
\priority{S}
|
||||||
|
\name{Przenośność aplikacji (Portable)}
|
||||||
|
\descr{Aplikacja musi być dystrybuowana w formie niewymagającej instalacji w systemie operacyjnym (tzw. portable), umożliwiając uruchomienie bezpośrednio z nośnika zewnętrznego (np. pendrive) lub dowolnego katalogu użytkownika.}
|
||||||
|
\acceptcrit{Aplikacja uruchamia się z pliku .exe (Windows) lub .AppImage (Linux) bez procesu instalacji.
|
||||||
|
\newline
|
||||||
|
Wszystkie dane tworzone są w katalogu roboczym aplikacji (lub podkatalogu), nie zaśmiecając rejestru systemowego ani katalogów systemowych.}
|
||||||
|
\sholder{UNP 01, ZPR 01}
|
||||||
|
\reqrelated{ŚD01,W03}
|
||||||
|
\end{requirementstab}
|
||||||
|
|
||||||
|
\FloatBarrier
|
||||||
|
|
||||||
|
\chapter{Załączniki}
|
||||||
|
|
||||||
|
\begin{itemize}
|
||||||
|
\item Karta\_projektu-Gr73c(SCESF)-v0\_Archivium
|
||||||
|
\item DZW-Gr73c(SCESF)-v0\_Archivium
|
||||||
|
\end{itemize}
|
||||||
|
|
||||||
|
\end{document}
|
||||||
79
Stefan_Myszak.tex
Normal file
@@ -0,0 +1,79 @@
|
|||||||
|
|
||||||
|
\subsection {Stefan Myszak}
|
||||||
|
|
||||||
|
\begin{figure}[h!]
|
||||||
|
\centering
|
||||||
|
\includegraphics[width=0.5\textwidth]{PersonyObrazki/Stefan}
|
||||||
|
\label{png:Stefan}
|
||||||
|
\end{figure}
|
||||||
|
|
||||||
|
\vspace{-30pt}
|
||||||
|
|
||||||
|
\begin{center}
|
||||||
|
{\tiny Źródło zdjęcia: https://chatgpt.com/}
|
||||||
|
\end{center}
|
||||||
|
|
||||||
|
\subsubsection{Cytat}
|
||||||
|
„Jeśli coś da się zautomatyzować, to po co robić to ręcznie?”
|
||||||
|
\subsubsection{BIO}
|
||||||
|
|
||||||
|
\begin{itemize}
|
||||||
|
\item Płeć: Mężczyzna.
|
||||||
|
\item Wiek: 27 lat.
|
||||||
|
\item Zawód: Architekt.
|
||||||
|
\item Wykształcenie: Magister-Inżynier.
|
||||||
|
\item Miejsce zamieszkania: Gdańsk.
|
||||||
|
\item Stan cywilny: Kawaler.
|
||||||
|
\item Tryb pracy: Pracuje stacjonarnie-terenowo
|
||||||
|
\end{itemize}
|
||||||
|
|
||||||
|
\subsubsection{Kim jest}
|
||||||
|
Stefan pracuje jako młodszy projektant w biurze architektonicznym.
|
||||||
|
Wraz z postępami zaczyna realizować coraz większą ilość projektów, ale mieć problemy z organizacją dokumentacji.
|
||||||
|
Zazwyczaj korzysta z swojego laptopa z systemem Linux, zarówno w biurze, jak i podczas wizyt u klientów.
|
||||||
|
Lubi testować nowe rozwiązania codziennych problemów.
|
||||||
|
|
||||||
|
\subsubsection{Co myśli i czuje}
|
||||||
|
\begin{itemize}
|
||||||
|
\item Czuje presję związaną z utrzymaniem odpowiedniego porządku pracy.
|
||||||
|
\item Chce mieć dobrze zorganizowany system przechowywania dokumentów, który ułatwi jego pracę.
|
||||||
|
\item Obawia się utraty danych.
|
||||||
|
\item Szuka prostego i intuicyjnego narzędzia.
|
||||||
|
\end{itemize}
|
||||||
|
|
||||||
|
\subsubsection{Motywacje}
|
||||||
|
\begin{itemize}
|
||||||
|
\item Chce mieć wszystkie potrzebne dokumenty i umowy zawsze pod ręką.
|
||||||
|
\item Zależy mu na bezpieczeństwie danych i ich dostępności, również w miejscach z brakiem dostępu do internetu.
|
||||||
|
\item Szczególnie preferowałby rozwiązanie, które pozwala na tworzenie własnych formatek.
|
||||||
|
\item Chce usprawnić współpracę z zespołem i klientami poprzez łatwe udostępnianie aktualnych wersji projektów.
|
||||||
|
\item Dąży do tego, by zminimalizować czas poświęcany na czynności administracyjne i móc więcej uwagi poświęcić samemu projektowaniu.
|
||||||
|
\end{itemize}
|
||||||
|
|
||||||
|
\subsubsection{Frustracje}
|
||||||
|
\begin{itemize}
|
||||||
|
\item Często traci czas na szukanie właściwych wersji plików wśród wielu folderów i podfolderów.
|
||||||
|
\item Inne programy do zarządzania dokumentami są nieintuicyjne i nie spełniają jego potrzeb ani nie pozwalają na personalizowanie formularzy wprowadzania by je spełnić.
|
||||||
|
\item Unika programów chmurowych, ponieważ synchronizacja danych wymaga dobrego sygnału internetowego.
|
||||||
|
\item Irytuje go wymóg ręcznego wykonywania kopii zapasowej danych.
|
||||||
|
\end{itemize}
|
||||||
|
|
||||||
|
\subsubsection{Styl życia}
|
||||||
|
Stefan prowadzi dość uporządkowany tryb życia, choć jego dni bywają intensywne.
|
||||||
|
Większość czasu spędza w biurze lub przy laptopie, często wieczorami pracuje nad własnymi koncepcjami projektów.
|
||||||
|
W wolnych chwilach lubi fotografię architektury i wycieczki rowerowe po okolicy.
|
||||||
|
Chętnie testuje nowe aplikacje i gadżety, które mogą ułatwić mu codzienność.
|
||||||
|
Ceni rozwiązania open-source i prosty, funkcjonalny design.
|
||||||
|
|
||||||
|
\subsubsection{Potrzeby}
|
||||||
|
\begin{itemize}
|
||||||
|
\item Potrzebuje aplikacji, która pozwala na bezpieczną i prostą organizację dokumentów.
|
||||||
|
\item Nie chce wymogu synchronizacji danych z chmurą.
|
||||||
|
\item Chciałby mieć możliwość tworzenia własnych formatek.
|
||||||
|
\item Potrzebuje opcji eksportu dokumentów do formatu PDF.
|
||||||
|
\end{itemize}
|
||||||
|
|
||||||
|
\subsubsection{Dlaczego potrzebuje Archivium?}
|
||||||
|
Stefan potrzebuje Archivium, ponieważ ma problem z organizacją swojej dokumentacji.
|
||||||
|
Wymaga programu, który pozwala zarówno na efektywną organizację jak i wersjonowanie dokumentów oraz tworzenie własnych formatek.
|
||||||
|
Archivium pomoże mu rozwiązać wszystkie jego problemy z dokumentacją i pozwoli skupić się na zapewnieniu jak najwyższej jakości usług.
|
||||||
348
ankieta.tex
Normal file
@@ -0,0 +1,348 @@
|
|||||||
|
\section{Analiza potrzeb użytkowników}
|
||||||
|
|
||||||
|
\subsection{Cel i metodyka badania ankietowego}
|
||||||
|
|
||||||
|
Celem ankiety było zebranie informacji na temat sposobów przechowywania dokumentów oraz tworzenia notatek przez użytkowników. Ankieta została przeprowadzona w celu zaproponowania innowacyjnego rozwiązania problemu poprzez zidentyfikowanie kluczowych potrzeb grup docelowych.\medskip
|
||||||
|
|
||||||
|
Informacje zostały zebrane poprzez osobiste wypełnienie ankiety przez współpracowników oraz osoby z branży, udostępnienie posta na portalu LinkedIn z prośbą o udział w badaniu, a także wysłanie mailowej prośby o wypełnienie ankiety do studentów Polsko-Japońskiej Akademii Technik Komputerowych.
|
||||||
|
|
||||||
|
\subsection{Otrzymane wyniki}
|
||||||
|
|
||||||
|
\subsubsection{Informacje o użytkowniku}
|
||||||
|
|
||||||
|
W badaniu zebrano 128 odpowiedzi. Poniższy wykres przedstawia strukturę grup respondentów:
|
||||||
|
|
||||||
|
\begin{figure}[htbp]
|
||||||
|
\makebox[\textwidth][c]{
|
||||||
|
\begin{tikzpicture}
|
||||||
|
\pie[
|
||||||
|
text=pin,
|
||||||
|
radius=2.5,
|
||||||
|
color={blue!60, orange!60, red!60, green!60}
|
||||||
|
]{
|
||||||
|
50/Student,
|
||||||
|
30.5/Pracujący,
|
||||||
|
14.1/Pracujący student,
|
||||||
|
5.4/Inni
|
||||||
|
}
|
||||||
|
\end{tikzpicture}
|
||||||
|
}
|
||||||
|
\caption{Do której grupy należysz?}
|
||||||
|
\end{figure}
|
||||||
|
|
||||||
|
\begin{figure}[htbp]
|
||||||
|
\makebox[\textwidth][c]{
|
||||||
|
\begin{tikzpicture}
|
||||||
|
\pie[
|
||||||
|
text=pin,
|
||||||
|
radius=2.5,
|
||||||
|
color={blue!70, cyan!60, gray!40}
|
||||||
|
]{
|
||||||
|
75.8/IT,
|
||||||
|
12.5/Finanse,
|
||||||
|
11.7/Inna
|
||||||
|
}
|
||||||
|
\end{tikzpicture}
|
||||||
|
}
|
||||||
|
\caption{W jakiej branży pracujesz/uczysz się?}
|
||||||
|
\end{figure}
|
||||||
|
|
||||||
|
\begin{figure}[htbp]
|
||||||
|
\makebox[\textwidth][c]{
|
||||||
|
\begin{tikzpicture}
|
||||||
|
\pie[
|
||||||
|
text=pin,
|
||||||
|
radius=2.5,
|
||||||
|
color={violet!80, green!60!black, orange!70, blue!60, red!60}
|
||||||
|
]{
|
||||||
|
46.1/Wysoki,
|
||||||
|
36.7/Ekspercki,
|
||||||
|
15.6/Średni,
|
||||||
|
1.6/Niski
|
||||||
|
}
|
||||||
|
\end{tikzpicture}
|
||||||
|
}
|
||||||
|
\caption{Jak oceniasz swój poziom wiedzy i umiejętności w zakresie IT?}
|
||||||
|
\end{figure}
|
||||||
|
|
||||||
|
Większość ankietowanych (75,8\%) pracuje lub uczy się w branży IT/Technologie. Poziom umiejętności technicznych oceniono głównie jako średni (46,1\%) lub wysoki (36,7\%).
|
||||||
|
|
||||||
|
\subsubsection{Obecne nawyki i potrzeby}
|
||||||
|
|
||||||
|
Zdecydowana większość (85,9\%) używa aplikacji do notatek. Najpopularniejsze to Notion, Obsidian oraz Microsoft OneNote.
|
||||||
|
|
||||||
|
\begin{figure}[htbp]
|
||||||
|
\makebox[\textwidth][c]{
|
||||||
|
\begin{tikzpicture}
|
||||||
|
\pie[
|
||||||
|
text=pin,
|
||||||
|
radius=2.5,
|
||||||
|
before number=,
|
||||||
|
after number=\%,
|
||||||
|
color={green!70, red!60}
|
||||||
|
]{
|
||||||
|
85.9/Tak,
|
||||||
|
14.1/Nie
|
||||||
|
}
|
||||||
|
\end{tikzpicture}
|
||||||
|
}
|
||||||
|
\caption{Czy używasz obecnie jakiejkolwiek aplikacji do tworzenia notatek?}
|
||||||
|
\end{figure}
|
||||||
|
|
||||||
|
\begin{figure}[htbp]
|
||||||
|
\makebox[\textwidth][c]{
|
||||||
|
\begin{tikzpicture}
|
||||||
|
\pie[
|
||||||
|
text=pin,
|
||||||
|
radius=2.5,
|
||||||
|
color={violet!70, blue!60, cyan!60, gray!40}
|
||||||
|
]{
|
||||||
|
17.8/Microsoft OneNote / Office,
|
||||||
|
16.3/Notion,
|
||||||
|
15.5/Obsidian,
|
||||||
|
4.9/Notepad,
|
||||||
|
3.1/Evernote,
|
||||||
|
3.1/Notatnik,
|
||||||
|
39.3/Inne aplikacje
|
||||||
|
}
|
||||||
|
\end{tikzpicture}
|
||||||
|
}
|
||||||
|
\caption{Najczęściej używane aplikacje do notatek.}
|
||||||
|
\end{figure}
|
||||||
|
|
||||||
|
\begin{figure}[htbp]
|
||||||
|
\makebox[\textwidth][c]{
|
||||||
|
\begin{tikzpicture}
|
||||||
|
\pie[
|
||||||
|
text=pin,
|
||||||
|
radius=2.5,
|
||||||
|
color={violet!70, blue!60, cyan!60, orange!70, gray!40}
|
||||||
|
]{
|
||||||
|
34.6/Praca i projekty,
|
||||||
|
34.1/Notatki ze studiów,
|
||||||
|
16.1/Przechowywanie ważnych informacji,
|
||||||
|
11.1/Prowadzenie dziennika,
|
||||||
|
4.1/Pozostałe
|
||||||
|
}
|
||||||
|
\end{tikzpicture}
|
||||||
|
}
|
||||||
|
\caption{Do jakich celów najczęściej używasz aplikacji do notatek?}
|
||||||
|
\end{figure}
|
||||||
|
|
||||||
|
\begin{figure}[htbp]
|
||||||
|
\makebox[\textwidth][c]{
|
||||||
|
\begin{tikzpicture}
|
||||||
|
\pie[
|
||||||
|
text=pin,
|
||||||
|
radius=2.5,
|
||||||
|
color={blue!70, red!70, orange!70, green!60!black, violet!70, cyan!60}
|
||||||
|
]{
|
||||||
|
35.9/Kilka razy w tygodniu,
|
||||||
|
23.4/Codziennie,
|
||||||
|
18.0/Kilka razy w miesiącu,
|
||||||
|
10.9/Raz w tygodniu,
|
||||||
|
7.8/Nigdy,
|
||||||
|
4.0/Rzadziej
|
||||||
|
}
|
||||||
|
\end{tikzpicture}
|
||||||
|
}
|
||||||
|
\caption{Jak często tworzysz lub aktualizujesz swoje notatki cyfrowe?}
|
||||||
|
\end{figure}
|
||||||
|
|
||||||
|
Badanie wykazało, że zdecydowana większość respondentów (85,9\%) korzysta z aplikacji do notatek, wśród których dominują rozwiązania takie jak Microsoft OneNote, Notion oraz Obsidian. Narzędzia te służą głównie do celów zawodowych oraz edukacyjnych (łącznie blisko 70\% wskazań), a użytkownicy wykazują dużą systematyczność. Niemal 60\% z nich aktualizuje swoje zapiski codziennie lub kilka razy w tygodniu.
|
||||||
|
|
||||||
|
\subsubsection{Bezpieczeństwo i przechowywanie dokumentów}
|
||||||
|
|
||||||
|
\begin{figure}[htbp]
|
||||||
|
\makebox[\textwidth][c]{
|
||||||
|
\begin{tikzpicture}
|
||||||
|
\pie[
|
||||||
|
text=pin,
|
||||||
|
radius=2.5,
|
||||||
|
color={green!70, red!70, orange!70}
|
||||||
|
]{
|
||||||
|
70.9/Tak,
|
||||||
|
22/Nie i nie planuję,
|
||||||
|
7.1/Rozważam
|
||||||
|
}
|
||||||
|
\end{tikzpicture}
|
||||||
|
}
|
||||||
|
\caption{Czy zdarza Ci się przechowywać w formie cyfrowej ważne dokumenty?}
|
||||||
|
\end{figure}
|
||||||
|
|
||||||
|
\begin{figure}[htbp]
|
||||||
|
\makebox[\textwidth][c]{
|
||||||
|
\begin{tikzpicture}
|
||||||
|
\pie[
|
||||||
|
text=pin,
|
||||||
|
radius=2.5,
|
||||||
|
color={violet!70, blue!60, cyan!60, orange!70, red!60, gray!40}
|
||||||
|
]{
|
||||||
|
45.7/Dysk komputera,
|
||||||
|
17.7/Chmura (Google Drive itp.),
|
||||||
|
14.8/Dysk zewnętrzny,
|
||||||
|
14.3/Nie przechowuję kopii,
|
||||||
|
7.5/W aplikacji do notatek
|
||||||
|
}
|
||||||
|
\end{tikzpicture}
|
||||||
|
}
|
||||||
|
\caption{Lokalizacja przechowywania ważnych dokumentów (udział \%).}
|
||||||
|
\end{figure}
|
||||||
|
|
||||||
|
\begin{figure}[htbp]
|
||||||
|
\makebox[\textwidth][c]{
|
||||||
|
\begin{tikzpicture}
|
||||||
|
\pie[
|
||||||
|
text=pin,
|
||||||
|
radius=2.5,
|
||||||
|
color={green!70, red!70}
|
||||||
|
]{
|
||||||
|
53.1/Tak,
|
||||||
|
46.9/Nie
|
||||||
|
}
|
||||||
|
\end{tikzpicture}
|
||||||
|
}
|
||||||
|
\caption{Czy obawiasz się o bezpieczeństwo przechowywanych dokumentów?}
|
||||||
|
\end{figure}
|
||||||
|
|
||||||
|
\begin{figure}[htbp]
|
||||||
|
\makebox[\textwidth][c]{
|
||||||
|
\begin{tikzpicture}
|
||||||
|
\pie[
|
||||||
|
text=pin,
|
||||||
|
radius=2.5,
|
||||||
|
color={green!70, red!70}
|
||||||
|
]{
|
||||||
|
69.5/Tak,
|
||||||
|
30.5/Nie
|
||||||
|
}
|
||||||
|
\end{tikzpicture}
|
||||||
|
}
|
||||||
|
\caption{Czy lokalne szyfrowanie danych skłoniłoby Cię do wyboru tej aplikacji?}
|
||||||
|
\end{figure}
|
||||||
|
|
||||||
|
70,9\% osób przechowuje cyfrowo wrażliwe dokumenty. Najczęstszym miejscem przechowywania jest chmura (62,5\%). Jednakże, kluczowym wnioskiem jest fakt, że 69,5\% osób wybrałoby nową aplikację, gdyby gwarantowała ona bezpieczne, lokalne szyfrowanie.
|
||||||
|
|
||||||
|
\subsubsection{Oczekiwania wobec nowej aplikacji}
|
||||||
|
|
||||||
|
\begin{figure}[htbp]
|
||||||
|
\makebox[\textwidth][c]{
|
||||||
|
\begin{tikzpicture}
|
||||||
|
\pie[
|
||||||
|
text=pin,
|
||||||
|
radius=2.5,
|
||||||
|
color={blue!70, red!70, orange!70, green!60!black, violet!70}
|
||||||
|
]{
|
||||||
|
52.3/Raczej ważna,
|
||||||
|
27.3/Bardzo ważna,
|
||||||
|
14.8/Obojętne,
|
||||||
|
6.0/Nieważne
|
||||||
|
}
|
||||||
|
\end{tikzpicture}
|
||||||
|
}
|
||||||
|
\caption{Czy interesuje Cię dostęp do pełnej historii zmian pliku?}
|
||||||
|
\end{figure}
|
||||||
|
|
||||||
|
\begin{figure}[htbp]
|
||||||
|
\makebox[\textwidth][c]{
|
||||||
|
\begin{tikzpicture}
|
||||||
|
\pie[
|
||||||
|
text=pin,
|
||||||
|
radius=2.5,
|
||||||
|
color={blue!70, violet!60, cyan!60, green!60, orange!70, gray!40}
|
||||||
|
]{
|
||||||
|
25.1/Łatwe tworzenie i edytowanie,
|
||||||
|
22.1/Dostęp offline,
|
||||||
|
20.5/Wyszukiwarka po treści,
|
||||||
|
17.2/Szyfrowane przechowywanie,
|
||||||
|
15.1/Inne
|
||||||
|
}
|
||||||
|
\end{tikzpicture}
|
||||||
|
}
|
||||||
|
\caption{Jakie funkcje byłyby dla Ciebie najważniejsze?}
|
||||||
|
\end{figure}
|
||||||
|
|
||||||
|
\begin{figure}[htbp]
|
||||||
|
\makebox[\textwidth][c]{
|
||||||
|
\begin{tikzpicture}
|
||||||
|
\pie[
|
||||||
|
text=pin,
|
||||||
|
radius=2.5,
|
||||||
|
color={blue!70, red!70, orange!70, green!60!black, violet!70}
|
||||||
|
]{
|
||||||
|
38.6/Obojętne,
|
||||||
|
35.4/Raczej ważna,
|
||||||
|
13.4/Bardzo ważna,
|
||||||
|
8.7/Raczej nieważna,
|
||||||
|
3.9/W ogóle nieważna
|
||||||
|
}
|
||||||
|
\end{tikzpicture}
|
||||||
|
}
|
||||||
|
\caption{Ważność przechowywania dokumentów i notatek w jednym miejscu.}
|
||||||
|
\end{figure}
|
||||||
|
|
||||||
|
\begin{figure}[htbp]
|
||||||
|
\makebox[\textwidth][c]{
|
||||||
|
\begin{tikzpicture}
|
||||||
|
\pie[
|
||||||
|
text=pin,
|
||||||
|
radius=2.5,
|
||||||
|
color={green!70, red!70}
|
||||||
|
]{
|
||||||
|
89.1/Tak,
|
||||||
|
10.9/Nie
|
||||||
|
}
|
||||||
|
\end{tikzpicture}
|
||||||
|
}
|
||||||
|
\caption{Czy chcesz mieć możliwość zabezpieczenia dostępu do aplikacji?}
|
||||||
|
\end{figure}
|
||||||
|
|
||||||
|
Dla respondentów najważniejsze funkcje to łatwe tworzenie notatek, kategoryzacja oraz dostęp offline. Aż 89,1\% chce możliwości zabezpieczenia aplikacji hasłem lub biometrią.
|
||||||
|
|
||||||
|
\subsubsection{Bezpieczeństwo i zaufanie}
|
||||||
|
|
||||||
|
\begin{table}[htbp]
|
||||||
|
\centering
|
||||||
|
\caption{Czynniki wpływające na zaufanie użytkowników (opracowanie własne na podstawie ankiety).}
|
||||||
|
\label{tab:zaufanie}
|
||||||
|
\begin{tabularx}{\textwidth}{|l|X|X|}
|
||||||
|
\hline
|
||||||
|
\rowcolor[HTML]{EFEFEF}
|
||||||
|
\textbf{Kategoria} & \textbf{Kluczowe cechy (wg ankietowanych)} & \textbf{Znaczenie dla zaufania} \\ \hline
|
||||||
|
Przechowywanie & Offline, Local-first, Self-hosting & Pełna kontrola nad fizycznym nośnikiem danych. \\ \hline
|
||||||
|
Kod źródłowy & Open Source, FOSS, Audytowalność & Możliwość weryfikacji braku "tylnych furtek" (backdoors). \\ \hline
|
||||||
|
Kryptografia & E2EE, Klucze bezpieczeństwa, GPG & Brak technicznej możliwości odczytu danych przez osoby trzecie. \\ \hline
|
||||||
|
Polityka prywatności & Brak chmury, brak AI, brak reklam & Minimalizacja powierzchni ataku i ochrony przed inwigilacją. \\ \hline
|
||||||
|
\end{tabularx}
|
||||||
|
\end{table}
|
||||||
|
|
||||||
|
\begin{figure}[htbp]
|
||||||
|
\makebox[\textwidth][c]{
|
||||||
|
\begin{tikzpicture}
|
||||||
|
\pie[
|
||||||
|
text=pin,
|
||||||
|
radius=2.5,
|
||||||
|
color={blue!70, violet!60, cyan!60, green!60, gray!40}
|
||||||
|
]{
|
||||||
|
26.3/Szyfrowanie,
|
||||||
|
22.4/Hasło do aplikacji,
|
||||||
|
19.4/Kopie zapasowe,
|
||||||
|
16.9/Blokada po bezczynności,
|
||||||
|
15.0/Inne
|
||||||
|
}
|
||||||
|
\end{tikzpicture}
|
||||||
|
}
|
||||||
|
\caption{Jakiego rodzaju zabezpieczenia uważasz za konieczne?}
|
||||||
|
\end{figure}
|
||||||
|
|
||||||
|
\subsection{Wnioski}
|
||||||
|
|
||||||
|
Na podstawie przeprowadzonych badań ankietowych stwierdziliśmy, że użytkownicy najbardziej oczekują, by aplikacja była:
|
||||||
|
\begin{enumerate}[label=\alph*)]
|
||||||
|
\item \textbf{bezpieczna} – badani wykazali się wysoką świadomością zagrożeń związanych z przechowywaniem poufnych dokumentów w formie cyfrowej dając do zrozumienia, że chcieliby ich informacje były maksymalnie bezpiecznie poprzez zapewnienie działania lokalnego i odpowiedniego poziomu zabezpieczeń aplikacji,
|
||||||
|
\item \textbf{minimalistyczna} – odpowiadający dali do zrozumienia, że chcieliby by aplikacja była pozbawiona niepotrzebnych modułów takich jak brak: AI, reklam czy mikropłatności, powinna tylko i wyłącznie służyć swojemu przeznaczeniu,
|
||||||
|
\item \textbf{transparentna} – ankietowani jasno w odpowiedziach zaznaczyli, że ważna jest dla nich transparentność jeśli chodzi o samą aplikację, w Archivium czynnikiem zapewniającym transparentność jest kod Open Source i wykorzystanie standardowych sprawdzonych technologii,
|
||||||
|
\item \textbf{niezależna} – respondenci wykazują się nieufnością w stosunku do ogólnodostępnych rozwiązań chmurowych, wolą unikać przesyłania wrażliwych danych na serwery zewnętrzne i preferują możliwość aplikacji typu self-hosted.
|
||||||
|
\end{enumerate}
|
||||||
|
|
||||||
|
Przeprowadzona na rzecz pracy inżynierskiej ankieta jasno wykazała, że najważniejszą podstawą aplikacji do przechowywania danych i tworzenia notatek jest techniczna przejrzystość i suwerenność użytkowników aplikacji nad ich osobistymi danymi. Wyniki klarownie wskazują, że istnieje realne zapotrzebowanie na bezpieczną aplikację działającą lokalnie, w której technologia odpowiada jedynie za zarządzanie zasobami, dając użytkownikowi pełną swobodę działania bez wymogu polegania na zewnętrznych rozwiązaniach.
|
||||||
326
dzw.tex
Normal file
@@ -0,0 +1,326 @@
|
|||||||
|
\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
|
||||||
|
Tadeusz Puźniakowski \\ \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}
|
||||||
64
main.tex
Normal file
@@ -0,0 +1,64 @@
|
|||||||
|
\documentclass{sprz}
|
||||||
|
\usepackage[utf8]{inputenc}
|
||||||
|
\usepackage[polish]{babel}
|
||||||
|
|
||||||
|
% --- PAKIETY Z PLIKÓW DZW I SWS ---
|
||||||
|
% Musimy je tu dodać, bo docmute wycina oryginalne preambuły
|
||||||
|
\usepackage{graphicx}
|
||||||
|
\usepackage{multirow}
|
||||||
|
\usepackage{tabularx}
|
||||||
|
\usepackage{enumitem}
|
||||||
|
\usepackage{colortbl}
|
||||||
|
\usepackage{array}
|
||||||
|
\usepackage{placeins}
|
||||||
|
\usepackage{docmute}
|
||||||
|
|
||||||
|
% Ankieta
|
||||||
|
\usepackage{float}
|
||||||
|
\usepackage{tikz} % TO JEST KLUCZOWE - TEN PAKIET RZĄDZI WYKRESAMI
|
||||||
|
\usepackage{pgf-pie}
|
||||||
|
\usepackage{pgfplots}
|
||||||
|
\pgfplotsset{compat=1.18}
|
||||||
|
\usepackage{booktabs}
|
||||||
|
|
||||||
|
\newcommand{\uwaga}[1]{\textcolor{red}{\textbf{#1}}}
|
||||||
|
|
||||||
|
% --- METADANE DO KARTY PROJEKTU ---
|
||||||
|
\title{Praca inżynierska na temat "Aplikacja lokalna do archiwizacji i manipulacji dokumentami i plikami."}
|
||||||
|
\engtitle{Engineer's thesis on the topic "Local application for archiving and manipulation of documents and files."}
|
||||||
|
\acronym{Archivium}
|
||||||
|
\titledate{2026-?-?}
|
||||||
|
\supervisor{dr Puźniakowski Tadeusz}
|
||||||
|
\consultant{--- brak ---}
|
||||||
|
\projectgoals{Umożliwienie użytkownikom tworzenia, organizowania, formatowania i wersjonowania dokumentów. Zastosowania szyfrowania, aby zapewnić prywatność i bezpieczeństwo danych użytkownika. Stworzenie intuicyjnego i prostego interfejsu, umożliwiającego szybkie dodawanie oraz eksportowanie danych do archiwów oraz tworzenia formatek dokumentów.}
|
||||||
|
\productsandservices{Moduł szyfrowania danych(lokalne przechonywanie , brak połączenia z chmurą i szyfrowanie plików za pomocą SQL Cipher). Działająca aplikacja desktopowa umożliwiająca tworzenie i edycję dokumentów. Dokumentacja techniczna i użytkowa projektu. Dokumentacja techniczna i użytkowa projektu. Mechanizm eksportu dokumentów do Archiwum (.zip / .rar) oraz formatu pdf \newline Tu wpisujemy oczekiwane funkcjonalności}
|
||||||
|
\mainfunctionalities{}
|
||||||
|
\successmeasure{Aplikacja działa poprawnie w środowisku lokalnym bez błędów krytycznych. Wszystkie kluczowe funkcji działają zgodnie z założeniami projektowymi.}
|
||||||
|
\projlimitations{Aplikacja działa wyłącznie lokalnie, bez integracji z chmurą. Pierwsza wersja MVP obejmuje wyłącznie podstawowe funkcje archiwizacji i szyfrowania. Termin, wielkosc zespołu, budżet.}
|
||||||
|
\author{Krzysztof Cieślik}{S27115}{Aplikacje Internetowe}{niestacjonarne}
|
||||||
|
\author{Oleksii Sumrii}{S22775}{Cyberbezpieczeństwo}{niestacjonarne}
|
||||||
|
\author{Robert Elwart}{S26838}{Cyberbezpieczeństwo}{niestacjonarne}
|
||||||
|
\author{Szymon Stefański}{S22043}{Sztuczna inteligencja}{niestacjonarne}
|
||||||
|
\author{Mateusz Falkowski}{S27426}{Sztuczna inteligencja}{niestacjonarne}
|
||||||
|
\finishdate{15 lutego 2026}
|
||||||
|
\reviewer{prof. dr hab. inż. lek. Jamroży Omnibus}
|
||||||
|
|
||||||
|
\begin{document}
|
||||||
|
|
||||||
|
% 1. Karta Projektu (Działa jako strona tytułowa / karta informacyjna)
|
||||||
|
\input{Karta_Projektu.tex}
|
||||||
|
|
||||||
|
% Generowanie spisu treści
|
||||||
|
\tableofcontents
|
||||||
|
\newpage
|
||||||
|
|
||||||
|
% --- ROZDZIAŁ 1: DZW ---
|
||||||
|
\chapter{Dokument Założeń Wstępnych (DZW)}
|
||||||
|
\input{dzw_zmienione.tex}
|
||||||
|
\newpage
|
||||||
|
|
||||||
|
% --- ROZDZIAŁ 2: SWS ---
|
||||||
|
\chapter{Specyfikacja Wymagań Systemowych (SWS)}
|
||||||
|
\input{SWS_zmienione.tex}
|
||||||
|
|
||||||
|
\end{document}
|
||||||
398
sprz.cls
Normal file
@@ -0,0 +1,398 @@
|
|||||||
|
%
|
||||||
|
% This is the class for PJATK thesis
|
||||||
|
%
|
||||||
|
% Tadeusz Puźniakowski 2023
|
||||||
|
% Ian Canals-Wąsik (title page draft)
|
||||||
|
%
|
||||||
|
\NeedsTeXFormat{LaTeX2e}
|
||||||
|
\ProvidesClass{sprz}[2023/10/27 SPRZ]
|
||||||
|
\LoadClass[12pt,a4paper]{report}
|
||||||
|
\renewcommand{\baselinestretch}{1.3}
|
||||||
|
\RequirePackage[a4paper]{geometry}
|
||||||
|
\RequirePackage{listings} %Aby dało się umieszczać kody źródłowe programów
|
||||||
|
\RequirePackage[table]{xcolor}
|
||||||
|
\RequirePackage{algorithmic} %Aby dało się umieszczać algorytmy
|
||||||
|
\RequirePackage[utf8]{inputenc}
|
||||||
|
\RequirePackage{polski} % Włączenie obsługi polskich liter
|
||||||
|
\RequirePackage{tabularx}
|
||||||
|
\RequirePackage{url}
|
||||||
|
\RequirePackage{graphicx}
|
||||||
|
\RequirePackage[pscoord]{eso-pic}% The zero point of the coordinate systemis the lower left corner of the page (the default).
|
||||||
|
\RequirePackage{multirow}
|
||||||
|
\RequirePackage{graphicx}
|
||||||
|
\RequirePackage[backend=biber,style=numeric,sorting=none]{biblatex}
|
||||||
|
|
||||||
|
\DeclareFieldFormat[article,inbook,incollection,inproceedings,patent,thesis,
|
||||||
|
unpublished,techreport,misc,book]{title}{,,#1''}
|
||||||
|
% {title}{\mkbibquote{#1}}
|
||||||
|
|
||||||
|
\newcommand{\@nabstract}{\@latex@error{No \noexpand\@nabstract given}\@ehc}
|
||||||
|
\newcommand{\nabstract}[1]{\renewcommand{\@nabstract}{#1}}
|
||||||
|
|
||||||
|
\newcommand{\@studfield}{\@latex@error{No \noexpand\@studfield given}\@ehc}
|
||||||
|
\newcommand{\studfield}[1]{\renewcommand{\@studfield}{#1}}
|
||||||
|
|
||||||
|
\newcommand{\@studtype}{\@latex@error{No \noexpand\@studtype given}\@ehc}
|
||||||
|
\newcommand{\studtype}[1]{\renewcommand{\@studtype}{#1}}
|
||||||
|
|
||||||
|
|
||||||
|
\newcommand{\@engtitle}{\@latex@error{No \noexpand\@engtitle given}\@ehc}
|
||||||
|
\newcommand{\engtitle}[1]{\renewcommand{\@engtitle}{#1}}
|
||||||
|
|
||||||
|
\newcommand{\@acronym}{\@latex@error{No \noexpand\@acronym given}\@ehc}
|
||||||
|
\newcommand{\acronym}[1]{\renewcommand{\@acronym}{#1}}
|
||||||
|
|
||||||
|
\newcommand{\@titledate}{\@latex@error{No \noexpand\@titledate given}\@ehc}
|
||||||
|
\newcommand{\titledate}[1]{\renewcommand{\@titledate}{#1}}
|
||||||
|
|
||||||
|
\newcommand{\@reviewer}{\@latex@error{No \noexpand\@reviewer given}\@ehc}
|
||||||
|
\newcommand{\reviewer}[1]{\renewcommand{\@reviewer}{#1}}
|
||||||
|
|
||||||
|
|
||||||
|
\newcommand{\@finishdate}{\@latex@error{No \noexpand\@finishdate given}\@ehc}
|
||||||
|
\newcommand{\finishdate}[1]{\renewcommand{\@finishdate}{#1}}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
\newcommand{\@productsandservices}{\@latex@error{No \noexpand\@productsandservices given}\@ehc}
|
||||||
|
\newcommand{\productsandservices}[1]{\renewcommand{\@productsandservices}{#1}}
|
||||||
|
|
||||||
|
|
||||||
|
\newcommand{\@mainfunctionalities}{\@latex@error{No \noexpand\@mainfunctionalities given}\@ehc}
|
||||||
|
\newcommand{\mainfunctionalities}[1]{\renewcommand{\@mainfunctionalities}{#1}}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
\newcommand{\@supervisor}{\@latex@error{No \noexpand\@supervisor given}\@ehc}
|
||||||
|
\newcommand{\supervisor}[1]{\renewcommand{\@supervisor}{#1}}
|
||||||
|
|
||||||
|
\newcommand{\@projectgoals}{\@latex@error{No \noexpand\@projectgoals given}\@ehc}
|
||||||
|
\newcommand{\projectgoals}[1]{\renewcommand{\@projectgoals}{#1}}
|
||||||
|
|
||||||
|
\newcommand{\@successmeasure}{\@latex@error{No \noexpand\@successmeasure given}\@ehc}
|
||||||
|
\newcommand{\successmeasure}[1]{\renewcommand{\@successmeasure}{#1}}
|
||||||
|
|
||||||
|
\newcommand{\@projlimitations}{\@latex@error{No \noexpand\@projlimitations given}\@ehc}
|
||||||
|
\newcommand{\projlimitations}[1]{\renewcommand{\@projlimitations}{#1}}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
\newcommand{\@authors}{}
|
||||||
|
\newcommand{\@authorstp}{}
|
||||||
|
\newcommand{\@authorstablerows}{}
|
||||||
|
\newcommand{\@authorattachment}{}
|
||||||
|
|
||||||
|
\renewcommand{\author}[4]{%
|
||||||
|
\expandafter\g@addto@macro\expandafter\@authors\expandafter{#1 & #2 \\ \hline}
|
||||||
|
\expandafter\g@addto@macro\expandafter\@authorstp\expandafter{\textbf{#1} \\ Nr albumu #2 \\ Nazwa specjalizacji: #3 \\}
|
||||||
|
\expandafter\g@addto@macro\expandafter\@authorstablerows\expandafter{#1 & #2 & #3 & #4 \\ \hline}
|
||||||
|
\expandafter\g@addto@macro\expandafter\@authorattachment\expandafter{#1\_}
|
||||||
|
}
|
||||||
|
|
||||||
|
\newcommand{\@consultants}{}
|
||||||
|
\newcommand{\consultant}[1]{%
|
||||||
|
\expandafter\g@addto@macro\expandafter\@consultants\expandafter{\item #1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
\newcommand{\@nkeywords}{}
|
||||||
|
\newcommand{\@nkeywordscoma}{}
|
||||||
|
\newcommand{\keyword}[1]{%
|
||||||
|
\expandafter\g@addto@macro\expandafter\@nkeywords\expandafter{\@nkeywordscoma#1}
|
||||||
|
\renewcommand{\@nkeywordscoma}{, }
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
\newcommand{\putimage}[4]{%
|
||||||
|
\begin{figure}[h!]
|
||||||
|
\label{#3}
|
||||||
|
\centering
|
||||||
|
\includegraphics[width={#4}]{#2}
|
||||||
|
\caption{#1}
|
||||||
|
\end{figure}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
\define@key{pjatk}{label}{\def\tablabel{#1}}
|
||||||
|
\define@key{pjatk}{caption}{\def\tabcaption{#1}}
|
||||||
|
|
||||||
|
% Define the new environment 'stakeholder' and custom commands for stakeholders' information
|
||||||
|
\newenvironment{stakeholder}[1][]{%
|
||||||
|
\setkeys{pjatk}{#1}% Setting default key values
|
||||||
|
\newcommand{\id}[1]{Identyfikator: & ##1 \\ \hline}
|
||||||
|
\newcommand{\name}[1]{Nazwa: & ##1 \\ \hline}
|
||||||
|
\newcommand{\descr}[1]{Opis: & ##1 \\ \hline}
|
||||||
|
\newcommand{\type}[1]{Typ udziałowca: & ##1 \\ \hline}
|
||||||
|
\newcommand{\viewpoint}[1]{Punkt widzenia: & ##1 \\ \hline}
|
||||||
|
\newcommand{\limitations}[1]{Ograniczenia: & ##1 \\ \hline}
|
||||||
|
\newcommand{\requ}[1]{Wymagania: & ##1 \\ \hline}
|
||||||
|
\table[h!]
|
||||||
|
\centering
|
||||||
|
\begin{tabular}{|>{\columncolor{lightgray}}c|p{0.6\linewidth}|}
|
||||||
|
\hline
|
||||||
|
\rowcolor{lightgray}\multicolumn{2}{|c|}{\textbf{KARTA UDZIAŁOWCA}} \\
|
||||||
|
\hline
|
||||||
|
}{%
|
||||||
|
\end{tabular}
|
||||||
|
\caption{\tabcaption}
|
||||||
|
\label{\tablabel}
|
||||||
|
\endtable
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
% Define the new environment 'stakeholder' and custom commands for stakeholders' information
|
||||||
|
\newenvironment{requirementstab}[1][]{%
|
||||||
|
\setkeys{pjatk}{#1}% Setting default key values
|
||||||
|
\newcommand{\id}[1]{Identyfikator: & ##1 & }
|
||||||
|
\newcommand{\priority}[1]{Priorytet: & ##1 \\ \hline}
|
||||||
|
\newcommand{\name}[1]{Nazwa: & \multicolumn{3}{|p{0.6\linewidth}|}{##1} \\ \hline}
|
||||||
|
\newcommand{\descr}[1]{Opis: & \multicolumn{3}{|p{0.6\linewidth}|}{\parbox{0.99\linewidth}{##1}} \\ \hline}
|
||||||
|
\newcommand{\acceptcrit}[1]{Kryteria akceptacji: & \multicolumn{3}{|p{0.6\linewidth}|}{##1} \\ \hline}
|
||||||
|
\newcommand{\inputdata}[1]{Dane wejściowe: & \multicolumn{3}{|p{0.6\linewidth}|}{##1} \\ \hline}
|
||||||
|
\newcommand{\preconditions}[1]{Warunki początkowe: & \multicolumn{3}{|p{0.6\linewidth}|}{##1} \\ \hline}
|
||||||
|
\newcommand{\postconditions}[1]{Warunki końcowe: & \multicolumn{3}{|p{0.6\linewidth}|}{##1} \\ \hline}
|
||||||
|
\newcommand{\exceptions}[1]{Sytuacje wyjątkowe: & \multicolumn{3}{|p{0.6\linewidth}|}{##1} \\ \hline}
|
||||||
|
\newcommand{\implementation}[1]{Szczegóły implementacji: & \multicolumn{3}{|p{0.6\linewidth}|}{##1} \\ \hline}
|
||||||
|
\newcommand{\sholder}[1]{Udziałowiec: & \multicolumn{3}{|p{0.6\linewidth}|}{##1} \\ \hline}
|
||||||
|
\newcommand{\reqrelated}[1]{Wymagania powiązane: & \multicolumn{3}{|p{0.6\linewidth}|}{##1} \\ \hline}
|
||||||
|
\table[h!]
|
||||||
|
\centering
|
||||||
|
\begin{tabular}{|>{\columncolor{lightgray}}l|l|>{\columncolor{lightgray}}l|p{0.1\linewidth}|}
|
||||||
|
\hline
|
||||||
|
\rowcolor{lightgray}\multicolumn{4}{|c|}{\textbf{KARTA WYMAGANIA}} \\
|
||||||
|
\hline
|
||||||
|
}{%
|
||||||
|
\end{tabular}
|
||||||
|
\caption{\tabcaption}
|
||||||
|
\label{\tablabel}
|
||||||
|
\endtable
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
\newcommand{\generalrequirement}[7]{
|
||||||
|
\begin{table}[h!]
|
||||||
|
\centering
|
||||||
|
\begin{tabular}{|>{\columncolor{lightgray}}l|l|>{\columncolor{lightgray}}l|p{0.1\linewidth}|}
|
||||||
|
\hline
|
||||||
|
\rowcolor{lightgray}\multicolumn{4}{|c|}{\textbf{KARTA WYMAGANIA}} \\
|
||||||
|
\hline
|
||||||
|
\hline
|
||||||
|
Identyfikator: & #1 & Priorytet: & #2 \\
|
||||||
|
\hline
|
||||||
|
Nazwa: & \multicolumn{3}{|p{0.6\linewidth}|}{#3} \\
|
||||||
|
\hline
|
||||||
|
Opis: & \multicolumn{3}{|p{0.6\linewidth}|}{#4} \\
|
||||||
|
\hline
|
||||||
|
Udziałowiec: & \multicolumn{3}{|p{0.6\linewidth}|}{#5} \\
|
||||||
|
\hline
|
||||||
|
Wymagania powiązane: & \multicolumn{3}{|p{0.6\linewidth}|}{#6} \\
|
||||||
|
\hline
|
||||||
|
\end{tabular}
|
||||||
|
\caption{#3}
|
||||||
|
\label{#7}
|
||||||
|
\end{table}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
\newcommand{\placetextbox}[4]{% \placetextbox{<offset top>}{<offset left/right>}{<align>}{<stuff>}
|
||||||
|
\setbox0=\hbox{#4}% Put <stuff> in a box
|
||||||
|
\AddToShipoutPictureFG*{% Add <stuff> to current page foreground
|
||||||
|
\if#3r
|
||||||
|
\put(\LenToUnit{\paperwidth-#1},\LenToUnit{\paperheight-#2}){\vtop{{\null}\makebox[0pt][r]{\begin{tabular}{r}#4\end{tabular}}}}%
|
||||||
|
\else
|
||||||
|
\put(\LenToUnit{#1},\LenToUnit{\paperheight-#2}){\vtop{{\null}\makebox[0pt][l]{\begin{tabular}{l}#4\end{tabular}}}}%
|
||||||
|
\fi
|
||||||
|
}%
|
||||||
|
}%
|
||||||
|
|
||||||
|
|
||||||
|
\renewcommand{\maketitle}{%
|
||||||
|
\renewcommand{\baselinestretch}{1.0}
|
||||||
|
\begin{titlepage}
|
||||||
|
\begin{center}
|
||||||
|
\includegraphics[width=1.0\textwidth]{sprz/pjatk} \\
|
||||||
|
~ \\
|
||||||
|
%\large
|
||||||
|
\textbf{Wydział Informatyki} \\
|
||||||
|
\textbf{Filia w Gdańsku} \\
|
||||||
|
~ \\
|
||||||
|
\@authorstp
|
||||||
|
\end{center}
|
||||||
|
\newpage
|
||||||
|
\vspace*{\fill}
|
||||||
|
\begin{center}
|
||||||
|
%\large
|
||||||
|
\huge
|
||||||
|
\textbf{\@title}
|
||||||
|
\\
|
||||||
|
\normalsize
|
||||||
|
~ \\
|
||||||
|
\begin{tabularx}{\textwidth}{X l}
|
||||||
|
~ & Rodzaj pracy \\
|
||||||
|
~ & ~~inżynierska \\
|
||||||
|
~ & Imię i nazwisko promotora \\
|
||||||
|
~ & ~~\@supervisor
|
||||||
|
\end{tabularx}
|
||||||
|
\end{center}
|
||||||
|
\vfill
|
||||||
|
\begin{center}
|
||||||
|
\textbf{Gdańsk, \@date}
|
||||||
|
\end{center}
|
||||||
|
\newpage
|
||||||
|
\textbf{\\Streszczenie:}
|
||||||
|
\@nabstract
|
||||||
|
\textbf{\\Słowa kluczowe:}
|
||||||
|
\@nkeywords
|
||||||
|
\newpage
|
||||||
|
\end{titlepage}
|
||||||
|
\renewcommand{\baselinestretch}{1.0}
|
||||||
|
}
|
||||||
|
\newcommand{\@mysmartparbox}[2]{%
|
||||||
|
\parbox{#1}{\vspace{0.1cm}#2\vspace{0.1cm}}%
|
||||||
|
}
|
||||||
|
\newcommand{\makeprojectcard}{%
|
||||||
|
\begin{center}
|
||||||
|
{
|
||||||
|
\large
|
||||||
|
\textbf{Karta projektu}
|
||||||
|
}
|
||||||
|
\end{center}
|
||||||
|
{
|
||||||
|
\small
|
||||||
|
\begin{center}
|
||||||
|
\begin{tabular}{|c|c||c|}
|
||||||
|
\hline
|
||||||
|
\multicolumn{2}{|p{0.7\linewidth\vspace{-1.2cm}}|}{\textbf{Temat projektu:}
|
||||||
|
|
||||||
|
\@title
|
||||||
|
|
||||||
|
\textbf{Temat projektu po angielsku:}
|
||||||
|
|
||||||
|
\@engtitle
|
||||||
|
} & \@mysmartparbox{0.3\linewidth}{\textbf{Akronim:}
|
||||||
|
|
||||||
|
\@acronym
|
||||||
|
|
||||||
|
\textbf{Data ustalenia tematu}
|
||||||
|
|
||||||
|
\@titledate
|
||||||
|
} \\
|
||||||
|
\hline
|
||||||
|
\multicolumn{2}{|p{0.7\linewidth}|}{\textbf{Promotor:}} & \@mysmartparbox{0.3\linewidth}{\textbf{Konsultanci:}} \\
|
||||||
|
\multicolumn{2}{|p{0.7\linewidth}|}{\@supervisor} & \@mysmartparbox{0.3\linewidth}{\begin{enumerate}
|
||||||
|
\@consultants
|
||||||
|
\end{enumerate}} \\
|
||||||
|
\hline
|
||||||
|
|
||||||
|
\multicolumn{3}{|p{1\linewidth}|}{\textbf{Cele projektu:}
|
||||||
|
|
||||||
|
\@projectgoals} \\ \hline
|
||||||
|
|
||||||
|
\multicolumn{3}{|p{1\linewidth}|}{\textbf{Rezultaty projektu:}
|
||||||
|
|
||||||
|
\@productsandservices
|
||||||
|
|
||||||
|
\@mainfunctionalities} \\ \hline
|
||||||
|
|
||||||
|
\multicolumn{3}{|p{1\linewidth}|}{\textbf{Miary sukcesu:}
|
||||||
|
|
||||||
|
\@successmeasure} \\ \hline
|
||||||
|
\multicolumn{3}{|p{1\linewidth}|}{\textbf{Ograniczenia:}
|
||||||
|
|
||||||
|
\@projlimitations} \\ \hline
|
||||||
|
\end{tabular}
|
||||||
|
\end{center}
|
||||||
|
|
||||||
|
\begin{center}
|
||||||
|
\begin{tabular}{|p{0.3\linewidth}|p{0.17\linewidth}|p{0.27\linewidth}|p{0.2\linewidth}|}
|
||||||
|
\hline
|
||||||
|
\textbf{Wykonawcy} & \textbf{Numer albumu} & \textbf{Specjalizacja} & \textbf{Tryb studiów} \\
|
||||||
|
\hline
|
||||||
|
\@authorstablerows
|
||||||
|
\end{tabular}
|
||||||
|
\end{center}
|
||||||
|
|
||||||
|
\begin{center}
|
||||||
|
\begin{tabular}{|p{0.4\linewidth}|p{0.6\linewidth}|}
|
||||||
|
\hline
|
||||||
|
\textbf{Data ukończenia projektu:}
|
||||||
|
|
||||||
|
\@finishdate & \textbf{Recenzent:}
|
||||||
|
|
||||||
|
\@reviewer \\
|
||||||
|
\hline
|
||||||
|
\end{tabular}
|
||||||
|
\end{center}
|
||||||
|
|
||||||
|
}
|
||||||
|
\newpage
|
||||||
|
}
|
||||||
|
|
||||||
|
\newcommand{\makedeclaration}{%
|
||||||
|
\begin{center}
|
||||||
|
\textbf{DEPRECATED}
|
||||||
|
Według nowych wytycznych nie umieszczamy w pracy deklaracji. Proszę usunąć komendę \\makedeclaration
|
||||||
|
\end{center}
|
||||||
|
\newpage
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
\newcommand{\makethesisattachments}{%
|
||||||
|
\chapter*{Załączniki}
|
||||||
|
|
||||||
|
Płyta CD z następującą zawartością:
|
||||||
|
\begin{itemize}
|
||||||
|
\item {\em{pliki projektowe}} -- pliki składające się na całość projektu
|
||||||
|
\begin{itemize}
|
||||||
|
\item repozytorium kodu źródłowego wraz z instrukcją zbudowania i uruchomienia projektu
|
||||||
|
\item źródło pracy inżynierskiej.
|
||||||
|
\end{itemize}
|
||||||
|
\item {\em{\@authorattachment%
|
||||||
|
praca pisemna}} -- katalog zawierający plik PDF z pracą inżynierską.
|
||||||
|
\end{itemize}
|
||||||
|
|
||||||
|
\newpage
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
\lstset{
|
||||||
|
belowcaptionskip=1\baselineskip,
|
||||||
|
breaklines=true,
|
||||||
|
xleftmargin=\parindent,
|
||||||
|
showstringspaces=true, % podkreślanie spacji wewnątrz łańcuchów
|
||||||
|
numbers=left, % gdzie umieszczać numery linii
|
||||||
|
numberstyle=\footnotesize, % wielkość czcionki dla numerów linii
|
||||||
|
captionpos=b,
|
||||||
|
showstringspaces=false,
|
||||||
|
basicstyle=\footnotesize\ttfamily,
|
||||||
|
keywordstyle=\bfseries\color{green!40!black},
|
||||||
|
commentstyle=\itshape\color{purple!40!black},
|
||||||
|
identifierstyle=\color{blue},
|
||||||
|
stringstyle=\color{orange},
|
||||||
|
literate=
|
||||||
|
{á}{{\'a}}1 {é}{{\'e}}1 {í}{{\'i}}1 {ó}{{\'o}}1 {ú}{{\'u}}1
|
||||||
|
{Á}{{\'A}}1 {É}{{\'E}}1 {Í}{{\'I}}1 {Ó}{{\'O}}1 {Ú}{{\'U}}1
|
||||||
|
{à}{{\`a}}1 {è}{{\`e}}1 {ì}{{\`i}}1 {ò}{{\`o}}1 {ù}{{\`u}}1
|
||||||
|
{À}{{\`A}}1 {È}{{\`E}}1 {Ì}{{\`I}}1 {Ò}{{\`O}}1 {Ù}{{\`U}}1
|
||||||
|
{ä}{{\"a}}1 {ë}{{\"e}}1 {ï}{{\"i}}1 {ö}{{\"o}}1 {ü}{{\"u}}1
|
||||||
|
{Ä}{{\"A}}1 {Ë}{{\"E}}1 {Ï}{{\"I}}1 {Ö}{{\"O}}1 {Ü}{{\"U}}1
|
||||||
|
{â}{{\^a}}1 {ê}{{\^e}}1 {î}{{\^i}}1 {ô}{{\^o}}1 {û}{{\^u}}1
|
||||||
|
{Â}{{\^A}}1 {Ê}{{\^E}}1 {Î}{{\^I}}1 {Ô}{{\^O}}1 {Û}{{\^U}}1
|
||||||
|
{ã}{{\~a}}1 {ẽ}{{\~e}}1 {ĩ}{{\~i}}1 {õ}{{\~o}}1 {ũ}{{\~u}}1
|
||||||
|
{Ã}{{\~A}}1 {Ẽ}{{\~E}}1 {Ĩ}{{\~I}}1 {Õ}{{\~O}}1 {Ũ}{{\~U}}1
|
||||||
|
{œ}{{\oe}}1 {Œ}{{\OE}}1 {æ}{{\ae}}1 {Æ}{{\AE}}1 {ß}{{\ss}}1
|
||||||
|
{ű}{{\H{u}}}1 {Ű}{{\H{U}}}1 {ő}{{\H{o}}}1 {Ő}{{\H{O}}}1
|
||||||
|
{ç}{{\c c}}1 {Ç}{{\c C}}1 {ø}{{\o}}1 {Ø}{{\O}}1 {å}{{\r a}}1 {Å}{{\r A}}1
|
||||||
|
{€}{{\euro}}1 {£}{{\pounds}}1 {«}{{\guillemotleft}}1
|
||||||
|
{»}{{\guillemotright}}1 {ñ}{{\~n}}1 {Ñ}{{\~N}}1 {¿}{{?`}}1 {¡}{{!`}}1
|
||||||
|
}
|
||||||
BIN
sprz/diagramAplikacji.png
Normal file
|
After Width: | Height: | Size: 127 KiB |
BIN
sprz/funkcjonalnosc.png
Normal file
|
After Width: | Height: | Size: 46 KiB |
BIN
sprz/logoArch.png
Normal file
|
After Width: | Height: | Size: 35 KiB |
BIN
sprz/logoPjatk.png
Normal file
|
After Width: | Height: | Size: 21 KiB |
BIN
sprz/pjatk.png
Normal file
|
After Width: | Height: | Size: 116 KiB |
BIN
sprz/richPicture.png
Normal file
|
After Width: | Height: | Size: 250 KiB |