Implementation status for AGENTS.md TODO items.
See AGENTS.md for original requirements.
Database models, segment management, API endpoints, processing flow, and audio processing all implemented.
Key Files:
- src/app/models.py - SegmentOverride model and segments_approved field
- src/podcast_processor/segment_manager.py - CRUD operations and merging logic
- src/app/routes/segment_routes.py - Three API endpoints for segment review
- src/podcast_processor/podcast_processor.py - Pause at pending_review status
TypeScript types, API integration, and UI components all implemented.
Key Files:
- frontend/src/types/index.ts - Types for segments and transcript
- frontend/src/services/api.ts - segmentsApi with three methods
- frontend/src/components/SegmentReviewModal.tsx - Complete modal with segment editing
- frontend/src/components/FeedDetail.tsx - Review button integration
Dependencies installed, waveform component created, and integrated into review modal.
Key Files:
- frontend/src/components/WaveformTimeline.tsx - Waveform visualization with draggable regions
- frontend/src/hooks/useWaveform.ts - Waveform state management hook
- Add manual segment UI in review modal
- Input validation for time ranges
- Auto-merge with existing segments
- Delete button for manual segments
- Badge indicating manual vs edited segments
- Backend returns complete transcript with labels
- Collapsible transcript section in UI
- Color-coded segments (red for ads, white for content)
- Timestamps and sequence numbers displayed
- TranscriptSegment type added
- Include pending_review status in active jobs filter
- Add segments_approved field to job responses
- Prioritize pending_review jobs highest (priority 3)
- Fix review button appearing when needed
Latest Files Modified (commit 058a531):
- src/app/jobs_manager.py - Active jobs filter and priority
- src/podcast_processor/segment_manager.py - Full transcript support
- frontend/src/components/SegmentReviewModal.tsx - Manual segments and transcript viewer
Users can now:
- See all identified ad segments before audio editing
- Approve, reject, or modify segment times
- Add manual segments the LLM missed (false negatives)
- Delete segments incorrectly identified (false positives)
- View full transcript with timestamps and labels
- Preview merged ranges that will be removed
- Use waveform visualization with draggable regions
- See real-time updates to merged removal ranges
Download → Transcribe → Classify → Review → Edit Audio → Done
↑
Manual correction
possible here
- Testing: Integration tests for review workflow
- Testing: Test with various podcast types in production
- Testing: Fix test database schema issue
- 6/12 tests in test_segment_manager.py fail with "no such column: post.segments_approved"
- Issue: ProcessingJob table missing
segments_approvedcolumn in test database - All models imported in conftest.py, but
db.create_all()not creating all columns - Passing tests:
test_merge_contiguous_segments_*(don't use database) - Failing tests:
test_apply_overrides_*,test_uses_overrides_*,test_falls_back_*,test_returns_segments_* - Note: Beartype mock issue already resolved (added
spec=Sessionto mock_db_session)
- Polish: Mobile-responsive review UI
- Enhancement: Preview audio playback before approval
Segment data fetched on-demand, could be cached✅ IMPLEMENTED- Added TTL-based caching (5min default) for segment data
- Fixed N+1 query in _get_all_transcript_segments (now uses single query with IN clause)
- Automatic cache invalidation on segment updates
- New file: src/podcast_processor/cache_utils.py
- Waveform generation is client-side (CPU intensive for long episodes)
- Mobile UX may benefit from simplified list view
- Consider websocket for real-time status updates during review