Research-IT-Swiss-TPH / pdf-form-filling-api

API to read, fill and flatten PDF forms.
https://143.198.242.211.sslip.io/
0 stars 2 forks source link

Entity Relationship Diagram #5

Open tertek opened 9 months ago

tertek commented 9 months ago

to do:

Attribute definieren und gemeinsam besprechen

tertek commented 9 months ago

Image

edenst-TPH commented 9 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: @.***>


This email and any files transmitted with it are confidential and intended solely for the use of the individual or entity to whom they are addressed. If you have received this email in error, please notify us immediately by reply e-mail and delete this message from your system.

tertek commented 9 months ago

@edenst-TPH Soweit ich weiss, kann man da einfach reinklicken? Bist du im Editor?

edenst-TPH commented 9 months ago

gibt es ein draw.io source file vom ERD?

tertek commented 9 months ago

here we go:

https://github.com/Research-IT-Swiss-TPH/pdf-api/blob/master/docs/entity-relationship-diagram_pdf_api.drawio

edenst-TPH commented 9 months ago

pdfapi-erd drawio

tertek commented 9 months ago

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?

edenst-TPH commented 8 months ago

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

tertek commented 8 months ago

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?

edenst-TPH commented 8 months ago

pdfapi-erd_7(1)

edenst-TPH commented 8 months ago

https://github.com/Research-IT-Swiss-TPH/pdf-api/blob/master/docs/pdfapi-erd_7.drawio

edenst-TPH commented 8 months ago

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 ..)

tertek commented 8 months ago

skizze_Besprechung_pdf-api 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.

edenst-TPH commented 8 months ago
tertek commented 8 months ago

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

tertek commented 8 months ago

@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

https://github.com/middlewares/awesome-psr15-middlewares

edenst-TPH commented 7 months ago

pdfapi-erd_8(9) drawio

https://github.com/Research-IT-Swiss-TPH/pdf-api/blob/master/docs/pdfapi-erd_8(9).drawio

tertek commented 6 months ago

@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

tertek commented 6 months ago

@edenst-TPH Ich habe das ERD nochmals überarbeitet.

Können wir gerne besprechen.

Image

edenst-TPH commented 4 months ago

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 :-)

tertek commented 4 months ago

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.

edenst-TPH commented 4 months ago

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

tertek commented 4 months ago

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

edenst-TPH commented 4 months ago

@tertek I adjusted the ERD as agreed:

pff-api-erd drawio

edenst-TPH commented 4 months ago

pff-api-erd drawio

tertek commented 3 months ago

@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.

tertek commented 3 months ago

@edenst-TPH We will be changing the "customers" table to "users" table, since we will have different user roles:

Business Routes:

edenst-TPH commented 3 months ago

@tertek grepped for 'customer' in app/src, found some 'id_customer' in domain/folder and action/folder - should I fix them right away?

tertek commented 3 months ago

@edenst-TPH thanks for the report. I quickly fixed it.