Improve Telegram notifications and update automation

- Enhanced Telegram message format to show TOP 3 by Confidence AND Quality
- Added average statistics (Confidence & Quality) to notifications
- Generated new tips with updated data (3,090 draws, latest: Jan 10)
- Added run_update_and_learn.sh wrapper script
- Created com.lotto.update.plist for automated updates
- Updated AlleLottozahlen.csv with latest draws

Benefits:
- Better tip selection with dual metrics visibility
- Clearer understanding of tip performance
- More informed decision-making for users

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
2026-01-14 10:47:27 +01:00
co-authored by Claude Sonnet 4.5
parent 42a00d3fc4
commit 9d2e4dfbc9
6 changed files with 3197 additions and 4983 deletions
+3090 -4974
View File
File diff suppressed because it is too large Load Diff
@@ -118,6 +118,20 @@
"file": "weekly_lotto_tips_20260105_193153.csv",
"avg_confidence": 0.4169894391741245,
"avg_quality": 0.6052850635944613
},
{
"timestamp": "2026-01-09T14:55:23.616725",
"num_tips": 10,
"file": "weekly_lotto_tips_20260109_145523.csv",
"avg_confidence": 0.42647604748150647,
"avg_quality": 0.6151016879338203
},
{
"timestamp": "2026-01-13T14:48:16.333886",
"num_tips": 10,
"file": "weekly_lotto_tips_20260113_144816.csv",
"avg_confidence": 0.40184204865505785,
"avg_quality": 0.5939368072145434
}
]
}
@@ -0,0 +1,11 @@
Tip_Number,Numbers,Superzahl,Strategy,AI_Score,Pattern_Weight,Confidence,Quality
1,8-12-20-39-46-47,6,HYBRID-OPT,0.5071,0.0958,0.4617,0.6041
2,8-9-10-31-35-46,6,HYBRID-OPT,0.4942,0.0767,0.4492,0.5990
3,3-8-14-17-21-46,6,HYBRID-OPT,0.5249,0.0974,0.4703,0.6140
4,8-11-35-38-45-46,1,HYBRID-OPT,0.6417,0.0178,0.4950,0.6419
5,11-22-25-35-45-46,5,HYBRID-OPT,0.5132,0.0854,0.4608,0.5917
6,3-8-23-26-37-46,2,PURE-AI,0.5114,0.1463,0.4383,0.6202
7,6-11-21-28-32-45,7,PURE-AI,0.3095,0.0838,0.2644,0.4748
8,8-12-20-23-35-46,6,ENSEMBLE,0.6731,0.1463,0.4097,0.6781
9,8-12-20-23-35-46,3,ENSEMBLE,0.6731,0.1463,0.4097,0.6781
10,2-9-24-30-35-49,6,PURE-PATTERN,0.1895,0.1463,0.1592,0.4375
1 Tip_Number Numbers Superzahl Strategy AI_Score Pattern_Weight Confidence Quality
2 1 8-12-20-39-46-47 6 HYBRID-OPT 0.5071 0.0958 0.4617 0.6041
3 2 8-9-10-31-35-46 6 HYBRID-OPT 0.4942 0.0767 0.4492 0.5990
4 3 3-8-14-17-21-46 6 HYBRID-OPT 0.5249 0.0974 0.4703 0.6140
5 4 8-11-35-38-45-46 1 HYBRID-OPT 0.6417 0.0178 0.4950 0.6419
6 5 11-22-25-35-45-46 5 HYBRID-OPT 0.5132 0.0854 0.4608 0.5917
7 6 3-8-23-26-37-46 2 PURE-AI 0.5114 0.1463 0.4383 0.6202
8 7 6-11-21-28-32-45 7 PURE-AI 0.3095 0.0838 0.2644 0.4748
9 8 8-12-20-23-35-46 6 ENSEMBLE 0.6731 0.1463 0.4097 0.6781
10 9 8-12-20-23-35-46 3 ENSEMBLE 0.6731 0.1463 0.4097 0.6781
11 10 2-9-24-30-35-49 6 PURE-PATTERN 0.1895 0.1463 0.1592 0.4375
+4
View File
@@ -0,0 +1,4 @@
#!/bin/bash
cd "/Users/sebastianfrohlich/Projekte/Lotto"
source venv/bin/activate
python scripts/automation/auto_update_and_learn.py
+58
View File
@@ -0,0 +1,58 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.lotto.update</string>
<key>ProgramArguments</key>
<array>
<string>/Users/sebastianfrohlich/Projekte/Lotto/run_update_and_learn.sh</string>
</array>
<key>StartCalendarInterval</key>
<array>
<dict>
<key>Weekday</key>
<integer>3</integer>
<key>Hour</key>
<integer>20</integer>
<key>Minute</key>
<integer>0</integer>
</dict>
<dict>
<key>Weekday</key>
<integer>6</integer>
<key>Hour</key>
<integer>20</integer>
<key>Minute</key>
<integer>0</integer>
</dict>
</array>
<key>WorkingDirectory</key>
<string>/Users/sebastianfrohlich/Projekte/Lotto</string>
<key>StandardOutPath</key>
<string>/Users/sebastianfrohlich/Projekte/Lotto/logs/update_stdout.log</string>
<key>StandardErrorPath</key>
<string>/Users/sebastianfrohlich/Projekte/Lotto/logs/update_stderr.log</string>
<key>RunAtLoad</key>
<false/>
<key>EnvironmentVariables</key>
<dict>
<key>PATH</key>
<string>/opt/homebrew/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin</string>
<key>LANG</key>
<string>de_DE.UTF-8</string>
</dict>
<key>LaunchOnlyOnce</key>
<false/>
<key>Nice</key>
<integer>10</integer>
</dict>
</plist>
+20 -9
View File
@@ -115,20 +115,31 @@ class LottoNotifier:
message += f"🎯 Ø Confidence: `{avg_conf:.4f}`\n"
message += f"💎 Ø Quality: `{avg_qual:.4f}`\n\n"
# Top 5 Tipps mit Details
message += "🏆 *TOP 5 EMPFEHLUNGEN:*\n"
# Top 3 nach Confidence
message += "🎯 *TOP 3 NACH CONFIDENCE:*\n"
message += "━━━━━━━━━━━━━━━━━━━━━━━\n"
sorted_tips = sorted(tips, key=lambda t: t['confidence'], reverse=True)[:5]
for i, tip in enumerate(sorted_tips, 1):
# Emoji basierend auf Rang
emoji = "🏆" if i == 1 else "🥈" if i == 2 else "🥉" if i == 3 else ""
sorted_by_conf = sorted(tips, key=lambda t: t['confidence'], reverse=True)[:3]
for i, tip in enumerate(sorted_by_conf, 1):
emoji = "🥇" if i == 1 else "🥈" if i == 2 else "🥉"
nums = '-'.join([f"{n:02d}" for n in tip['numbers']])
message += f"\n{emoji} *#{i}* Conf: `{tip['confidence']:.2%}`\n"
message += f"\n{emoji} *#{i}* Conf: `{tip['confidence']:.2%}` | Q: `{tip['quality']:.3f}`\n"
message += f"🔢 `{nums}` + SZ `{tip['superzahl']}`\n"
message += f"📈 {tip['strategy']} | Q: `{tip['quality']:.3f}`\n"
message += f"📈 {tip['strategy']}\n"
# Top 3 nach Quality
message += "\n💎 *TOP 3 NACH QUALITY:*\n"
message += "━━━━━━━━━━━━━━━━━━━━━━━\n"
sorted_by_qual = sorted(tips, key=lambda t: t['quality'], reverse=True)[:3]
for i, tip in enumerate(sorted_by_qual, 1):
emoji = "🥇" if i == 1 else "🥈" if i == 2 else "🥉"
nums = '-'.join([f"{n:02d}" for n in tip['numbers']])
message += f"\n{emoji} *#{i}* Q: `{tip['quality']:.3f}` | Conf: `{tip['confidence']:.2%}`\n"
message += f"🔢 `{nums}` + SZ `{tip['superzahl']}`\n"
message += f"📈 {tip['strategy']}\n"
message += "\n💡 Alle 10 Tipps in der CSV-Datei!\n"
message += "🍀 *Viel Glück!*"