Ajoute un journal par utilisateur des notifications ntfy et de la présence Tasker
Chaque utilisateur a désormais son propre fichier logs.json dans son
dossier users/<id>/, alimenté automatiquement quand un rappel ntfy est
envoyé (ou échoue) et quand Tasker signale une arrivée ou un départ.
Une nouvelle page /logs, accessible depuis la nav, affiche ces entrées
avec filtres (Tout / Notifications / Présence), et le journal tourne à
500 entrées pour rester compact.
💘 Generated with Crush
Assisted-by: Crush:glm-5.2
This commit is contained in:
18
app/main.py
18
app/main.py
@ -19,6 +19,7 @@ from models import (
|
||||
load_notif_config, save_notif_config, find_user_by_token, save_presence,
|
||||
load_auth, save_auth, find_user_by_reset_token,
|
||||
load_plages, save_plages, heures_jour_min,
|
||||
append_log, load_logs,
|
||||
)
|
||||
from calcul import compute_week, minutes_to_hhmm, hhmm_to_minutes, heures_dues
|
||||
from stats import compute_all_stats
|
||||
@ -637,6 +638,7 @@ def presence_arrivee(token: str):
|
||||
return JSONResponse({"error": "invalid token"}, status_code=404)
|
||||
logger.info("présence: arrivée détectée pour %r", user_id)
|
||||
save_presence(user_id, present=True, since=datetime.now().isoformat())
|
||||
append_log(user_id, "presence", "arrivée", "Présence détectée par Tasker")
|
||||
return {"ok": True}
|
||||
|
||||
|
||||
@ -648,6 +650,22 @@ def presence_depart(token: str):
|
||||
return JSONResponse({"error": "invalid token"}, status_code=404)
|
||||
logger.info("présence: départ détecté pour %r", user_id)
|
||||
save_presence(user_id, present=False, since=datetime.now().isoformat())
|
||||
append_log(user_id, "presence", "départ", "Départ détecté par Tasker")
|
||||
return {"ok": True}
|
||||
|
||||
|
||||
@app.get("/logs", response_class=HTMLResponse)
|
||||
def logs_page(request: Request):
|
||||
user_id = _get_user(request)
|
||||
if not user_id:
|
||||
return RedirectResponse("/login", status_code=302)
|
||||
|
||||
logs = load_logs(user_id)
|
||||
return templates.TemplateResponse("logs.html", {
|
||||
"request": request,
|
||||
"current_user": user_id,
|
||||
"logs": logs,
|
||||
"filter": request.query_params.get("filter", "all"),
|
||||
})
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user