maykinmedia / sdg-invoervoorziening Goto Github PK
View Code? Open in Web Editor NEWPDC voor de SDG (Single Digital Gateway)
License: Other
PDC voor de SDG (Single Digital Gateway)
License: Other
De Nationale Portalen mogen alleen die productgegevens tonen van een gemeente waarvan de gemeente heeft aangegeven hierover te beschikken.
Acceptatiecriteria :
De API moet voorzien in de functie GET /sdgproducten/{upnidentificatie}/gemeentes:
Tasks
productAanwezig
to producten resource. Example: /api/v1/producten?productAanwezig=ja
values: ja,nee,onbekendDe invoervoorziening wordt gerealiseerd met open source software componenten.
De gebruikte ?technologie stack? bestaat uit gangbare componenten met een levendige community
Er wordt altijd gebruik gemaakt van door de community supported versies.
Tracking van wijzigingen, onderdeel van logging en auditing
Acceptatiecriteria :
Tasks
Tip: Do #18 first.
ProductVersions
, like: "{{ created_by }}, laatst bewerkt op {{ modified_on }} en gepubliceerd op {{ publicatie_datum }}"Tasks
Op de Nationale Portalen dient naast de samenvattende beschrijving ook gemeentelijke informatie getoond te worden. Deze informatie wordt uit de invoervoorziening API gehaald
Acceptatiecriteria :
De API moet voorzien in de functie GET /SDG Producten
De functie geeft alle productgegeven terug van alle gemeenten
De functie is te filteren op productnaam, taal, doelgroep en gemeente
Design
Please use DRF and DRF-Spectacular.
/api/v1/catalogi
?organisatie=x
/api/v1/catalogi/{uuid}
- catalog details
- organisatie link
- producten array of links to products
/api/v1/producten
/api/v1/producten/{uuid} # use active today as default
?organisatie=x,doelgroep=x,catalogus=x,publicatiedatum__gte=x
- upn url
- upn code
- beschikbaar
- etc..
- locaties array of links # the m2m table..
- vertalingen array of inline details # similar to detail page in the cms
- taal (ISO code)
- generiek fields flattened into this inline
- specifiek fields flattened into this inline
/api/v1/producten/{uuid}/historie
\# same serializer as above but a list of all (published!!) versions
/api/v1/organisaties
/api/v1/organisaties/{uuid}
- org details
- catalogi array of links
- locaties array of links
/api/v1/locaties/
/api/v1/locaties/{uuid}
?organisatie=x
NOTE: No need to filter on taal for now.
Autorisatie : alleen geautoriseerde gebruikers mogen gegevens bewerken. Er moet onderscheid gemaakt kunnen worden tussen gemeentelijke gebruikers en gebruikers die vallen onder de gedeelde redactie
Acceptatiecriteria : uit te werken
Tasks
Essentially: A global editor can edit the reference texts. A municipality editor can edit THEIR municipality texts (role->organisation).
Om zicht te houden op de inrichting is het voor gebruikers wenselijk duidelijk te houden van welke producten reeds omschrijvingen t.b.v. de SDG zijn ingevoerd
Acceptatiecriteria :
Tasks
... zodat ik ontzorgd word, zeker weet dat ik voldoe aan de SDG en de specifieke teksten van gemeenten waar mogelijk uniform zijn
Referentieteksten worden opgesteld door de gezamenlijke redactie. Deze teksten kunnen overgenomen en/of aangevuld worden met gemeentelijke informatie.
Acceptatiecriteria :
Tasks
Verduidelijk
De kern van de SDG
Acceptatiecriteria :
Tasks
Tip: Do #14 first.
Verduidelijking
We will not add "follow the reference texts at all times"! The tasks below are removed:
..._use_reference
) below the text, whether this is a specific text, or a reference text (not in screenshot).In the end, there are 2 functions below each text field:
✅ Gebruik altijd de laatste referentie teksten ♻️ Kopieer laatste referentie tekst in het tekstveld
Proceslogica en bedrijfsregels zijn los van elkaar en los van de interactie naar gebruikers instelbaar.
Herbruikbaarheid
De broncode van componenten is beschikbaar als open source software met een EUPL-licentie.
De broncode is goed gedocumenteerd
De broncode wordt beheerd in een git-repository van VNG Realisatie
Testbaarheid
De Producten API wordt getest met de API Testvoorziening van de VNG (ATV)
Tasks
Er is nog geen duidelijkheid of een productbeschrijving moet kunnen bestaan uit meerdere productuitvoeringen en hoe dit dan doorwerkt op het informatiemodel en de producten API
... en verschillende stylesheets kan worden gevisualiseerd (als test) voordat men definitief publiceert.
Verduidelijking nodig
Is dit echt nodig? Wij gaan niet over hoe e.e.a. eruit komt te zien op de NNP. We hebben al wel een WYSIWYG-editor waardoor de opmaak al wel in basis-vorm getoond wordt.
Tasks
API to give concepts is done in another ticket.
Componenten zijn out-of-the-box geschikt voor installatie binnen een gestandaardiseerde (cloud-)infrastructuur platform (bijvoorbeeld Haven9).
De componenten zijn geautomatiseerd te testen en deployen middels een CI/CD pipeline
Het doorlopen van de pipeline duurt max 1 uur
De voorziening dient als container op (bijvoorbeeld een kubernetes) infrastructuur te kunnen worden gedeployed
Tasks
In overleg met PO: het daadwerkelijk uitrollen naar een (Haven)omgeving is verplaatst naar een andere (niet must-have) user story.
De invoervoorziening gaat gebruikt worden door medewerkers van een centrale redactie en medewerkers van gemeentelijke redacties.
Alleen geautoriseerde gebruikers hebben toegang tot de invoervoorziening
Inloggen met 2 factor authenticatie
Een username, password (iets weten)
Een (TOTP) token, gegenereerd met een app op eigen telefoon of laptop (iets hebben)
Ondersteuning voor role based access control.
Medewerkers van een gemeente krijgen toegang tot de beheerschermen op basis van een rol én een organisatie
Mogelijke rollen zijn bijvoorbeeld: redactiemedewerker, centrale redactie, beheerder, ?
Tasks
Per gemeente kan het verschillen waar men voor bepaalde producten heen moet om de aanvraag te doen.
Het is nog onduidelijk hoe dit op de Nationale Portalen gaat werken
Acceptatiecriteria :
Tasks
De invoervoorziening voldoet aan de onderstaande prestatie eisen. De leverancier geeft aan wat de vereiste middelen zijn voor de gevraagde prestaties (server, netwerk, opslag)
Snelheid
Het laden van een pagina duurt maximaal 2 seconden
Het opslaan van een doorgevoerde wijziging duurt maximaal 3 seconden
Capaciteit
100 web-redacteuren moeten tegelijkertijd kunnen (concurrent) werken in de invoervoorziening
Het aantal van 100 is gebaseerd op de aanname dat maximaal 10% van de 352 gemeentelijke web-redacties tegelijkertijd in de invoervoorziening aan de slag is. Van de gemeentelijke web-redactie werken er 3 redacteuren aan de productbeschrijvingen.
Nominaal zijn er naar schatting 20 redacteuren aan het werk in de invoervoorziening wanneer er geen landelijke wijzigingen op stapel staan
Minimaal aantal te beheren productbeschrijvingen is 35.000
Naar beneden afgerond 100 producten x 352 gemeenten = 35.200 productbeschrijvingen
Ieder product kent per gemeente een Nederlandstalige- en een Engelstalige beschrijving.
Het aantal producten gaat in de loop van de tijd groeien. De invoervoorziening start met de SDG shortlist (35 producten), vervolgens de longlist (bijna 100) en gaat mogelijk doorgroeien naar alle gemeentelijke producten (volgens UPL ongeveer 400).
Tasks
..., opdat de specifieke teksten voldoen aan de SDG kwaliteitseisen
Zie paragraaf 5.5.4 Indeling van productbeschrijvingen
Verduidelijking nodig
Hoe zien we dit voor ons? De teksten achter de i-tjes? Is dit nog relevant?
Of raadpleegbaar met een API
Of redactie portalen werkt in invoervoorziening
Acceptatiecriteria :
Tasks
Meldngen taken naar nieuw ticket verplaatst.
Tasks
De agile werkwijze wordt vastgelegd en afgestemd tussen leverancier en opdrachtgever en kan alleen in onderling overleg schriftelijk worden gewijzigd.
De Producten API wordt geraadpleegd door de Nationale Portalen en op termijn door gemeenten en andere afnemers. De Producten API is publiek toegankelijk.
Snelheid
Anonieme afnemers hebben geen garantie op responsetijd
Bekende afnemers (met API key) kunnen onbeperkt opvragen met een gegarandeerde responsetijd:
Enkelvoudige opvragingen (één product van één gemeente) maximaal 0,1 seconden
Meervoudige opvragingen maximaal 0,5 seconden
Capaciteit
Anonieme afnemers kunnen onbeperkt opvragen, maar worden bij grote aantallen in de snelheid geknepen.
Aan bekende afnemers (voor nu 4 portalen) moet kunnen worden gegarandeerd dat 10 productbeschrijvingen per seconde kunnen worden opgehaald.
Deze eisen gelden als de voorlopige eisen, totdat deze op basis van daadwerkelijke gebruikgegevens kunnen worden vastgesteld.
Tasks
..., zodat ik controle heb wie productbeschrijvingen kunnen wijzigen voor mijn gemeente
Acceptatiecriteria : het accountbeheer moet voldoen aan de eisen van de BIO, bijvoorbeeld dat het mogelijk moet zijn accounts te verwijderen.
Tasks
request.user->role->organizations
(can be multiple). For each organization, show a list of users with their role (see mockup below)Mockup: List of users
Naam | Rol | Acties |
---|---|---|
John Doe | Beheerder | |
Martin Moo | Redacteur | Verwijderen |
Jane Bar | Redacteur | Verwijderen |
Naam | Rol | Acties |
---|---|---|
Frank Foo | Beheerder | |
John Doe | Redacteur | |
Mark Mah | Redacteur | Uitnodiging verstuurd. |
NOTE: Users cannot delete themselves. John Doe is logged in in this mockup. John Doe is "beheerder" of Amsterdam and can delete Jane Bar and Martin Moo. John doe is also a "redacteur" of Harderwijk. Since John Doe is not "beheerder" of Harderwijk, he cannot delete Frank Foo. John Doe can not see/use the "Nieuwe gebruiker toevoegen" action for Harderwijk.
Mockup: Add new user
U staat op het punt een nieuwe gebruiker toe te voegen voor de organisatie Amsterdam*.
- | - |
---|---|
___________________________ | |
First name | ___________________________ |
Last name | ___________________________ |
Role | (x) Redacteur ( ) Beheerder |
De gebruiker ontvangt na het opslaan een uitnodiging om een wachtwoord in te stellen. Hiermee wordt ook het e-mailadres gevalideerd.
De betrouwbaarheidseisen van de invoervoorziening en de API zijn uitgewerkt in de SLA en worden vastgesteld in overleg met de Leverancier
..., zodat ik mijn website periodiek kan synchroniseren
Het maken van een kopie van de gegevens staat op gespannen voet met het ?common ground? principe van ?data bij de bron?.
Acceptatiecriteria :
Tasks
__gte
to the publicatiedatum
filter.Opgenomen in mock-ups. Valt buiten scope voor de SDG
Acceptatiecriteria :
De voorziening voorziet hierin maar dit valt buiten de scope van de SDG
taal
to producten resource: Example: /api/v1/producten?taal=nl
. This filters the inline queryset vertalingen
to the given taal
.Tasks
sdg
(ie. I want to see from sdg.accounts.models import User
)..., opdat de gemeente redacties zelf de redacteuren kunnen toevoegen
Acceptatiecriteria : het accountbeheer moet voldoen aan de eisen van de BIO, bijvoorbeeld dat het mogelijk moet zijn accounts te verwijderen.
Tasks
User
and LokaleOverheid
with a through-model Role
User
model, add a is_redacteur
field. This field indicate people that can edit the reference texts.Role
model, add a is_beheerder
and is_redacteur
field. These fields define the role of the user for a specific LokaleOverheid
organization.LokaleOverheid
.Als VNG functioneel beheerder wil ik de productcatalogi van gemeenten in een herindeling kunnen samenvoegen, opdat deze gemeenten met minimale inspanning en kans op fouten een nieuwe gezamenlijke catalogus kunnen maken?
Verduidelijking nodig
Technisch kan dit. Je kan een product "omhangen" van de ene gemeente naar de andere. Dit zorgt dan wel voor dubbele producten? Wie beslist welke blijft? Ik zie meer problemen dan oplossingen :)
Tasks
Deze gegevens worden op de Nationale Portalen gebruikt om de gebruiker te informeren over de gemeenten.
$ Is deze info ook centraal op te halen (common ground)
Acceptatiecriteria :
Tasks
LokaleOverheid
model to include website, telefoonnummer, email, LAU-code
LokaleOverheid
) detailsTasks
De voorziening dient aan te sluiten en gebruik te kunnen maken van de landelijke integratiefaciliteit zoals benoemd in Common Ground
De voorziening dient gebruik te maken van (Linked) Open Data om reeds publiek beschikbare bronnen te kunnen raadplegen en de data te kunnen representeren in de voorziening
Hiermee dienen de koppelingen zoals beschreven in par 5.6 te worden gerealiseerd
Tasks
Thema, Informatiegebied
yes, we need them). See: https://standaarden.overheid.nl/owms/oquery/SDG-Informatiegebieden.csv -- Can you amend the models to register all columns?UniformeProductnaam
). See: https://standaarden.overheid.nl/owms/oquery/UPL-actueel.csv -- Can you amend the models to register all columns?Overheidsorganisatie
yep, separate model and we need an extraAttribute "endDate" + querymanager to filter on active gemeenten =< today). See: https://standaarden.overheid.nl/owms/terms/Gemeente.xmlWhere it says "Create management command" this should read as "make functions to import the data" and call these functions from a management command. Later on, we might need to do this periodically.
Gemeentelijke wens t.b.v. planning
in de mock-up wordt de mogelijkheid opgenomen om een datum op te geven. Dit is verder niet uitgewerkt
Acceptatiecriteria :
Tasks
We introduce concepts and published products.
The idea is that users can keep editing concepts AND future published products without creating new versions. So, you can never edit already published products (ie, their publicatie_datum is in the past).
ProductVersion
model, with the fields: product=FK(Product)
, publicatie_datum
(moved from Product
to this model), created_by
, created_on
, modified_on
ProductLocalization
model to point from ProductVersion
instead of Product
(each localization belongs to a specific version)publicatie_datum = now()
) or choose a specific date (publicatie_datum = choosen date
). Note that the screenshot shows a non-edit page, but we're moving this to the edit page.Product.get_latest_product_versions
(the product with the highest publicatie_datum or publicatie_datum=None)ProductVersion
ProductLocalization
Referentieteksten worden:
Acceptatiecriteria :
De powerpoint CimPDC en SDG.pptx bevat een uitwerking hoe in het informatiemodel vanuit een specifieke tekst wordt verwezen naar een referentietekst.
Alternatieve oplossingen voor werken met referentietekst
Voor nu is in de acceptatiecriteria gekozen voor het maken van een kopie van de referentietekst. Andere oplossingen die overwogen zijn:
Tasks
FIELD_use_reference
ie. bewijs_use_reference
- default True
).get_FIELD
helpers to retrieve the specific text if present, otherwise the reference text...., zodat ik geen dubbel werk heb en alle deelnemers dezelfde teksten hebben
Klopt het dat gemeentelijke producten van een samenwerking altijd hetzelfde zijn, of is er ruimte voor couleur locale binnen de samenwerking?
Een samenwerkingscatalogus waaruit de deelnemende gemeenten kunnen kiezen?
De invoervoorziening voldoet aan de eisen van digitoegankelijk.nl
Tasks
Inschrijver borgt dat alle activiteiten, ook die van Eindgebruikers en Beheerders worden vastgelegd in audit-/ logbestanden. Dit zodanig beveiligd dat deze bestanden niet zomaar kunnen worden ingezien, gewijzigd of verwijderd door hiertoe niet bevoegd personeel
Inschrijver borgt dat een logregel minimaal het volgende bevat:
Tasks
...zodat ik de productomschrijving kan toespitsen op de gemeentelijke situatie, wanneer deze afwijkt van de referentieteksten
Dit geeft de gemeente de keuze om gebruik te maken van de standaardvertalingen of daar een eigen invulling aan te geven. De websites van de gemeentes en de Nationale Portalen blijven hiermee in sync
Acceptatiecriteria :
Tasks
Convenience voor de eindgebruiker
Acceptatiecriteria : na inloggen is het gebruikersprofiel zichtbaar
Om zicht te houden op de inrichting is het voor gebruikers wenselijk duidelijk te houden van welke producten reeds omschrijvingen tbv de SDG zijn ingevoerd
Acceptatiecriteria :
Tasks
Een gemeente kan meerdere locaties hebben waar diensten worden geleverd
Acceptatiecriteria :
Tasks
openingstijden
for each day, and straat, nummer, postcode, plaats, land, website, telefoonnummer, email
De invoervoorziening valideert de productbeschrijvingen en metadata van de productbeschrijvingen
Bij fouten worden aanwijzingen gegeven hoe de fout hersteld kan worden
Tasks
This is about showing form validation errors in the CMS. Make sure an error is shown in the CMS when...
Acceptatiecriteria:
wanneer de generieke tekst is gewijzigd krijgt de gemeente een waarschuwing m.b.t. dit product dat de aanvullende teksten opnieuw beoordeeld moeten worden.
De actualiteitseis van de waarschuwing is laag. Een oplossing kan zijn dat dagelijks wordt opgevraagd welke teksten gewijzigd zijn
Tasks
@markbacker Helaas, het !-icoon gaat over wijzigingen in de standaardtekst, en niet over de generieke tekst. Nog een icoon toevoegen? Ook moet het IM aangepast worden want we hebben een publicatie datujm nodig.
This ticket is about reference products (Standaard*-models) that are managed by a user with the permission is_global_redacteur
.
Tasks
datum_wijziging
dateNOTE: Deactivate languages (as shown in the screenshot) are not part of this ticket.
These changes can be saved directly, no need to take any publishing (future) date into account or anything. The behaviour is simple and plain.
Indien de producten API ook het schrijven van waarden gaat toestaan worden deze operaties conform de landelijke API strategie en de nog in ontwikkeling zijnde Digikoppeling profielen beveiligd met oAuth dan wel mTLS voor de beveiliging
De Producten API ontsluit de productbeschrijvingen naar de nationale portalen en mogelijk ook naar gemeenten en andere geïnteresseerden. De productbeschrijvingen zijn publieke data.
De Producten API is publiek toegankelijk om te lezen
Afnemers moeten de zekerheid hebben dat zij de door gemeenten beheerde teksten ophalen
De Producten API authentiseert zichzelf met een (PKI) certificaat, opdat de Nationale portalen de zekerheid hebben productteksten van gemeenten te publiceren.
Tasks
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.