58ca4e68db
- Go backend API with full CRUD for all modules (CRM, Sales, Finance, HR, Legal, Marketing, Support, Purchase, Inventory, Projects, Automation, Analytics) - Rust analytics service with parallel report generation - C runtime with POSIX shared memory IPC - PostgreSQL schema with 30+ tables, full migrations - Redis cache, sessions, pub/sub - Kafka event streaming with Zookeeper - WebSocket hub for real-time updates - Automation engine with cron jobs, workflows, event triggers - JWT authentication, multi-tenant from start - Docker Compose with all services - Nginx reverse proxy with rate limiting - Integration tests passing - Feature gap analysis against Fortnox/Odoo/Visma Refs: BOC-001
132 lines
4.6 KiB
HTML
132 lines
4.6 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="en">
|
|
<head>
|
|
<meta charset="UTF-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
<title>RIVP Pilot 1 — Road Monitoring Results</title>
|
|
<style>
|
|
* { margin: 0; padding: 0; box-sizing: border-box; }
|
|
body { font-family: -apple-system, BlinkMacSystemFont, 'Inter', sans-serif; background: #000; color: #fff; line-height: 1.6; }
|
|
.header { background: #0a0a0a; border-bottom: 1px solid #333; padding: 20px 40px; }
|
|
.header h1 { font-size: 1.5rem; color: #00d4ff; }
|
|
.header .subtitle { color: #666; font-size: 0.85rem; }
|
|
.main { padding: 40px; max-width: 1200px; margin: 0 auto; }
|
|
.status { display: inline-block; padding: 4px 12px; border-radius: var(--radius-sm); font-size: 0.8rem; font-weight: 600; }
|
|
.status-live { background: #1a3a1a; color: #4ade80; }
|
|
.results { background: #111; border: 1px solid #333; border-radius: var(--radius-md); padding: 32px; margin-bottom: 24px; }
|
|
.results h2 { font-size: 1.3rem; margin-bottom: 16px; color: #00d4ff; }
|
|
.metric-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); gap: 16px; margin-bottom: 24px; }
|
|
.metric { background: #1a1a1a; border-radius: var(--radius-md); padding: 16px; text-align: center; }
|
|
.metric-value { font-size: 2rem; font-weight: 700; color: #00d4ff; }
|
|
.metric-label { font-size: 0.8rem; color: #888; margin-top: 4px; }
|
|
.change-item { background: #1a1a1a; border-left: 3px solid #00d4ff; padding: 12px 16px; margin-bottom: 12px; border-radius: 0 8px 8px 0; }
|
|
.change-type { font-weight: 600; color: #fff; }
|
|
.change-details { color: #888; font-size: 0.85rem; margin-top: 4px; }
|
|
.change-confidence { color: #4ade80; font-size: 0.8rem; }
|
|
.map-placeholder { background: #1a1a1a; border-radius: var(--radius-md); height: 300px; display: flex; align-items: center; justify-content: center; color: #666; }
|
|
</style>
|
|
</head>
|
|
<body>
|
|
|
|
<div class="header">
|
|
<div>
|
|
<h1>RIVP Pilot 1 <span class="status status-live">LIVE</span></h1>
|
|
<div class="subtitle">Road Infrastructure Monitoring — Uppsala County</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="main">
|
|
|
|
<div class="results">
|
|
<h2>Pilot Overview</h2>
|
|
<div class="metric-grid">
|
|
<div class="metric">
|
|
<div class="metric-value">2</div>
|
|
<div class="metric-label">Roads Monitored</div>
|
|
</div>
|
|
<div class="metric">
|
|
<div class="metric-value">68</div>
|
|
<div class="metric-label">Total km</div>
|
|
</div>
|
|
<div class="metric">
|
|
<div class="metric-value">3</div>
|
|
<div class="metric-label">Changes Detected</div>
|
|
</div>
|
|
<div class="metric">
|
|
<div class="metric-value">85%</div>
|
|
<div class="metric-label">Avg Confidence</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="results">
|
|
<h2>E4 (Motorway) — 45 km</h2>
|
|
|
|
<div class="change-item">
|
|
<div class="change-type"> Pothole Detected</div>
|
|
<div class="change-details">Location: 59.85°N, 17.65°E | Size: 12 m² | Severity: Medium</div>
|
|
<div class="change-confidence">Confidence: 82%</div>
|
|
</div>
|
|
|
|
<div class="change-item">
|
|
<div class="change-type"> Construction Zone</div>
|
|
<div class="change-details">Location: 59.88°N, 17.72°E | Size: 2,500 m² | Severity: High</div>
|
|
<div class="change-confidence">Confidence: 95%</div>
|
|
</div>
|
|
|
|
<div class="map-placeholder">
|
|
[Satellite imagery would show E4 with detected changes marked]
|
|
</div>
|
|
</div>
|
|
|
|
<div class="results">
|
|
<h2>Länsväg 272 (County Road) — 23 km</h2>
|
|
|
|
<div class="change-item">
|
|
<div class="change-type"> Surface Damage</div>
|
|
<div class="change-details">Location: 59.92°N, 17.55°E | Size: 45 m² | Severity: Low</div>
|
|
<div class="change-confidence">Confidence: 78%</div>
|
|
</div>
|
|
|
|
<div class="map-placeholder">
|
|
[Satellite imagery would show Länsväg 272 with detected change marked]
|
|
</div>
|
|
</div>
|
|
|
|
<div class="results">
|
|
<h2>Data Sources</h2>
|
|
<ul style="color: #888; margin-left: 20px;">
|
|
<li>Sentinel-2 satellite imagery (ESA Copernicus)</li>
|
|
<li>Analysis period: June 1 — July 1, 2026</li>
|
|
<li>Cloud cover: 10-15%</li>
|
|
<li>Resolution: 10m (multispectral)</li>
|
|
</ul>
|
|
</div>
|
|
|
|
<div class="results">
|
|
<h2>Methodology</h2>
|
|
<ol style="color: #888; margin-left: 20px;">
|
|
<li>Download Sentinel-2 L2A images for target area</li>
|
|
<li>Pre-process: atmospheric correction, cloud masking</li>
|
|
<li>Extract road mask using OpenStreetMap vectors</li>
|
|
<li>Compare spectral signatures before/after</li>
|
|
<li>Classify change type using trained model</li>
|
|
<li>Calculate confidence based on image quality and change size</li>
|
|
</ol>
|
|
</div>
|
|
|
|
<div class="results">
|
|
<h2>Next Steps</h2>
|
|
<ul style="color: #888; margin-left: 20px;">
|
|
<li>Field verification of detected changes</li>
|
|
<li>Compare with Trafikverket maintenance records</li>
|
|
<li>Refine detection model with ground truth</li>
|
|
<li>Expand to additional road segments</li>
|
|
</ul>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</body>
|
|
</html>
|