Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
modul:m290_guko:leistungsbeurteilungen:03_lb:b_projektbeschrieb [2025/12/18 14:24] gkochmodul:m290_guko:leistungsbeurteilungen:03_lb:b_projektbeschrieb [2026/01/19 14:08] (aktuell) gkoch
Zeile 39: Zeile 39:
   * Backend läuft (Start über ''npm run dev'' oder ''npm start'' oder ''node index.js'')   * Backend läuft (Start über ''npm run dev'' oder ''npm start'' oder ''node index.js'')
   * Mindestens **2 Tabellen** in MySQL (mit PK/FK)   * Mindestens **2 Tabellen** in MySQL (mit PK/FK)
-  * Mindestens **eine API-Ressource** (z.B. ''/api/serien''+  * **CRUD** vollständig über API-Endpoints (z.B. ''/api/serien'', ''/api/serien/:id'' mit entsprechenden HTTP-Methoden GET, POST, PUT, DELETE)
-  * **CRUD** vollständig über REST nachweisbar: ''GET''''POST''''PUT''''DELETE''+
   * Mindestens **eine JOIN-Route** (Daten aus 2 Tabellen)   * Mindestens **eine JOIN-Route** (Daten aus 2 Tabellen)
-  * Mindestens **eine Aggregat-Route** (COUNT/AVG/SUM/MIN/MAX mit GROUP BY)+  * Mindestens **eine Aggregat-Route** (COUNT/AVG/SUM/MIN/MAX)
   * Zugriff auf DB **nicht** als ''root'', sondern über einen **AppUser** (Least Privilege)   * Zugriff auf DB **nicht** als ''root'', sondern über einen **AppUser** (Least Privilege)
   * Video-Tutorial, wo alle Team-Mitglieder darin vorkommen und einen Teil erklären.    * Video-Tutorial, wo alle Team-Mitglieder darin vorkommen und einen Teil erklären. 
Zeile 83: Zeile 82:
   * Sie müssen während dem Video zeigen, dass Sie Ihren eigenen Code verstehen (Warum dieser Endpoint? Warum dieser JOIN? Was bedeutet ''req.params.id''?).   * Sie müssen während dem Video zeigen, dass Sie Ihren eigenen Code verstehen (Warum dieser Endpoint? Warum dieser JOIN? Was bedeutet ''req.params.id''?).
 </WRAP> </WRAP>
 +<WRAP center round info 60%>
 +Ein Beispiel-Video können Sie sich hier anschauen:
 +
 +[[https://bzzch-my.sharepoint.com/:v:/g/personal/guido_koch_bzz_ch/IQAMJFvbSMhfQIVI9p8cxRT9ARThohsE9YX113Qo36bG0CM?e=XnvFVi&nav=eyJyZWZlcnJhbEluZm8iOnsicmVmZXJyYWxBcHAiOiJTdHJlYW1XZWJBcHAiLCJyZWZlcnJhbFZpZXciOiJTaGFyZURpYWxvZy1MaW5rIiwicmVmZXJyYWxBcHBQbGF0Zm9ybSI6IldlYiIsInJlZmVycmFsTW9kZSI6InZpZXcifX0%3D|Beispiel-Video]]
 +\\
 +Für das Erstellen des Screencasts empfiehlt sich eine entsprechende Software zu nutzen: Ich habe die Trial Version von **Camtasia** benutzt (darum die Wassermarke). Camtasia können sie hier downloaden: https://www.techsmith.com/download/camtasia/
 +\\
 +Alternativ bietet auch Microsoft in Office365 die Software **Clipchamp** an, welche ähnliche Funktionalitäten hat. Mit Ihrem BZZ-Account müssten Sie dazu gratis Zugriff haben: https://www.microsoft.com/de-ch/microsoft-365/clipchamp?market=ch
 +</WRAP>
 +
  
  
-===== Abgabe – zu liefernde Lernprodukte (ZIP in Moodle) ===== +===== Abgabe – zu liefernde Lernprodukte===== 
-Im ZIP-File müssen enthalten sein:+Folgende Teile sind Teil der Abgabe:
  
   - **Video-Tutorial** (ca. 15 Min)   - **Video-Tutorial** (ca. 15 Min)
     * Format: MP4 (H.264), max. FullHD (1920×1080), min. 1280×720     * Format: MP4 (H.264), max. FullHD (1920×1080), min. 1280×720
     * Max. Grösse: 1 GB (Bitrate ca. 3000–5000 kbps)     * Max. Grösse: 1 GB (Bitrate ca. 3000–5000 kbps)
-  - **ERM und ERD** als PDF-Datei+  - **ERM und ERD** als PDF-Datei oder PNG
   - **SQL-Skript (DDL)**: Anlegen der Tabellenstruktur (Als PDF/Word oder ''.sql''-File)   - **SQL-Skript (DDL)**: Anlegen der Tabellenstruktur (Als PDF/Word oder ''.sql''-File)
   - **SQL-Skript (DML)**: Import / Insert der Startdaten (Als PDF/Word oder ''.sql''-File)   - **SQL-Skript (DML)**: Import / Insert der Startdaten (Als PDF/Word oder ''.sql''-File)
Zeile 114: Zeile 123:
 | **5. AppUser & Rechte (DCL, Least Privilege)** | **6** | AppUser funktioniert, Rechte minimal sinnvoll, keine ''root''-Nutzung | AppUser vorhanden, aber Rechte unklar/zu breit | Kein AppUser / root verwendet | | **5. AppUser & Rechte (DCL, Least Privilege)** | **6** | AppUser funktioniert, Rechte minimal sinnvoll, keine ''root''-Nutzung | AppUser vorhanden, aber Rechte unklar/zu breit | Kein AppUser / root verwendet |
 | **6. API Design & Struktur** | **8** | Konsistente Pfade (''/api/...''), sinnvolle Ressourcen, ''/:id'' korrekt | Routen vorhanden, aber inkonsistent/unsauber | Unklar/chaotisch | | **6. API Design & Struktur** | **8** | Konsistente Pfade (''/api/...''), sinnvolle Ressourcen, ''/:id'' korrekt | Routen vorhanden, aber inkonsistent/unsauber | Unklar/chaotisch |
-| **7. CRUD über Backend → MySQL** | **15** | ''GET/POST/PUT/DELETE'' funktionieren, DB ändert sich sichtbar, SQL sauber | CRUD teilweise fehlerhaft/unvollständig | CRUD nicht nachweisbar |+| **7. CRUD über Backend → MySQL** | **10** | ''GET/POST/PUT/DELETE'' funktionieren, DB ändert sich sichtbar, SQL sauber | CRUD teilweise fehlerhaft/unvollständig | CRUD nicht nachweisbar |
 | **8. JOIN-Route** | **6** | Mindestens eine Route mit JOIN, Ergebnis sinnvoll | JOIN vorhanden, aber Ergebnis unklar/falsch | Kein JOIN | | **8. JOIN-Route** | **6** | Mindestens eine Route mit JOIN, Ergebnis sinnvoll | JOIN vorhanden, aber Ergebnis unklar/falsch | Kein JOIN |
 | **9. Aggregat-Route (GROUP BY)** | **6** | Mindestens eine Aggregat-Route korrekt (COUNT/AVG/SUM etc.) | Aggregat vorhanden, aber unklar/falsch | Kein Aggregat | | **9. Aggregat-Route (GROUP BY)** | **6** | Mindestens eine Aggregat-Route korrekt (COUNT/AVG/SUM etc.) | Aggregat vorhanden, aber unklar/falsch | Kein Aggregat |
 | **10. Validierung, Fehlerbehandlung, HTTP-Statuscodes** | **8** | 400/404/500 sinnvoll, Pflichtfelder geprüft, verständliche Fehlermeldungen | Teilweise vorhanden, teils falsche Codes | Keine Validierung/Fehlerhandling | | **10. Validierung, Fehlerbehandlung, HTTP-Statuscodes** | **8** | 400/404/500 sinnvoll, Pflichtfelder geprüft, verständliche Fehlermeldungen | Teilweise vorhanden, teils falsche Codes | Keine Validierung/Fehlerhandling |
-| **11. Video-Tutorial (Screencast) & Verständnisnachweis** | **15** | Struktur klar, beide erklären aktiv, Demo mit Postman + DB sichtbar, reflektiert | Video vorhanden, aber unklar/zu kurz/Teamanteil ungleich | Kein Video / Verständnis nicht nachweisbar |+| **11. Video-Tutorial (Screencast) & Verständnisnachweis** | **20** | Struktur klar, beide erklären aktiv, Demo mit Postman + DB sichtbar, reflektiert, alle APIs erklärt und vorgeführt | Video vorhanden, aber unklar/zu kurz/Teamanteil ungleich | Kein Video / Verständnis nicht nachweisbar |
  
 <WRAP box round center 80%> <WRAP box round center 80%>
Zeile 124: Zeile 133:
 Sie müssen Ihre Lösung erklären können (SQL, Datenmodell, API, Tests).   Sie müssen Ihre Lösung erklären können (SQL, Datenmodell, API, Tests).  
 Wenn zentrale Teile nicht fachlich korrekt begründet werden können, kann der entsprechende Bereich mit **0 Punkten** bewertet werden. Wenn zentrale Teile nicht fachlich korrekt begründet werden können, kann der entsprechende Bereich mit **0 Punkten** bewertet werden.
 +
 +**Verspätete Abgaben**
 +Geben Sie die Projektarbeit verspätet ab, wird pro 24h-Verspätung eine ganze Note abgezogen.
 +
 +**Die Projektarbeit ist der dritte Teil der Modulnote** und daher __nicht optional__. Bei Nicht-Abgabe (ohne Dispens/ärztliches Zeugnis) wird die Note 1 eingetragen.
 </WRAP> </WRAP>
  
  • modul/m290_guko/leistungsbeurteilungen/03_lb/b_projektbeschrieb.1766064296.txt.gz
  • Zuletzt geändert: 2025/12/18 14:24
  • von gkoch