Monorepo med apper som er felles for Team Etterlatte
Legg inn appen i .deploy/topic.yaml
for dev, .deploy/topic-prod.yaml
for prod. Etter at det er lagt inn
kan du oppdatere topicet ved å kjøre
https://docs.nais.io/persistence/kafka/how-to/create/?h=kafka+topic#apply-the-topic-resource
kubectl apply -f .deploy/topic.yaml
i konteksten dev-gcp
. For prod må du bruke topic-prod.yaml
i stedet, og kontekst
prod-gcp
.
etterlatte-kafkamanager
Kafka Manager for å enkelt se flyten til en søknad.
etterlatte-notifikasjoner
App som sender notifikasjoner (e-post, sms, melding på nav.no) til sluttbrukeren.
etterlatte-proxy
Proxy for å tillate kommunikasjon mellom GCP og On-Prem.
ey-pdfgen
Enkel app for opprettelse av PDF til journalføring. Benytter seg av pdfgen
ey-slackbot
Konfigurasjon av slackbot for teamet.
common er kode som er felles for Gjenny og søknadsdialogene. Dette er flytta over fra pensjon-etterlatte-felles-repoet.
Dette repoet inneholder tjenestespesifikasjoner for de tjenestene som NAV tilbyr internt, og som vi bruker i Team Etterlatte. Dette er flytta over fra pensjon-etterlatte-tjenestespesifikasjoner-repoet.
De er maskinlesbare i form av WSDL/XSD/JSON-filer, og disse brukes som utgangspunkt for å generere Javakode. Denne autogenererte koden blir kompilert og siden publisert, slik at konsumenter kan bruke dem til å kommunisere med tjenestene.
repositories {
maven { url 'https://jitpack.io' }
}
dependencies {
implementation 'com.github.navikt:pensjon-etterlatte-felles:navn-på-modul:Tag'
}
<repositories>
<repository>
<id>jitpack.io</id>
<url>https://jitpack.io</url>
</repository>
</repositories>
<dependency>
<groupId>com.github.navikt.pensjon-etterlatte-felles</groupId>
<artifactId>navn-på-modul</artifactId>
<version>Tag</version>
</dependency>
Koden bruker Jakarta-navnerommet, og forutsetter Java nyere enn 8.
mvn install
For å endre spesifikasjoner, lag en branch. Kjør bygget lokalt, da vil du
få siste endringer med 1-SNAPSHOT
som versjon. Test med en konsument at
endringene fungerer (sett versjon av tjenestespesifikasjoner til 0-SNAPSHOT
i konsumenten.)
Når testingen er ferdig, send en pull request til dette repoet.
Hver branch og pull request vil gå gjennom et CI-bygg.
Etter at en pull request er merget til main-branchen, vil
CI automatisk gjøre en release av hele repoet til Maven Central.
Alle modulene i dette repoet får samme versjonsnummer.
Versjonsnummeret til releasen blir 1.YYYY.MM.DD-HH-MM-commithash
.
Common-biblioteket i prosjektet blir released til Github Package Registry som krever autentisering. For å ta dem i bruk som dependencies i et annet prosjekt er det enkleste er å lage et PAT (Personal Access Token).
- Opprett PAT. I tilfelle lenken ikke fungerer går man til
Github -> Settings -> Developer settings -> Personal access tokens
- Huk av
read:packages
. Ikke legg til flere scopes enn nødvendig. - Tokenet legges i
.zshrc
medexport GITHUB_TOKEN=<token>
- Du må kanskje markere at tokenet skal være gyldig for NAV-organisasjonen for at det skal fungere, og i så fall må du autentisere det med SSO.
En app bygges og deployes automatisk når en endring legges til i main
.
For å trigge manuell deploy kan du gå til Actions -> (velg workflow) -> Run workflow from <branch>
Alle filer under samme source-root skal ha en pakkestruktur som er konsekvent relativt til hverandre
- Gjør som IntelliJ sier
- Bruk branch og squash den.
- Skriv commit-meldinger som gir mening for andre.
- Oppsett av app – burde fungere lokalt (se brev-api for eksempel)
- Kan vi få lokal frontend til å fungere mot dev-gcp?
- En feilsituasjon skal bare logges en gang
- Når det skal logges at en exception har inntruffet, så skal man bruke loggemetoden som tar inn en Throwable som et argument, slik at loggrammeverkt kan håndtere hvordan den logges.
- Når det legges inn kasting og logging av feil så skal det legges med informasjon om hvilken konsekvens feilen har der feilen kastes/logges
- Kommenter på kjente feil du vet om i alerts i slack.
- Ikke fang og ignorer feil med mindre verdikjeden tar høyde for det.
- Bruk av common er OK. Vurder å dele opp common etter domener og/eller integrasjoner.
- Bruk common-biblioteket for ting som er felles på tvers av apper.
Vi har en egen klasse for håndtering av tidspunkt. Den heter Tidspunkt
I koden holder vi oss til ASCII. Særnorske tegn erstattes derfor av kombinasjoner av andre tegn.
Tegn | Kode | Eksempel norsk | Eksempel kode-norsk |
---|---|---|---|
æ | ae | Særnorsk | Saernorsk |
ø | oe | Øve | Oeve |
å | aa | Låne | Laane |
I apper hvor vi tilbyr APIer skal disse ha følgende url-struktur:
/api/{ressurs}
/api/{ressurs}/{ressursId}
Eks /api/behandling/{behandlingId}
Som hovedregel bruker vi vanlig http-verb for operasjoner:
Hent -> GET
Opprett -> POST
Oppdater -> PUT
Slett -> DELETE
Oppdater spesifikke felter -> PATCH
Eks
POST /api/behandling -> Oppretter en behandling
GET /api/behandling/{behandlingId} -> Henter en behandling
Enkelte operasjoner trenger en mer spesifikk sti for å beskrive hva som gjøres. Eksempl på dette er:
POST /api/vedtak/{behandlingId}/attester
Retur-verdier skal følge vanlige konvensjoner:
Ok -> 200
Fant ikke ressurs -> 404 eller 204?
Noe feilet -> 500
Spørsmål knyttet til koden eller prosjektet kan stilles som issues her på GitHub.
Interne henvendelser kan sendes via Slack i kanalen #po-pensjon-team-etterlatte.