daily-briefing/web/src/mockData.ts

187 lines
10 KiB
TypeScript
Raw Normal View History

/** Mock data for development preview when backend is unavailable. */
import type { DashboardData } from "./api";
export const MOCK_DATA: DashboardData = {
timestamp: new Date().toISOString(),
weather: {
primary: {
location: "Leverkusen",
temp: 8,
feels_like: 5,
humidity: 72,
wind_kmh: 18,
description: "Teilweise bewölkt",
icon: "⛅",
forecast: [
{ date: "2026-03-02", max_temp: 10, min_temp: 3, icon: "⛅", description: "Partly cloudy" },
{ date: "2026-03-03", max_temp: 12, min_temp: 5, icon: "🌤️", description: "Sunny intervals" },
{ date: "2026-03-04", max_temp: 7, min_temp: 1, icon: "🌧️", description: "Rain" },
],
},
secondary: {
location: "Rab, Kroatien",
temp: 16,
feels_like: 15,
humidity: 58,
wind_kmh: 12,
description: "Sonnig",
icon: "☀️",
forecast: [
{ date: "2026-03-02", max_temp: 18, min_temp: 10, icon: "☀️", description: "Sunny" },
{ date: "2026-03-03", max_temp: 19, min_temp: 11, icon: "🌤️", description: "Mostly sunny" },
{ date: "2026-03-04", max_temp: 17, min_temp: 9, icon: "⛅", description: "Partly cloudy" },
],
},
hourly: [
{ time: "14:00", temp: 8, icon: "⛅", precip_chance: 10 },
{ time: "15:00", temp: 9, icon: "🌤️", precip_chance: 5 },
{ time: "16:00", temp: 8, icon: "⛅", precip_chance: 15 },
{ time: "17:00", temp: 7, icon: "☁️", precip_chance: 25 },
{ time: "18:00", temp: 6, icon: "☁️", precip_chance: 30 },
{ time: "19:00", temp: 5, icon: "🌧️", precip_chance: 55 },
{ time: "20:00", temp: 4, icon: "🌧️", precip_chance: 60 },
{ time: "21:00", temp: 4, icon: "☁️", precip_chance: 35 },
],
},
news: {
articles: [
{ id: 1, source: "tagesschau", title: "Bundesregierung beschließt neues Infrastrukturpaket", url: "#", category: "politik", published_at: new Date(Date.now() - 3600000).toISOString() },
{ id: 2, source: "heise", title: "Intel stellt neue Arc-Grafikkarten vor: Battlemage kommt im Q2", url: "#", category: "tech", published_at: new Date(Date.now() - 7200000).toISOString() },
{ id: 3, source: "spiegel", title: "DAX erreicht neues Allzeithoch trotz geopolitischer Spannungen", url: "#", category: "wirtschaft", published_at: new Date(Date.now() - 10800000).toISOString() },
{ id: 4, source: "google_finance", title: "NVIDIA reports record quarterly revenue driven by AI demand", url: "#", category: "wirtschaft", published_at: new Date(Date.now() - 14400000).toISOString() },
{ id: 5, source: "tagesschau", title: "Klimagipfel: Neue Vereinbarungen zum CO2-Ausstoß beschlossen", url: "#", category: "politik", published_at: new Date(Date.now() - 18000000).toISOString() },
{ id: 6, source: "heise", title: "Linux 6.14 Kernel bringt massiven Performance-Boost für AMD Zen 5", url: "#", category: "tech", published_at: new Date(Date.now() - 21600000).toISOString() },
{ id: 7, source: "google_de_finance", title: "Rheinmetall-Aktie steigt um 8% nach neuem NATO-Auftrag", url: "#", category: "wirtschaft", published_at: new Date(Date.now() - 25200000).toISOString() },
{ id: 8, source: "spiegel", title: "Studie: Homeoffice bleibt auch 2026 die beliebteste Arbeitsform", url: "#", category: "allgemein", published_at: new Date(Date.now() - 28800000).toISOString() },
{ id: 9, source: "heise", title: "Docker Desktop 5.0: Neue Container-Management-Features im Überblick", url: "#", category: "tech", published_at: new Date(Date.now() - 32400000).toISOString() },
{ id: 10, source: "tagesschau", title: "Europäische Zentralbank senkt Leitzins um 0.25 Prozentpunkte", url: "#", category: "wirtschaft", published_at: new Date(Date.now() - 36000000).toISOString() },
{ id: 11, source: "google_defense", title: "NATO increases defense spending targets for 2027", url: "#", category: "politik", published_at: new Date(Date.now() - 39600000).toISOString() },
{ id: 12, source: "spiegel", title: "Unraid 7.0: Das neue Server-Betriebssystem im Test", url: "#", category: "tech", published_at: new Date(Date.now() - 43200000).toISOString() },
],
total: 12,
limit: 20,
offset: 0,
},
servers: {
servers: [
{
name: "Daddelolymp",
host: "10.10.10.10",
online: true,
uptime: "42 days, 7:23",
cpu: { usage_pct: 38, cores: 16, temp_c: 52 },
ram: { used_gb: 24.3, total_gb: 32, pct: 76 },
array: {
status: "normal",
disks: [
{ name: "Disk 1", status: "active", size: "8 TB", used: "5.2 TB" },
{ name: "Disk 2", status: "active", size: "8 TB", used: "6.1 TB" },
{ name: "Disk 3", status: "active", size: "4 TB", used: "2.8 TB" },
{ name: "Parity", status: "active", size: "8 TB", used: "-" },
{ name: "Cache", status: "active", size: "1 TB", used: "320 GB" },
],
},
docker: {
running: 14,
containers: [
{ name: "gitlab", status: "running", image: "gitlab/gitlab-ce" },
{ name: "n8n", status: "running", image: "n8nio/n8n" },
{ name: "postgres", status: "running", image: "postgres:15" },
{ name: "daily-briefing", status: "running", image: "daily-briefing" },
{ name: "jukebox-vibe", status: "running", image: "jukebox-vibe" },
{ name: "redis", status: "running", image: "redis:7" },
{ name: "vikunja", status: "running", image: "vikunja/vikunja" },
{ name: "nginx", status: "running", image: "nginx:alpine" },
],
},
},
{
name: "Moneyboy",
host: "192.168.1.100",
online: true,
uptime: "12 days, 14:52",
cpu: { usage_pct: 12, cores: 10, temp_c: 41 },
ram: { used_gb: 8.7, total_gb: 16, pct: 54 },
array: {
status: "normal",
disks: [
{ name: "Disk 1", status: "active", size: "4 TB", used: "1.8 TB" },
{ name: "Disk 2", status: "active", size: "4 TB", used: "2.1 TB" },
{ name: "Cache", status: "active", size: "500 GB", used: "180 GB" },
],
},
docker: {
running: 6,
containers: [
{ name: "freqtrade", status: "running", image: "freqtradeorg/freqtrade" },
{ name: "plex", status: "running", image: "plexinc/pms-docker" },
{ name: "nextcloud", status: "running", image: "nextcloud" },
],
},
},
],
},
ha: {
online: true,
lights: [
{ entity_id: "light.wohnzimmer", name: "Wohnzimmer", state: "on", brightness: 80 },
{ entity_id: "light.schlafzimmer", name: "Schlafzimmer", state: "off", brightness: 0 },
{ entity_id: "light.kueche", name: "Küche", state: "on", brightness: 100 },
{ entity_id: "light.flur", name: "Flur", state: "off", brightness: 0 },
{ entity_id: "light.badezimmer", name: "Badezimmer", state: "on", brightness: 60 },
{ entity_id: "light.buero", name: "Büro", state: "off", brightness: 0 },
{ entity_id: "light.balkon", name: "Balkon", state: "off", brightness: 0 },
{ entity_id: "light.gaestezimmer", name: "Gästezimmer", state: "off", brightness: 0 },
],
covers: [
{ entity_id: "cover.wohnzimmer", name: "Wohnzimmer Rollo", state: "open", position: 100 },
{ entity_id: "cover.schlafzimmer", name: "Schlafzimmer Rollo", state: "closed", position: 0 },
{ entity_id: "cover.kueche", name: "Küche Rollo", state: "open", position: 75 },
],
sensors: [
{ entity_id: "sensor.temp_wohnzimmer", name: "Wohnzimmer", state: 21.5, unit: "°C" },
{ entity_id: "sensor.temp_aussen", name: "Außen", state: 7.8, unit: "°C" },
{ entity_id: "sensor.temp_schlafzimmer", name: "Schlafzimmer", state: 19.2, unit: "°C" },
],
lights_on: 3,
lights_total: 8,
},
mqtt: {
connected: true,
entities: [
{ topic: "unraid/daddelolymp/cpu_temp", value: 52, timestamp: Date.now() / 1000 - 5, name: "Cpu Temp", category: "unraid" },
{ topic: "unraid/daddelolymp/array_status", value: "normal", timestamp: Date.now() / 1000 - 12, name: "Array Status", category: "unraid" },
{ topic: "unraid/moneyboy/cpu_temp", value: 41, timestamp: Date.now() / 1000 - 8, name: "Cpu Temp", category: "unraid" },
{ topic: "zigbee2mqtt/wohnzimmer/temperature", value: 21.5, timestamp: Date.now() / 1000 - 30, name: "Temperature", category: "zigbee2mqtt" },
{ topic: "zigbee2mqtt/wohnzimmer/humidity", value: 48, timestamp: Date.now() / 1000 - 30, name: "Humidity", category: "zigbee2mqtt" },
{ topic: "frigate/events/front_door", value: "person", timestamp: Date.now() / 1000 - 120, name: "Front Door", category: "frigate" },
],
},
tasks: {
private: {
open: [
{ id: 101, title: "Garten winterfest machen", done: false, priority: 3, project_name: "Haus & Garten", due_date: "2026-03-05" },
{ id: 102, title: "Heizung warten lassen", done: false, priority: 2, project_name: "Haus & Garten", due_date: "2026-03-10" },
{ id: 103, title: "Projekt-Bericht abgeben", done: false, priority: 4, project_name: "Jugendeinrichtung", due_date: "2026-03-03" },
{ id: 104, title: "Elternabend planen", done: false, priority: 1, project_name: "Jugendeinrichtung", due_date: null },
{ id: 105, title: "Neue Pflanzen bestellen", done: false, priority: 1, project_name: "Haus & Garten", due_date: null },
],
done: [
{ id: 106, title: "Müll rausbringen", done: true, priority: 1, project_name: "Haus & Garten", due_date: null },
],
open_count: 5,
},
sams: {
open: [
{ id: 201, title: "Daily Briefing Dashboard refactoren", done: false, priority: 4, project_name: "OpenClaw AI", due_date: "2026-03-02" },
{ id: 202, title: "n8n Workflows aufräumen", done: false, priority: 3, project_name: "OpenClaw AI", due_date: null },
{ id: 203, title: "Trading Bot backtesting", done: false, priority: 2, project_name: "Sam's Wunderwelt", due_date: null },
],
done: [
{ id: 204, title: "Jukebox Drag & Drop Feature", done: true, priority: 3, project_name: "OpenClaw AI", due_date: null },
],
open_count: 3,
},
},
};