288 lines
6.6 KiB
Markdown
288 lines
6.6 KiB
Markdown
|
|
# ✅ 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:**
|
|||
|
|
```javascript
|
|||
|
|
// 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:**
|
|||
|
|
```html
|
|||
|
|
<!-- 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:**
|
|||
|
|
```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:**
|
|||
|
|
```python
|
|||
|
|
# 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
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
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
|
|||
|
|
```javascript
|
|||
|
|
// 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
|
|||
|
|
```python
|
|||
|
|
@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
|
|||
|
|
```bash
|
|||
|
|
# 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!
|