11 KiB
Use this file for Project-Metadata Extraction!
Folgendes, ich muss meine IHK-Projektarbeit machen und dafür sollte ich eine Administrationsoberfläche schreiben mit Python Flask und mit SQLite Backend, weil das Ganze in einem Offline-Netzwerk stattfindet, also mit einem Switch, mit einem Router, aber selbes Subnetz alles und halt keine richtige Internetverbindung. Eine Internetverbindung habe ich nur zum Installieren, das Ganze auf einem Raspberry Pi, ich glaube Raspberry Pi Version 4 und in dem Offline-Netzwerk sind also, ich glaube, sechs Steckdosen P110 von TAPO und diese sollen also an Steckdosenplätze angeschlossen werden und damit sollen dann praktisch 3D-Drucker reserviert werden, indem man dann halt die Steckdosen entweder ein- oder aufschaltet und das muss jetzt implementiert werden. Das Ganze nennt sich MIP, also M-Y-P, Manager Printer und genau, am besten auch mit API und ich brauche dafür einen Prompt und es gibt bestimmte API-Richtlinien und so, die gebe ich dir im Nachhinein noch.
MYP Manage your printer
from PyP100 import PyP100
hardcoded variablen keine env dateien
database/myp.db
mit models.py
keine komplexe dateistruktur ansonsten und alles in app.py
keine differenzierung zwischen entwicklungsumgebung und produktionsumgebung. alles in einem programm
(zur installation habe ich übrigens internet. das alles muss im kiosk mode auf dem respberry starten automatisch nach installation dann) zudem hier
Okay, also du musst ihm jetzt erklären, wir arbeiten jetzt also erst mal am Flask- Backend. Das dient der Absicherung, falls das NPM-Frontend für das Projekt nicht funktioniert. Deswegen muss es vollständig produktiv einsatzbereit sein. Er hat jetzt aber folgendes gemacht und zwar, er denkt leider, dass ich direkten Zugriff auf die Drucke habe und das nicht nur die Steckdosen kontrolliert, also ein- und ausgeschaltet werden zur Reservierung oder zum Verarbeiten von Druckaufträgen, sondern dass ich halt direkt 3D-Druckdateien reinspeichern kann. Das, was er aber gemacht hat, das gefällt mir sehr gut, also dass man die Dateien uploaden kann und dann praktisch, er denkt halt, dass die Dateien dann direkt an den 3D-Drucker gesendet werden, was ja nicht der Fall ist, weil ich hab ja keinen Zugriff direkt auf die 3D-Drucker. Ich will aber diese Funktion von Upload behalten und das so regeln, dass also der Administrator oder Leute, die halt in der Warteschlange hocken, dann praktisch diese Dateien schon mal hochladen können und das dann praktisch auf die SD-Karte, die dann irgendwie in den Raspberry reingeführt wird, dass sie dann automatisch entweder aufgespielt wird oder man sich die Dateien wieder runterladen kann oder so. Genau, und dafür brauche ich jetzt einen Prompt. Er sieht gerade nicht das npm-Projekt, er sieht nur wirklich das python-flask-Projekt und wir haben eine Tailwind-min-css-Datei heruntergeladen für den Offline-Betrieb, also dass er nicht jedes Mal den CDN verwenden muss, sondern halt wirklich die Tailwind-css lokal verfügbar hat im min-Format und er muss sich wohl irgendwie auch eine Tailwind-dark-mode-Datei erstellen, weil die Tailwind-min-css, die ich heruntergeladen habe, wohl veraltet war oder irgendwie so. Aber jedenfalls soll er die verwenden und der Style ist auch noch nicht optimal. Das gefällt mir sehr gut, aber er soll zum Beispiel das Mercedes-SVG im dark-mode weiß machen und im light-mode, also im hellen Modus, halt schwarz machen. Er soll mehr Margins und Paddings einfügen, das ganze Design ein bisschen responsiver machen und vor allem die Navbar muss ein wenig angepasst werden und soll halt ästhetisch aussehen, also zum Beispiel horizontal zentriert oder mit so Hamburger-Menüs oder irgendwie so. Er muss bedenken, dass er keine CDNs verwenden kann, sondern halt diese Dateien immer herunterladen muss lokal. Genau.
Genau. Was ich noch dazu sagen muss, ist halt, dass die Hauptfunktion wirklich die Ansteuerung der TAPO P110-Steckdosen ist. Und das Reservierungssystem, also dass die Steckdosen praktisch automatisch ein- und ausgestellt werden, dass gesagt wird, wenn Steckdosen an sind, dann ist der 3D-Drucker aktiv. Die Steckdosen sollen automatisch ausgeschaltet werden, wenn der Druckauftrag beendet ist. Dafür kann der Administrator dann die Zeit eingeben. Wichtig ist natürlich, dass keine Steckdosen ausgeschaltet werden, bevor der 3D-Drucker nicht fertig ist. Da wir aber keinen Zugriff auf die Daten vom 3D-Drucker haben, ist das eine eher komplexe Aufgabe. Das heißt also wirklich, dass wir das so regeln müssen, dass der Administrator dann praktisch die Zeit oder der User festlegen kann, wie lange der Drucker braucht, indem er vom 3D-Drucker dann abliest oder schätzt, wie lange der Druck brauchen wird. Ansonsten halt so die volle Funktionalität für so ein Reservierungssystem. Praktisch, dass der Administrator User erstellen kann, der Administrator ist auch hart codiert, das hat er schon implementiert. Also verfeinere den vorherigen Prompt dahingehend.
sag ihm auch die cors origins und so vom geplanten frontend sodass er da schonmal alles sicherstellt und dass auch localhost und so berücksichtigt wird und erlaubt ist es muss halt alles funktionieren das ist die hauptsache scheiss erstmal auf sicherheit, backend wie gesagt 192.168.0.105
Okay, folgendes, ich brauche jetzt einen Prompt, der Cursor sagt, dass er das Projekt halt beschreiben und zusammenfassen soll, für dich, damit du dann die Dokumentationen erstellen kannst, und dabei soll er besonders Wert legen auf digitale Vernetzung, weil ich ja ein digitaler Vernetzer bin, und da meine IHK-Abschlussprüfung bzw. mein Abschlussprojekt, und dafür muss ich jetzt halt die Dokumentation erstellen, deswegen soll er vor allen Dingen die Backend-Code-Basis durchsuchen und halt eine Markdown-Datei erstellen, die ich dir dann gebe, und dann mit ein paar Hintergrundinformationen kannst du dann die Dokumentation erstellen, aber zuerst einmal musst du halt einen Überblick über das Projekt an sich bekommen, damit du alles besser verstehen kannst, was ich dir sage.
anbei findest du meine aktuelle Dokumentation. zudem noch problemen denen ich begegnet bin. ich musste auch ein backup frontend erstellen weil die anbindung an das intranet nicht richtig funktionieren wollte und so. die dokumentation soll 15 seiten haben
das backup frotnend war eine katastrophe deswegen entsprechend viel platz. aber alles gleichmäßig verteilt bitte sonst. es musste viel problemlösung betrieben werden
Ok, Pass auf, Folgendes, Du wirst gleich einen Prompt erstellen zum allerletzten Aufräumen und Übergehen der Code Basis. Er hat die komplette Code Basis für das gesamte Projekt vor sich. Er soll beachten, dass Frontend und Backend zwei getrennte Server sind. Die Hostnamen gebe ich dir dann zum Schluss nochmal. Alle .md Dateien sollen in die Docs Ordner verschoben werden. Die Ports sollen immer 443 und 80 sein, wenn möglich 443. Es sollen selbstsignierte Zertifikate verwendet werden, die in allen Eigenschaften ausgefüllt sind. Diese müssen vorgeneriert sein und dürfen nicht erst auf den Raspberry Pi generiert werden. Ich gebe dir wahrscheinlich auch gleich die IP-Adresse nochmal. Dann soll er auch dafür sorgen, dass alle falschen URL-Aufrufe oder Ports korrigiert werden. Er muss auch beachten, dass das Frontend in Docker aufgesetzt wird mit einem CADI Server, wofür er die entsprechende CADI-File machen muss. Ansonsten soll das Backend ohne Docker laufen bzw. aufgesetzt werden. Es gibt eine zentrale Commando Center Installer-Datei, die sowohl für Frontend als auch für Backend eingesetzt werden muss. Die anderen spezifischen Daten gebe ich dir gleich. Er soll auch jegliche unnötige Skripte noch löschen.
frontend: hostname: m040tbaraspi001 intranet hostname: m040tbaraspi001.de040.corpintra.net , ip (wlan interface): 192.168.0.109 , lan interface = statische intranet ip (gerade nicht bekannt, irgendeine mit 53. vorne) backend: 192.168.0.105 (statisch, lan) , hostname = raspberrypi
user ist immer /home/user projekt liegt unter /home/user/Projektarbeit-MYP/
backend unter /home/user/Projektarbeit-MYP/backend/app/ frontend unter /home/user/Projektarbeit-MYP/frontend/
alle sonstigen user sind ungültig oder müssen erstellt werden!
wichtig ist auch dass er durch die javascript dateien und so durchgeht und nach falschen ports (3000, 5000, 8443, 8080 etc) sucht und die korrigiert
Okay, ich brauche jetzt einen Prompt für das folgende Vorhaben. Und zwar sollen uneingeloggte Benutzer Druckaufträge beantragen können, die der Administrator dann freigibt oder zulässt, und die er in seinen Benachrichtigungen erhält. Dafür braucht es auch ein Benachrichtigungssystem, ein lokales. Bedenke, es hat kein Internet, deswegen so viel dazu. Aber es soll z.B. Name der Person, Begründung, Dauer der Zeit angegeben werden können. Das Druckersystem soll zudem noch einen Terminkalender mit reingeplant haben, sodass man sehen kann, zu welcher Uhrzeit, an welchem Wochentag, in welcher Woche der Drucker besetzt ist. Dieser Kalender wird dann automatisch generiert, und man kann dann auch mit ihm interagieren. Also z.B. sagen, von da bis da will ich einen Druckauftrag haben. Allerdings nur der Administrator kann dann wirklich auch in dem Kalender schreiben. Alles andere sind nur Anträge. Und dann soll, wenn der Auftrag zugelassen wurde, soll praktisch ein Einmalkode 6 oder 8 Zeichen lang generiert werden. Und mit diesem Code kann der uneingeloggte Benutzer dann praktisch selber automatisch den Druckauftrag richtig starten. Also ab da beginnt er dann. Das heißt auch für uneingeloggte Benutzer müssen Anträge sichtbar sein, der Status dieser Anträge, also ob das noch aufstehend ist, ob der genehmigt wurde, damit sie dann den Code eingeben können.
Also es geht mir gerade nur um das Backend mit dem Flask-Frontend und da soll halt der Kalender wie so eine Schichtplanung drin implementiert werden. Der Administrator soll zudem auch festlegen können bei Benutzern, die sich also tatsächlich schon angemeldet haben, dann die einen Account haben, ob diese selber entscheiden können, ob sie Druckaufträge starten, ob sie genehmigen können etc. Verbessere den Prompt nochmal und wir sind jetzt bei Version 3.5.
shadcdn und pnpm im frontend aber das frontend war auch nicht meine aufgabe. zudem ist das netzerk 192.168.0.0/24 und beinhaltet einen tapo router, einen switch, einen raspberry für das backend und einen raspberry für das frontend. das frontend ist per lan an intranet angeschlossen, per wlan an das offline netzwerk mit 192.168.0.109 . das backend ist statisch gesetzt auf 192.168.0.105 . ich war für die netzwerk konfiguration etc vereantwortlich und für den aufbau der api und des flask backends eben und hab noch ein interface gebaut weil das andere nicht zeitlich schaffbar zu implementieren war. linux und raspberry installation war ein großes thema wegen kiosk mode und routing (frontend insbesondere da an 2 netzwerk angeschlossen) . ich habe auch viel zeit damit verbracht die tapo steckdosen ansteuern zu können und habe sie teilweise reverse engineered weil ich kein funktionierendes python modul finden konnte. ich bin habe mit wireshark den traffic mitgeschnitten und request replays durchgeführt. allerdings musste man dafür immer die tapo app starten um einen session key zu erhalten. als ich mich da verbissen habe habe ich nochmal abstand genommen und nach einem python modul geguckt glücklicherweise hat eins für ein anderes tapo modell dann funktioniert
als fließtext und ich bin Fachinformatiker Digitale vernetzung du sollst meine scheiss dokumentation schreiben