Open tertek opened 11 months ago
Hi Ekin, wie kann ich das ERD editieren (Entity Attribute)? LG Stephan
From: "Ekin Tertemiz" @.> To: "Research-IT-Swiss-TPH/pdftk-api" @.> Cc: "Stephan Edenhofer" @.>, "Assign" @.> Date: 11.12.2023 09:57 Subject: Re: [Research-IT-Swiss-TPH/pdftk-api] Entity Relationship Diagram (Issue #5)
Assigned #5 to @edenst-TPH. — Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you were assigned.Message ID: @.***>
@edenst-TPH Soweit ich weiss, kann man da einfach reinklicken? Bist du im Editor?
gibt es ein draw.io source file vom ERD?
Danke für den Entwurf. Kannst du bitte auch die Source hinterlegen? Ich werde das durchgehen, und dann können wir das im neuen Jahr besprechen,was meinst du?
https://github.com/Research-IT-Swiss-TPH/pdf-api/blob/master/docs/pdfapi-erd-edenst.drawio ERD Source, in draw.io sieht man auch tooltips :-)
Gerne Besprechung im Januar, ich bin am 8. zurück
PS evtl draw.io-App für GitHub installieren ? https://www.drawio.com/blog/single-repository-diagrams https://github.com/jgraph/drawio-github
Hier ein kurzes Feedback (gerne besprechen wir das noch ausführlicher):
User: Wir benötigen kein User Management, dh. Password für den User, da erstmal kein Front-End bestehen wird.
Authentication: Wo wird der Authentication Token dh. API Key gespeichert? Eventuell macht es hier Sinn, die Tabelle für Priviliges und Token Storage zu separieren.
Document: Wie genau sind die caches gemeint? In welchem Fall wäre ein Datenbank-basierter Cache notwendig?
Zusatz: Logging der durchgeführten Aktionen per Token, evtl in einer Log Tabelle?
terteks Post vom 8.1.2024, mit kurzen Fragen / Bemerkungen von edenst
Hier ein kurzes Feedback (gerne besprechen wir das noch ausführlicher): User: Wir benötigen kein User Management, dh. Password für den User, da erstmal kein Front-End bestehen wird.
Wollen wir wissen wer einen Request schickt? Falls ja: Authentication per Machine MAC / IP, geht das ohne User Management? Oder nur Token Authentication, User unwichtig? Wie kommt der Token zum User? Erstmal kein Frontend: Wird die SW später interaktiv? zB User schickt PDF-Form, zurück falls validiert die Feldliste und Info wie zB Adressen übergeben werden können,
Authentication: Wo wird der Authentication Token dh. API Key gespeichert? Eventuell macht es hier Sinn, die Tabelle für Priviliges und Token Storage zu separieren.
Soll ein Token bestimmte Privileges haben? Dann ja, Token-Table (id, expiration) & Privileges-Table (join Token on idToken), die Privileges können dann zahlreich werden, künftig zB aufgefächert nach nach Job, Projekt oä?
Document: Wie genau sind die caches gemeint? In welchem Fall wäre ein Datenbank-basierter Cache notwendig?
Documents als Files gespeichert, das Document-Table in der DB entält Verweise darauf.
Zusatz: Logging der durchgeführten Aktionen per Token, evtl in einer Log Tabelle?
Was loggen? zB: idToken, datetime, idDocument, (Request Params?), Result (Success | ErrMsg, count_processed ..)
Wie besprochen anbei die Skizze aus dem erfolgreichen Austausch von letzter Woche. Bitte entsprechend in das ERD überführen. Bei Fragen können wir uns gerne nochmals absprechen.
Ein User kann ja mehrere Tokens haben, richtig? Worauf beziehen sich die Rate_Limits (Anzahl Jobs / PDFs created per Std, Tag etc)? Falls auf Tokens, würde ich auch die Projects auf Tokens beziehen. Die Projects würde ich dann auf Users beziehen, wenn sich auch die Rate_Limits auf Users beziehen.
Wir können es so machen: Ein User hat maximal MAX_PROJECTS und MAX_JOBS pro Projekt. Mit einem validen Token pro User (mehrere über Zeit).
Ein Project kann mehrere Jobs umfassen, richtig? Ein Job bezeichnet eine Produktion "PDF-Form + Daten-Liste = individuelle PDFs", richtig? Dann würde ich die Documents auf Jobs beziehen, und Jobs auf die Projects.
Ein Projekt hat maximal MAX_JOBS (siehe oben). Ein Job ist die Durchführung eines PDF Fillings für einen Datensatz mit einer befüllten PDF (optional flattened) als Rückgabe bzw. Rückgabe ID die dann asynchron als Download zur Verfügung steht für eine gewisse Zeit.
Worauf bezieht sich die Blacklist, auf einen User oder einen Token?
Die Blacklist ist für IP Adressen. Am besten wir lesen uns beide noch etwas mehr in das Thema ein: https://medium.com/@bijit211987/everything-you-need-to-know-about-rate-limiting-for-apis-f236d2adcfff
@edenst-TPH Hier noch eine kleine List von hilfreicher Middleware für Slim. Es gibt bereits eine Middleware für Rate Limiting. https://github.com/slimphp/Slim/wiki/Middleware-for-Slim-Framework-v3.x
Achtung obiger Link ist für Slim v3. Für Version 4 ist die Doku nicht ganz vollständig, aber zum Anfang der Recherche: https://www.slimframework.com/docs/v4/concepts/middleware.html#finding-available-middleware
@edenst-TPH Ich habe einige Änderungen vorgenommen:
Hier das aktuallisierte ERD:
https://github.com/Research-IT-Swiss-TPH/pdf-form-filling-api/blob/dev/docs/pff-api.drawio.png
@edenst-TPH Ich habe das ERD nochmals überarbeitet.
Können wir gerne besprechen.
separates table für language? https://en.wikipedia.org/wiki/List_of_ISO_639_language_codes https://www.loc.gov/standards/iso639-2/php/code_list.php (mit swiss german :-)
separates table für language
As discussed, it would make sense to add a subset of languages, language codes, etc. as either static array somewhere in the domain or if it is really something to be managed later, we can add it as table. For now I do not see it necessary to be a separate table.
simplified diagram without document/version is created - I had to store it in a separate branch, since dev is protected, made pull request. I suggest to cut the relation from jobs to customers: the job already refers to a customer, via FKs: job - document - folder - customer the direct relation job - customer would be redundant / 'circular', or even mismatching
since dev is protected, made pull request
It is protected, but I can access it. Maybe I need to give you permission. There is no PR yet.
I suggest to cut the relation from jobs to customer
Yes, we can drop the relation from jobs to customers, I had added it as a shortcut, but maybe it is better as you say
@tertek I adjusted the ERD as agreed:
@edenst-TPH Ich habe bei Jobs und Documents den zusätzlichen Index 'uuid' hinzugefügt. Der PK bleibt bei beiden 'id'. Dies vereinfacht das Seeding. Der Customer darf beim Zugriff auf die API die 'id' nicht sehen. Zu klären wäre noch, ob das Projekt auch eine uuid benötigt oder nicht.
@edenst-TPH We will be changing the "customers" table to "users" table, since we will have different user roles:
Business Routes:
@tertek grepped for 'customer' in app/src, found some 'id_customer' in domain/folder and action/folder - should I fix them right away?
@edenst-TPH thanks for the report. I quickly fixed it.
to do:
Attribute definieren und gemeinsam besprechen