SVWS-NRW / SVWS-Server

OpenSource Repository für den SVWS-Server
Other
14 stars 5 forks source link

Import einer Kurs42-Blockung #220

Closed HHayen closed 2 months ago

HHayen commented 3 months ago

Import einer Kurs42-Blockung liefert keine Daten.

Import-Log lieferte keine Fehlermeldung, alle txt-Dateien sind UTF8 ohne BOM, hatte ich extra konvertiert. Daten passen definitiv, mehrfach geprüft. Nach dem Import ist für die Schüler auch der Link von der Laufbahnplanung zur Kursplanung vorhanden: grafik

Es ist unter Kursplanung dann diese Meldung sichtbar: grafik

Anklicken liefert diese Fehler: grafik

Klicken auf OK bei der Frage, ob fehlerhafte Kurszuordnungen gelöscht werden sollen liefert: grafik

Hier noch der log:

Erstelle eine temporäres Verzechnis mit dem Inhalt der Zip-Datei unter dem Namen "./Temp/_meinschulname__nADmXV8PkLkzLP22FbD8sebG7VZJ94L8JgjgutXy.zip" Importiere die Blockung mithilfe der extrahierten Daten: -> Lese Informationen zu der Schule ein... [OK] -> Bestimme die Schüler der Schule aus der Datenbank... [OK] -> Bestimme die Lehrkräfte der Schule aus der Datenbank... [OK] -> Bestimme die Fächer der Schule aus der Datenbank... [OK] -> Lese die Kurs 42 - Export - Textdateien ein... -> Prüfe, ob der Abiturjahrgang 2027 angelegt ist... [OK] -> Schreibe die Blockungsdaten... [OK] Import beendet Löschen des temporären Verzeichnis "./Temp/_meinschulname__nADmXV8PkLkzLP22FbD8sebG7VZJ94L8JgjgutXy.zip". [OK]


hmt commented 3 months ago

@benjaminbartsch

benjaminbartsch commented 3 months ago

@HHayen : Kannst du irgendwie herausfinden, wer Schüler 1152 sein könnte? Kann man sich die SuS-Liste anschauen und fehlt da einer?

HHayen commented 3 months ago

Bin schon dabei und puzzel. Ich habe wahrscheinlich schon die Ursache gefunden: Der Schüler 1152 in meiner DB ist nVmitNP und daher in der Datenbank natürlich noch in der Stufe 10. In der Blockung aber schon in EF. Damit scheitert der Import.

benjaminbartsch commented 3 months ago

Ahhh super, das bedeutet, dass dieser "Fehler" vorher abgefangen muss. @ThomasBachran: Ich denke hier müsste der Import eine Warnung werfen (oder den Import sogar verweigern?). Was denkst du?

HHayen commented 3 months ago

Ok, setze ich 1152 in die EF folgt ein weiteres Problem: In der DB nicht mehr vorhandene, aber noch in der Blockung verbliebene (weil die Löschung vergessen wurde) Schüler führen zum gleichen Probelm. "Überschüssige" Schüler in der Blockung sollten also irgendwie beim Import ignoriert werden können?

kroerig commented 3 months ago

Ignorieren ist aber auch irgendwie blöd. Erschwert es den Stufenleitern ja die Arbeit. Die einen haben Schüler zuviel, die anderen Schüler wenig.

Eigentlich dürfte man diese Importe erst zulassen, wenn alle Nachprüfungen durch sind.

ThomasBachran commented 3 months ago

Ahhh super, das bedeutet, dass dieser "Fehler" vorher abgefangen muss. @ThomasBachran: Ich denke hier müsste der Import eine Warnung werfen (oder den Import sogar verweigern?). Was denkst du?

@benjaminbartsch : Beim Import macht hier keinen Sinn, da dieser Fall auch ohne einen vorigen Import auftreten kann. Hier muss der zugehörige Manager flexibler und fehlertoleranter gestaltet werden...

benjaminbartsch commented 3 months ago

Ahhh super, das bedeutet, dass dieser "Fehler" vorher abgefangen muss. @ThomasBachran: Ich denke hier müsste der Import eine Warnung werfen (oder den Import sogar verweigern?). Was denkst du?

@benjaminbartsch : Beim Import macht hier keinen Sinn, da dieser Fall auch ohne einen vorigen Import auftreten kann. Hier muss der zugehörige Manager flexibler und fehlertoleranter gestaltet werden...

@ThomasBachran: Der Manager kann hier nur bedingt flexibler werden (im 2. Schritt sozusagen) - die Exception wird derzeit noch bleiben, da ein Schüler referenziert wird, der für den Manager nicht existiert. Wenn ich es richtig verstehe, liegt eine Kurs-Schüler-Zuordnung vor, ohne dass die API den Schüler geladen hat.

Wenn wir also die Situation haben, dass etwas geblockt wird und dann der Schüler z. B. die Stufe wechselt, dann muss die API beim laden der Blockung nicht nur alle SuS der Stufe laden, sondern auch noch zusätzlich die, die in den Kurs-Schüler-Zuordnungen vorhanden sind (aber nicht zuvor geladen wurden). An dieser Stelle müsste die Exception weg sein.

Erst danach kann der Manager die SuS-Menge analysieren und potentiell warnen, falls da ungültige Kurs-Schüler-Zuordnungen sind. Wie genau, weiß ich nocht nicht, vielleich ist es ja gewollt, dass ein bestimmter Q1-Schüler einen Q2-Kurs besucht? Das können wir dann so ähnlich handhaben wie bei ungültigen Kurs-Schüler-Zuordnungen, bei denen die Fachwahl sich geändert hat.

kroerig commented 3 months ago

vielleich ist es ja gewollt, dass ein bestimmter Q1-Schüler einen Q2-Kurs besucht

Ja, ich denke das könnte prinzipiell vorkommen, wenn Kurse stufenübergreifend zusammengelegt werden. Ich hatte das zu meiner Schulzeit in Musik, weil nicht genügend Musiklehrer zur Verfügung standen. Ich kann aber nicht sagen, wie das in Kurs abgebildet wurde. Kann gut sein, dass es den Kurs in beiden Stufen mit den passenden Schülern gab und die einfach nur im Stundenplan zeitgleich stattgefunden haben. Das wäre vermutlich die saubere Lösung.

ThomasBachran commented 2 months ago

Im nächsten Pre-Release wird das oben beschriebene Problem nach dem Import behoben sein.