Add daily standup toggle slider and clear-all-tasks button to dashboard

This commit is contained in:
eric 2026-02-22 09:56:12 +00:00
parent c82ecdd5f1
commit 86dc556c4e
2 changed files with 127 additions and 4 deletions

40
app.py
View file

@ -316,8 +316,8 @@ def init_journal():
# Default-Werte setzen falls nicht vorhanden
con.execute("""
INSERT OR IGNORE INTO app_settings (key, value, updated_at)
VALUES ('app_name', 'Frankenbot', ?), ('theme', 'dark', ?)
""", (datetime.now().isoformat(), datetime.now().isoformat()))
VALUES ('app_name', 'Frankenbot', ?), ('theme', 'dark', ?), ('standup_enabled', '1', ?)
""", (datetime.now().isoformat(), datetime.now().isoformat(), datetime.now().isoformat()))
con.commit()
con.close()
@ -2611,7 +2611,10 @@ def daily_standup_beat():
sleep_secs = (target - now).total_seconds()
logger.info("[DailyStandup] Nächstes Standup um %s (in %.0f Minuten)", target.strftime('%d.%m.%Y %H:%M'), sleep_secs / 60)
time.sleep(sleep_secs)
trigger_daily_standup()
if get_app_setting('standup_enabled', '1') == '1':
trigger_daily_standup()
else:
logger.info("[DailyStandup] Standup ist deaktiviert übersprungen.")
except Exception as e:
logger.error("[DailyStandup] Fehler: %s", e)
time.sleep(60)
@ -2655,7 +2658,8 @@ def index():
# Hole die 5 neuesten Tasks aus DB
all_tasks = get_tasks(order='desc')
recent_tasks = all_tasks[:5] if all_tasks else []
return render_template('index.html', agents=AGENTS, recent_tasks=recent_tasks)
standup_enabled = get_app_setting('standup_enabled', '1') == '1'
return render_template('index.html', agents=AGENTS, recent_tasks=recent_tasks, standup_enabled=standup_enabled)
@app.route('/chat', methods=['GET', 'POST'])
@login_required
@ -3820,6 +3824,34 @@ def api_trigger_standup():
return jsonify({'success': True, 'message': 'Daily Standup wurde gestartet.'})
@app.route('/api/standup/toggle', methods=['POST'])
@login_required
def api_standup_toggle():
"""Aktiviert oder deaktiviert den täglichen Standup."""
data = request.get_json() or {}
enabled = data.get('enabled', True)
set_app_setting('standup_enabled', '1' if enabled else '0')
state = 'aktiviert' if enabled else 'deaktiviert'
logger.info("[DailyStandup] Standup %s.", state)
return jsonify({'success': True, 'enabled': enabled, 'message': f'Daily Standup wurde {state}.'})
@app.route('/api/tasks/clear', methods=['POST'])
@login_required
def api_tasks_clear():
"""Löscht alle Tasks aus der Datenbank."""
try:
con = sqlite3.connect(EMAIL_JOURNAL_DB)
con.execute("DELETE FROM tasks")
con.commit()
con.close()
logger.info("[Tasks] Alle Tasks wurden gelöscht.")
return jsonify({'success': True, 'message': 'Alle Tasks wurden gelöscht.'})
except Exception as e:
logger.error("[Tasks] Fehler beim Löschen aller Tasks: %s", e)
return jsonify({'success': False, 'message': str(e)}), 500
@app.route('/api/broadcast', methods=['POST'])
@login_required
def api_broadcast():