Add: Base for lab protocol.

This commit is contained in:
ghost 2025-12-14 15:36:46 +01:00
parent 1695590346
commit 77004b5f68
8 changed files with 281 additions and 0 deletions

30
.gitignore vendored
View File

@ -245,3 +245,33 @@ object_script.*.Debug
# SQLite
study.db
# LaTeX
## Core latex/pdflatex auxiliary files:
*.aux
*.lof
*.log
*.lot
*.fls
*.out
*.toc
*.fmt
*.fot
*.cb
*.cb2
.*.lb
## Build tool auxiliary files:
*.fdb_latexmk
*.synctex
*.synctex(busy)
*.synctex.gz
*.synctex.gz(busy)
*.pdfsync
*.rubbercache
rubber.cache
## Build tool directories for auxiliary files
# latexrun
latex.out/

33
docs/portfolio/README.md Normal file
View File

@ -0,0 +1,33 @@
Portfolio-Dokumentation (LaTeX-Templates)
=========================================
Diese Vorlagen decken die geforderten Abgaben aus der Aufgabenstellung DLBDSOOFPP01_D ab. Jede Phase hat einen eigenen LaTeX-Entwurf, der die Inhalte und Formatvorgaben (2 cm Ränder, Arial/ähnlich, 1,5 Zeilenabstand, Blocksatz, 6 pt Absatzabstand) berücksichtigt.
Struktur
--------
- `preamble.tex` gemeinsame Pakete, Seitenlayout und Metadaten.
- `phase1/phase1.tex` Konzeptionsphase (max. 5 Seiten).
- `phase2/phase2.tex` Reflexions- und Entwurfsdokument (max. 5 Seiten).
- `phase3/abstract.tex` Abstract (12 Seiten).
- `phase3/installationsanleitung.tex` Installationsanleitung (max. 1 Seite).
Kompilieren
-----------
Aus dem Ordner `docs/portfolio`:
```bash
latexmk -pdf phase1/phase1.tex
latexmk -pdf phase2/phase2.tex
latexmk -pdf phase3/abstract.tex
latexmk -pdf phase3/installationsanleitung.tex
```
Alternativ: `pdflatex` zweimal pro Datei. Passe die Makros in `preamble.tex` (Name, Matrikelnummer, Kurs) an, damit die Titelseiten stimmen.
Benennung für Abgabe (laut Aufgabenstellung)
---------------------------------------------
- Phase 1 PDF: `Nachname-Vorname_Matrikelnummer_Kurs_Phase1.pdf`
- Phase 2 PDF: `Nachname-Vorname_Matrikelnummer_Kurs_Phase2.pdf`
- Phase 3 Abstract: `Nachname-Vorname_Matrikelnummer_Kurs_Phase3_Abstract.pdf`
- Phase 3 Installationsanleitung: `Nachname-Vorname_Matrikelnummer_Kurs_Phase3_Installationsanleitung.pdf`
- Gesamt-Zip: `Nachname-Vorname_Matrikelnummer_Python.zip` mit Unterordnern `Phase1`, `Phase2`, `Phase3` wie in der Aufgabenstellung beschrieben.

Binary file not shown.

View File

@ -0,0 +1,55 @@
\documentclass[12pt]{article}
\input{../preamble.tex}
\begin{document}
\documentinfo{Konzeptionsphase: Dashboard f\"ur das Studium}{Portfolioteil 1 (max. 5 Seiten)}
\section{Ziele des Dashboards}
\begin{itemize}[leftmargin=*]
\item Abschlussziel: \textit{z.\,B. Bachelorabschluss in 3 Jahren, Meilensteine pro Semester}.
\item Notenziel: \textit{z.\,B. Gesamtnotenschnitt $\leq$ 2{,}0; Mindestnoten pro Modul}.
\item Weitere Kennzahlen (optional): \textit{ECTS-Fortschritt, offene Pr\"ufungsleistungen, Lernzeit/Woche}.
\end{itemize}
\section{Geplante Inhalte und Visualisierung}
\begin{itemize}[leftmargin=*]
\item \textbf{Startseite/Overview:} Fortschrittsbalken f\"ur ECTS, aktueller Notenschnitt, verbleibende Semester bis Zieltermin.
\item \textbf{Modul-Detail:} Tabelle mit Modulstatus, Note, Pr\"ufungsform, Wiederholtermine.
\item \textbf{Zeitplanung:} Kalender/Timeline mit Abgabefristen und empfohlenen Lernslots.
\item \textbf{Warnhinweise:} Hervorhebung von Risiken (\"uberdue ECTS, Notenrisiken, Terminkonflikte).
\end{itemize}
\section{Dashboard-Skizze}
\begin{figure}[H]
\centering
\fbox{\parbox{0.9\textwidth}{Platz f\"ur die Skizze (z.\,B. Export aus Figma/Excalidraw oder eingescanntes Handdrawing).}}
\caption{Skizze des geplanten Dashboards (Soll die Ziele aus Abschnitt~1 abdecken).}
\end{figure}
\section{UML-Klassendiagramm (Entity-Ebene)}
\begin{itemize}[leftmargin=*]
\item Pflichtklassen laut Aufgabenstellung: \texttt{Studiengang}, \texttt{Semester}, \texttt{Modul}, \texttt{Pr\"ufungsleistung}.
\item Erg\"anzungen (falls ben\"otigt): \textit{z.\,B. Benutzerprofil, Lernplan, Terminplanung}.
\item Beziehungen: \textit{Aggregation/Komposition zwischen Studiengang--Semester--Modul--Pr\"ufungsleistung; Vererbung nur falls sinnvoll}.
\end{itemize}
\begin{figure}[H]
\centering
\fbox{\parbox{0.9\textwidth}{Platz f\"ur das UML-Klassendiagramm (Entity-Fokus).}}
\caption{Entity-Klassen und Beziehungen (Komposition/Aggregation klar kennzeichnen).}
\end{figure}
\section{Annahmen und Randbedingungen}
\begin{itemize}[leftmargin=*]
\item Datenquelle: \textit{myCampus-Export manuell importiert? Lokale SQLite?}
\item Aktualisierungszyklus: \textit{z.\,B. w\"ochentlich/monatlich}.
\item Nichtziele: \textit{z.\,B. keine automatische myCampus-Schnittstelle, kein Mobile-Frontend}.
\end{itemize}
\section{Offene Fragen / Feedbackbedarf}
\begin{itemize}[leftmargin=*]
\item Welche Kennzahlen priorisieren (max. 2--3 zentrale Ziele)?
\item Welche Visualisierung unterst\"utzt die Zielerreichung am besten?
\item Braucht es zus\"atzliche Entity-Klassen f\"ur persistente Daten?
\end{itemize}
\end{document}

View File

@ -0,0 +1,63 @@
\documentclass[12pt]{article}
\input{../preamble.tex}
\begin{document}
\documentinfo{Reflexions- und Entwurfsdokument}{Portfolioteil 2 (max. 5 Seiten)}
\section{Untersuchung objektorientierter Konzepte in Python}
\subsection{Klassen- und Objektmodell}
\begin{itemize}[leftmargin=*]
\item Wie werden Entity-Klassen aus Phase 1 in Python umgesetzt? (\textit{Attribute, Typannotationen, Properties}).
\item Umgang mit Immutabilit\"at/Mutabilit\"at und Validierung.
\end{itemize}
\subsection{Vererbung, Komposition, Aggregation}
\begin{itemize}[leftmargin=*]
\item Welche Beziehungen aus dem Klassendiagramm bleiben Vererbung, welche Komposition/Aggregation?
\item Python-spezifische Aspekte: Mehrfachvererbung vermeiden, \texttt{@dataclass} f\"ur Value-Objekte?
\end{itemize}
\subsection{Polymorphie und Schnittstellen}
\begin{itemize}[leftmargin=*]
\item Nutzung von ABCs/Protokollen f\"ur Services (z.\,B. Repository/Exporter).
\item Beispielcode-Auszug (kurz) zur Demonstration.
\end{itemize}
\subsection{Persistenz und Datenhaltung}
\begin{itemize}[leftmargin=*]
\item Speicherung (SQLite/JSON), Mappings zwischen Modellen und Speicherformat.
\item Fehler- und Konsistenzstrategien.
\end{itemize}
\section{Gesamtarchitektur des Prototypen}
\subsection{Schichtenmodell / MVVM-Anpassung}
\begin{itemize}[leftmargin=*]
\item Views, ViewModels, Services/Repositories, Domain-Modelle.
\item Abh\"angigkeiten und Datenfl\"usse (Input \textrightarrow\ ViewModel \textrightarrow\ Repository \textrightarrow\ Persistenz).
\end{itemize}
\subsection{UML-Klassendiagramm (vollst\"andig)}
\begin{figure}[H]
\centering
\fbox{\parbox{0.9\textwidth}{Platz f\"ur das vollst\"andige UML-Klassendiagramm des Prototypen.}}
\caption{Alle Python-Klassen inkl. Services/ViewModels/Helper.}
\end{figure}
\begin{itemize}[leftmargin=*]
\item Begr\"unde Erweiterungen gegen\"uber Phase 1 (z.\,B. Controller, Repositories, DTOs).
\item Notiere technische Annahmen (GUI-Framework, Datenformat).
\end{itemize}
\section{Entscheidungen und Reflexion}
\begin{itemize}[leftmargin=*]
\item Welche Anpassungen am Klassendiagramm waren f\"ur Python notwendig?
\item Welche OO-Konzepte sind kritisch f\"ur den Prototypen (z.\,B. Komposition f\"ur Module/Pr\"ufungen)?
\item Offene Risiken (Termine, technische Schulden) und Gegenma\"nahmen.
\end{itemize}
\section{N\"achste Schritte f\"ur Phase 3}
\begin{itemize}[leftmargin=*]
\item Implementierungsplan (Reihenfolge der Features, Tests, Dokumentation).
\item Pr\"ufung der Abgabestruktur (Zip mit Phase1/Phase2/Phase3, GitHub-Link, Installationsanleitung, Abstract).
\end{itemize}
\end{document}

View File

@ -0,0 +1,34 @@
\documentclass[12pt]{article}
\input{../preamble.tex}
\begin{document}
\documentinfo{Abstract}{Portfolioteil 3 (1--2 Seiten)}
\section{Zielsetzung}
Kurze Zusammenfassung der Projektziele (\textit{Dashboards f\"ur Studienfortschritt, Kennzahlen, Nutzer:innenmehrwert}).
\section{Vorgehensweise}
Stichpunkte zu Phasen und Methodik:
\begin{itemize}[leftmargin=*]
\item Konzeptionsphase: Ziele, Dashboard-Skizze, Entity-Klassen.
\item Reflexion/Entwurf: OO-Konzepte in Python, finale Architektur.
\item Finalisierung: Implementierung, Tests, Bereitstellung (GitHub), Dokumentation.
\end{itemize}
\section{Ergebnisse}
\begin{itemize}[leftmargin=*]
\item Funktionsumfang des Prototyps (\textit{Ansichten, Kennzahlen, Speicherpfad}).
\item Qualit\"atssicherung (\textit{Tests, manuelle Checks, QA-Skripte}).
\item Erreichte Ziele (ECTS/Noten-Tracking, Visualisierungen).
\end{itemize}
\section{Erkenntnisse und Lessons Learned}
\begin{itemize}[leftmargin=*]
\item Technische Erkenntnisse (\textit{OO-Konzepte in Python, Bibliotheken, Architekturentscheidungen}).
\item Prozessbezogene Erkenntnisse (\textit{Zeitplanung, Feedbackschleifen}).
\end{itemize}
\section{Ausblick}
Geplante Weiterentwicklung (\textit{Automatisierte Importe, erweiterte Analytics, Deployment}).
\end{document}

View File

@ -0,0 +1,32 @@
\documentclass[12pt]{article}
\input{../preamble.tex}
\begin{document}
\documentinfo{Installationsanleitung}{Portfolioteil 3 (max. 1 Seite)}
\section{Voraussetzungen}
\begin{itemize}[leftmargin=*]
\item Betriebssystem: Windows 10/11 (getestet) oder Linux.
\item Python-Version: 3.10+ (64-bit).
\item Git f\"ur den Download des Repository.
\end{itemize}
\section{Schritte}
\begin{enumerate}[leftmargin=*]
\item Repository klonen: \texttt{git clone <GitHub-Link> study-dashboard}.
\item In das Verzeichnis wechseln: \texttt{cd study-dashboard}.
\item Abh\"angigkeiten installieren: \texttt{bash scripts/bootstrap.sh}.
\item Anwendung starten: \texttt{bash scripts/run-app.sh}.
\item Tests/QA (optional): \texttt{bash scripts/run-qa.sh}.
\end{enumerate}
\section{Bekannte Einschr\"ankungen}
\begin{itemize}[leftmargin=*]
\item \textit{Beispiel:} Keine automatische myCampus-Integration; Datenimport aktuell manuell.
\item \textit{Beispiel:} Gepr\"ufte Plattform: Windows 11 / Linux; macOS nicht getestet.
\end{itemize}
\section{Support}
Kontakt: \texttt{<E-Mail-Adresse>} f\"ur R\"uckfragen. GitHub-Issues k\"onnen f\"ur Fehlermeldungen genutzt werden.
\end{document}

View File

@ -0,0 +1,34 @@
\usepackage[ngerman]{babel}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[a4paper, margin=2cm]{geometry}
\usepackage{setspace}
\onehalfspacing
\usepackage{graphicx}
\usepackage{float}
\usepackage{booktabs}
\usepackage{enumitem}
\setlist{nosep}
\usepackage{csquotes}
\usepackage[colorlinks=true, linkcolor=black, urlcolor=blue]{hyperref}
\usepackage{helvet} % Arial-ähnlich
\renewcommand{\familydefault}{\sfdefault}
\setlength{\parindent}{0pt}
\setlength{\parskip}{6pt}
% Metadaten anpassen
\newcommand{\studentname}{Vorname Nachname}
\newcommand{\matrikelnummer}{12345678}
\newcommand{\kurs}{DLBDSOOFPP01\_D}
\newcommand{\docdate}{\today}
\newcommand{\documentinfo}[2]{%
\begin{center}
{\LARGE #1}\\[0.5em]
{\large #2}\\[0.5em]
{\large \studentname\ (\matrikelnummer)}\\[0.25em]
{\large Kurs: \kurs}\\[0.25em]
{\large Datum: \docdate}
\end{center}
\vspace{1em}
}