Files
boc/memory/clickhouse-analytics-result.md
T
Bernt bae705aa97 ARCHITECTURE: NFC roadmap, edge AI, audit logging
- Add NFC ePassport roadmap (ICAO 9303, eIDAS)
- Add TensorFlow.js edge face detection (BlazeFace)
- Add structured audit logger (GDPR-compliant)
- Risk scoring support

Part of KYC Apple Native UX v1.1.0
2026-06-29 16:24:48 +00:00

143 lines
4.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# ClickHouse + Analytics Engine — Verifieringsrapport
**Datum:** 2026-06-05
**Utförd av:** subagent clickhouse-analytics
---
## ✅ Statusöversikt
| Komponent | Status |
|---|---|
| ClickHouse (Docker :8123) | ✅ Online, auth OK |
| aamos-analytics-engine (:3211) | ✅ Active, systemd |
| analytics-rust (:3281) | ✅ Active (stub) |
| Schema `aamos` | ✅ Komplett, 12 tabeller |
| Seed-data (MRR + Cohort) | ✅ Fyllt |
| Test-event (events-table) | ✅ Verifierat |
| Nginx upstream analytics | ⚠️ Felaktig port (se nedan) |
---
## ClickHouse: Databaser
```
INFORMATION_SCHEMA, aamos, default, information_schema, system
```
**Credentials:** user=`aamos` password=`aamos_wh_2026`
*(Default-user kräver lösenord — använd alltid aamos-user)*
---
## Schema: Tabeller i `aamos`
| Tabell | Rader | Kommentar |
|---|---|---|
| `events` | 1 (testad) | DAU-events, UUID-baserad |
| `analytics_mrr` | 36 | 3 produkter × 12 månader, seedad |
| `analytics_cohort` | 126 | 3 produkter × 6 cohorts × 7 perioder, seedad |
| `campaign_events` | 0 | Tom — redo för data |
| `entity_scores` | 0 | ML-scores, tom |
| `intent_signals` | 0 | Tom |
| `kong_api_key_usage` | 0 | Tom |
| `kong_consumer_rate_audit` | 0 | Tom |
| `kong_request_log` | 0 | Tom |
| `kong_request_log_per_minute` | - | Materialized view |
| `system_state_history` | 0 | Tom |
| `.inner_id.*` (×3) | - | Interna MV-tabeller |
### Events-table schema
```
id UUID (DEFAULT generateUUIDv4())
event_type LowCardinality(String)
entity_id UUID
entity_type LowCardinality(String)
properties String
source LowCardinality(String)
ts DateTime64(3, 'UTC')
```
---
## Analytics Engine Services
### Service 1: `aamos-analytics-engine` (:3211)
**Binary:** `/opt/amos/rust/analytics-engine/target/release/amos-analytics`
**Systemd:** `/etc/systemd/system/aamos-analytics-engine.service`
**Endpoints:**
| Endpoint | Status | Beskrivning |
|---|---|---|
| `GET /health` | ✅ 200 | `{"status":"ok","service":"amos-analytics","port":3211,"clickhouse":"ok"}` |
| `GET /api/analytics/dau?days=N` | ✅ 200 | Daily Active Users från events-tabell |
| `GET /api/analytics/mrr?months=N&product=X` | ✅ 200 | MRR från analytics_mrr |
| `GET /api/analytics/cohort?product=X&periods=N` | ✅ 200 | Cohort retention |
| `POST /api/analytics/events` | ❌ 404 | Finns ej — inget event-ingest endpoint |
**Notering:** Service initierar DDL-schema (CREATE TABLE IF NOT EXISTS) vid start, och seedar om analytics_mrr är tom.
### Service 2: `amos-analytics-rust` (:3281) — STUB
**Binary:** `/opt/amos/rust/analytics-rust/target/release/amos-analytics-rust`
Denna är en **stub/placeholder** utan ClickHouse-integration.
Endpoints: `/health`, `/status`, `/list`, `/create` — returnerar tomma svar.
---
## Test-event
Skickades direkt till ClickHouse (analytics-engine har inget POST-endpoint):
```bash
curl -X POST "http://localhost:8123/?user=aamos&password=aamos_wh_2026&database=aamos" \
--data-binary "INSERT INTO events (event_type, entity_id, entity_type, properties, source, ts)
VALUES ('test', generateUUIDv4(), 'test',
'{\"source\":\"e1-008-test\",\"tenant_id\":\"wavult-group\"}',
'e1-008-test', now())"
```
**Resultat:** ✅ Insertat — DAU-endpoint returnerade `{"days":1,"series":[{"date":"2026-06-05","dau":1}],"avg_dau":1.0,"peak_dau":1}`
---
## MRR-data (aktuell)
Från `/api/analytics/mrr?months=3`:
| Produkt | MRR (Juni 2026) | Kunder | MoM-tillväxt |
|---|---|---|---|
| aamos | 2 914 549 SEK | 727 | ~8% |
| quixzoom | 3 195 032 SEK | 3 592 | ~14% |
| ouroboros | 2 551 313 SEK | 79 | ~6% |
| **TOTALT** | **8 660 894 SEK** | - | **9.52%** |
---
## ⚠️ Nginx-upstream — Portmismatch
**Problem:** Nginx-upstream pekar på fel port!
```nginx
# /etc/nginx/conf.d/aamos-upstreams.conf
upstream rust_analytics { server 127.0.0.1:3281; keepalive 16; }
# /etc/nginx/snippets/rust-services.conf
location /api/svc/analytics/ {
proxy_pass http://rust_analytics/; # → :3281 (STUB!)
}
```
- `rust_analytics` upstream → `:3281` = **stub-service** (ingen ClickHouse-integration)
- Faktiska analytics-engine med data → `:3211` = **ej proxad**
**Rekommendation:** Uppdatera upstream till `127.0.0.1:3211` (kräver root/SSM).
Eller registrera `:3211` som ny upstream `rust_analytics_engine` och uppdatera location-blocket.
---
## Sammanfattning
- **Schema:** Komplett. 12 tabeller i `aamos`-databasen.
- **Data:** analytics_mrr (36 rader) och analytics_cohort (126 rader) är seedade med realistisk data.
- **Analytics-engine (:3211):** Fullt fungerande. DAU, MRR, Cohort-endpoints svarar korrekt.
- **Test-event:** Verifierat via direkt ClickHouse-insert. DAU-endpoint plockar upp det.
- **Saknar:** POST-endpoint för event-ingest i analytics-engine (events måste skrivas direkt till ClickHouse eller via separat ingest-service).
- **Nginx:** Upstream pekar på stub (:3281) istället för analytics-engine (:3211) — åtgärdas separat med root-access.