[Metadatenschema] Erweiterung Metadatenschema um "purpose: data"
## User Story Als Fachdienst möchte ich gerne die Möglichkeit unterstützen große Fachdaten zu empfangen. ## Warum Anlagen sollten als separate Attachments in FIT-Connect übertragen werden. Derzeit gibt es allerdings noch XÖV-Standards, die fordern, die Anlagen in den Fachdatensatz einzubetten. Auch viele Onlinedienste und Verwaltungssysteme haben dieses Vorgehen implementiert. FIT-Connect unterstützt nur maximal ca. 10-14 MB große Fachdatensätze, was im Normalfall ausreichend ist. Werden Anlagen in den Fachdatensatz eingebettet, so kann dieser das gesetzte Limit überschreiten. Damit betroffene Onlinedienste und Verwaltungssystem keine bilateralen Absprachen treffen müssen, soll FIT-Connect ein Standardvorgehen für große Fachdatensätze definieren. ## Details <!-- Erläutern Sie den Wert dieser Anforderung in Form einer User Story. --> Wir definieren eine Maximalgröße des Fachdatensatzes von 10 MB. Größere Fachdatensätze müssen als Attachment gesendet werden. Als `encryptedData` wird als Platzhalter ein leerer String übertragen. Der Metadatensatz wird wie folgt befüllt: - `contentStructure`: - `data`: - `submissionSchema`: Wird normal befüllt - `hash`: Hash über den Platzhalter - `type`: immer `sha512` - `content`: immer `cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e` (Hash über 0 Bytes) - `attachments`: Enthält in diesem Fall normalerweise nur eine Anlage (der Fachdatensatz), da die eigentlichen Anlagen im Fachdatensatz eingebettet sind. - `attachmentId`: Zufällige UUID - `purpose`: immer `data`; neuer Wert für "Fachdatensatz" (siehe Hinweis untern) - `filename`: Kann frei gewählt werden; Empfehung: `data.json` bzw. `data.xml`, je nach Datentyp - `description`: Kann frei gewählt werden, z.B. "Fachdatensatz als Anlage" - `mimeType`: Je nach Datentyp `application/json` oder `application/xml` - `hash`: Hash des Fachdatensatzes - `type`: immer `sha512` - `content`: SHA-512-Hash des Fachdatensatzes Beispiel für den Eintrag des Fachdatensatz im Metadatensatz: ```json { "contentStructure": { "data": { "submissionSchema": { "schemaUri": "urn:xoev-de:d-nrw:standard:xsozialbasis_2.2.0#vorgang.transportieren.1000001", "mimeType": "application/xml" }, "hash": { "type": "sha512", "content": "cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e" } }, "attachments": [ { "attachmentId": "32e522fa-2fde-4893-bcf9-a57c1a07398e", "purpose": "data", "filename": "data.xml", "description": "Fachdatensatz als Anlage", "mimeType": "application/xml", "hash": { "type": "sha512", "content": "246065c584233bf35406872c180f96f05ff9f6d62d3daa830a37e149891ac5dcf533981bf2cdc98a3f06464683d372052f1ffcd2937988f9f59cb325f3518afc" } } ] } } ``` Das Verwaltungssystem erkennt an der `purpose: data`, dass es sich bei dieser Anlage um den Fachdatensatz handelt und verwendet diese statt dem in `encryptedData` übertragenen Platzhalter. Die Kennzeichnung `purpose: data` darf nur bei einer Anlage gesetzt werden. Ist mehr als eine Anlage gekennzeichnet, so muss das Verwaltungssystem die Übertragung mit einem Fehler (`reject-submission`) abbrechen. Für die Einführung von `purpose: data` ist eine neue Metadatenschemaversion notwendig. Bis dahin kann ersatzweise der Wert `form` verwendet werden. ## Akzeptanzkriterien 1. [x] Das Metadatenschema wird um den "purpose" "**data**" erweitert 1. [x] Eine neue Version des Metadatenschemas ist veröffentlicht (bspw. 1.5.0) 1. [ ] ... ## Mögliche Folgeaktivitäten (vom Entwickler zu ergänzen) - [ ] ... - [ ] ... - [ ] ... - [ ] [Definition of Done](https://wiki.fit-connect.fitko.dev/de/Allgemeines/Teamvereinbarung#definition-of-done-dod) was checked.
issue