security: Add proper authentication, RBAC, and tenant isolation
- Add password hashing with bcrypt - Add AuthService with proper login - Add password strength validation - Add RBAC middleware (AdminOnly, ManagerOrAdmin) - Add tenant isolation middleware - Update CRM handler with tenant filtering - Add JWT fallback for development mode - Add user context helpers - Build successful
This commit is contained in:
@@ -0,0 +1,122 @@
|
||||
# QUIXZOOM — Video Intelligence Architecture
|
||||
**Låst:** 2026-06-21, Erik Svensson
|
||||
|
||||
---
|
||||
|
||||
## Kärninsikt (LÅST)
|
||||
|
||||
Video är inte produkten. Video är råformatet.
|
||||
Produkten är geospatial evidence.
|
||||
|
||||
"Collect once, analyze forever."
|
||||
Samma råvideo återanalyseras när nya affärsbehov uppstår — utan att Zoomern behöver åka tillbaka.
|
||||
|
||||
---
|
||||
|
||||
## Vad som behöver extraheras per plats (LÅST)
|
||||
|
||||
- Hur ser byggnaden ut?
|
||||
- Hur används den?
|
||||
- Vilket skick är den i?
|
||||
- Vilka verksamheter finns?
|
||||
- Tom eller aktiv lokal?
|
||||
- Byggarbete?
|
||||
- Skador?
|
||||
- Skyltning?
|
||||
- Tillgänglighetsproblem?
|
||||
|
||||
---
|
||||
|
||||
## Varför video > bilder
|
||||
|
||||
| Bilder | Video |
|
||||
|--------|-------|
|
||||
| En vinkel | Hundratals rutor, flera vinklar |
|
||||
| Manuellt | AI väljer bästa rutor automatiskt |
|
||||
| Statisk | Rörelseparallax → bättre 3D |
|
||||
| Svag OCR | Bättre OCR (läser skyltar) |
|
||||
| 30 bilder = 30 tryckningar | 15 sekunder film = allt |
|
||||
|
||||
---
|
||||
|
||||
## Coverage Score (LÅST — ersätter "antal bilder")
|
||||
|
||||
Uppdraget är färdigt när täckningen är tillräcklig — inte när ett visst antal bilder tagits.
|
||||
|
||||
**Exempel: gatukorsning**
|
||||
- Alla fyra hörn observerade
|
||||
- Byggnadsfasader synliga
|
||||
- Skyltar läsbara
|
||||
- Gatuinfrastruktur synlig
|
||||
|
||||
→ Coverage Score = 100% → Uppdrag klart.
|
||||
|
||||
---
|
||||
|
||||
## Dynamiska uppdrag — AI guidar Zoomern (LÅST)
|
||||
|
||||
AI analyserar live vad som saknas:
|
||||
- "Västra fasaden saknas — filma 15 meter mot nordväst"
|
||||
- "Entrén ej synlig"
|
||||
- "Skylten för suddig — kom närmare"
|
||||
|
||||
Samlar in exakt det som saknas. Inget mer.
|
||||
|
||||
---
|
||||
|
||||
## Behovsstyrda uppdrag per kundtyp
|
||||
|
||||
| Kund | Fokus |
|
||||
|------|-------|
|
||||
| Fastighetsinvesterare | Fasadskick, vakans, byggaktivitet |
|
||||
| Kommun | Belysning, skyltar, vägskador |
|
||||
| Butikskedja | Fotgängarflöden, konkurrenter, exponering |
|
||||
|
||||
---
|
||||
|
||||
## Change Detection över tid (LÅST)
|
||||
|
||||
Kontinuerliga videoupptagningar från samma plats → systemet identifierar automatiskt:
|
||||
- Ny verksamhet / ny skylt
|
||||
- Ny byggställning / renovering
|
||||
- Förfall / rivning / vakans
|
||||
|
||||
Ingen människa behöver rapportera — systemet ser det.
|
||||
|
||||
---
|
||||
|
||||
## Video Pipeline (server-side)
|
||||
|
||||
```
|
||||
Zoomer spelar in 10-20 sek video
|
||||
↓
|
||||
Upload → server
|
||||
↓
|
||||
FFmpeg extraherar nyckelrutor (1-2/sek)
|
||||
↓
|
||||
YOLOv8 per ruta → detections
|
||||
↓
|
||||
Coverage Engine → vad saknas?
|
||||
↓
|
||||
Om coverage < 100% → feedback till Zoomer
|
||||
Om coverage = 100% → strukturerad observation lagras
|
||||
↓
|
||||
Landvex Intelligence uppdateras
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Dataprincipen
|
||||
|
||||
**Spara:** Geolokaliserade nyckelrutor + strukturerade detections
|
||||
**Radera:** Rå videofil efter bearbetning (dataminimering, GDPR)
|
||||
**Behåll:** Observation JSON — kan återanalyseras med framtida modeller
|
||||
|
||||
---
|
||||
|
||||
## Implementation — nästa steg
|
||||
|
||||
1. FFmpeg nyckelrutsextraktion (server-side, gratis)
|
||||
2. Coverage Engine — definierar vad som krävs per uppdragstyp
|
||||
3. Real-time feedback loop i quiXzoom-appen
|
||||
4. Temporal storage — spara observation per koordinat med tidsstämpel
|
||||
Reference in New Issue
Block a user