4.7 KiB
RELATIONS — 0pt relationskarta (FAS 2)
Verifierad mot kod 2026-08-10. Alla relationer är grep-/läs-verifierade (AR-5). Legenden: sources.yaml = kompliant källregistret · bypass-stacken = medvetet behållen per användarbeslut (se GOLDEN-STANDARD-REPORT), visas grått.
1. Router → källor
services/api/workers/adaptive_router.py bygger sourcingplan per marknad;
services/api/sources/sources.yaml är källregistret (kompliant sida). Skrapmotorn
(services/scrapers/) är den medvetet behållna bypass-sidan.
flowchart LR
subgraph Router["adaptive_router.py (workers)"]
R["plan_for_market(market) -> source_id-lista"]
end
subgraph Registry["sources.yaml (kompliant, 8 källor)"]
S1[gleif · global · api CC0]
S2[brreg · NO · api NLOD]
S3[companies_house · GB · api nyckel]
S4[prh · FI · api CC-BY]
S5[cvr · DK · api Virk]
S6[bolagsverket · SE · licensed]
S7[rdw · NL · bulk fordon]
S8[opensanctions · global · bulk screening]
end
subgraph Scraper["services/scrapers (medvetet behållen bypass)"]
W[waf_bypass.py: FlareSolverr/Tor/cloudscraper/curl_cffi]
E2[engine_v2.py]
C[clickhouse_pipeline.py]
end
R -->|NO| S2
R -->|GB| S3
R -->|FI| S4
R -->|DK| S5
R -->|SE| S6
R -->|NL| S7
R -->|global| S1
R -->|screening| S8
R -.->|"deep scraping (b0ts/legacy)"| E2
E2 --> W
E2 --> C
2. ST0RE-artefakter (lakehouse-write-vägen)
Enda skrivväg för Iceberg-state: src/clients/st0re-lakehouse-client.ts →
/v1/st0re/lakehouse/* (namespace → table → snapshot). Live-verifierad 2026-07-13.
flowchart LR
API["POST /api/0pt/lakehouse/mappings/{id}/writes"] --> WRITE[IcebergWriteService]
WRITE --> NS[registerNamespace<br/>X-Tenant-Id/X-Actor-Id]
NS --> T[registerTable<br/>IcebergTableInput]
T --> SNAP[createSnapshot<br/>manifestUri, aud0EventId]
SNAP --> MANI["Iceberg-manifest (bytes)<br/>N0D skriver faktiska filer"]
WRITE --> N0D[createJob /v1/n0d/jobs<br/>job_type=0pt.* heavy]
WRITE --> MAP["DatasetIcebergMapping (0pt, in-memory/Postgres mål)"]
MAP -.->|"mappingId->tableId"| T
3. N0D-jobb
src/clients/n0d-client.ts → POST /v1/n0d/jobs. 0pt begär jobb, äger aldrig
scheduling/GPU. Mock (mock_job_*) utan N0D_URL — testbar, inte verklig.
sequenceDiagram
participant S as Service (0pt)
participant N as N0D (POST /v1/n0d/jobs)
participant R as N0D-Runner
S->>N: createJob {tenant_id, project_id, job_type, input_artifact_ids, risk_level}
N-->>S: job_id (status=queued)
N->>R: scheduler -> worker
R-->>S: (0pt följer ej upp — poll/hook saknas, backlog)
4. AUD0-events (system of record)
src/clients/aud0-client.ts → POST /v1/aud0/events + /v1/aud0/lineage/events.
Event-typer som emiteteras i kod (grep-verifierat):
| event_type | Källa (service) | Linjage-event |
|---|---|---|
0pt.dataset_registered |
dataset-service.ts | — |
0pt.source_created |
source-service.ts | — |
0pt.source_rate_policy_created |
source-rate-policy-service.ts | — |
0pt.source_queried |
source-query-service.ts | — |
0pt.dataset_iceberg_table_mapped |
dataset-iceberg-mapping-service.ts | lineage_0pt_dataset_iceberg_* |
0pt.iceberg_write_requested |
iceberg-write-service.ts | — |
0pt.iceberg_snapshot_created |
iceberg-write-service.ts | lineage_0pt_iceberg_snapshot_* |
0pt.document_captured |
document-capture-service.ts | lineage_0pt_document_captured_* |
0pt.document_extracted |
document-extraction-service.ts | lineage_0pt_document_extracted_* |
0pt.external_record_written |
external-writeback-service.ts | lineage_0pt_external_write_* |
⚠️ Utan
AUD0_URLär emissionen no-op (klientkontraktet) — lucka S6. Ingen live-AUD0-endpoint verifierad för 0pt ännu (klientdokkommentar).
5. Beroendepilar (AR-8, nedåt endast)
flowchart TD
UI[0pt.app UI] --> API[Next.js API-routes]
API --> CAP[src/ capability-lagret]
CAP --> CL[CL0UD policy · fail-open]
CAP --> ST[ST0RE artefakter/lakehouse]
CAP --> ND[N0D jobb]
CAP --> AU[AUD0 audit · no-op utan URL]
CAP --> EN[FastAPI-engine services/api]
EN --> SRC[Komplienta källor + bypass-stack]
CL -.->|K1| SAX[SIAX Cloud (K1) - endast nedåt, inga K2-K5]
ST -.->|K1| SAX
ND -.->|K1| SAX
AU -.->|K1| SAX
AR-8-status: VERIFIERAT — 0pt beror endast på K1-tjänster (CL0UD/ST0RE/N0D/AUD0/INF0)
- externa data-/betalningskällor; inga kundrepon (K2–K5) refereras i koden.
6. Utfallsfil FAS 2
✅ docs/compliance/RELATIONS.md skapad med 4 Mermaid-diagram.