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
243 lines
7.0 KiB
Markdown
243 lines
7.0 KiB
Markdown
# Global Content Network — Landvex/QuiXzoom Transcreation System
|
|
|
|
Ett komplett transcreation-system för globalt innehållshantering över 3 nivåer.
|
|
|
|
## Arkitektur
|
|
|
|
### Nivå 1 — Global "Source of Truth"
|
|
- **landvex.com** & **quixzoom.com**
|
|
- Amerikansk engelska
|
|
- All produktutveckling sker här först
|
|
- Kanonisk SEO-version
|
|
|
|
### Nivå 2 — Nationella sajter
|
|
- quixzoom.se, .de, .nl, .fr, .es, .it, .pl
|
|
- landvex.se, etc.
|
|
- **Transcreation** (inte ren översättning)
|
|
- Lokal valuta, exempel, kundcase, lagar, kontaktvägar
|
|
|
|
### Nivå 3 — Regionala hubbar
|
|
- quixzoom.asia, landvex.asia
|
|
- Flerspråkiga nav: /zh-cn/, /zh-tw/, /ja/, /ko/, /th/, /vi/, /id/, /ms/, /hi/
|
|
|
|
## Kom igång
|
|
|
|
### 1. Installation
|
|
|
|
```bash
|
|
cd landvex-quixzoom-cms
|
|
npm install
|
|
```
|
|
|
|
### 2. Konfiguration
|
|
|
|
```bash
|
|
cp .env.example .env
|
|
# Redigera .env med dina värden:
|
|
# - OPENAI_API_KEY (för AI-transcreation)
|
|
# - JWT_SECRET (för autentisering)
|
|
# - ADMIN_EMAIL / ADMIN_PASSWORD
|
|
```
|
|
|
|
### 3. Databas
|
|
|
|
```bash
|
|
# Skapa tabeller
|
|
npm run db:migrate
|
|
|
|
# Ladda exempeldata
|
|
npm run db:seed
|
|
```
|
|
|
|
### 4. Starta servern
|
|
|
|
```bash
|
|
# Utveckling
|
|
npm run dev
|
|
|
|
# Produktion
|
|
npm run build
|
|
npm start
|
|
```
|
|
|
|
Servern startar på `http://localhost:3000`
|
|
|
|
## API Endpoints
|
|
|
|
### Sidor
|
|
- `GET /api/pages` — Lista alla sidor
|
|
- `GET /api/pages/:id` — Hämta specifik sida
|
|
- `POST /api/pages` — Skapa ny sida
|
|
- `PUT /api/pages/:id` — Uppdatera sida (triggar transcreation-workflow)
|
|
|
|
### Översättningar
|
|
- `GET /api/pages/:id/translations` — Hämta översättningar för sida
|
|
- `POST /api/translations/:id/adapt` — Lokal anpassning
|
|
- `POST /api/translations/:id/approve` — Regional granskning
|
|
- `POST /api/translations/:id/publish` — Publicera
|
|
|
|
### Workflow
|
|
- `GET /api/pages/:id/workflow` — Se workflow-status
|
|
- `POST /api/pages/:id/translate` — Köa översättningar
|
|
- `POST /api/jobs/:id/process` — Bearbeta översättningsjobb
|
|
|
|
### SEO
|
|
- `GET /api/pages/:id/seo` — Generera SEO-headers
|
|
- `POST /api/pages/:id/seo/audit` — Kör SEO-granskning
|
|
- `GET /api/sitemap/:domain` — Generera sitemap.xml
|
|
- `GET /api/robots/:domain` — Generera robots.txt
|
|
|
|
### Analys
|
|
- `GET /api/analytics/translation-status` — Översättningsstatus
|
|
- `GET /api/analytics/seo-scores` — SEO-poäng
|
|
|
|
### Ordlista
|
|
- `GET /api/glossary` — Lista termer
|
|
- `POST /api/glossary` — Lägg till term
|
|
|
|
## CLI-skript
|
|
|
|
### Batch-översättning
|
|
```bash
|
|
# Köa alla föråldrade översättningar
|
|
npm run translate:batch
|
|
|
|
# Bearbeta direkt
|
|
npm run translate:batch -- --process
|
|
|
|
# Endast ett varumärke
|
|
npm run translate:batch -- --quixzoom --process
|
|
```
|
|
|
|
### Innehållssynk
|
|
```bash
|
|
# Synka ändringar senaste 24h
|
|
npm run content:sync
|
|
|
|
# Med automatisk köning
|
|
npm run content:sync -- --auto-queue
|
|
|
|
# Specifikt tidsintervall
|
|
npm run content:sync -- --hours=48 --auto-queue
|
|
```
|
|
|
|
### SEO-granskning
|
|
```bash
|
|
# Kör SEO-audit
|
|
npm run seo:audit
|
|
|
|
# Generera sitemaps
|
|
npm run seo:audit -- --sitemaps
|
|
|
|
# Endast specifikt språk
|
|
npm run seo:audit -- --lang=sv-SE
|
|
```
|
|
|
|
## Transcreation-Workflow
|
|
|
|
När en .com-sida ändras:
|
|
|
|
1. **Markera föråldrad** — Alla översättningar markeras som "outdated"
|
|
2. **AI-generering** — GPT-4o skapar nya förslag med kulturell anpassning
|
|
3. **Lokal anpassning** — Lokala redaktörer anpassar exempel, case, kontakter
|
|
4. **Regional granskning** — Godkännande av regional chef
|
|
5. **Publicering** — Live på respektive sajt
|
|
|
|
## Ordlista & Terminologi
|
|
|
|
Systemet har en central ordlista som säkerställer konsekvent översättning av:
|
|
- Produktnamn (QuiXzoom Pro, Landvex Enterprise)
|
|
- Tekniska termer
|
|
- Juridiska begrepp
|
|
- Marknadsföringstermer
|
|
|
|
Varje term har godkända översättningar per språk och varumärke.
|
|
|
|
## SEO-funktioner
|
|
|
|
- **hreflang-taggar** — Automatisk generering för alla språkversioner
|
|
- **Canonical URLs** — Korrekt canonicalisering per domän
|
|
- **Schema.org** — Strukturerad data på alla språk
|
|
- **Open Graph** — Sociala medier-anpassade taggar
|
|
- **Sitemaps** — XML-sitemaps med hreflang per domän
|
|
|
|
## Språkstöd
|
|
|
|
### Nationella (Tier 2)
|
|
| Språk | Domän | Valuta | Prompt |
|
|
|-------|-------|--------|--------|
|
|
| Svenska | .se | SEK | Informellt "du", svenska regler |
|
|
| Tyska | .de | EUR | Formellt "Sie", Tysk grundlighet |
|
|
| Nederländska | .nl | EUR | Direkt, rak kommunikation |
|
|
| Franska | .fr | EUR | Elegans, formellt "vous" |
|
|
| Spanska | .es | EUR | Värmefull, relationsskapande |
|
|
| Italienska | .it | EUR | Uttrycksfull, passionerad |
|
|
| Polska | .pl | PLN | Detaljerad, faktaspäckad |
|
|
|
|
### Regionala (Tier 3)
|
|
| Språk | Valuta | Kulturell kontext |
|
|
|-------|--------|-------------------|
|
|
| Förenklad kinesiska | CNY | Formell, respektfull |
|
|
| Traditionell kinesiska | TWD | Hökig, formell |
|
|
| Japanska | JPY | Keigo, extremt artig |
|
|
| Koreanska | KRW | Hierarkisk, respektfull |
|
|
| Thailändska | THB | Relation först, affärer sen |
|
|
| Vietnamesiska | VND | Värmefull, respektfull |
|
|
| Indonesiska | IDR | Vänlig, tillgänglig |
|
|
| Malajiska | MYR | Inkluderande, multikulturell |
|
|
| Hindi | INR | Hinglish för tech |
|
|
|
|
## Produktionsberedskap
|
|
|
|
### ✅ Vad som fungerar
|
|
- [x] Komplett databasschema med versionering
|
|
- [x] 3-nivå arkitektur (global/national/regional)
|
|
- [x] AI-transcreation med GPT-4o
|
|
- [x] Transcreation-workflow (5 steg)
|
|
- [x] SEO-hantering (hreflang, canonical, Schema.org)
|
|
- [x] Ordlista med språkspecifika termer
|
|
- [x] REST API för all hantering
|
|
- [x] Admin-dashboard (HTML/JS)
|
|
- [x] CLI-verktyg för batch-jobb
|
|
- [x] SEO-audit och rapportering
|
|
|
|
### ⚠️ Vad som saknas för produktion
|
|
- [ ] **Autentisering** — JWT-implementering är grundläggande
|
|
- [ ] **Användarhantering** — Registrering, roller, behörigheter
|
|
- [ ] **Redis/BullMQ** — Jobbköer (just nu synkron bearbetning)
|
|
- [ ] **Bildhantering** — Uppladdning, CDN, lokaliserade bilder
|
|
- [ ] **Preview-miljö** — Förhandsgranskning innan publicering
|
|
- [ ] **Webhook-stöd** — Notifieringar till externa system
|
|
- [ ] **Backup-strategi** — Databas-backuper
|
|
- [ ] **Övervakning** — Loggning, metrics, alerting
|
|
- [ ] **CDN-integration** — CloudFlare, Fastly, etc.
|
|
- [ ] **CI/CD** — Automatisk deployment
|
|
- [ ] **Tester** — Unit-tester, integrationstester
|
|
- [ ] **Dokumentation** — API-docs, användarguider
|
|
|
|
### 🔧 Rekommenderade förbättringar
|
|
1. **Cachning** — Redis för API-respons
|
|
2. **Rate limiting** — Skydd mot överbelastning
|
|
3. **Sök** — Elasticsearch för innehållssök
|
|
4. **Versionering** — Git-liknande historik för innehåll
|
|
5. **A/B-testning** — Olika versioner per marknad
|
|
6. **Feedback-loop** — Användardata förbättrar AI-översättningar
|
|
|
|
## Miljövariabler
|
|
|
|
| Variabel | Beskrivning | Standard |
|
|
|----------|-------------|----------|
|
|
| `DATABASE_URL` | SQLite-databasfil | `./data/content.db` |
|
|
| `OPENAI_API_KEY` | OpenAI API-nyckel | *(krävs)* |
|
|
| `JWT_SECRET` | Hemligt för JWT | *(krävs)* |
|
|
| `REDIS_URL` | Redis för köer | *(valfritt)* |
|
|
| `ADMIN_EMAIL` | Admin-e-post | `admin@landvex.com` |
|
|
| `ADMIN_PASSWORD` | Admin-lösenord | *(krävs)* |
|
|
| `RESEND_API_KEY` | E-postutskick | *(valfritt)* |
|
|
| `PORT` | Serverport | `3000` |
|
|
| `NODE_ENV` | Miljö | `development` |
|
|
|
|
## Licens
|
|
|
|
Proprietär — Landvex/QuiXzoom
|