feat: drop rms_display from /api/analyze
The UI no longer draws waveforms, so the server stops computing and sending the ~800-point RMS preview; the payload is now just sections, duration, window. Old analysis caches stay valid: rms/rms_display are popped when serving a cache hit (same pattern as the earlier full-RMS removal), so no DETECTOR_VERSION bump. Verified: 63 tests pass; endpoint smoke test (fresh + cached analyze) confirms no RMS keys and correct section detection. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -402,16 +402,9 @@ def _package_result(rms_values: list, framerate: int, n_frames: int,
|
||||
window_dur = window_samples / framerate
|
||||
duration = n_frames / framerate
|
||||
|
||||
if len(rms_values) > 800:
|
||||
step = len(rms_values) / 800
|
||||
rms_display = [rms_values[int(i * step)] for i in range(800)]
|
||||
else:
|
||||
rms_display = rms_values
|
||||
|
||||
# Note: the full per-window RMS list is deliberately NOT returned — the UI
|
||||
# only renders rms_display (~800 points), and the full list is ~45x larger.
|
||||
# Note: no RMS data is returned — the UI is screen-reader oriented and
|
||||
# draws no waveform, so sections + duration is all it needs.
|
||||
return {
|
||||
'rms_display': rms_display,
|
||||
'sections': _loud_sections(rms_values, window_dur, duration, margin_db, min_gap, min_duration),
|
||||
'duration': round(duration, 2),
|
||||
'window': round(window_dur, 4),
|
||||
@@ -690,7 +683,9 @@ class _Handler(BaseHTTPRequestHandler):
|
||||
and cached.get('margin') == margin and cached.get('min_gap') == min_gap
|
||||
and cached.get('min_duration') == min_duration):
|
||||
payload = dict(cached['result'])
|
||||
payload.pop('rms', None) # caches written before the full-RMS field was dropped
|
||||
# strip fields that older cache versions embedded
|
||||
payload.pop('rms', None) # full per-window RMS list
|
||||
payload.pop('rms_display', None) # ~800-point waveform preview
|
||||
payload['cached'] = True
|
||||
self._send(200, json.dumps(payload).encode('utf-8'), 'application/json')
|
||||
return
|
||||
|
||||
Reference in New Issue
Block a user