924.3 - Joblog koordinatudsøgning - omlægning af kald til DAWA og Google
Beskrivelse af epic af it-understøttelse af Styrelsen for Arbejdsmarked og Rekrutterings forretning
Indholdsfortegnelse
Afgrænsning af epic
Afgræsning | ||
---|---|---|
Som mådeholden budgetansvarlig i STAR vil jeg gerne ændre koordinat udsøgning, der benyttes ved beregning af rejsetid i jobloggen, således at det sker ved opslag i Rejseplanen frem for opslag i Google for at jeg ikke skal betale unødigt, når Google licensbetingelser set fra STARs synspunkt forringes betydeligt. | ||
Acceptkriterier | ||
Nr. | Beskrivelse | Relevant for |
924.3.1 | Analyse af koordinat udsøgnings brug af googlemaps og alternativer Rejseplanen /DAWA | DFDG |
924.3.2 | Implementér yderligere kald til DAWA | DFDG |
Kriterier for tilsagn til serviceaftager i forhold til STARs snitflader | Berørte acceptkriterier | Bemærkninger | |||
---|---|---|---|---|---|
924.3.2 | 924.3.3 | ||||
A-kasser og JC skal være bekendte med, at STARs udsøgning af Geo koordinater brugt i jobloggen, fremover kan være fortaget ved opslag i DAWA fremfor googlemaps api. | x | I forbindelse med postnummer udsøgning Ligeledes skal serviceaftagere være bekendt med der fremadrettet returneres koordinatsæt for Grønland postnummer 3900, hvis postnummer ikke kan findes hos DAWA. | |||
Oversigt over berørte webservices
Snitflade | Serviceaftager der er berørt | Bemærkninger | |||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
DFDG | Jobnet (t.o) | Plannersystemer | KSS (t.o) | A-kasse (t.o) | Ydelsessystem | Jobkon (t.o) | Jobag (t.o) | SF | BI | ||
JoblogService | x | x | x | x | x | Geo koordinater udstilles i servicen. Ingen snitfladeændringer | |||||
CitizenJoblogService | x | x | x | x | x | Geo koordinater udstilles i servicen. Ingen snitfladeændringer | |||||
GeoService (Version 1)
| x | x | x | x | Geo koordinater udstilles i servicen. Ingen snitfladeændringer |
Beskrivelse af epic
STAR benytter sig af Google Maps Platform til blandt andet, beregning af koordinat udsøgning når opslag via Danmarks Adressers Web API (DAWA) ikke giver noget resultat.
Disse koordinater bliver blandt andet benyttet til rejsetidsberegning omtalt i epic 924.2 - Joblog rejsetid - skift fra Google til rejseplanen
Eksisterende prisudregnings model hos google inkluderer at de første 100.000 kald per dag er gratis.
Google har varslet ændringer ved denne prisudregnings model: Google har valgt at de i stedet for de 100.000 gratis kald per dag at gå over til at abonnementerne får 200$ gratis credits om måneden som svarer til ~ 40.000 gratis kald.
Til eksempel benyttede STAR i oktober måned 2018 sig af koordinat udsøgning 933.328 gange.
Se evt. /wiki/spaces/ISB/pages/999620621, hvor statistikkerne ligger, hvor man kan se, hvor mange kald per dag der er til google maps services.
Nedenfor kan den eksisterende prisudregning ses:
https://developers.google.com/maps/premium/usage-limits
Web service | Limits |
---|---|
Directions | Shared* daily free quota of 100,000 requests per 24 hours; additional requests applied against the annual purchase of Maps APIs Credits. Maximum of 23 waypoints per request. 50** requests per second. |
Elevation | Shared* daily free quota of 100,000 requests per 24 hours; additional requests applied against the annual purchase of Maps APIs Credits. Maximum of 512 points per request. 50** requests per second. |
Geocoding | Shared* daily free quota of 100,000 requests per 24 hours; additional requests applied against the annual purchase of Maps APIs Credits. 50** requests per second. |
Distance Matrix | Shared* daily free quota of 100,000 elements per 24 hours; additional requests applied against the annual purchase of Maps APIs Credits. Up to 625 elements per request (with a maximum of 25 origins and 25 destinations per request). Rate limit of 1,000 elements per second. Note: requests using the optional parameter |
Geolocation | Shared* daily free quota of 100,000 requests per 24 hours; additional requests applied against the annual purchase of Maps APIs Credits. 50** requests per second. |
Time Zone | Shared* daily free quota of 100,000 requests per 24 hours; additional requests applied against the annual purchase of Maps APIs Credits. 50** requests per second. |
Roads | Shared* daily free quota of 100,000 requests per 24 hours; additional requests applied against the annual purchase of Maps APIs Credits. 50** requests per second. Each request may contain up to 100 points. |
* The 100,000 daily free requests are shared across all Maps JavaScript API client-side services and Google Maps APIs web services—all requests are subtracted from the same pool of 100,000 free daily requests. Any additional requests are applied against the total number of Maps APIs Credits you purchased for your Premium Plan. Your free daily request pool is reset at 12:00 am Pacific Time. Note that the 100,000 daily free requests do not apply to Location Services licenses. ** Default rate limit, to prevent abuse. Learn how to optimize web service usage or request a rate limit (QPS) increase. |
STAR har med deres nuværende abonnement 33.000.000 Credits om året.
This type of API request... | Consumes this many Maps APIs Credits... |
---|---|
Maps JavaScript API map load | 1 |
Maps Static API, Street View API map load | 0.25 |
Street View API metadata request | 0 |
Mobile SDKs (Android, iOS) map load | 1 |
Places API server-side and client-side request; excluding Place Autocomplete | 2 |
Place Autocomplete (server-side and client-side) request | 0.1 |
Web service APIs (server-side) request: Geocoding API, Directions API, Distance Matrix API (per element), Elevation API, Geolocation API, Time Zone API, Roads API | 0.25 (after included daily usage limit) |
Client-side request: Geocoding API, Directions API, Distance Matrix API (per element), Elevation AP | 0.25 (after included daily usage limit) |
Nedenfor kan den nye prisudregning ses:
https://cloud.google.com/maps-platform/pricing/sheet/
SKU | $200 MONTHLY CREDIT EQUIVALENT FREE USAGE | MONTHLY VOLUME RANGE (PRICE PER THOUSAND) | ||
---|---|---|---|---|
0—100,000 | 100,001-500,000 | 500,001+ | ||
Geocoding | Up to 40,000 calls | $5.00 | $4.00 | CONTACT SALES for volume discounts. |
Geolocation | Up to 40,000 calls | $5.00 | $4.00 | |
Time Zone | Up to 40,000 calls | $5.00 | $4.00 | |
Elevation | Up to 40,000 calls | $5.00 | $4.00 |
Eksisterende implementering
Det estimerede antal kald per. måned til koordinat udsøgning er 800.000 - 1.600.000 fordelt jævnt ud over måneden via enkelt forespørgsler.
Koordinat udsøgningen bliver brugt til blandt andet rejsetidsberegning, Ankiro jobopslag mm.
DFDG udstiller via GeoService to metoder til koordinat udsøgning vha. adresse:
Servicemetoderne er udelukkende tiltænkt STARs egne applikationer, grundet licensomkostninger.
- På baggrund af en struktureret adresse eller ustruktureret adresse forsøges først opslag i DAWA, hvis intet resultat, forsættes der vha. googlemaps api og koordinater returneres med en kodeliste værdi for, hvor præcise disse koordinater er, GeoCoordinateQualityTypeIdentifier
- Eksakt match returneres, hvis resultat fra DAWA returneres.
- Hvis adresse struktur ikke kan bestemmes, benyttes postnummer udsøgning via googlemaps api.
- Hvis postnummer er imellem 3900 og 3999, hvor begge tal er inkluderet udregnes koordinat udsøgning for Grønland og post nummer 3900 benyttes (Nuuk) via googlemaps api.
- Om natten er der et batchjob som forsøger at populere joblogs med koordinater og rejsetidsberegning, hvor der forsøges op til 5 gange.
Rejseplanen
Rejseplanen A/S har et åbent ReST-API med webservices, hvor adgang til disse data er under Creative Commons BY-ND 3.0 licens.
Dokumentation af dette API kan findes her:
/wiki/spaces/ISB/pages/1001521168
Der er tilbage i marts 2017 været kontakt til Rejseplanen med henblik på at få afdækket om deres åbne ReST-API var en mulighed, der var dog ikke behov for videre kontakt, da STARs eksisterende abonnement med googlemaps kunne håndtere den ekstra mængde kald.
Der har igen i november 2018 været kontakt med Rejseplanen i forbindelse med epic 924.2 - Joblog rejsetid - skift fra Google til rejseplanen,
Personer der er kontakt til hos Rejseplanen
Jens Willars- Business Manager
Jørgen Sinding - Projektleder
924.2.1 Analyse af koordinat udsøgnings brug af googlemaps og alternativer Rejseplanen / DAWA
Rejseplanen analyse
Vi er blevet gjort opmærksom på fra Rejseplanen at det er DAWA der ligger til grund for deres Lokation service, hvorved en udskiftning fra googlemaps api til Rejseplanen ikke vil være en løsning i forbindelse med adresse udsøgning, da vi i eksisterende implementering allerede fortager koordinat udsøgning hos DAWA og at kald til googlemaps api bliver benyttet som en backup løsning, hvis vi ikke får noget resultat fra DAWA.
Undersøgen går på om Rejseplanen udstiller en webservice som dækker det behov googlemaps i øjeblikket dækker i forbindelse med beregning af rejsetid i forbindelse med registrering af Joblog.
Ud fra Rejseplanens dokumentation udvælges webservice der kan benyttes til beregningen.
Dokumentation på Rejseplanens API
/wiki/spaces/ISB/pages/1001521168
Det er i forbindelse med analysen vurderet at det er rejseplanens Location service der indeholder den fornødende information til at fortage udsøgningen af koordinater.
I det i forbindelse med kode analyse blev det identificeret at rejseplanen benytter sig af 8 tal til indikation af koordinat i modsætning til googlemaps som har op til 9 og DAWA som har op til 10.
Eksempel på servicekald:
Nedenstående vises et eksempel på location service response:
Trip response
"Location": {
"LocationList": {
"noNamespaceSchemaLocation":"http://xmlopen.rejseplanen.dk/xml/rest/hafasRestLocation.xsd",
"CoordLocation": {
"name":"Nørgaardsvej 32, 2800 Kongens Lyngby, Lyngby-Taarbæk K",
"x":"12512670",
"y":"55770192",
"type":"ADR"
}
}
}
DAWA analyse
I analysen viste det sig at DAWA også har en implementering af koordinat udsøgning på postnummer, hvor vi idag benytter os af googlemaps api til udsøgning.
Eksempel på DAWA postnummer servicekald:
https://dawa.aws.dk/postnumre/2800
Nedenstående vises et eksempel på postnumre service response:
Postnumre response
{ "href": "https://dawa.aws.dk/postnumre/2800", "nr": "2800", "navn": "Kongens Lyngby", "stormodtageradresser": null, "bbox": [ 12.41145743, 55.74830002, 12.58343013, 55.81431067 ], "visueltcenter": [ 12.52083673, 55.78572204 ], "kommuner": [ { "href": "https://dawa.aws.dk/kommuner/0157", "kode": "0157", "navn": "Gentofte" }, { "href": "https://dawa.aws.dk/kommuner/0159", "kode": "0159", "navn": "Gladsaxe" }, { "href": "https://dawa.aws.dk/kommuner/0173", "kode": "0173", "navn": "Lyngby-Taarbæk" }, { "href": "https://dawa.aws.dk/kommuner/0230", "kode": "0230", "navn": "Rudersdal" } ] }
924.3.2 Implementér yderligere kald til DAWA
I forbindelse med udvikling er det identificeret at der ved kald af DAWA på baggrund af postnumre som ikke er danske ikke vil returneres et koordinatsæt.
Bemærkning går på at der ved disabling a GoogleMaps api ikke vil være mulighed for at udsøge koordinatsæt på udenlandske adresser.
Beskrivelse
Den løsningsmodel der er tiltænkt at blive implementeret i release 2019-2 er følgende:
Ved Koordinatudsøgning undersøges det om:
- Adresse og postnummer er OK
- Hvis OK, søges der efter koordinater på baggrund af adresse imod DAWA og koordinater returneres, hvis de kan udsøges.
- Hvis intet resultat fundet hos DAWA, og adresse er udfyldt undersøges det om GoogleMaps er slået til
- Hvis GoogleMaps er slået til fortages der koordinatudsøgning hos GoogleMaps på baggrund af adresse og koordinater returneres, hvis de kan udsøges.
- Hvis GoogleMaps er slået fra eller intet resultat hos GoogleMaps
- Eller adresse ikke er udfyldt
- Fortages der koordinatudsøgning hos DAWA på baggrund af postnummer og koordinater returneres, hvis de kan udsøges.
- Hvis intet resultat hos DAWA og postnummer er fra 3900 - 3999 returneres koordinatsæt for Grønland postnummer 3900.
- Hvis intet resultat hos DAWA og postnummer ikke er fra 3900 - 3999
- Returneres tom koordinat udsøgning (som i dag)
Implementering DAWA
DAWA postnumre request
Eks. url: https://dawa.aws.dk/postnumre/2800
Parameter | Beskrivelse | Bemærkning |
---|---|---|
Postnummer | postnummer i DK |
DAWA postnumre Response
Nedenstående vises et eksempel på postnumre service response:
Postnumre response
{
"href": "https://dawa.aws.dk/postnumre/2800",
"nr": "2800",
"navn": "Kongens Lyngby",
"stormodtageradresser": null,
"bbox": [
12.41145743,
55.74830002,
12.58343013,
55.81431067
],
"visueltcenter": [
12.52083673,
55.78572204
],
"kommuner": [
{
"href": "https://dawa.aws.dk/kommuner/0157",
"kode": "0157",
"navn": "Gentofte"
},
{
"href": "https://dawa.aws.dk/kommuner/0159",
"kode": "0159",
"navn": "Gladsaxe"
},
{
"href": "https://dawa.aws.dk/kommuner/0173",
"kode": "0173",
"navn": "Lyngby-Taarbæk"
},
{
"href": "https://dawa.aws.dk/kommuner/0230",
"kode": "0230",
"navn": "Rudersdal"
}
]
}
Response
Element | Type | Detaljer | Forekomst | Beskrivelse |
---|---|---|---|---|
Postnummer | 0 - 1 | Type indeholdende postnummer entryen | ||
- href | string | url | 1 | Kald url |
- nr | int | 1 | Postnummer | |
- navn | string | 1 | Navn på by | |
- stormodtageradresser | 1 | |||
- bbox | collection | 1 | ||
- - koordinatsæt | type | 0 - * | ||
- - - x | 1 | koordinat med 10 cifre med punktum efter de 2 første. | ||
- - - y | 1 | koordinat med 10 cifre med punktum efter de 2 første. | ||
- visueltcenter | collection | 1 | ||
- - koordinatsæt | type | 1 | ||
- - - x | 1 | koordinat med 10 cifre med punktum efter de 2 første. | ||
- - - y | 1 | koordinat med 10 cifre med punktum efter de 2 første. | ||
-kommuner | collection | 1 | liste af kommuner | |
- - kommune | type | 0 - * | kommune | |
- - - href | string | url | 1 | url til DAWA kommune |
- - - kode | string | 1 | DAWAs id til kommunen | |
- - - navn | string | 1 | Navn på kommunen |
Overvej for hvert acceptkriterie hvilke systemer der berøres af ændringen:
- DFDG
- Services
- WSRMer
- Kodelister
- PersonStatusService (PSS)
- PersonHistoryService (PHS)
- LSS (Landssupportsystem) og herunder Registerudtræk (hvis STAR har dataejerskab og der er lavet PHS på domænet)
- Jobnet
- VITAS
- JobKon
- JobAG
- BI integrationsplatform
- Alle områder
- Nye batchjobs
- Dokumentation af jobbet til SF (jf. skabelon: xxx link til skabelon)
- Dataløft
- Hvis der i Databaser tilføjes eller fjernes kolonner med personfølsomme data (f.eks. person navne, adresser, email, telefonumre etc.), så skal SF informeres så disse data fremadrettet tilføjes eller fjernes fra scrambling.
- Nye batchjobs
- Kommunalt sagsbehandlingssystem
- A-kasse sagsbehandlingssystem
- Kommunalt bookingsystem
- JobcenterPlanner (JCP)
- WorkForcePlanner (WFP)
- Kommunalt ydelsessystem
Særlige krav til test
Test scenarie | Berørte systemområder (herunder nye batchjobs*) | Identificeret af |
---|---|---|
* Batchjobs
- bør testes både med delta og fuldt load,
- bør hvis der er afhængigheder køres med normalt load fra BI i ét testmiljø i hele testperioden
- bør testes i samarbejde med teams som har afhængigheder
- kørselstid, særligt hvis det er en del af NightlyBatch
Konsekvenser for drift/idriftsættelse
NB. Serviceaftagere skal være opmærksom på at der på GeoService (Version 1)
- GeocodeStructuredAddress
- GeocodeSimpleAddress
Kun returneres for danske adresser, hvis googlemaps api bliver slået fra.
I forbindelse med idriftsættelse:
- Skal der køres et fuldt dataload ved første kørsel af et batchjob - aftal med SF hvornår load skal køres
- skal der køres konvertering
- Skal der køres databasescripts for opdatering af tabeller i databasen
Efter idriftsættelse:
Arkitektur- og implementeringsnoter
Her beskriver PO/FA om arkitekturen og teknikken bag løsningen, om der f.eks. anvendes:
- Nye dataområder
- Nye snitflader
- Omlægning af eksisterende googlemaps api/DAWA implementering i forhold til koordinatudsøgning på baggrund af adresser/postnummer.
- Nye komponenter
- Nye miljøer
- Nye teknologier
- Nye aftagertyper
- Eller afvigelser fra principperne
Der gives en beskrivelse af hvorledes disse tænkes håndteret/implementeret i løsningen og om dette har været vendt med STAR arkitekten.