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
289 lines
10 KiB
HTML
289 lines
10 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="en">
|
|
<head>
|
|
<meta charset="UTF-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
<title>Landvex Intelligence Fusion Engine (LIFE)</title>
|
|
<link rel="stylesheet" href="/assets/css/landvex-complete.css">
|
|
<style>
|
|
* { margin: 0; padding: 0; box-sizing: border-box; }
|
|
body { font-family: -apple-system, BlinkMacSystemFont, 'Inter', sans-serif; background: #0f172a; color: #e2e8f0; line-height: 1.6; }
|
|
.header { background: #1e293b; border-bottom: 1px solid #334155; padding: 24px; display: flex; justify-content: space-between; align-items: center; }
|
|
.header h1 { font-size: 1.5rem; color: #f8fafc; }
|
|
.header .subtitle { color: #94a3b8; font-size: 0.85rem; }
|
|
.nav { background: #1e293b; border-bottom: 1px solid #334155; padding: 0 40px; display: flex; gap: 16px; }
|
|
.nav a { color: #94a3b8; text-decoration: none; padding: 24px; font-size: 0.85rem; transition: all 0.2s; border-bottom: 2px solid transparent; }
|
|
.nav a:hover, .nav a.active { color: #38bdf8; border-bottom-color: #38bdf8; }
|
|
.main { padding: 40px; max-width: 1400px; margin: 0 auto; }
|
|
.philosophy { background: #1e293b; border-radius: var(--radius-md); padding: 32px; margin-bottom: 32px; border-left: 4px solid #38bdf8; }
|
|
.philosophy h2 { font-size: 1.25rem; margin-bottom: 24px; color: #f8fafc; }
|
|
.philosophy p { color: #cbd5e1; margin-bottom: 12px; }
|
|
.philosophy .process { display: grid; grid-template-columns: repeat(4, 1fr); gap: 16px; margin-top: 20px; }
|
|
.process-step { background: #334155; border-radius: var(--radius-md); padding: 16px; text-align: center; }
|
|
.process-step .number { font-size: 1.5rem; font-weight: 700; color: #38bdf8; }
|
|
.process-step .name { font-size: 0.9rem; color: #f8fafc; margin-top: 8px; }
|
|
.process-step .desc { font-size: 0.75rem; color: #94a3b8; margin-top: 4px; }
|
|
.stats-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); gap: 16px; margin-bottom: 32px; }
|
|
.stat-card { background: #1e293b; border-radius: var(--radius-md); padding: 24px; border: 1px solid #334155; }
|
|
.stat-card h3 { font-size: 0.75rem; color: #94a3b8; margin-bottom: 8px; text-transform: uppercase; letter-spacing: 0.5px; }
|
|
.stat-card .value { font-size: 2rem; font-weight: 700; color: #f8fafc; }
|
|
.stat-card .change { font-size: 0.8rem; margin-top: 4px; }
|
|
.stat-card .change.positive { color: #4ade80; }
|
|
.section { background: #1e293b; border-radius: var(--radius-md); padding: 24px; margin-bottom: 24px; border: 1px solid #334155; }
|
|
.section h2 { font-size: 1.1rem; margin-bottom: 24px; color: #f8fafc; }
|
|
.data-source { display: flex; align-items: center; gap: 16px; padding: 12px; background: #334155; border-radius: var(--radius-md); margin-bottom: 8px; }
|
|
.data-source .icon { width: 40px; height: 40px; background: #475569; border-radius: var(--radius-md); display: flex; align-items: center; justify-content: center; font-size: 1.2rem; }
|
|
.data-source .info { flex: 1; }
|
|
.data-source .info h4 { font-size: 0.9rem; color: #f8fafc; }
|
|
.data-source .info p { font-size: 0.75rem; color: #94a3b8; }
|
|
.data-source .status { font-size: 0.75rem; padding: 24px; border-radius: var(--radius-sm); }
|
|
.data-source .status.active { background: #166534; color: #4ade80; }
|
|
.event-card { background: #334155; border-radius: var(--radius-md); padding: 16px; margin-bottom: 12px; }
|
|
.event-card h4 { font-size: 0.95rem; margin-bottom: 8px; }
|
|
.event-card .meta { font-size: 0.8rem; color: #94a3b8; margin-bottom: 8px; }
|
|
.event-card .severity { display: inline-block; padding: 24px; border-radius: var(--radius-sm); font-size: 0.7rem; font-weight: 600; }
|
|
.event-card .severity.high { background: #7f1d1d; color: #fca5a5; }
|
|
.event-card .severity.medium { background: #713f12; color: #fde047; }
|
|
.event-card .severity.low { background: #1e3a5f; color: #93c5fd; }
|
|
.confidence-bar { background: #334155; border-radius: var(--radius-sm); height: 8px; overflow: hidden; margin-top: 8px; }
|
|
.confidence-bar .fill { height: 100%; border-radius: var(--radius-sm); }
|
|
.confidence-bar .fill.high { background: #4ade80; }
|
|
.confidence-bar .fill.medium { background: #fbbf24; }
|
|
.confidence-bar .fill.low { background: #f87171; }
|
|
.grid-2 { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }
|
|
.insight-card { background: #334155; border-radius: var(--radius-md); padding: 16px; margin-bottom: 12px; }
|
|
.insight-card h4 { font-size: 0.9rem; margin-bottom: 8px; color: #38bdf8; }
|
|
.insight-card p { font-size: 0.85rem; color: #cbd5e1; }
|
|
</style>
|
|
</head>
|
|
<body>
|
|
|
|
<div class="header">
|
|
<div>
|
|
<h1>Landvex Intelligence Fusion Engine</h1>
|
|
<div class="subtitle">Continuous Multi-Source Intelligence Platform</div>
|
|
</div>
|
|
<div>
|
|
<div>Data Streams</div>
|
|
<div>45</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="nav">
|
|
<a href="/admin/" >← Admin</a>
|
|
<a href="#" class="active">Dashboard</a>
|
|
<a href="#sources">Sources</a>
|
|
<a href="#events">Events</a>
|
|
<a href="#analysis">Analysis</a>
|
|
</div>
|
|
|
|
<div class="main">
|
|
|
|
<div class="philosophy">
|
|
<h2>Evidence Before Opinion</h2>
|
|
<p>The system never starts with a conclusion and looks for support. Instead, every analysis builds from observable signals upward.</p>
|
|
<div class="process">
|
|
<div class="process-step">
|
|
<div class="number">1</div>
|
|
<div class="name">Gather Facts</div>
|
|
<div class="desc">Collect observable signals from all available sources</div>
|
|
</div>
|
|
<div class="process-step">
|
|
<div class="number">2</div>
|
|
<div class="name">Weigh Sources</div>
|
|
<div class="desc">Evaluate independent sources and their reliability</div>
|
|
</div>
|
|
<div class="process-step">
|
|
<div class="number">3</div>
|
|
<div class="name">Identify Patterns</div>
|
|
<div class="desc">Detect statistical associations and correlations</div>
|
|
</div>
|
|
<div class="process-step">
|
|
<div class="number">4</div>
|
|
<div class="name">Generate Hypotheses</div>
|
|
<div class="desc">Form cautious hypotheses about possible causes</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="stats-grid">
|
|
<div class="stat-card">
|
|
<h3>Projects Monitored</h3>
|
|
<div class="value">1,250</div>
|
|
<div class="change positive">With context graphs</div>
|
|
</div>
|
|
<div class="stat-card">
|
|
<h3>Data Sources</h3>
|
|
<div class="value">6</div>
|
|
<div class="change">Categories active</div>
|
|
</div>
|
|
<div class="stat-card">
|
|
<h3>Events Detected (24h)</h3>
|
|
<div class="value">12</div>
|
|
<div class="change positive">Auto-detected</div>
|
|
</div>
|
|
<div class="stat-card">
|
|
<h3>Avg Confidence</h3>
|
|
<div class="value">82%</div>
|
|
<div class="change positive">Multi-source fusion</div>
|
|
</div>
|
|
<div class="stat-card">
|
|
<h3>Streams Monitored</h3>
|
|
<div class="value">45</div>
|
|
<div class="change">Continuous ingestion</div>
|
|
</div>
|
|
<div class="stat-card">
|
|
<h3>Predictions Made</h3>
|
|
<div class="value">3,400</div>
|
|
<div class="change">With uncertainty intervals</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="section">
|
|
<h2>Continuous Data Acquisition</h2>
|
|
|
|
<div class="data-source">
|
|
<div class="icon"></div>
|
|
<div class="info">
|
|
<h4>Official Project Information</h4>
|
|
<p>Development agency portals, government databases, procurement portals, evaluation reports</p>
|
|
</div>
|
|
<div class="status active">Active</div>
|
|
</div>
|
|
|
|
<div class="data-source">
|
|
<div class="icon"></div>
|
|
<div class="info">
|
|
<h4>News Intelligence</h4>
|
|
<p>International, national, regional news, RSS feeds, development and humanitarian news</p>
|
|
</div>
|
|
<div class="status active">Active</div>
|
|
</div>
|
|
|
|
<div class="data-source">
|
|
<div class="icon"></div>
|
|
<div class="info">
|
|
<h4>Public Communications</h4>
|
|
<p>Press releases, official websites, social media, research publications</p>
|
|
</div>
|
|
<div class="status active">Active</div>
|
|
</div>
|
|
|
|
<div class="data-source">
|
|
<div class="icon"></div>
|
|
<div class="info">
|
|
<h4>Geospatial Intelligence</h4>
|
|
<p>Satellite imagery, night lights, land cover, construction detection, environmental monitoring</p>
|
|
</div>
|
|
<div class="status active">Active</div>
|
|
</div>
|
|
|
|
<div class="data-source">
|
|
<div class="icon"></div>
|
|
<div class="info">
|
|
<h4>QUIXZOOM Reality Network</h4>
|
|
<p>Field observations, photographic evidence, infrastructure inspections, community observations</p>
|
|
</div>
|
|
<div class="status active">Active</div>
|
|
</div>
|
|
|
|
<div class="data-source">
|
|
<div class="icon"><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><path d="M2 12L6 8L9 11L14 5" stroke="#22c55e" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/><path d="M10 5H14V9" stroke="#22c55e" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/></svg></div>
|
|
<div class="info">
|
|
<h4>Open Data</h4>
|
|
<p>Population, weather, climate, health indicators, economic data, conflict datasets</p>
|
|
</div>
|
|
<div class="status active">Active</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="grid-2">
|
|
<div class="section">
|
|
<h2>Recent Events Detected</h2>
|
|
|
|
<div class="event-card">
|
|
<h4> Severe flooding in Mogadishu region</h4>
|
|
<div class="meta">Somalia • June 15, 2026 • Natural Disaster</div>
|
|
<p>Heavy rainfall caused flooding affecting infrastructure accessibility</p>
|
|
<div>
|
|
<span class="severity high">High Severity</span>
|
|
<span>Confidence: 92%</span>
|
|
</div>
|
|
<div class="confidence-bar">
|
|
<div class="fill high"></div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="event-card">
|
|
<h4><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><path d="M2 14H14M4 14V8L8 4L12 8V14" stroke="#666" stroke-width="1.5" stroke-linejoin="round"/><path d="M6 14V10H10V14" stroke="#666" stroke-width="1.5"/></svg> Construction delay due to seasonal rainfall</h4>
|
|
<div class="meta">Nigeria • May 20, 2026 • Construction Delay</div>
|
|
<p>Road rehabilitation delayed due to extended rainy season</p>
|
|
<div>
|
|
<span class="severity medium">Medium Severity</span>
|
|
<span>Confidence: 78%</span>
|
|
</div>
|
|
<div class="confidence-bar">
|
|
<div class="fill medium"></div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="section">
|
|
<h2>Recent Fusion Insights</h2>
|
|
|
|
<div class="insight-card">
|
|
<h4> Mogadishu Primary School</h4>
|
|
<p>Construction delay likely due to flooding + poor drainage</p>
|
|
<div>
|
|
<span>Confidence: 78% • Sources fused: 5</span>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="insight-card">
|
|
<h4> Kampala Water Supply</h4>
|
|
<p>Operational sustainability high based on maintenance records + community feedback</p>
|
|
<div>
|
|
<span>Confidence: 88% • Sources fused: 6</span>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="insight-card">
|
|
<h4> Accra Solar Microgrid</h4>
|
|
<p>24 months continuous operation verified across 4 independent sources</p>
|
|
<div>
|
|
<span>Confidence: 92% • Sources fused: 4</span>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="section">
|
|
<h2>Multi-Signal Confidence Distribution</h2>
|
|
<div>
|
|
<div>
|
|
<div>320</div>
|
|
<div>Very High<br>(90-100%)</div>
|
|
</div>
|
|
<div>
|
|
<div>580</div>
|
|
<div>High<br>(75-89%)</div>
|
|
</div>
|
|
<div>
|
|
<div>280</div>
|
|
<div>Moderate<br>(50-74%)</div>
|
|
</div>
|
|
<div>
|
|
<div>55</div>
|
|
<div>Low<br>(25-49%)</div>
|
|
</div>
|
|
<div>
|
|
<div>15</div>
|
|
<div>Very Low<br>(0-24%)</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</body>
|
|
</html> |