diff --git a/RELEASE_NOTES_v2.2.85.md b/RELEASE_NOTES_v2.2.85.md new file mode 100644 index 0000000..add0521 --- /dev/null +++ b/RELEASE_NOTES_v2.2.85.md @@ -0,0 +1,15 @@ +# Release Notes v2.2.85 + +Dato: 2026-05-04 + +## Hotfix + +- Telefoni-siden (`/telefoni`) rendrer nu seneste opkald server-side ved page load (SSR fallback). +- Dette sikrer, at brugeren ser opkald med det samme, selv hvis browserens JS/rendering/filter-state fejler eller er cachet. +- Klient-side `loadCalls()` koerer stadig bagefter og opdaterer tabellen som foer. + +## Berorte filer + +- `app/modules/telefoni/frontend/views.py` +- `app/modules/telefoni/templates/log.html` +- `VERSION` diff --git a/VERSION b/VERSION index 9214f6a..5bca469 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -2.2.84 +2.2.85 diff --git a/app/modules/telefoni/frontend/views.py b/app/modules/telefoni/frontend/views.py index 04fa62d..68b6048 100644 --- a/app/modules/telefoni/frontend/views.py +++ b/app/modules/telefoni/frontend/views.py @@ -3,6 +3,7 @@ import logging from fastapi import APIRouter, Request from fastapi.responses import HTMLResponse from fastapi.templating import Jinja2Templates +from app.core.database import execute_query logger = logging.getLogger(__name__) router = APIRouter() @@ -11,4 +12,43 @@ templates = Jinja2Templates(directory="app") @router.get("/telefoni", response_class=HTMLResponse) async def telefoni_log_page(request: Request): - return templates.TemplateResponse("modules/telefoni/templates/log.html", {"request": request}) + initial_calls = [] + try: + initial_calls = execute_query( + """ + SELECT + t.id, + t.direction, + COALESCE( + NULLIF(TRIM(t.ekstern_nummer), ''), + NULLIF(TRIM(t.raw_payload->>'caller'), ''), + NULLIF(TRIM(t.raw_payload->>'callee'), '') + ) AS display_number, + t.started_at, + t.duration_sec, + t.ended_at, + u.full_name, + u.username, + t.kontakt_id, + CONCAT(COALESCE(c.first_name, ''), ' ', COALESCE(c.last_name, '')) AS contact_name, + t.sag_id, + s.titel AS sag_titel + FROM telefoni_opkald t + LEFT JOIN users u ON u.user_id = t.bruger_id + LEFT JOIN contacts c ON c.id = t.kontakt_id + LEFT JOIN sag_sager s ON s.id = t.sag_id + ORDER BY t.started_at DESC + LIMIT 50 + """, + (), + ) or [] + except Exception as e: + logger.warning("⚠️ Could not load initial telefoni calls for SSR fallback: %s", e) + + return templates.TemplateResponse( + "modules/telefoni/templates/log.html", + { + "request": request, + "initial_calls": initial_calls, + }, + ) diff --git a/app/modules/telefoni/templates/log.html b/app/modules/telefoni/templates/log.html index 7e077a2..de3dbb1 100644 --- a/app/modules/telefoni/templates/log.html +++ b/app/modules/telefoni/templates/log.html @@ -59,7 +59,41 @@
-