Skip to content
Stig Thorseth edited this page May 31, 2024 · 23 revisions

NiN3 kodeapi

URL-er

Url .NET miljø Branch
https://nin-kode-api.test.artsdatabanken.no Staging staging
https://nin-kode-api.artsdatabanken.no Production master

NiN hjemmeside

Test : https://naturinorge.test.artsdatabanken.no/
Prod : https://naturinorge.artsdatabanken.no/

Bygg / deploy

nin-kode-api benytter azure devops for bygg og deploy ved push/PR til staging og master branch
Status på bygg : https://dev.azure.com/artsdatabanken/nin-kode-api/_build

Feilsøking/logger i azure:

Log stream for Staging: adb-test-ninkapi-as
(bilde)
Log stream from Produksjon: ...

"csvbuilder"

Repo : https://github.com/Artsdatabanken/nin3kodeapi_csvbuilder
Jupyter : https://notebooks.test.artsdatabanken.no/lab/tree/nin3kodeapi_csvbuilder

Taskboard

https://github.com/orgs/Artsdatabanken/projects/9/views/1
Er benyttet som taskboard for begge repo (nin3kodeapi_csvbuilder & nin-kode-api)

Modeller og skisser

Orginalfiler for modeller og skisser ligger under T:\alle\nin3kodeapi\diagrammer_skisser

Teknologi

Løsningen består av 2 prosjekter, nin-kode-api og "csvbuilder".
"Csvbuilder" tar master regneark som input, tilpasser data fra regneark og deler dem opp i csv-filer. I tillegg bygges rapportfilen som er en excel-versjon av databasen (mer om dette under kap. "Dataløype")
CSV filene importeres og brukes til å bygge databasen i .NET prosjektet, nin-kode-api. (Mer om dette under kap. "Dataløype")

nin-kode-api

  • NiN3.Console - import av csv-filer og omforming til sqlite-database
  • NinKode.WebApi - .net core 8 web api med ef core 8 som ORM

csvbuilder

Jupyter

  • Webbasert, (alternativt/test) "computing interface" for å jobbe med dataanalyse og datamanipulering i python/pandas.

Datamodell

Datamodellen er delt inn i 2 diagrammer en for type-klasser og en for variabel-klasser:

ER-diagram, Type

NiN3 0 ERDiagram_type drawio 🔍 Større bilde

ER-diagram, Variabel

NIN3 0 ERDiagram_Variabel drawio (1) 🔍 Større bilde

Konverteringer:

  • Typeklasser: Hovedtypegruppe, hovedtype og grunntype har en løst knyttet relasjon til konverteringer via Kode og Klasse(Enum)
  • Variabelklasser: Variabelnavn og trinn har en løst knyttet relasjon til konverteringer via Kode og Klasse(enum)

API

  • Oversikt på hvilke nivå som hentes på de ulike endepunktene: T:\alle\nin3kodeapi\NiN3API endpoint loadstatus of sublevels.xlsx

Master regneark

Forklaring til master regneark

Type fanen

Kolonnenavn nummer Logisk navn Kommentar
0 Dom, 1 Ver Domene og Versjon NiN-3.0
2 V/T Type eller variabel T eller V
3 AbC Økosystemnivå (EcosystNivaa) A, B eller C
4 kat1 Typekategori Neste nivå i treet (LI, LV, MV, PE eller SE)
5 kat2 Typekategori2 Systembetegnelse (BM, EL, FL, IB, NA, NK, TM)
6 kat3 Typekategori3 Bare relevant for NA; fordeles på MB og VM
7 HTG Hovedtypegruppe 0 for ledd 3 [4 ] = SE (naturkompleks)
8 Pk Prosedyrekategori 0 hvis ikke relevant
9 HT Hovedtype to sifre, fortløpende nummerering
10 GT/kE - grunntype (G) eller kartleggingsenhet
11 GT Grunntype (delkode) to eller tre sifre, fortløpende nummerering

(Kilde: Rune Halvorsen, NHM)

Variabel fanen

Kodeledd nummer Kodeledd forklaring Kolonnenavn nummer Logisk navn Kommentar/eksempel
0 System 0 Dom - NiN
1 Versjon 1 Ver - 3.0
2 Typesystem/Variabelsystem 2 V/T - T eller V
3 Naturegenskap, nivå 1 3 AbC - A eller B
4 Naturegenskap, nivå 2 4 NM - M eller N
5 Naturegenskap, nivå 3 5 kat - Inndeling i 13 aggregerte egenskapskategorier
6 Naturegenskap, nivå 4 6 FG/EK - Statistisk variabeltype F/G, K/E
7 Variabelgruppe 7 Varkode1 - Tobokstavkode for noen variabelgrupper, ellers W
8 Variabelbetegnelse 8 Varkode 2 - Tobokstavkode
9 Artskode (9 Art) - Bare i RA, ellers W
10 Måleskala 10 Målesk - Kode, oftest 2 bokstaver/sifre
11 Trinn/klassebetegnelse 11 Tr/Kl - Skilt fra foregående ledd av «_»

(Kilde: Rune Halvorsen, NHM)

"Kortkodeformler"

Regler for oppretting av kortkoder

Type klasser

Typesystem/ egenskapskategori Generaliseringsnivå Eksempel Formel, NiN3SD1 Formel, nytt masterark
[4] = LV Landformvariasjon Hovedtypegruppe FL-A [5]-[7] [5 kat2]-[7 HTG]
[4] = LV Landformvariasjon Hovedtype FL-A01 [5]-[7][9] [5 kat2]-[7 HTG][9 HT]
[4] = MV Marine vannmasser Hovedtypegruppe MV-A [4]-[7] [4 kat1]-[7 HTG]
[4] = MV Marine vannmasser Hovedtype MV-A01 [4]-[7][9] [4 kat1]-[7 HTG][9 HT]
[5] = LA Landskap Hovedtypegruppe LA-I [5]-[7] [5 kat2]-[7 HTG]
[5] = LA Landskap Hovedtype LA-I01 [5]-[7][9] [5 kat2]-[7 HTG][9 HT]
[5] = LA Landskap Grunntype I01-001 [7][9]-[11] [7 HTG][9 HT]-[11 Tr/Kl]
[5] = NA Natursystem Hovedtypegruppe NA-M [5]-[7] [5 kat2]-[7 HTG]
[5] = NA Natursystem Hovedtype NA-MA01 [5]-[7][8][9] "[5 kat2]-[7 HTG][8 Pk][9 HT]"
[5] = NA Natursystem Grunntype MA01-01 [7][8][9]-[11] "[7 HTG][8 Pk][9 HT]-[11 Tr/Kl]"
[5] = NA Natursystem Kartleggingsenhet MA01-M005-01 [7][8][9]-[10]-[11] "[7 HTG][8 Pk][9 HT]-[10 GT/kE]-[11 Tr/Kl]"
[5] = NK Naturkompleks Hovedtypegruppe NK-C [5]-[7] [5 kat2]-[7 HTG]
[5] = NK Naturkompleks Hovedtype NK-C01 [5]-[7][9] [5 kat2]-[7 HTG][9 HT]
[4] = LI Livsmedium Hovedtypegruppe LI-MS [4]-[7] [4 kat1]-[7 HTG]
[4] = LI Livsmedium Hovedtype LI-MS01 [4]-[7][9] [4 kat1]-[7 HTG][9 HT]
[4] = LI Livsmedium Grunntype MS01-01 [7][9]-]11] [7 HTG][9 HT]-[11 Tr/Kl]

(Kilde: Rune Halvorsen, NHM)

Variabel-klasser

Typesystem/ egenskapskategori Generaliseringsnivå Eksempel Formel, NiN3SD1 Formel, nytt masterark
[5] = LO, NO*, RM, LM. KM, TF, RS, MD, MO, SA, AD, VS - LO-BH [5]-[8] [5 kat]-[8 Varkode 2]
[5] = NO**, RA - NO-GA-S [5]-[8]-[9] [5 kat]-[8 Varkode 2]-[9 Art]

(*) - Variabler som ikke angir en artsspesifikk egenskap
(**) - Variabler angir en artsspesifikk egenskap; S i kodeledd 10 angir artsnavn

Dataløype

Skisse

NiN30_dataflyt drawio
🔍 Større bilde

Forklaring

a) :

  • Nytt master regneark hentet fra fellesområde på teams.( Bilde )
  • Dokumentet CSV_produksjon/inn_data/endringslogg.csv oppdateres med relevante endringer.

b) :

  • Notebook nin3csv.ipynb kjøres for å produsere nytt sett med csv-filer.
  • Forrige sett med csv-filer blir zippet ned og flyttes til mappen CSV_produksjon/archive

c - d) :

  • csv-filene kopieres manuelt over til .net prosjektet (Bilde)

e) :

  • I Visual studio, kjør testene i prosjektet NiN3.Tests og undersøk evt. tester som feiler.
    • Det vil i tillegg bli produsert en logg-fil i katalogen _C:\temp_ som viser evt. feil og mangler.
  • Etter at tester ser ok ut, start konsollapplikasjonen, NiN3.Console.
  • Kjøre kommandoen "wipe" for å opprette DB på ny med nye data. (Det er foreløpig ikke implementert støtte for å legge en høyere versjon på den forrige)
  • Kjør deretter kommandoen "makeDB" for å bygge ny databasefil.

f) :

  • Det vil bli opprettet en midlertidig database-fil på stien C:\temp\nin3kodeapi.db
  • I samme katalog (_C:\temp_) blir det opprettet en logg fra oppretting av databasen (timestamp som suffix i filnavn)
    hvor evt. feil og mangler blir logget.(Bilde)

g) :

  • Med NiN3.Console kjør kommandoen "copy"
  • (Ny databasefil kopieres over til web-prosjektet ( Bilde) )

h, i) : Opprettelse av Excel-rapport, csvbuilder:

  • Sørg for at siste utgave av database filen ligger under 3_0_excel\db
  • Åpne notebook 3_0_excel\OpprettExcel.ipynb og klikk i øverste kodeblokk og kjør denne med Ctrl+Enter ( Bilde) )
  • Ny rapport fil blir generert, filsti: 3_0_excel\ut\api\nin3_0.xlsx

j, k) :

  • Kopier rapportfilen fra forrige til .Net webprosjektet NinKode.WebApi\report_data\3_0\nin3_0.xlsx( Bilde)
  • Deploy med commit og push (branch staging går til staging, master går til prod)