Files

4.7 KiB
Raw Permalink Blame History

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.