77 lines
2.7 KiB
Markdown
77 lines
2.7 KiB
Markdown
# C0PY Architecture
|
|
|
|
## Översikt
|
|
|
|
C0PY är ett verktyg för att skapa fullständigt register över en hemsida ut alla aspekter. Det konsumerar en webbadress och producerar ett strukturerat register med information om sidor, struktur, innehåll, prestanda och mer.
|
|
|
|
## Komponenter
|
|
|
|
```
|
|
┌──────────────┐ ┌──────────────────┐ ┌─────────────────┐
|
|
│ apps/web │────→│ apps/api │────→│ packages/ │
|
|
│ (Next.js) │◄────│ (Fastify/API) │◄────│ c0py-core │
|
|
└──────────────┘ └──────────────────┘ └─────────────────┘
|
|
│
|
|
┌───────┴───────┐
|
|
│ Integrations │
|
|
│ (CL0UD,ST0RE│
|
|
│ AUD0,INF0,N0D│
|
|
└───────────────┘
|
|
```
|
|
|
|
## Ytor
|
|
|
|
| Yta | Beskrivning |
|
|
|---|---|
|
|
| `apps/api/src/routes/` | REST-rutter under /v1/c0py/* |
|
|
| `apps/api/src/services/` | Tjocka tjänster, rent TS |
|
|
| `apps/web/src/app/` | Next.js App Router — registerhantering |
|
|
| `apps/web/src/components/` | Delade UI-komponenter |
|
|
| `packages/c0py-core/` | Crawling, registry-uppbyggnad, analys |
|
|
| `packages/config/` | Zod-env-validering |
|
|
| `packages/types/` | Gemensamma typer |
|
|
|
|
## Konsumerade kapabiliteter
|
|
|
|
- **CL0UD**: Autentisering (Zitadel OIDC), RBAC, tenant-isolering
|
|
- **AUD0**: Regeleveranshändelser (skrivs när tillgängligt, fail-closed annars)
|
|
- **ST0RE**: Objektlagring för registerdata
|
|
- **INF0**: AI-baserad innehållsanalys
|
|
- **N0D**: Asynkrone crawling-jobb för stora sajter
|
|
|
|
## Datamodell (initiell)
|
|
|
|
```
|
|
Registry
|
|
├── id: uuid
|
|
├── url: string (målhemsadress)
|
|
├── name: string
|
|
├── createdAt: timestamp
|
|
├── updatedAt: timestamp
|
|
│
|
|
├── Page[]
|
|
│ ├── id: uuid
|
|
│ ├── registryId: uuid
|
|
│ ├── url: string
|
|
│ ├── path: string
|
|
│ ├── title: string?
|
|
│ ├── description: string?
|
|
│ ├── status: number
|
|
│ ├── contentType: string?
|
|
│ ├── discoveredAt: timestamp
|
|
│ └── analysis: JSON?
|
|
│
|
|
└── ScanRun[]
|
|
├── id: uuid
|
|
├── registryId: uuid
|
|
├── status: pending|running|completed|failed
|
|
├── startedAt: timestamp
|
|
└── completedAt: timestamp?
|
|
```
|
|
|
|
## Säkerhet
|
|
|
|
- Tenant identifierad via CL0UD-session, ALDRIG från klientinput
|
|
- Alla writes fail-closed (inget vs fel config = nek)
|
|
- Inga hemligheter i repo
|