Skip to content

Latest commit

 

History

History
150 lines (118 loc) · 5.19 KB

File metadata and controls

150 lines (118 loc) · 5.19 KB

Dokumentasjons-oppdatering - 22. oktober 2025

Oppsummering

Alle hoveddokumenter har blitt oppdatert til å reflektere nåværende implementasjon og teknologi-stack. Utdaterte strategier og forlatte tilnærminger er fjernet.

Oppdaterte Filer

1. README.md ✅

Endringer:

  • Oppdatert til norsk språk
  • Teknisk stack: Spring Boot 3.4.0, Java 21, Flyway 10.20.1, PostgreSQL 17
  • Fokus på to hovedstrategier: Filtrert import (anbefalt) og to-fase import
  • Fjernet Legacy bulk import (flyttet til bunnen)
  • Lagt til database setup instruksjoner
  • Lagt til liste over alle 14 tabeller
  • Lagt til Maven commands og database-verktøy

Nøkkelendringer:

  • Environment variables: export $(grep -v '^#' .env | xargs) før alle kommandoer
  • Server-side filtrering fremhevet (99% reduksjon i dataoverføring)
  • To-stegs API pattern forklart (MatrikkelenhetService → StoreService)
  • Package consolidation kritisk merknad

2. JAVA_PROJECT_SETUP_GUIDE.md ✅

Før: 1,508 linjer med mye utdatert informasjon
Etter: 532 linjer med fokus på nåværende implementasjon

Endringer:

  • Fjernet utdaterte migreringsstrategier (V1-V9)
  • Fokus på baseline migration (V1__baseline_schema.sql)
  • Oppdatert teknisk stack til Spring Boot 3.4.0, Java 21
  • Strømlinjeformet prosjektstruktur
  • Fjernet gamle code-eksempler, beholdt kun kritiske mønstre
  • Lagt til feilsøkings-seksjon med vanlige problemer

Nye seksjoner:

  • Environment Setup (detaljert .env konfigurasjon)
  • Database Setup (Flyway baseline migration)
  • Import-bruk (praktiske eksempler)
  • Viktige Kode-mønstre (transaksjonshåndtering, N+1 prevention, person filtering)
  • Feilsøking (ClassCastException, Flyway, adresser)

3. docs/IMPLEMENTATION_SUMMARY.md ✅

Før: Fokus på "inkrementell import" (deprecated)
Etter: Fokus på to-fase import og server-side filtrering

Endringer:

  • Fjernet inkrementell import-detaljer (applyPersonNummerFilterBeforeSaving, deprecated metoder)
  • Fokus på to hovedstrategier (filtrert import vs to-fase import)
  • Ytelsessammenligning: Filtrert (30 sek) vs Bulk (40 min) = 80x raskere!
  • Service Layer beskrivelser (MatrikkelenhetImportService, PersonImportService)
  • Viktige mønstre (transaksjonshåndtering, N+1 prevention, person filtering, adresse-sekvensering)
  • Fremtidig utvikling seksjon (REST API, scheduling, diff-basert sync, GraphQL)

4. docs/DATABASE_SCHEMA.md ✅

Før: Referanser til V1, V2, V3 migrasjoner
Etter: Fokus på V1__baseline_schema.sql

Endringer:

  • Flyway Baseline Migration strategi forklart
  • Alle 14 tabeller dokumentert med kolonner, indexer, constraints
  • Inheritance-hierarki forklart (Person → FysiskPerson/JuridiskPerson)
  • Entity Relationships diagram
  • Deprecated felter markert (person_owner_id, etc.)
  • Kritiske merknader:
    • Person.nummer er universell (både personnummer OG organisasjonsnummer)
    • Veger må lastes FØR adresser
    • Deprecated tabeller for bakoverkompatibilitet
  • Eksempel-spørringer oppdatert
  • Database maintenance tips (VACUUM, REINDEX)

Teknisk Stack Oppdatert

Før

  • Java 17
  • Spring Boot 3.2.0
  • Flyway (diverse versjoner)
  • PostgreSQL 15

  • Java 21 - Moderne LTS-versjon
  • Spring Boot 3.4.0 - Latest stable release
  • Flyway 10.20.1 - PostgreSQL 17 kompatibel
  • PostgreSQL 17 - Full støtte for komplekse relasjoner

Fjernet Innhold

Utdaterte Strategier

  • ❌ Inkrementell import (filter-etter-lagring)
  • ❌ applyPersonNummerFilterAfterImport() metode
  • ❌ V1-V9 separate migrasjoner
  • ❌ Bulk import som hovedstrategi

Utdatert Dokumentasjon

  • ❌ INCREMENTAL_IMPORT.md - Deprecated tilnærming
  • ❌ Gamle migreringsstrategier i setup guide
  • ❌ Referanser til ikke-eksisterende metoder

Nåværende Fokus

Primær Strategi: Filtrert Import

export $(grep -v '^#' .env | xargs) && mvn spring-boot:run \
  -Dspring-boot.run.arguments="--import --kommune=1103 --personnummer=964965226"

Fordeler:

  • 99% reduksjon i dataoverføring
  • Server-side filtrering (MatrikkelenhetService)
  • Batch-henting (StoreService, 500 per batch)
  • Alt lastes i én operasjon

Sekundær Strategi: To-fase Import

Fase 1: Base import (matrikkelenheter + personer)
Fase 2: Detalj-import (bygninger + adresser fra database-filtrering)

Kritiske Merknader

1. Package Consolidation

ALLE WSDL-tjenester MÅ bruke samme package (no.matrikkel.client.generated.nedlastning)
Årsak: Unngå ClassCastException runtime

2. Person.nummer er Universell

Både personnummer OG organisasjonsnummer lagres i matrikkel_personer.nummer
Ikke bruk: fodselsnummer eller organisasjonsnummer - de er NULL!

3. Veger Før Adresser

Veger må lastes FØR adresser (foreign key constraint)

4. Environment Variables

ALLTID load .env før Maven-kommandoer:
export $(grep -v '^#' .env | xargs)

Backup-filer

Gamle versjoner er lagret med .backup extension:

  • README.md.backup
  • JAVA_PROJECT_SETUP_GUIDE.md.backup
  • docs/IMPLEMENTATION_SUMMARY.md.backup
  • docs/DATABASE_SCHEMA.md.backup

Neste Steg

✅ Alle hoveddokumenter oppdatert
✅ Utdaterte strategier fjernet
✅ Nåværende teknologi reflektert
✅ Kritiske merknader fremhevet

Prosjektet er klart for publisering!