Skip to content

Commit 74f7599

Browse files
rootclaude
authored andcommitted
Fix: reprocess endpoint column errors and simplify modal UI
- Fix reprocess endpoint: change audio_file column to file_path - Fix reprocess endpoint: change start_epoch to start_epoch_s - Remove tab-based modal UI, display all call details sections inline - Simplify modal layout with section headers instead of tabs (Fired Triggers, Tones Detected, Transcript, Incident, Location) Reprocess endpoint now correctly queries call data without SQL errors. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
1 parent ebc3dbf commit 74f7599

2 files changed

Lines changed: 57 additions & 58 deletions

File tree

routes/api/call_upload.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2310,7 +2310,7 @@ def reprocess_call_tones(call_id):
23102310
db = current_app.config["db"]
23112311
try:
23122312
call_res = db.execute_query(
2313-
"SELECT radio_system_id, talkgroup, audio_file, start_epoch, duration FROM call_records WHERE call_id = ?",
2313+
"SELECT radio_system_id, talkgroup, file_path, start_epoch_s, duration_s FROM call_records WHERE call_id = ?",
23142314
(call_id,),
23152315
fetch_mode="one"
23162316
)
@@ -2320,7 +2320,7 @@ def reprocess_call_tones(call_id):
23202320
return jsonify({"error": "Call not found"}), 404
23212321

23222322
radio_system_id = call_row["radio_system_id"]
2323-
audio_file = call_row["audio_file"]
2323+
audio_file = call_row["file_path"]
23242324

23252325
audio_path = Path(audio_file)
23262326
if not audio_path.is_absolute():

templates/dashboard/dashboard.html

Lines changed: 55 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -347,67 +347,66 @@ <h4 class="mb-1" id="dTitle">Call #<span id="dCallId"></span></h4>
347347
</div>
348348
</div>
349349

350-
<ul class="nav nav-tabs mb-3" role="tablist">
351-
<li class="nav-item"><button class="nav-link active" data-bs-toggle="tab" data-bs-target="#tabTones" type="button">Tones</button></li>
352-
<li class="nav-item"><button class="nav-link" data-bs-toggle="tab" data-bs-target="#tabTranscript" type="button">Transcript</button></li>
353-
<li class="nav-item"><button class="nav-link" data-bs-toggle="tab" data-bs-target="#tabIncident" type="button">Incident</button></li>
354-
<li class="nav-item"><button class="nav-link" data-bs-toggle="tab" data-bs-target="#tabLocation" type="button">Location</button></li>
355-
</ul>
350+
<!-- Fired Triggers -->
351+
<div class="mb-3">
352+
<h6 class="text-muted mb-2">Fired Triggers</h6>
353+
<div id="dTrigList" class="mb-2"></div>
354+
<span id="dNoTrig" class="text-muted small d-none mb-0">No triggers configured.</span>
355+
<button id="addTriggerBtn" class="btn btn-primary btn-sm">Add Trigger</button>
356+
</div>
356357

357-
<div class="tab-content">
358-
<div id="tabTones" class="tab-pane fade show active">
359-
<div class="d-flex justify-content-between align-items-center mb-2">
360-
<span id="dNoTrig" class="text-muted small d-none mb-0">No triggers configured.</span>
361-
<button id="addTriggerBtn" class="btn btn-primary btn-sm">Add Trigger</button>
362-
</div>
363-
<div id="dTrigList" class="mb-3"></div>
364-
<div class="table-responsive">
365-
<table class="table table-sm align-middle" id="dTonesTable">
366-
<thead class="table-dark">
367-
<tr>
368-
<th>Time</th><th>Type</th><th>Freq A</th><th>Freq B</th><th>Matched</th><th></th>
369-
</tr>
370-
</thead>
371-
<tbody></tbody>
372-
</table>
373-
</div>
358+
<!-- Tones Table -->
359+
<div class="mb-3">
360+
<h6 class="text-muted mb-2">Tones Detected</h6>
361+
<div class="table-responsive">
362+
<table class="table table-sm align-middle" id="dTonesTable">
363+
<thead class="table-dark">
364+
<tr>
365+
<th>Time</th><th>Type</th><th>Freq A</th><th>Freq B</th><th>Matched</th><th></th>
366+
</tr>
367+
</thead>
368+
<tbody></tbody>
369+
</table>
374370
</div>
375-
<div id="tabTranscript" class="tab-pane fade">
376-
<div id="dTranscriptWrap">
377-
<small id="dTranscriptStatus" class="text-muted">Loading…</small>
378-
<div id="dTranscriptBody" class="bg-secondary bg-opacity-25 p-3 rounded small mt-2" style="max-height: 200px; overflow-y: auto;"></div>
379-
<div class="mt-2">
380-
<button id="expandTranscriptBtn" class="btn btn-outline-secondary btn-sm">Expand</button>
381-
<button id="copyTranscriptBtn" class="btn btn-outline-secondary btn-sm">Copy</button>
382-
</div>
383-
</div>
371+
</div>
372+
373+
<!-- Transcript -->
374+
<div id="dTranscriptWrap" class="mb-3">
375+
<h6 class="text-muted mb-2">Transcript</h6>
376+
<small id="dTranscriptStatus" class="text-muted">Loading…</small>
377+
<div id="dTranscriptBody" class="bg-secondary bg-opacity-25 p-3 rounded small mt-2" style="max-height: 200px; overflow-y: auto;"></div>
378+
<div class="mt-2">
379+
<button id="expandTranscriptBtn" class="btn btn-outline-secondary btn-sm">Expand</button>
380+
<button id="copyTranscriptBtn" class="btn btn-outline-secondary btn-sm">Copy</button>
384381
</div>
385-
<div id="tabIncident" class="tab-pane fade">
386-
<div id="dIncidentWrap">
387-
<div class="row mb-3">
388-
<div class="col-6">
389-
<div id="dIncidentTypeBadge"></div>
390-
</div>
391-
<div class="col-6">
392-
<div id="dIncidentSeverityBadge"></div>
393-
</div>
394-
</div>
395-
<div id="dIncidentMeta" class="text-muted small"></div>
396-
<div id="dIncidentSummary" class="mt-2"></div>
382+
</div>
383+
384+
<!-- Incident -->
385+
<div id="dIncidentWrap" class="mb-3">
386+
<h6 class="text-muted mb-2">Incident Information</h6>
387+
<div class="row mb-3">
388+
<div class="col-6">
389+
<div id="dIncidentTypeBadge"></div>
390+
</div>
391+
<div class="col-6">
392+
<div id="dIncidentSeverityBadge"></div>
397393
</div>
398394
</div>
399-
<div id="tabLocation" class="tab-pane fade">
400-
<div id="dAddressWrap">
401-
<div class="row">
402-
<div class="col-6">
403-
<strong>Extracted:</strong>
404-
<div id="dAddrExtracted" class="text-muted"></div>
405-
</div>
406-
<div class="col-6">
407-
<strong>Geocoded:</strong>
408-
<div><span id="dAddrGeocoded" class="text-muted"></span> <a id="dAddrMapLink" href="#" target="_blank" class="small">Map</a></div>
409-
</div>
410-
</div>
395+
<div id="dIncidentMeta" class="text-muted small"></div>
396+
<div id="dIncidentSummary" class="mt-2"></div>
397+
</div>
398+
399+
<!-- Location -->
400+
<div id="dAddressWrap" class="mb-3">
401+
<h6 class="text-muted mb-2">Location</h6>
402+
<div class="row">
403+
<div class="col-6">
404+
<strong>Extracted:</strong>
405+
<div id="dAddrExtracted" class="text-muted"></div>
406+
</div>
407+
<div class="col-6">
408+
<strong>Geocoded:</strong>
409+
<div><span id="dAddrGeocoded" class="text-muted"></span> <a id="dAddrMapLink" href="#" target="_blank" class="small">Map</a></div>
411410
</div>
412411
</div>
413412
</div>

0 commit comments

Comments
 (0)