"use client"; import { useMemo } from "react"; import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card"; import { Activity, Brain, PenTool, CheckCircle } from "lucide-react"; import { useLiveQuery } from "dexie-react-hooks"; import { db } from "@/lib/db"; import { LineChart, Line, XAxis, YAxis, CartesianGrid, Tooltip, ResponsiveContainer, BarChart, Bar, Legend } from "recharts"; const moodScores: Record = { happy: 4, neutral: 3, sad: 2, angry: 1 }; export default function DashboardPage() { const journals = useLiveQuery(() => db.journals.orderBy("date").toArray()) || []; const tasks = useLiveQuery(() => db.tasks.toArray()) || []; const pendingTasksCount = tasks.filter(t => t.status === "todo").length; // Bugüne ait enerji seviyesi const today = new Date().toISOString().split("T")[0]; const todaysJournal = journals.find(j => j.date === today); const todaysEnergy = todaysJournal ? todaysJournal.energy : "--"; // 1. Grafik: Son 7 günün Ruh Hali ve Enerji trendi const trendData = useMemo(() => { const dataMap: Record = {}; journals.forEach(j => { if (!dataMap[j.date]) { dataMap[j.date] = { date: j.date, moodSum: 0, energySum: 0, count: 0 }; } dataMap[j.date].moodSum += moodScores[j.mood] || 3; dataMap[j.date].energySum += j.energy; dataMap[j.date].count += 1; }); return Object.values(dataMap) .map(d => ({ date: d.date.slice(5), // Sadece MM-DD formatı alalım Mood: Number((d.moodSum / d.count).toFixed(1)), Enerji: Number((d.energySum / d.count).toFixed(1)), })) .slice(-7); // Sadece son 7 günü göster }, [journals]); // 2. Grafik: En çok kullanılan AI etiketleri const tagData = useMemo(() => { const counts: Record = {}; journals.forEach(j => { if (j.ai_tags) { j.ai_tags.forEach(tag => { counts[tag] = (counts[tag] || 0) + 1; }); } }); return Object.entries(counts) .map(([name, value]) => ({ name, Değer: value })) .sort((a, b) => b.Değer - a.Değer) .slice(0, 5); // En çok geçen 5 etiket }, [journals]); // Son günlüğe ait AI Summary const lastInsight = [...journals].reverse().find(j => j.ai_summary)?.ai_summary; return (

Bugün Nasılsın?

Kişisel özetin ve yapay zeka analizlerin burada görünecek.

Günlük Kayıtları
{journals.length}

{journals.length === 0 ? "Henüz kayıt girilmedi" : "Toplam kayıt eklendi"}

Aktif Görevler
{pendingTasksCount}

Bekleyen görev

Bugünkü Enerji
{todaysEnergy}

{todaysJournal ? "/ 5 Seviyesinde" : "Kayıt bekleniyor"}

Local AI Durumu
Hazır

Ollama / Veri bekliyor

{/* Line Chart */}

Ruh Hali & Enerji Trendi

Son 7 günlük ortalamalar (1-5 Arası Puanlama)

{trendData.length > 0 ? ( ) : (

Veri bekleniyor...

)}
{/* Bar Chart & Insight */}

AI Konu Dağılımı

Günlüklerinden çıkarılan en sık 5 etiket

{tagData.length > 0 ? ( ) : (

Yeterli etiket yok.

)}

Son AI İçgörüsü

{lastInsight ? `"${lastInsight}"` : "Henüz bir içgörü oluşmadı. Biraz günlük yaz, AI analiz yapsın."}

); }