UrNetwork-Stats-Dashboard-r.../FIXES_v2.1.md
2025-11-21 22:39:41 +01:00

6.6 KiB
Raw Blame History

Opravy v main_clean.py - Finální Verze

🎯 Co bylo opraveno

1. Grafy - Viditelný Text

Problém: Text na grafech byl černý a skoro neviditelný na tmavém pozadí

Oprava:

// PŘED - Špatně viditelný
ticks: { color: 'var(--text-muted)' }  // Tmavě šedá
legend: { labels: { color: 'var(--text-color)' } }  // Není dostatečně světlá

// PO - Jasně viditelný ✅
ticks: { color: '#e5e7eb', font: { size: 12 } }  // Světle bílá
legend: { 
    labels: { 
        color: '#ffffff',  // Čistě bílá
        font: { size: 13, weight: '500' },
        padding: 15
    }
}

Vylepšení:

  • Osy (X, Y) - bílý text místo šedého
  • Legenda - bílý tučný text
  • Tooltips - tmavé pozadí s modrým rámečkem
  • Větší velikost písma pro lepší čitelnost

2. Login Tlačítko v Headeru

Problém: Nebylo jasné, kde se přihlásit, když nejsi přihlášený

Oprava:

<!-- Když nejsi přihlášený, zobrazí se modré Login tlačítko -->
{% if session.logged_in %}
    <!-- Standardní menu -->
{% else %}
    <a href="/login" class="login-btn">Přihlásit se</a>
{% endif %}

CSS:

.header-nav a.login-btn {
    background: #3b82f6;  /* Modré pozadí */
    color: white;
    font-weight: 600;     /* Tučné */
}

Výsledek:

  • Viditelné modré tlačítko "Přihlásit se" v headeru
  • Zobrazuje se pouze když nejsi přihlášený
  • Zmizí po přihlášení

3. Automatické Mazání Starých Dat

Problém: Data se mazala jen jednou týdně v neděli

Oprava:

# PŘED - Jednou týdně
@scheduler.task(trigger="cron", day_of_week="sun", hour="0")

# PO - Každý den ✅
@scheduler.task(trigger="cron", hour="3", minute="0")

Jak to funguje:

  1. Každý den ve 3:00 ráno se spustí cleanup job
  2. Smaže všechny záznamy starší než 7 dní
  3. Ponechá data z posledního týdne
  4. Loguje kolik záznamů bylo smazáno

Příklad:

Dnes je: 21. listopadu 2024
Smaže se: Vše před 14. listopadem 2024
Zůstane: 14. - 21. listopadu (poslední 7 dní)

📊 Před & Po - Vizuální Srovnání

Grafy - Text

PŘED:
┌────────────────────────┐
│ Graf                   │
│ (text skoro neviditelný)│
│ Osa Y: #9ca3af (tmavá) │
│ Osa X: #9ca3af (tmavá) │
│ Legenda: #d1d5db       │
└────────────────────────┘

PO:
┌────────────────────────┐
│ Graf                   │
│ (text jasně viditelný!) │
│ Osa Y: #e5e7eb (světlá)│
│ Osa X: #e5e7eb (světlá)│
│ Legenda: #ffffff (bílá)│
└────────────────────────┘

Header

PŘED:
[Veřejný pohled] (když nejsi přihlášený, není jasné kde se přihlásit)

PO:
[Veřejný pohled] [🔵 Přihlásit se] (jasné modré tlačítko)

Cleanup Schedule

PŘED:
Neděle 00:00 → Smaže data starší 7 dní

PO:
Každý den 03:00 → Smaže data starší 7 dní

🚀 Instalace Opravené Verze

cd ~/urio

# Zazálohuj současnou verzi
cp main.py main.py.before_fixes

# Nahraď opravenou verzí
cp /path/to/main_clean.py main.py

# Restartuj
pkill -f main.py
python3 main.py

Co se vylepšilo

Čitelnost Grafů

  • PŘED: (Text skoro neviditelný)
  • PO: (Jasně čitelné vše!)

UX - Přihlášení

  • PŘED: (Musíš znát URL /login)
  • PO: (Jasné modré tlačítko v headeru)

Údržba Databáze

  • PŘED: (Týdně - může se hromadit)
  • PO: (Denně - vždy jen poslední týden)

🎨 Technické Detaily

Chart.js Konfigurace

// Kompletní chart options pro viditelný text
{
    scales: {
        y: { 
            ticks: { 
                color: '#e5e7eb',      // Světlá barva
                font: { size: 12 }     // Větší písmo
            }, 
            grid: { 
                color: 'rgba(45, 49, 53, 0.3)'  // Jemná mřížka
            } 
        },
        x: { 
            ticks: { 
                color: '#e5e7eb', 
                font: { size: 11 } 
            }
        }
    },
    plugins: { 
        legend: { 
            labels: { 
                color: '#ffffff',              // Bílá
                font: { size: 13, weight: '500' },
                padding: 15
            } 
        },
        tooltip: {
            backgroundColor: 'rgba(26, 29, 31, 0.95)',  // Tmavé pozadí
            titleColor: '#ffffff',
            bodyColor: '#e5e7eb',
            borderColor: '#3b82f6',
            borderWidth: 1,
            padding: 12
        }
    }
}

Cleanup Job

@scheduler.task(
    id="cleanup_old_stats_job", 
    trigger="cron", 
    hour="3",      # Každý den ve 3:00
    minute="0"
)
def cleanup_old_stats_job():
    cutoff_date = datetime.datetime.now() - datetime.timedelta(days=7)
    # Smaže vše starší než cutoff_date
    db.session.query(Stats).filter(Stats.timestamp < cutoff_date).delete()

💾 Velikost Databáze

S denním čištěním:

Stats každých 15 min = 96 záznamů/den
7 dní × 96 = 672 záznamů max
3 účty × 672 = ~2000 záznamů max

Velikost: ~200 KB databáze (velmi malá!)

Bez čištění (týdně):

Po měsíci: ~8000 záznamů
Velikost: ~800 KB (pořád OK, ale zbytečné)

🔍 Ověření Změn

1. Grafy

Otevři dashboard → Podívej se na graf
✅ Čísla na osách jsou bílá a čitelná
✅ Legenda je bílá a tučná
✅ Tooltips mají modré ohraničení

2. Login Tlačítko

Odhlásit se (pokud jsi přihlášený)
✅ V headeru se objeví modré tlačítko "Přihlásit se"
Přihlásit se
✅ Tlačítko zmizí, objeví se menu

3. Cleanup Job

# Zkontroluj logy
tail -f nohup.out | grep cleanup

# Mělo by se objevit každý den ve 3:00
# "Running daily stats cleanup job..."
# "Successfully deleted X stats records older than 7 days."

📝 Changelog

v2.1 - 2024-11-21

  • Fixed chart text visibility (white text instead of dark gray)
  • Added Login button to header when not logged in
  • Changed cleanup schedule from weekly to daily (3 AM)
  • Enhanced tooltip styling with blue borders
  • Increased font sizes for better readability

Všechno opraveno a připraveno k použití! 🎉

Grafy jsou nyní perfektně čitelné, login je viditelný a databáze se čistí každý den automaticky!