Skip to content

Commit e22a4c0

Browse files
authored
Merge pull request #96 from AAdewunmi/chore/add-claim-detail-query-loading
feat(ops): wire claim detail view with full timeline data prefetching
2 parents d3b0a4e + 6385594 commit e22a4c0

File tree

1 file changed

+28
-6
lines changed

1 file changed

+28
-6
lines changed

policylens/apps/ops/views.py

Lines changed: 28 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,17 +3,24 @@
33
Ops views (server-rendered).
44
55
Week 5:
6-
- Queue view reuses domain queue builder.
7-
- Claim detail page lands Wednesday.
6+
- Queue view uses domain queue logic.
7+
- Claim detail view renders full workflow timeline.
88
"""
99

1010
from __future__ import annotations
1111

1212
from django.contrib.auth.decorators import login_required
13+
from django.db.models import Prefetch
1314
from django.http import HttpRequest, HttpResponse
1415
from django.shortcuts import get_object_or_404, redirect, render
1516

16-
from policylens.apps.claims.models import Claim
17+
from policylens.apps.claims.models import (
18+
AuditEvent,
19+
Claim,
20+
ClaimDocument,
21+
InternalNote,
22+
ReviewDecision,
23+
)
1724
from policylens.apps.claims.queue import build_queue_queryset
1825

1926

@@ -51,6 +58,21 @@ def queue_view(request: HttpRequest) -> HttpResponse:
5158

5259
@login_required
5360
def claim_detail_view(request: HttpRequest, claim_id: int) -> HttpResponse:
54-
"""Render claim detail shape with basic claim fetch only."""
55-
claim = get_object_or_404(Claim, pk=claim_id)
56-
return render(request, "ops/claim_detail.html", context={"claim": claim})
61+
"""Render claim detail page with timeline sections."""
62+
claim = get_object_or_404(
63+
Claim.objects.select_related(
64+
"policy", "policy__holder", "sla_clock", "ml_score"
65+
).prefetch_related(
66+
Prefetch("documents", queryset=ClaimDocument.objects.order_by("uploaded_at")),
67+
Prefetch("notes", queryset=InternalNote.objects.order_by("created_at")),
68+
Prefetch("decisions", queryset=ReviewDecision.objects.order_by("decided_at")),
69+
Prefetch("audit_events", queryset=AuditEvent.objects.order_by("created_at")),
70+
),
71+
pk=claim_id,
72+
)
73+
74+
return render(
75+
request,
76+
"ops/claim_detail.html",
77+
context={"page_title": f"Claim #{claim.id}", "claim": claim},
78+
)

0 commit comments

Comments
 (0)