6989a98d75
- Arkitektur: docs/auth/passwordless-architecture.md - Backend: iom/quixzoom-auth-service/ (FastAPI + Redis) - Webb: quixzoom-market-pages/se/login/ (QR-kod + polling) - App: iom/quixzoom-app/src/features/auth/ (push + deep links) Flöde: QR-kod → app-godkännande → webb-inloggad
473 lines
16 KiB
Markdown
473 lines
16 KiB
Markdown
# ADMINVERKTYG — RAPPORTFLÖDE (Back-engineerad)
|
||
## Jesper Melin Demo Case → Generisk Systemstruktur
|
||
|
||
---
|
||
|
||
## 1. RAPPORTKOMPONENTER (vad som skapades för Jesper)
|
||
|
||
### 1.1 Input-data (kundens produkt)
|
||
```
|
||
Produkt: Fasting Support Spray™
|
||
- Typ: Munsprej
|
||
- Ingredienser: Elektrolyter, vitaminer, växtbaserade extrakt
|
||
- Användning: Periodisk fasta, keto
|
||
- Format: 30ml pocket
|
||
- Pris: Premium (15-25 EUR/USD)
|
||
- Certifieringar: GMP, vegansk, sockerfri
|
||
```
|
||
|
||
### 1.2 Output-sektioner (rapporten)
|
||
1. **Sammanfattning** — Topp 5 marknader, strategi, investering
|
||
2. **Produktdefinition & Målgrupp** — TAM/SAM/SOM, segmentering
|
||
3. **Marknadsmatris** — Rankningskriterier, marknadsranking per land
|
||
4. **Konkurrensanalys** — Direkta/indirekta konkurrenter, SWOT
|
||
5. **Omvärldsanalys** — Makrotrender, drivkrafter, risker
|
||
6. **Etableringsstrategi** — Fasad approach, budget, mätpunkter
|
||
7. **Produktanpassning** — Per marknad: smak, förpackning, påståenden
|
||
8. **Finansiell projektion** — Investering, omsättning, marginal
|
||
9. **Riskanalys** — Sannolikhet, impact, mitigering
|
||
10. **Rekommendation** — Omedelbara/kortsiktiga/långsiktiga åtgärder
|
||
11. **Datakällor & Metodologi** — Primär/sekundärdata, metoder
|
||
12. **Appendix** — Djupanalyser per marknad, konkurrent deep-dives
|
||
|
||
---
|
||
|
||
## 2. SYSTEMFLÖDE (no-code)
|
||
|
||
### Steg 1: PRODUKTINPUT (kunden fyller i)
|
||
```
|
||
┌─────────────────────────────────────┐
|
||
│ PRODUKTINPUT-FORMULÄR │
|
||
├─────────────────────────────────────┤
|
||
│ • Produktnamn │
|
||
│ • Produkttyp (dropdown) │
|
||
│ • Ingredienser/teknik │
|
||
│ • Användningsområde │
|
||
│ • Format/storlek │
|
||
│ • Prisnivå │
|
||
│ • Certifieringar │
|
||
│ • Målgrupp (förifylld från typ) │
|
||
│ • Nuvarande marknader │
|
||
│ • Konkurrenter (frivilligt) │
|
||
└─────────────────────────────────────┘
|
||
```
|
||
|
||
### Steg 2: AUTOMATISK DATAHÄMTNING (systemet)
|
||
```
|
||
┌─────────────────────────────────────┐
|
||
│ DATAMOTOR │
|
||
├─────────────────────────────────────┤
|
||
│ A. Marknadsdata (Landvex intern) │
|
||
│ • quiXzoom fältdatainsamling │
|
||
│ • Stadsmässig data │
|
||
│ • Marknadstrender │
|
||
│ │
|
||
│ B. Extern data (APIer) │
|
||
│ • Google Trends API │
|
||
│ • Statista/Euromonitor │
|
||
│ • Nationell statistik │
|
||
│ • E-handelsdata │
|
||
│ │
|
||
│ C. Konkurrensdata │
|
||
│ • Amazon/Alibaba scraping │
|
||
│ • Prisjämförelse │
|
||
│ • Review-analys │
|
||
│ │
|
||
│ D. Regulatorisk data │
|
||
│ • EU-förordningar (EUR-Lex) │
|
||
│ • FDA-databas │
|
||
│ • Nationella myndigheter │
|
||
└─────────────────────────────────────┘
|
||
```
|
||
|
||
### Steg 3: ANALYS & BERÄKNING (systemet)
|
||
```
|
||
┌─────────────────────────────────────┐
|
||
│ ANALYSMOTOR │
|
||
├─────────────────────────────────────┤
|
||
│ 1. Marknadsstorleksberäkning │
|
||
│ • TAM = Global marknad × segment│
|
||
│ • SAM = TAM × geografisk andel │
|
||
│ • SOM = SAM × realistisk andel │
|
||
│ │
|
||
│ 2. Marknadsranking │
|
||
│ • Viktad skoringsmodell │
|
||
│ • Kriterier: storlek, reglering,│
|
||
│ e-handel, konkurrens, kultur, │
|
||
│ logistik │
|
||
│ │
|
||
│ 3. Konkurrensmapping │
|
||
│ • Direkta vs indirekta │
|
||
│ • Prispositionering │
|
||
│ • Differentieringsfaktorer │
|
||
│ │
|
||
│ 4. Trendanalys │
|
||
│ • Makrotrender (PESTEL) │
|
||
│ • Drivkrafter │
|
||
│ • Risker │
|
||
│ │
|
||
│ 5. Finansiell modell │
|
||
│ • Investeringsbehov per fas │
|
||
│ • Omsättningsprojektion │
|
||
│ • Marginalstruktur │
|
||
│ • Break-even-analys │
|
||
└─────────────────────────────────────┘
|
||
```
|
||
|
||
### Steg 4: RAPPORTGENERERING (systemet)
|
||
```
|
||
┌─────────────────────────────────────┐
|
||
│ RAPPORTGENERERARE │
|
||
├─────────────────────────────────────┤
|
||
│ • Mallbaserad (Markdown/HTML/PDF) │
|
||
│ • Variabler fylls i automatiskt │
|
||
│ • Grafer genereras (Chart.js/D3) │
|
||
│ • Källor listas automatiskt │
|
||
│ • Spårbarhet: varje påstående har │
|
||
│ en datakälla länkad │
|
||
└─────────────────────────────────────┘
|
||
```
|
||
|
||
### Steg 5: GRANSKNING & EXPORT (kunden)
|
||
```
|
||
┌─────────────────────────────────────┐
|
||
│ GRANSKNINGSGRÄNSSNITT │
|
||
├─────────────────────────────────────┤
|
||
│ • Förhandsvisning av rapport │
|
||
│ • Redigera sektioner │
|
||
│ • Lägg till kommentarer │
|
||
│ • Godkänn / begär ändringar │
|
||
│ • Export: PDF, Word, HTML │
|
||
│ • Dela: Länk, e-post, Slack │
|
||
└─────────────────────────────────────┘
|
||
```
|
||
|
||
---
|
||
|
||
## 3. DATAMODELL (databasstruktur)
|
||
|
||
### 3.1 Produkter (products)
|
||
```sql
|
||
CREATE TABLE products (
|
||
id UUID PRIMARY KEY,
|
||
name VARCHAR(255),
|
||
type VARCHAR(100), -- enum: spray, capsule, powder, device, etc.
|
||
description TEXT,
|
||
ingredients JSONB,
|
||
usage_scenarios JSONB,
|
||
format VARCHAR(100),
|
||
price_range_min DECIMAL,
|
||
price_range_max DECIMAL,
|
||
currency VARCHAR(3),
|
||
certifications JSONB,
|
||
target_audience JSONB,
|
||
current_markets JSONB,
|
||
created_by UUID,
|
||
created_at TIMESTAMP,
|
||
updated_at TIMESTAMP
|
||
);
|
||
```
|
||
|
||
### 3.2 Marknader (markets)
|
||
```sql
|
||
CREATE TABLE markets (
|
||
id UUID PRIMARY KEY,
|
||
country_code CHAR(2),
|
||
country_name VARCHAR(100),
|
||
population INTEGER,
|
||
gdp_per_capita DECIMAL,
|
||
e_commerce_penetration DECIMAL,
|
||
if_trend_index INTEGER,
|
||
keto_adoption VARCHAR(20),
|
||
regulatory_environment VARCHAR(20),
|
||
competition_level VARCHAR(20),
|
||
cultural_acceptance INTEGER,
|
||
logistics_ease INTEGER,
|
||
data_sources JSONB,
|
||
updated_at TIMESTAMP
|
||
);
|
||
```
|
||
|
||
### 3.3 Konkurrenter (competitors)
|
||
```sql
|
||
CREATE TABLE competitors (
|
||
id UUID PRIMARY KEY,
|
||
name VARCHAR(255),
|
||
product_type VARCHAR(100),
|
||
price DECIMAL,
|
||
currency VARCHAR(3),
|
||
markets JSONB,
|
||
channels JSONB,
|
||
strengths TEXT,
|
||
weaknesses TEXT,
|
||
threat_level VARCHAR(20),
|
||
data_source VARCHAR(255),
|
||
updated_at TIMESTAMP
|
||
);
|
||
```
|
||
|
||
### 3.4 Rapporter (reports)
|
||
```sql
|
||
CREATE TABLE reports (
|
||
id UUID PRIMARY KEY,
|
||
product_id UUID REFERENCES products(id),
|
||
title VARCHAR(255),
|
||
status VARCHAR(20), -- draft, review, approved, archived
|
||
content JSONB, -- strukturerad rapportdata
|
||
generated_at TIMESTAMP,
|
||
generated_by UUID,
|
||
approved_by UUID,
|
||
approved_at TIMESTAMP,
|
||
version INTEGER,
|
||
parent_report_id UUID -- för versionering
|
||
);
|
||
```
|
||
|
||
### 3.5 Datakällor (data_sources)
|
||
```sql
|
||
CREATE TABLE data_sources (
|
||
id UUID PRIMARY KEY,
|
||
name VARCHAR(255),
|
||
type VARCHAR(50), -- internal, api, scraper, manual
|
||
url VARCHAR(500),
|
||
api_key_encrypted TEXT,
|
||
last_sync TIMESTAMP,
|
||
sync_frequency VARCHAR(20),
|
||
reliability_score INTEGER,
|
||
active BOOLEAN
|
||
);
|
||
```
|
||
|
||
---
|
||
|
||
## 4. API-ENDPOINTS (för integrationer)
|
||
|
||
```
|
||
POST /api/v1/products # Skapa produkt
|
||
GET /api/v1/products/:id # Hämta produkt
|
||
PUT /api/v1/products/:id # Uppdatera produkt
|
||
DELETE /api/v1/products/:id # Ta bort produkt
|
||
|
||
POST /api/v1/reports # Generera rapport
|
||
GET /api/v1/reports/:id # Hämta rapport
|
||
PUT /api/v1/reports/:id/approve # Godkänn rapport
|
||
GET /api/v1/reports/:id/export # Exportera rapport (PDF/Word)
|
||
|
||
GET /api/v1/markets # Lista marknader
|
||
GET /api/v1/markets/:code # Hämta specifik marknad
|
||
GET /api/v1/markets/:code/trends # Hämta trenddata
|
||
|
||
GET /api/v1/competitors # Lista konkurrenter
|
||
POST /api/v1/competitors # Lägg till konkurrent
|
||
|
||
GET /api/v1/data-sources # Lista datakällor
|
||
POST /api/v1/data-sources/:id/sync # Tvinga synkronisering
|
||
```
|
||
|
||
---
|
||
|
||
## 5. FRONTEND-KOMPONENTER (React/Vue)
|
||
|
||
### 5.1 Produktskapare
|
||
```
|
||
┌─────────────────────────────────────┐
|
||
│ Steg 1: Grundinfo │
|
||
│ [Produktnamn ] [Typ ▼] │
|
||
│ │
|
||
│ Steg 2: Tekniska specs │
|
||
│ [Ingredienser ] [Format ▼] │
|
||
│ [Användning ] [Pris ▼] │
|
||
│ │
|
||
│ Steg 3: Målgrupp │
|
||
│ ☑ Biohackers ☑ Hälsomedvetna │
|
||
│ ☑ Keto ☑ Fastande │
|
||
│ │
|
||
│ [Generera rapport →] │
|
||
└─────────────────────────────────────┘
|
||
```
|
||
|
||
### 5.2 Rapportvisare
|
||
```
|
||
┌─────────────────────────────────────┐
|
||
│ 📊 Marknadsrapport │
|
||
│ Fasting Support Spray™ │
|
||
├─────────────────────────────────────┤
|
||
│ ┌─────────────────────────────┐ │
|
||
│ │ Marknadsranking │ │
|
||
│ │ [Graf: Topp 5 länder] │ │
|
||
│ └─────────────────────────────┘ │
|
||
│ │
|
||
│ ┌─────────────────────────────┐ │
|
||
│ │ Konkurrenslandskap │ │
|
||
│ │ [Graf: Pris vs Position] │ │
|
||
│ └─────────────────────────────┘ │
|
||
│ │
|
||
│ ┌─────────────────────────────┐ │
|
||
│ │ Investeringsprojektion │ │
|
||
│ │ [Graf: Omsättning över tid]│ │
|
||
│ └─────────────────────────────┘ │
|
||
│ │
|
||
│ [Redigera] [Exportera PDF] [Dela] │
|
||
└─────────────────────────────────────┘
|
||
```
|
||
|
||
### 5.3 Datakontrollpanel
|
||
```
|
||
┌─────────────────────────────────────┐
|
||
│ 📡 Datakällor │
|
||
├─────────────────────────────────────┤
|
||
│ 🟢 quiXzoom API Senast: 5m │
|
||
│ 🟢 Google Trends Senast: 1h │
|
||
│ 🟡 Statista API Senast: 6h │
|
||
│ 🔴 Euromonitor Senast: 2d │
|
||
│ │
|
||
│ [Synkronisera alla] │
|
||
└─────────────────────────────────────┘
|
||
```
|
||
|
||
---
|
||
|
||
## 6. AUTOMATISERAD SONDINHÄMTNING (quiXzoom-integration)
|
||
|
||
### 6.1 Triggervillkor
|
||
```
|
||
När rapport genereras för produkttyp X:
|
||
1. Kontrollera om quiXzoom har data för relevanta marknader
|
||
2. Om JA: Hämta fältdatainsamling
|
||
3. Om NEJ: Skapa automatisk sond (mission) för datainsamling
|
||
```
|
||
|
||
### 6.2 Sondtyp per produktkategori
|
||
```
|
||
Produkttyp: Kosttillskott/fastaprodukter
|
||
Sondtyp: Butiksgång (retail audit)
|
||
Data: • Pris på konkurrerande produkter
|
||
• Förekomst på hyllor
|
||
• Prominens (end cap, etc.)
|
||
• Utgångsdatum (freshness)
|
||
|
||
Produkttyp: Infrastruktur/IoT
|
||
Sondtyp: Fältobservation
|
||
Data: • Fysisk tillstånd
|
||
• Installation
|
||
• Användning
|
||
|
||
Produkttyp: Fastighet/retail
|
||
Sondtyp: Platsbesök
|
||
Data: • Fotodokumentation
|
||
• Mänsklig trafik
|
||
• Konkurrensnärhet
|
||
```
|
||
|
||
### 6.3 Automatisk rapportuppdatering
|
||
```
|
||
När sonddata inkommer:
|
||
1. Matcha mot befintlig rapport
|
||
2. Uppdatera relevanta sektioner
|
||
3. Flagga ändringar för granskning
|
||
4. Skicka notis till rapportägare
|
||
```
|
||
|
||
---
|
||
|
||
## 7. ROLLER & BEHÖRIGHETER
|
||
|
||
| Roll | Behörigheter |
|
||
|------|--------------|
|
||
| **Admin** | Allt: skapa, redigera, ta bort, godkänna, exportera |
|
||
| **Analytiker** | Skapa produkter, generera rapporter, redigera utkast |
|
||
| **Granskare** | Granska rapporter, godkänna, lägga till kommentarer |
|
||
| **Kund** | Se egna rapporter, exportera, dela |
|
||
| **Gäst** | Se demo-rapporter (anonymiserade) |
|
||
|
||
---
|
||
|
||
## 8. IMPLEMENTERINGSPLAN
|
||
|
||
### Fas 1: MVP (4 veckor)
|
||
- [ ] Produktskapare (grundläggande formulär)
|
||
- [ ] Rapportgenerator (Markdown, statisk)
|
||
- [ ] Marknadsdata (manuell inmatning + Statista API)
|
||
- [ ] Export (PDF)
|
||
|
||
### Fas 2: Automation (4 veckor)
|
||
- [ ] Google Trends-integration
|
||
- [ ] Automatisk konkurrensmapping
|
||
- [ ] Finansiell modell
|
||
- [ ] Datakontrollpanel
|
||
|
||
### Fas 3: quiXzoom-integration (4 veckor)
|
||
- [ ] API-koppling till quiXzoom
|
||
- [ ] Automatisk sondskapande
|
||
- [ ] Realtidsdata i rapporter
|
||
- [ ] Karta med fältdatainsamling
|
||
|
||
### Fas 4: Avancerat (4 veckor)
|
||
- [ ] AI-driven insiktsgenerering
|
||
- [ ] Scenario-planering
|
||
- [ ] Samarbetsverktyg (kommentarer, versionering)
|
||
- [ ] White-label (kundens varumärke på rapporter)
|
||
|
||
---
|
||
|
||
## 9. TEKNISK STACK (förslag)
|
||
|
||
| Komponent | Teknik |
|
||
|-----------|--------|
|
||
| **Frontend** | React + TypeScript + Tailwind CSS |
|
||
| **Backend** | Node.js + Express / Python + FastAPI |
|
||
| **Databas** | PostgreSQL + Redis (cache) |
|
||
| **Rapportgenerering** | Puppeteer (PDF), React-PDF |
|
||
| **Grafer** | Chart.js / D3.js / Recharts |
|
||
| **API-integrationer** | REST + GraphQL |
|
||
| **Filhantering** | AWS S3 |
|
||
| **Autentisering** | Auth0 / AWS Cognito |
|
||
| **Hosting** | AWS (ECS/Lambda) |
|
||
|
||
---
|
||
|
||
## 10. DEMO-CASE: Jesper Melin → Generisk mall
|
||
|
||
### Från specifik till generisk:
|
||
|
||
| Jespers produkt | Generisk parameter |
|
||
|-----------------|-------------------|
|
||
| Fasting Support Spray™ | `{product_name}` |
|
||
| Munsprej | `{product_type}` |
|
||
| Elektrolyter, vitaminer | `{ingredients}` |
|
||
| Periodisk fasta | `{usage_scenarios}` |
|
||
| 30ml | `{format}` |
|
||
| Premium (15-25 EUR) | `{price_range}` |
|
||
| Sverige, Tyskland, etc. | `{top_markets}` |
|
||
| LMNT, Snake Juice | `{competitors}` |
|
||
|
||
### Mall-exempel:
|
||
```markdown
|
||
# Marknadsintelligensrapport
|
||
## {product_name}
|
||
|
||
## SAMMANFATTNING
|
||
{product_name} är en {product_type} med potential inom
|
||
{primary_market}. Marknaden växer med {cagr}% CAGR.
|
||
|
||
**Rekommenderad prioritet:**
|
||
{for each top_market}
|
||
1. **{country}** — {key_reason}
|
||
{end}
|
||
|
||
## 1. PRODUKTDEFINITION
|
||
| Attribut | Beskrivning |
|
||
|----------|-------------|
|
||
| **Produkttyp** | {product_type} |
|
||
| **Ingredienser** | {ingredients} |
|
||
| **Användning** | {usage_scenarios} |
|
||
| **Format** | {format} |
|
||
| **Pris** | {price_range} {currency} |
|
||
```
|
||
|
||
---
|
||
|
||
*Dokument producerat av Landvex Control Intelligence.*
|
||
*Datum: 2026-07-05*
|
||
*Version: 1.0 (MVP-specifikation)*
|