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
267 lines
11 KiB
HTML
267 lines
11 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 LIFE v2 - Operativ Intelligensmotor</title>
|
|
<style>
|
|
* { margin: 0; padding: 0; box-sizing: border-box; }
|
|
body { font-family: -apple-system, BlinkMacSystemFont, 'Inter', sans-serif; background: #0a0a0a; color: #e0e0e0; line-height: 1.6; }
|
|
.header { background: #111; border-bottom: 1px solid #333; padding: 20px 40px; display: flex; justify-content: space-between; align-items: center; }
|
|
.header h1 { font-size: 1.5rem; color: #fff; }
|
|
.header .subtitle { color: #666; font-size: 0.85rem; }
|
|
.nav { background: #111; border-bottom: 1px solid #333; padding: 0 40px; display: flex; gap: 4px; }
|
|
.nav a { color: #666; text-decoration: none; padding: 12px 20px; font-size: 0.85rem; transition: all 0.2s; border-bottom: 2px solid transparent; }
|
|
.nav a:hover, .nav a.active { color: #00d4ff; border-bottom-color: #00d4ff; }
|
|
.main { padding: 40px; max-width: 1400px; margin: 0 auto; }
|
|
.philosophy { background: #111; border-radius: var(--radius-md); padding: 32px; margin-bottom: 32px; border-left: 4px solid #00d4ff; }
|
|
.philosophy h2 { font-size: 1.25rem; margin-bottom: 16px; color: #fff; }
|
|
.philosophy p { color: #aaa; margin-bottom: 12px; }
|
|
.process { display: grid; grid-template-columns: repeat(4, 1fr); gap: 16px; margin-top: 20px; }
|
|
.process-step { background: #1a1a1a; border-radius: var(--radius-md); padding: 16px; text-align: center; }
|
|
.process-step .number { font-size: 1.5rem; font-weight: 700; color: #00d4ff; }
|
|
.process-step .name { font-size: 0.9rem; color: #fff; margin-top: 8px; }
|
|
.process-step .desc { font-size: 0.75rem; color: #666; margin-top: 4px; }
|
|
.stats-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); gap: 20px; margin-bottom: 32px; }
|
|
.stat-card { background: #111; border-radius: var(--radius-md); padding: 24px; border: 1px solid #333; }
|
|
.stat-card h3 { font-size: 0.75rem; color: #666; margin-bottom: 8px; text-transform: uppercase; letter-spacing: 0.5px; }
|
|
.stat-card .value { font-size: 2rem; font-weight: 700; color: #fff; }
|
|
.stat-card .change { font-size: 0.8rem; margin-top: 4px; }
|
|
.stat-card .change.positive { color: #00d4ff; }
|
|
.component-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); gap: 20px; margin-bottom: 32px; }
|
|
.component-card { background: #111; border-radius: var(--radius-md); padding: 24px; border: 1px solid #333; }
|
|
.component-card h3 { font-size: 1rem; margin-bottom: 12px; color: #00d4ff; display: flex; align-items: center; gap: 8px; }
|
|
.component-card p { font-size: 0.85rem; color: #aaa; margin-bottom: 8px; }
|
|
.component-card .stats { font-size: 0.8rem; color: #666; }
|
|
.section { background: #111; border-radius: var(--radius-md); padding: 24px; margin-bottom: 24px; border: 1px solid #333; }
|
|
.section h2 { font-size: 1.1rem; margin-bottom: 16px; color: #fff; }
|
|
.hypothesis-card { background: #1a1a1a; border-radius: var(--radius-md); padding: 16px; margin-bottom: 12px; border-left: 3px solid #00d4ff; }
|
|
.hypothesis-card h4 { font-size: 0.95rem; margin-bottom: 8px; color: #fff; }
|
|
.hypothesis-card p { font-size: 0.85rem; color: #aaa; }
|
|
.hypothesis-card .confidence { font-size: 0.8rem; color: #00d4ff; margin-top: 8px; }
|
|
.dna-bar { background: #1a1a1a; border-radius: var(--radius-sm); height: 24px; overflow: hidden; margin-top: 8px; display: flex; }
|
|
.dna-bar .segment { height: 100%; display: flex; align-items: center; justify-content: center; font-size: 0.7rem; color: #fff; }
|
|
</style>
|
|
</head>
|
|
<body>
|
|
|
|
<div class="header">
|
|
<div>
|
|
<h1>Landvex LIFE v2</h1>
|
|
<div class="subtitle">Operativ Intelligensmotor - 7 Kärnkomponenter</div>
|
|
</div>
|
|
<div style="text-align: right;">
|
|
<div style="font-size: 0.8rem; color: #666;">Komponenter</div>
|
|
<div style="font-size: 1.5rem; font-weight: 700;">7/7</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="nav">
|
|
<a href="/admin/" style="color: #666;">← Admin</a>
|
|
<a href="#" class="active">Dashboard</a>
|
|
<a href="#components">Komponenter</a>
|
|
<a href="#hypotheses">Hypoteser</a>
|
|
<a href="#dna">Reality DNA</a>
|
|
</div>
|
|
|
|
<div class="main">
|
|
|
|
<div class="philosophy">
|
|
<h2>Evidence Before Opinion</h2>
|
|
<p>Systemet börjar aldrig med en slutsats och letar stöd för den. Istället bygger varje analys från observerbara signaler uppåt.</p>
|
|
<div class="process">
|
|
<div class="process-step">
|
|
<div class="number">1</div>
|
|
<div class="name">Gather Facts</div>
|
|
<div class="desc">Samla observerbara signaler</div>
|
|
</div>
|
|
<div class="process-step">
|
|
<div class="number">2</div>
|
|
<div class="name">Weigh Sources</div>
|
|
<div class="desc">Värdera oberoende källor</div>
|
|
</div>
|
|
<div class="process-step">
|
|
<div class="number">3</div>
|
|
<div class="name">Identify Patterns</div>
|
|
<div class="desc">Identifiera mönster</div>
|
|
</div>
|
|
<div class="process-step">
|
|
<div class="number">4</div>
|
|
<div class="name">Generate Hypotheses</div>
|
|
<div class="desc">Formulera hypoteser</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="stats-grid">
|
|
<div class="stat-card">
|
|
<h3>Evidence Graph Noder</h3>
|
|
<div class="value">125K</div>
|
|
<div class="change positive">+450K edges</div>
|
|
</div>
|
|
<div class="stat-card">
|
|
<h3>Tracked Observations</h3>
|
|
<div class="value">45K</div>
|
|
<div class="change positive">Med full lineage</div>
|
|
</div>
|
|
<div class="stat-card">
|
|
<h3>Contradictions</h3>
|
|
<div class="value">1,247</div>
|
|
<div class="change positive">AI-träningsdata</div>
|
|
</div>
|
|
<div class="stat-card">
|
|
<h3>Hypoteser</h3>
|
|
<div class="value">3,400</div>
|
|
<div class="change positive">Rangordnade</div>
|
|
</div>
|
|
<div class="stat-card">
|
|
<h3>Reality DNA Profiler</h3>
|
|
<div class="value">1,250</div>
|
|
<div class="change">Projekt profilerade</div>
|
|
</div>
|
|
<div class="stat-card">
|
|
<h3>Memory Storage</h3>
|
|
<div class="value">2.4 TB</div>
|
|
<div class="change">Permanent</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="component-grid" id="components">
|
|
<div class="component-card">
|
|
<h3> Evidence Graph (EG)</h3>
|
|
<p>Hierarkisk graf där varje observation är en spårbar nod</p>
|
|
<p style="font-size: 0.8rem; color: #666;">Observation → Object → Project → Programme → Organisation → Region → Country</p>
|
|
<div class="stats">125,000 noder | 450,000 edges</div>
|
|
</div>
|
|
|
|
<div class="component-card">
|
|
<h3> Evidence Lineage</h3>
|
|
<p>Komplett ursprung för varje datapunkt</p>
|
|
<p style="font-size: 0.8rem; color: #666;">Source → Collected → Validated → Cross-validated → AI confidence → Human verification</p>
|
|
<div class="stats">45,000 observationer spårade</div>
|
|
</div>
|
|
|
|
<div class="component-card">
|
|
<h3>⏰ Temporal Reality Engine</h3>
|
|
<p>Tidsmaskin för att se hur verkligheten förändras</p>
|
|
<p style="font-size: 0.8rem; color: #666;">Vad såg området ut för 6 månader sedan? Vad har förändrats? Hur snabbt?</p>
|
|
<div class="stats">3 års historik | 8,900 förändringar</div>
|
|
</div>
|
|
|
|
<div class="component-card">
|
|
<h3><svg width="20" height="20" viewBox="0 0 20 20" fill="none"><path d="M10 3L17 17H3L10 3Z" stroke="#f59e0b" stroke-width="2"/><path d="M10 8V12M10 14V14.5" stroke="#f59e0b" stroke-width="2" stroke-linecap="round"/></svg> Contradiction Knowledge Base</h4>
|
|
<p>Alla avvikelser lagras för AI-träning</p>
|
|
<p style="font-size: 0.8rem; color: #666;">Efter några år: hundratusentals verkliga exempel</p>
|
|
<div class="stats">1,247 avvikelser | 6 kategorier</div>
|
|
</div>
|
|
|
|
<div class="component-card">
|
|
<h3> Reality DNA</h3>
|
|
<p>Projektets fingeravtryck för benchmarking</p>
|
|
<p style="font-size: 0.8rem; color: #666;">9 dimensioner: Activity, Maintenance, Infrastructure, Community Usage, Traffic, Economic Activity, Environmental Status, Safety, Operational Continuity</p>
|
|
<div class="stats">1,250 profiler | Jämförbara</div>
|
|
</div>
|
|
|
|
<div class="component-card">
|
|
<h3> Reality Memory</h3>
|
|
<p>LIFE kastar aldrig bort något</p>
|
|
<p style="font-size: 0.8rem; color: #666;">Varje observation, AI-bedömning och förändring sparas permanent</p>
|
|
<div class="stats">2.4 TB | Full reproducerbarhet</div>
|
|
</div>
|
|
|
|
<div class="component-card">
|
|
<h3> Reality Hypothesis Engine</h3>
|
|
<p>Inte "Det här är orsaken" utan "Här är möjliga förklaringar..."</p>
|
|
<p style="font-size: 0.8rem; color: #666;">Rangordnade efter hur väl de stöds av observerbara data</p>
|
|
<div class="stats">3,400 hypoteser | Med osäkerhetsintervall</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="section" id="hypotheses">
|
|
<h2>Reality Hypothesis Engine - Exempel</h2>
|
|
<p style="color: #666; margin-bottom: 16px;">Observerat fenomen: Construction progress slower than reported (85% observed vs 95% reported)</p>
|
|
|
|
<div class="hypothesis-card">
|
|
<h4>#1 Interior work behind schedule while exterior nearly complete</h4>
|
|
<p>Field observations show exterior walls and roof complete. Windows visible but interior not accessible. Satellite cannot detect interior progress.</p>
|
|
<div class="confidence">Confidence: 78% | Support: Strong | Action: Request interior photos</div>
|
|
</div>
|
|
|
|
<div class="hypothesis-card">
|
|
<h4>#2 Flooding in June caused 2-week delay</h4>
|
|
<p>Satellite shows flooding June 15. Weather data confirms 120% average rainfall. Field observations show reduced activity June 15-30.</p>
|
|
<div class="confidence">Confidence: 72% | Support: Moderate | Action: Verify revised timeline</div>
|
|
</div>
|
|
|
|
<div class="hypothesis-card">
|
|
<h4>#3 Material supply disruption affected interior work</h4>
|
|
<p>Procurement data shows delayed deliveries. Some materials visible on site but not installed.</p>
|
|
<div class="confidence">Confidence: 55% | Support: Weak | Action: Check supplier records</div>
|
|
</div>
|
|
|
|
<div class="hypothesis-card" style="border-left-color: #666;">
|
|
<h4>#4 Reporting methodology differs from observation methodology</h4>
|
|
<p>Official report may count 'started' as 'complete'. Different measurement standards possible.</p>
|
|
<div class="confidence">Confidence: 45% | Support: Speculative | Action: Review reporting methodology</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="section" id="dna">
|
|
<h2>Reality DNA - Projektets Fingeravtryck</h2>
|
|
<p style="color: #666; margin-bottom: 16px;">9-dimensionell profil som kan jämföras med liknande projekt</p>
|
|
|
|
<div style="margin-bottom: 20px;">
|
|
<div style="display: flex; justify-content: space-between; margin-bottom: 8px;">
|
|
<span>Activity</span>
|
|
<span style="color: #00d4ff;">78%</span>
|
|
</div>
|
|
<div class="dna-bar">
|
|
<div class="segment" style="width: 78%; background: #00d4ff;">78%</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div style="margin-bottom: 20px;">
|
|
<div style="display: flex; justify-content: space-between; margin-bottom: 8px;">
|
|
<span>Infrastructure</span>
|
|
<span style="color: #00d4ff;">82%</span>
|
|
</div>
|
|
<div class="dna-bar">
|
|
<div class="segment" style="width: 82%; background: #00d4ff;">82%</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div style="margin-bottom: 20px;">
|
|
<div style="display: flex; justify-content: space-between; margin-bottom: 8px;">
|
|
<span>Safety</span>
|
|
<span style="color: #00d4ff;">80%</span>
|
|
</div>
|
|
<div class="dna-bar">
|
|
<div class="segment" style="width: 80%; background: #00d4ff;">80%</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div style="margin-bottom: 20px;">
|
|
<div style="display: flex; justify-content: space-between; margin-bottom: 8px;">
|
|
<span>Community Usage</span>
|
|
<span style="color: #fbbf24;">70%</span>
|
|
</div>
|
|
<div class="dna-bar">
|
|
<div class="segment" style="width: 70%; background: #fbbf24;">70%</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div style="margin-bottom: 20px;">
|
|
<div style="display: flex; justify-content: space-between; margin-bottom: 8px;">
|
|
<span>Maintenance</span>
|
|
<span style="color: #fbbf24;">65%</span>
|
|
</div>
|
|
<div class="dna-bar">
|
|
<div class="segment" style="width: 65%; background: #fbbf24;">65%</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</body>
|
|
</html> |