Norske bindinger mellom topproller, internasjonale organisasjoner og finansieringsstrømmer.
Dette repoet setter opp en MVP-arkitektur for å kartlegge bindinger mellom norske toppolitikere/diplomater, internasjonale organisasjoner og finansieringsstrømmer.
- Postgres (source of truth): normaliserte fakta + kildesporing.
- Neo4j (graph read model): nettverksspørringer og visualisering.
- Python-scripts: migrasjoner, ingest fra Excel, sync fra Postgres til Neo4j.
docker-compose.yml- lokal Postgres + Neo4j.db/migrations/0001_init.sql- første datamodell i Postgres.db/neo4j/0001_constraints.cypher- constraints/indexer i Neo4j.scripts/run_migrations.py- enkel migrasjonsrunner.scripts/ingest_excel.py- ingest til staging-tabeller.scripts/normalize_staging.py- normalisering fra staging til kjerne-tabeller.scripts/harvest_iati_registry.py- henter IATI XML fra IATI Registry til staging (automatisk norske publiserere).scripts/normalize_iati_staging.py- normaliserer IATI-staging tilfunding_flow.scripts/enrich_norad_oecd.py- berikerfunding_flowmed Norad API + OECD DAC2A.scripts/sync_neo4j.py- projiserer normaliserte data til graf.app/main.py- lokal webserver/API for graf, tidslinje, topplister og brokoblinger.app/static/- frontend (nettverk, tidslinje, topplister, kildepanel).
- Kopier miljøvariabler:
cp .env.example .env
- Start databaser:
docker compose up -d- Hvis porter er opptatt lokalt, juster
POSTGRES_PORT,NEO4J_PORTogNEO4J_HTTP_PORTi.env.
- Installer avhengigheter:
python3 -m venv .venv && source .venv/bin/activatepip install -e .
- Kjør migrasjoner:
python scripts/run_migrations.py
- Last inn Excel til staging:
python scripts/ingest_excel.py --file "$EXCEL_PATH"
- Normaliser staging til kjerne-tabeller:
python scripts/normalize_staging.py --truncate-core
- Høst åpne IATI-data (norske publiserere i registry):
python scripts/harvest_iati_registry.py- Begrenset test:
python scripts/harvest_iati_registry.py --max-resources 1 --max-activities 200
- Normaliser IATI-staging til kjerne-tabeller:
python scripts/normalize_iati_staging.py
- Berik med øvrige offentlige data:
python scripts/enrich_norad_oecd.py
- Opprett constraints i Neo4j:
python scripts/sync_neo4j.py --init-only
- Sync data til graf:
python scripts/sync_neo4j.py
- Start webvisning:
uvicorn app.main:app --reload --port 8080- Åpne
http://127.0.0.1:8080
Alternativt: kjør åpen-kilde-pipeline i ett:
make open-data- (
enrichkrever i tilleggNORAD_X_FUNCTIONS_KEY)
Kjerneentiteter i Postgres:
personorganizationsource_documentrole_eventfunding_flow
Kildebevis/junction-tabeller:
person_source_documentorganization_source_documentrole_event_source_documentfunding_flow_source_document
Staging for råimport:
stg_excel_organisasjonerstg_excel_datakilderstg_iati_transaction
Idempotens for maskinell import:
funding_flow_ingest_key(source_system + event_key)
- Bygg
entity_resolution-pipeline (alias + deduplisering). - Gjør normaliseringspipeline mer robust (flerkilder, strengere idempotens, kvalitetsregler).
- Utvid web-UI med tidslinjevisning, eksport og mer avanserte nettverksmål.
- Implementer tidsserieindikatorer for "før/under/etter tiltredelse".