landvex: Fixar och tester klara för alla komponenter

- Datafabrik: Dockerfile fix, agentorkestrering fungerar
- Vision: Identify-modell, FAISS, OCR alla testade
- API: Alla 7 integrationstester passerade
- Upplösare: Entitetsupplösning verifierad
This commit is contained in:
Bernt
2026-07-05 06:41:32 +00:00
parent f4f853d94b
commit aee0f09db8
19583 changed files with 1450867 additions and 1153 deletions
+218
View File
@@ -0,0 +1,218 @@
# Decision Intelligence v2.0 — Beslutsintelligens
> Status: EVOLUTION
> Uppdaterad av: Erik Svensson
> Datum: 2026-07-03
> Föregångare: CONTROL_INTELLIGENCE_v1.0.md, DECISION_MODEL_v1.0.md
---
## Den röda tråden
> **LandveX omvandlar observationer av den byggda miljön till verifierade beslutsunderlag för olika typer av användare.**
Användarens roll avgör vilket beslut som ska fattas:
| Roll | Beslut |
|------|--------|
| Kommun | Prioritera investeringar |
| Fastighetsägare | Planera underhåll |
| Entreprenör | Identifiera marknadsmöjligheter |
| Företagare | Bedöma etableringspotential |
| Driftorganisation | Planera nästa åtgärd |
**En plattform. Samma kunskapsbas. Olika analyser.**
---
## Från kontroll till beslut
| Nivå | Fråga | Svar |
|------|-------|------|
| 1 | Vad ser vi? | Observation |
| 2 | Vad betyder det? | Evidence → Finding |
| 3 | Vad behöver göras? | Decision |
| 4 | Vem kan skapa värde? | **Opportunity** |
---
## Decision Domains
Generisk pipeline. Samma struktur. Olika regler och datakällor.
```
Infrastructure → Vägar, broar, offentlig miljö
Property → Fastigheter, fasader, tak
Business → Etablering, marknad
Retail → Butiker, restauranger, tjänster
Public Safety → Klotter, belysning, skyltar
Environment → Grönområden, klimat
Energy → Energiförbrukning, effektivisering
Mobility → Trafik, kollektivtrafik, parkering
```
Varje domän använder:
- **Samma pipeline:** Observation → Evidence → Finding → Decision → Impact
- **Olika regler:** Viktning, tröskelvärden, prioritering
- **Olika datakällor:** Domain-specifika dataset
---
## Objektmodell (utökad)
```
Observation
Evidence
Finding
Decision
Impact
Opportunity ← NYTT
```
### Opportunity Object
Exempel:
```yaml
Opportunity:
Typ: Facade Maintenance
Location: Östermalm
Confidence: 91%
Potential: High
Evidence: 247 observationer
Estimated Market: ≈ 1825 fastigheter
```
```yaml
Opportunity:
Typ: Window Cleaning
Area: Nacka
Evidence: Många byggnader med tydliga tecken på smutsiga glasytor
Recommendation: Hög sannolik efterfrågan på tjänsten
```
**Viktigt:** Opportunity är en **indikator**, inte ett bevis på att ett specifikt uppdrag kommer att säljas.
---
## Användarscenarier
### Kommun
**Fråga:** Vilka vägar ska vi prioritera nästa kvartal?
**Svar:**
- Prioriteringslista
- Riskbedömning
- Kostnadsuppskattning
- Evidens
- Kartvy
### Fastighetsägare
**Fråga:** Vilka byggnader behöver underhåll först?
**Svar:**
- Tak
- Fasader
- Fönster
- Belysning
- Historik
### Entreprenör
**Fråga:** Var finns det jobb?
**Svar:**
- Områden med många slitna tak
- Områden med mycket klotter
- Områden med många trasiga skyltar
- Områden där gatubelysning ofta felanmäls
**Inte en lista över kunder — en indikation på var behov sannolikt finns.**
### Företagare
**Fråga:** Var bör jag etablera mig?
**Svar:** Kombinerad analys av:
- Demografi
- Konkurrens
- Flöden
- Observationer
- Infrastruktur
- Historik
Med tydlig motivering för etableringspotential.
---
## Decision Pipeline (generisk)
```
Observation
↓ [Verifiering]
Evidence
↓ [Analys]
Finding
↓ [Bedömning]
Decision
↓ [Konsekvens]
Impact
↓ [Marknad]
Opportunity
```
Fungerar lika bra för:
- Vägunderhåll
- Fasadrenovering
- Etableringsanalys
- Stadsplanering
- Energibesparingar
---
## Arkitekturprincip
> **Bygg inte fem olika produkter. Bygg en gemensam observations- och beslutsplattform.**
| Aspekt | Tillvägagångssätt |
|--------|-------------------|
| Datamodell | Gemensam |
| Beslutslogik | Gemensam pipeline |
| Domänregler | Konfigurerbara per Domain |
| Presentation | Anpassad per användarroll |
| Skalning | Tekniskt och affärsmässigt utan duplicering |
---
## Relation till andra moduler
| Modul | Roll |
|-------|------|
| Reality Intelligence | Insamling och verifiering |
| Knowledge Intelligence | Lagring och strukturering |
| Decision Intelligence | **Beslutsstöd och analys** |
| Mission Intelligence | Utförande och uppföljning |
| Economic Intelligence | Kostnader och värde |
| Learning Intelligence | Förbättring över tid |
| Market Intelligence | Marknads- och etableringsanalys |
---
## Nästa steg
1. Implementera Decision Domains som konfigurerbara enheter
2. Definiera Opportunity Object i datamodellen
3. Bygga domänspecifika regler för Infrastructure och Property
4. Validera med pilotkunder från varje användarroll
---
## Relaterade dokument
- `DECISION_MODEL_v1.0.md` — Ursprunglig beslutsstruktur
- `DECISION_PIPELINE_v1.0.md` — Pipeline-detaljer
- `MARKET_INTELLIGENCE_v1.0.md` — Modul #7
- `LANDVEX_DESIGN_CONSTITUTION.md` — Övergripande designprinciper
+176
View File
@@ -0,0 +1,176 @@
# Iconography Rules — LandveX Design System
## Core Principle
**No generic emojis. Ever.**
Generic emojis (🔒 💳 🆔 📋 ✅ ❌ ⚠️) are:
- Visually inconsistent across platforms
- Not controllable (Apple, Google, Samsung render differently)
- Unprofessional in enterprise contexts
- Impossible to brand
## Rule: Custom SVG Icons Only
| ❌ Forbidden | ✅ Required |
|-------------|-------------|
| 🔒 Lock | Custom lock icon from icon library |
| 💳 Card | Custom payment icon |
| 🆔 ID | Custom identity/verification icon |
| 📋 Clipboard | Custom document icon |
| ✅ Check | Custom checkmark icon |
| ❌ Cross | Custom X/close icon |
| ⚠️ Warning | Custom warning triangle |
| 📧 Email | Custom envelope icon |
| 📱 Phone | Custom phone icon |
| 🗺️ Map | Custom map pin icon |
## Implementation
### Option 1: Lucide Icons (recommended)
```bash
npm install lucide-react
```
```tsx
import { Lock, CreditCard, Shield, FileText, Check, X, AlertTriangle, Mail, Phone, MapPin } from 'lucide-react';
// Use instead of emojis
<Lock className="icon-security" />
<CreditCard className="icon-payment" />
<Shield className="icon-verified" />
```
### Option 2: Custom SVG
```tsx
const IconLock = () => (
<svg viewBox="0 0 24 24" className="icon">
<rect x="5" y="11" width="14" height="10" rx="2" />
<path d="M7 11V7a5 5 0 0110 0v4" />
</svg>
);
```
## Icon Categories
### Security & Trust
| Purpose | Lucide Icon | Class |
|---------|-------------|-------|
| Secure/Locked | `Lock` | `icon-security` |
| Verified | `ShieldCheck` | `icon-verified` |
| GDPR/Compliance | `FileCheck` | `icon-compliance` |
| Identity | `Fingerprint` | `icon-identity` |
### Payment & Financial
| Purpose | Lucide Icon | Class |
|---------|-------------|-------|
| Payment | `CreditCard` | `icon-payment` |
| Payout | `Banknote` | `icon-payout` |
| Credits | `Coins` | `icon-credits` |
| Invoice | `Receipt` | `icon-invoice` |
### Communication
| Purpose | Lucide Icon | Class |
|---------|-------------|-------|
| Email | `Mail` | `icon-email` |
| SMS | `MessageSquare` | `icon-sms` |
| Notification | `Bell` | `icon-notification` |
| Support | `Headphones` | `icon-support` |
### Status
| Purpose | Lucide Icon | Class |
|---------|-------------|-------|
| Success | `CheckCircle2` | `icon-success` |
| Error | `XCircle` | `icon-error` |
| Warning | `AlertTriangle` | `icon-warning` |
| Info | `Info` | `icon-info` |
| Pending | `Clock` | `icon-pending` |
### Actions
| Purpose | Lucide Icon | Class |
|---------|-------------|-------|
| Upload | `Upload` | `icon-upload` |
| Download | `Download` | `icon-download` |
| Edit | `Pencil` | `icon-edit` |
| Delete | `Trash2` | `icon-delete` |
| Search | `Search` | `icon-search` |
| Filter | `Filter` | `icon-filter` |
## quiXzoom-Specific Icons
| Feature | Icon | Usage |
|---------|------|-------|
| Camera/Mission | `Camera` | Mission cards |
| Location | `MapPin` | Mission location |
| Distance | `Navigation` | Distance indicator |
| Time | `Clock` | Estimated time |
| Photos | `Image` | Photo count |
| Credits | `Coins` | Credit reward |
| Approval | `CheckCircle2` | Approval status |
| Payout | `Banknote` | Weekly payout |
## Styling
```css
.icon {
width: 20px;
height: 20px;
stroke-width: 2;
stroke-linecap: round;
stroke-linejoin: round;
}
.icon-small { width: 16px; height: 16px; }
.icon-large { width: 24px; height: 24px; }
.icon-xl { width: 32px; height: 32px; }
/* Status colors */
.icon-success { color: var(--color-success-500); }
.icon-error { color: var(--color-danger-500); }
.icon-warning { color: var(--color-warning-500); }
.icon-info { color: var(--color-info-500); }
```
## Migration Guide
### Step 1: Find all emojis
```bash
grep -r "[🔒💳🆔📋✅❌⚠️📧📱🗺️]" src/
```
### Step 2: Replace with icons
```tsx
// Before
<span>🔒 GDPR Compliant</span>
// After
<span><Lock className="icon icon-security" /> GDPR Compliant</span>
```
### Step 3: Verify
- No emojis in source code
- All icons from approved library
- Consistent sizing and styling
## Enforcement
**ESLint Rule:**
```json
{
"rules": {
"no-restricted-syntax": [
"error",
{
"selector": "Literal[value=/[\\u{1F300}-\\u{1F9FF}]/u]",
"message": "No emojis allowed. Use Lucide icons instead."
}
]
}
}
```
## Status
**Rule:** ✅ LOCKED
**Migration:** 🔄 IN PROGRESS (quixzoom.com)
**Target:** Zero emojis by 2026-07-05
+160
View File
@@ -0,0 +1,160 @@
# Market Intelligence v1.0 — LandveX Intelligence Module #7
> Status: CONCEPT
> Beslutad av: Erik Svensson
> Datum: 2026-07-03
---
## Position i Intelligence-arkitekturen
```
LandveX Intelligence
├── 1. Reality Intelligence
├── 2. Knowledge Intelligence
├── 3. Decision Intelligence
├── 4. Mission Intelligence
├── 5. Economic Intelligence
├── 6. Learning Intelligence
└── 7. Market Intelligence ← NY
```
**Princip:** Market Intelligence är en **egen modul**, inte en del av kärnan. Den bygger ovanpå samma plattform (karta, datamodell, API) men löser ett separat beslutsdomain.
---
## Vad Market Intelligence svarar på
För ett område (stadsdel, kvarter, koordinat):
### Demografi
- Befolkning (total, per km²)
- Åldersfördelning
- Hushållsstruktur
- Inkomstnivå (om tillgänglig och lämplig)
- Dagbefolkning vs nattbefolkning
### Kommersiell struktur
- Antal restauranger
- Antal frisörer
- Antal bilverkstäder
- Antal gym
- Antal livsmedelsbutiker
- Antal laddstationer
- Antal parkeringsplatser
- [Utökas per branschbehov]
### Infrastruktur
- Vägar och framkomlighet
- Kollektivtrafik
- Skolor
- Sjukhus/vårdcentraler
- Parker och grönområden
- Industriområden
---
## Index — det användaren ser
Exempel:
```
Hair Salon Index
Efterfrågan: 72
Utbud: 31
Mättnad: 43
Potential: 89/100
```
```
Auto Repair Index
Utbud: 95
Efterfrågan: 48
Mättnad: 96
Potential: 18/100
```
**Princip:** Index är lättare att förstå än rå statistik. Samma skala (0-100) oavsett bransch.
---
## Transparens — varför, inte bara vad
❌ Undvik: "Öppna en frisör här."
✅ Istället:
```
Potential: 89
Varför?
• 18 000 invånare
• Hög befolkningstillväxt
• Endast 2 frisörer inom 2 km
• Många barnfamiljer
• Låg konkurrens jämfört med liknande områden
```
Användaren bedömer själv. Systemet visar data, inte domar.
---
## Koppling till LandveX-kartan
Samma karta, olika lager — användaren slår på/av:
| Lager | Modul |
|-------|-------|
| Infrastruktur | Reality Intelligence |
| Observationer | Mission Intelligence |
| Decision Cases | Decision Intelligence |
| Hotspots | Learning Intelligence |
| **Demografi** | **Market Intelligence** |
| **Kommersiella index** | **Market Intelligence** |
---
## Kommunikation — viktig försiktighet
Ett "Frisörindex 89" är en **analytisk indikator**, inte en garanti.
**Officiell formulering:**
> "LandveX visar områden där tillgängliga data indikerar högre eller lägre etableringspotential utifrån de faktorer som ingår i modellen."
Affärsframgång påverkas också av:
- Lokalhyra
- Koncept och kvalitet
- Marknadsföring
- Konkurrenters kvalitet (inte bara kvantitet)
---
## Framtida produktfamilj
På sikt kan detta bli tre separata erbjudanden på samma plattform:
| Produkt | Fokus | Moduler |
|---------|-------|---------|
| **LandveX Infrastructure Intelligence** | Vägar, byggnader, offentlig miljö | Reality + Mission |
| **LandveX Market Intelligence** | Etableringsanalyser, demografi, kommersiella index | Market |
| **LandveX Operations Intelligence** | Drift, uppdrag, beslutsstöd | Decision + Economic + Learning |
**Fördel:** Samma karta, samma datamodell, samma API — olika beslutstyper.
---
## Nästa steg (ej prioriterat)
1. Definiera datakällor för demografi och kommersiell data
2. Bygga index-algoritm (viktning av faktorer)
3. Prototyp för ett pilotområde
4. Validering mot verkliga etableringar
---
## Relaterade dokument
- `DECISION_MODEL_v1.0.md` — Beslutsstruktur
- `DECISION_PIPELINE_v1.0.md` — Pipeline för alla Intelligence-moduler
- `LANDVEX_DESIGN_CONSTITUTION.md` — Designprinciper