# OSS-INVENTORY — 0pt (FAS 3) > Kartlagd 2026-08-10. Status per manifest/läsning: **INSTALLERAD** (i requirements.txt/package.json) > vs **PLANAD** (docs/07-dependencies.md, ej installerad) vs **REFERENS** (nämnd i kod/docs). > Licens-URLer och licenser är välkända, ej individuellt omverifierade denna pass (ANTAGANDE där annat ej anges). ## 1. Python — engine (services/api/requirements.txt) | Paket | Roll | Licens | Status | |---|---|---|---| | fastapi | API-ramverk | MIT | INSTALLERAD | | uvicorn | ASGI-server | BSD-3-Clause | INSTALLERAD | | pydantic | validering | MIT | INSTALLERAD | | httpx | HTTP (kompliant, identifierar sig) | BSD-3-Clause | INSTALLERAD, aktivt använd | | asyncpg | Postgres-driver | Apache-2.0 | INSTALLERAD men oanvänd (grep) | | python-dotenv | env | BSD-3-Clause | INSTALLERAD | | pyyaml | sources.yaml | MIT | INSTALLERAD, använd | | rapidfuzz | fuzzy matching / entity resolution (Levenshtein-familjen) | MIT | INSTALLERAD, enda matching-engine (workers/resolve.py) | | tenacity | retry | Apache-2.0 | INSTALLERAD | | **spaCy** (+modeller) | NER / entity resolution | MIT (modeller: CC-BY-SA-3.0) | **PLANAD** (docs/07), EJ installerad — NER saknas helt i kod | | **dedupe** | record linkage / dedupe | MIT | **PLANAD/ERSATT** — rapidfuzz fyller dedup-rollen idag; dedupe ej installerat | | **DuckDB** | kolumnanalys | MIT | **REFERENS + kodanvändning** — lazy-import i `services/scrapers/clickhouse_pipeline.py:220` (DuckDBWriter), men **SAKNAS i requirements.txt** (GAP: låsas om den ska vara del av stacken) | | **Playwright** | kompliant JS-rendering (public pages) | Apache-2.0 | **PLANAD** (docs/07 rad 45) — ej installerad; klart skild från bypass | | **python-Levenshtein** | Levenshtein | GPL-2.0-or-later | **UNDVIK medvetet** — rapidfuzz (MIT) ersätter (GPL-kompatibilitetsskäl, docs/07-rad 39) | | polars | tabular | MIT | PLANAD, ej installerad | | unstructured | PDF/HTML→element | Apache-2.0 | PLANAD, ej installerad | | paddleocr/pytesseract | OCR | Apache-2.0 | PLANAD, ej installerad | ## 2. Python — scrapers (services/scrapers/requirements.txt) — medvetet behållen stack > ⚠️ AR-1-undantag (användarbeslut): hela `services/scrapers/*` + `services/infra/docker-compose.data-stack.yml` > behålls intakt. OSS-inventeringen listar dem ärligt; compliance-bedömning sker i GOLDEN-STANDARD-REPORT. | Paket/komponent | Roll | Licens | Status | |---|---|---|---| | curl_cffi | TLS-fingerprintbyte | MIT | INSTALLERAD, använd i engine.py/engine_v2.py/waf_bypass.py | | cloudscraper | Cloudflare-bypass (basic) | MIT | INSTALLERAD, använd | | httpx / aiohttp / requests | HTTP | BSD-3-Clause / Apache-2.0 / Apache-2.0 | INSTALLERAD | | beautifulsoup4 + lxml | HTML-parsing | MIT | INSTALLERAD | | boto3 | S3-sync (MinIO/R2) | Apache-2.0 | INSTALLERAD, använd i s3_sync.py | | **FlareSolverr** | CF-bypass (tung) | **GPL-3.0** | REFERENS — container i docker-compose.data-stack.yml + waf_bypass.py | | **Tor** | proxy-rotation | BSD-3-Clause | REFERENS — tor-proxy-container i docker-compose.data-stack.yml | | **nodriver** | undetected browser | Apache-2.0 | REFERENS (waf_bypass.py) — ej i requirements | | **DuckDB** | alternativ lagring | MIT | KODANVÄND (clickhouse_pipeline.py) men ej i requirements.txt — GAP | ## 3. JS/TS (package.json, urval) — OSS + proprietär | Paket | Roll | Licens | Status | |---|---|---|---| | next / react / react-dom | App Router | MIT | INSTALLERAD | | zod | schema-validering | MIT | INSTALLERAD | | jose | JWT/JWKS | MIT | INSTALLERAD | | stripe | betalningar | Apache-2.0 | INSTALLERAD | | postgres (pg) | DB-driver | Unlicense | INSTALLERAD | | tailwindcss / shadcn-ui-komponenter | styling | MIT | INSTALLERAD | | Radix-primitiver (react-*)| a11y-komponenter | MIT | INSTALLERAD | | vitest | testrunner | MIT | INSTALLERAD | | recharts | diagram | MIT | INSTALLERAD | | @vercel/analytics | **FÖRBJUDET (AR-4)** | MIT | INSTALLERAD → tas bort FAS 6 | ## 4. Self-hosted containers (infra/, services/infra/) | Komponent | Licens | Status | |---|---|---| | postgres pgvector (pg16) | PostgreSQL | infra/docker-compose.yml (ej verifierat körande) | | redis:7 | BSD-3-Clause | infra/docker-compose.yml | | nocodb/nocodb | AGPL-3.0 | infra/docker-compose.yml | | metabase/metabase | AGPL-3.0 | infra/docker-compose.yml | | caddy | Apache-2.0 | infra/Caddyfile | | clickhouse | Apache-2.0 | services/infra/data-stack (ej verifierat körande) | | trino | Apache-2.0 | services/infra/data-stack | | **flaresolverr** | **GPL-3.0** | services/infra/data-stack — medvetet behållen | | **tor-proxy** | BSD-3-Clause | services/infra/data-stack — medvetet behållen | | superset | Apache-2.0 | services/infra/data-stack | ## 5. Noteringar - **AR-3 (ärvd licens):** 0pt är ingen fork — egen proprietär kod. Inga ärvda licenser att ersätta. ✔ - **GPL-fläckar:** FlareSolverr (GPL-3.0) och NocoDB/Metabase (AGPL-3.0) är containeriserade, ej inlänkade bibliotek — GPL-eksponeringen begränsad men bör hållas i åtanke vid byte av BI-verktyg. - **Låsnings-GAP:** `duckdb` används i kod (scrapers) men saknas i requirements.txt — se BACKLOG (P4). - Playwright/FlareSolverr radas som referens i samma dokumentfamilj men är varandras motsatser: Playwright = kompliant hämtning (docs/07, ej installerad), FlareSolverr = bypass (medvetet behållen). ## 6. Utfallsfil FAS 3 ✅ `docs/compliance/OSS-INVENTORY.md` skapad.