Files
0pt/docs/compliance/OSS-INVENTORY.md
T

92 lines
5.4 KiB
Markdown

# 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.