\documentclass[a4paper,12pt]{article} % Packages \usepackage{amsmath, amssymb, amsthm} % For math symbols and theorems \usepackage{graphicx} % For including images \usepackage{hyperref} % For hyperlinks \usepackage{geometry} % Page layout \usepackage{fancyhdr} % Header and footer \usepackage{listings} % Code listings \usepackage{xcolor} % Colors for code \usepackage{biblatex} % References \usepackage{float} % Dodaj na początku dokumentu \usepackage{polski} % Obsługa języka polskiego \addbibresource{references.bib} % Page Setup \geometry{margin=1in} \pagestyle{fancy} \fancyhf{} \rhead{\thepage} \lhead{Small Documentation} \renewcommand{\headrulewidth}{0.4pt} % Code Formatting \lstset{ language=Python, basicstyle=\ttfamily\small, keywordstyle=\color{blue}, commentstyle=\color{gray}, stringstyle=\color{red}, breaklines=true, frame=single } % Theorem, Definition, and Example Styles \theoremstyle{definition} \newtheorem{definition}{Definition} \newtheorem{theorem}{Theorem} \newtheorem{example}{Example} \begin{document} % Title Page \title{AIS \\ Projekt} \author{Jakub Woźniak 318745 \\ Filip Budzyński 319021 \\} \date{\small \today} \maketitle \begin{abstract} Projekt opiera sie... \end{abstract} \tableofcontents \newpage \section{Wymagania funkcjonalne} \subsection{Pogrupowana lista wymagań} \begin{itemize} \item \textbf{Rejestracja i zarządzanie kontem} \begin{itemize} \item Rejestracja konta użytkownika (indywidualnego lub firmowego) \item Dodawanie pojazdów i przypisywanie urządzeń lokalizacyjnych \item Zarządzanie danymi użytkownika \end{itemize} \item \textbf{Monitoring pojazdów} \begin{itemize} \item Odbieranie danych GPS w czasie rzeczywistym \item Identyfikacja płatnych odcinków \item Obsługa przerw w sygnale \end{itemize} \item \textbf{Naliczanie opłat} \begin{itemize} \item Analiza przejazdu i naliczanie opłaty \item Uwzględnianie kategorii pojazdu, pory dnia, długości trasy \item Obsługa taryf i zniżek \end{itemize} \item \textbf{Płatności i fakturowanie} \begin{itemize} \item Doładowanie konta \item Historia opłat i przejazdów \item Generowanie faktur \end{itemize} \item \textbf{Obsługa wyjątków} \begin{itemize} \item Brak sygnału GPS – interpolacja pozycji \item Brak środków – powiadomienie i odroczenie płatności \item Korekta błędnych danych, reklamacje \end{itemize} \end{itemize} \subsection{Kluczowy proces biznesowy: Naliczanie opłaty} \begin{itemize} \item \textbf{Cel:} Naliczenie opłaty za przejazd przez płatny odcinek drogi \item \textbf{Stan początkowy:} System odbiera dane GPS pojazdu \item \textbf{Stan końcowy:} Opłata naliczona i zarejestrowana \item \textbf{Kroki:} \begin{enumerate} \item Odbiór danych GPS \item Detekcja wjazdu/zjazdu z odcinka \item Obliczenie opłaty \item Sprawdzenie środków: \begin{itemize} \item Jeśli są: pobranie opłaty \item Jeśli brak: zapis zobowiązania, notyfikacja \end{itemize} \item Zapis transakcji \item Wystawienie e-faktury \end{enumerate} \end{itemize} \section{Wymagania niefunkcjonalne} \begin{itemize} \item \textbf{Skala działania:} Polska, z możliwością rozszerzenia na UE \item \textbf{Liczba klientów:} do 7 milionów aktywnych użytkowników \item \textbf{Zdarzenia biznesowe:} \begin{itemize} \item 5 mln przejazdów dziennie \item 200 tys. opłat/h \item 10 tys. zapytań/min \end{itemize} \item \textbf{Wydajność:} <1s latencji, \textless 200 ms API \item \textbf{Niezawodność:} SLA 99.95\%, redundancja \item \textbf{Bezpieczeństwo:} \begin{itemize} \item TLS, MFA, role \item Szyfrowanie danych lokalizacyjnych \item Zgodność z RODO \end{itemize} \end{itemize} \section{Model C4} \begin{itemize} \item \textbf{Poziom 1:} Kontekst – użytkownicy, systemy zewnętrzne, urządzenia \item \textbf{Poziom 2:} Kontenery – frontend, backend, baza, billing \item \textbf{Poziom 3:} Komponenty – mikroserwisy: płatności, GPS, billing, notyfikacje \end{itemize} \section{Diagramy} \begin{itemize} \item \textbf{Diagram dynamiczny:} Proces naliczania opłaty \item \textbf{Diagram wdrożenia:} Kubernetes, CDN, bazy danych, load balancer \end{itemize} \section{Zastosowane wzorce i taktyki} \begin{itemize} \item CQRS – oddzielenie zapisu i odczytu \item Event-Driven Architecture – system oparty na zdarzeniach \item Saga Pattern – do obsługi błędów i retry \item Service Mesh – np. Istio \item Cache Aside – Redis dla odczytów \item Sharding danych lokalizacyjnych \end{itemize} \section{Model MAD 2.0 – decyzje architektoniczne} \begin{tabular}{|p{4cm}|p{4cm}|p{7cm}|} \hline \textbf{Decyzja} & \textbf{Alternatywy} & \textbf{Uzasadnienie} \\ \hline Architektura mikroserwisowa & Monolit & Skalowalność i niezależny rozwój komponentów \\ \hline TimescaleDB & MongoDB, Cassandra & Dane czasowo-lokalizacyjne w zoptymalizowany sposób \\ \hline gRPC do komunikacji & REST & Wydajność, binarny format, mniejsze opóźnienia \\ \hline Kafka jako event broker & RabbitMQ & Lepsza wydajność dla dużych wolumenów danych \\ \hline Kubernetes & VM & Skalowalność, automatyzacja, dostępność \\ \hline \end{tabular} % =============== % MODELE MAD 2.0 % =============== \begin{figure}[h] \centering \includegraphics[width=0.8\textwidth]{mad/mad2-wybor-architektury.png} \caption{Model MAD 2.0 dla decyzji wyboru architektury systemu.} \label{fig:csr} \end{figure} \begin{figure}[h] \centering \includegraphics[width=0.8\textwidth]{mad/mad2-organizacja-aplikacji-serwerowej.png} \caption{Model MAD 2.0 dla decyzji organizacji aplikacji serwerowej.} \label{fig:csr} \end{figure} \begin{figure}[h] \centering \includegraphics[width=0.8\textwidth]{mad/mad2-dostep-do-systemu.png} \caption{Model MAD 2.0 dla decyzji dostępu do systemu.} \label{fig:csr} \end{figure} \begin{figure}[h] \centering \includegraphics[width=0.8\textwidth]{mad/mad2-uprawniania-uzytkownikow.png} \caption{Model MAD 2.0 dla decyzji o uprawnianiach dla użytkowników.} \label{fig:csr} \end{figure} \begin{figure}[h] \centering \includegraphics[width=0.8\textwidth]{mad/mad2-obsluga-platnosci-archiwizacja-danych.png} \caption{Model MAD 2.0 dla decyzji o realizacji obsługi płatności i archiwizacji danych.} \label{fig:csr} \end{figure} \begin{figure}[h] \centering \includegraphics[width=0.8\textwidth]{mad/mad2-zapewnienie-dostepnosci.png} \caption{Model MAD 2.0 dla decyzji zapewnienia dostępności i odporności na awarie.} \label{fig:csr} \end{figure} \begin{figure}[h] \centering \includegraphics[width=0.8\textwidth]{mad/mad2-wybor-tech-wdrozeniowej.png} \caption{Model MAD 2.0 dla decyzji wyboru technologii wdrożeniowej.} \label{fig:csr} \end{figure} \end{document} \printbibliography \end{document}