Files
livedash-node/docs/processing-system-refactor.md

4.8 KiB

Processing System Refactor - Complete

Overview

Successfully refactored the session processing pipeline from a simple status-based system to a comprehensive multi-stage processing status system. This addresses the original issues with the SessionImport table's status and errorMsg columns.

Problems Solved

Original Issues

  1. Inconsistent Status Tracking: The old system used a simple enum on SessionImport that didn't properly track the multi-stage processing pipeline
  2. Poor Error Visibility: Error messages were buried in the SessionImport table and not easily accessible
  3. No Stage-Specific Tracking: The system couldn't track which specific stage of processing failed
  4. Difficult Recovery: Failed sessions were hard to identify and retry
  5. Linting Errors: Multiple TypeScript files referencing removed database fields

Schema Changes Made

  • Removed old status, errorMsg, and processedAt columns from SessionImport
  • Removed processed field from Session
  • Added new SessionProcessingStatus table with granular stage tracking
  • Added ProcessingStage and ProcessingStatus enums

New Processing Pipeline

Processing Stages

enum ProcessingStage {
  CSV_IMPORT           // SessionImport created
  TRANSCRIPT_FETCH     // Transcript content fetched
  SESSION_CREATION     // Session + Messages created  
  AI_ANALYSIS         // AI processing completed
  QUESTION_EXTRACTION // Questions extracted
}

enum ProcessingStatus {
  PENDING, IN_PROGRESS, COMPLETED, FAILED, SKIPPED
}

Key Components

1. ProcessingStatusManager

Centralized class for managing processing status with methods:

  • initializeSession() - Set up processing status for new sessions
  • startStage(), completeStage(), failStage(), skipStage() - Stage management
  • getSessionsNeedingProcessing() - Query sessions by stage and status
  • getPipelineStatus() - Get overview of entire pipeline
  • getFailedSessions() - Find sessions needing retry
  • resetStageForRetry() - Reset failed stages

2. Updated Processing Scheduler

  • Integrated with new ProcessingStatusManager
  • Tracks AI analysis and question extraction stages
  • Records detailed processing metadata
  • Proper error handling and retry capabilities

3. Migration System

  • Successfully migrated all 109 existing sessions
  • Determined current state based on existing data
  • Preserved all existing functionality

Current Pipeline Status

After migration and refactoring:

  • CSV_IMPORT: 109 completed
  • TRANSCRIPT_FETCH: 109 completed
  • SESSION_CREATION: 109 completed
  • AI_ANALYSIS: 16 completed, 93 pending
  • QUESTION_EXTRACTION: 11 completed, 98 pending

Files Updated/Created

New Files

  • lib/processingStatusManager.ts - Core processing status management
  • check-refactored-pipeline-status.ts - New pipeline status checker
  • migrate-to-refactored-system.ts - Migration script
  • docs/processing-system-refactor.md - This documentation

Updated Files

  • prisma/schema.prisma - Added new processing status tables
  • lib/processingScheduler.ts - Integrated with new status system
  • debug-import-status.ts - Updated to use new system
  • fix-import-status.ts - Updated to use new system

Removed Files

  • check-pipeline-status.ts - Replaced by refactored version

Benefits Achieved

  1. Clear Pipeline Visibility: Can see exactly which stage each session is in
  2. Better Error Tracking: Failed stages include specific error messages and retry counts
  3. Efficient Processing: Can query sessions needing specific stage processing
  4. Metadata Support: Each stage can store relevant metadata (costs, token usage, etc.)
  5. Easy Recovery: Failed sessions can be easily identified and retried
  6. Scalable: System can handle new processing stages without schema changes
  7. No Linting Errors: All TypeScript compilation issues resolved

Usage Examples

Check Pipeline Status

npx tsx check-refactored-pipeline-status.ts

Debug Processing Issues

npx tsx debug-import-status.ts

Fix/Retry Failed Sessions

npx tsx fix-import-status.ts

Process Sessions

npx tsx test-ai-processing.ts

Next Steps

  1. Test AI Processing: Run AI processing on pending sessions
  2. Monitor Performance: Watch for any issues with the new system
  3. Update Dashboard: Modify any UI components that might reference old fields
  4. Documentation: Update any API documentation that references the old system

Migration Notes

  • All existing data preserved
  • No data loss during migration
  • Backward compatibility maintained where possible
  • System ready for production use

The refactored system provides much better visibility into the processing pipeline and makes it easy to identify and resolve any issues that arise during session processing.