246 lines
7.8 KiB
Markdown
246 lines
7.8 KiB
Markdown
# Immediate Fix Plan for Epic 4 Integration
|
|
|
|
## Quick Fix Steps (30 minutes to working state)
|
|
|
|
### Step 1: Fix Model Table Arguments (5 min)
|
|
|
|
Add `extend_existing=True` to prevent duplicate table errors:
|
|
|
|
```python
|
|
# backend/models/rag_models.py - Line 47
|
|
class RAGChunk(Model):
|
|
"""Text chunks for RAG processing and vector embeddings."""
|
|
__tablename__ = "rag_chunks"
|
|
__table_args__ = {'extend_existing': True} # ADD THIS LINE
|
|
|
|
# backend/models/export_models.py - Line 47
|
|
class EnhancedExport(Model):
|
|
"""Enhanced export configurations and results."""
|
|
__tablename__ = "enhanced_exports"
|
|
__table_args__ = {'extend_existing': True} # ADD THIS LINE
|
|
|
|
class ExportSection(Model):
|
|
"""Export sections with timestamps."""
|
|
__tablename__ = "export_sections"
|
|
__table_args__ = {'extend_existing': True} # ADD THIS LINE
|
|
```
|
|
|
|
### Step 2: Create Missing Epic 4 Models (10 min)
|
|
|
|
Create the missing models that multi-agent system needs:
|
|
|
|
```python
|
|
# backend/models/agent_models.py (NEW FILE)
|
|
"""Models for multi-agent analysis system"""
|
|
|
|
from sqlalchemy import Column, String, Text, Float, DateTime, ForeignKey, JSON
|
|
from sqlalchemy.orm import relationship
|
|
from backend.models.base import Model, GUID
|
|
import uuid
|
|
from datetime import datetime
|
|
|
|
class AgentSummary(Model):
|
|
"""Multi-agent analysis results"""
|
|
__tablename__ = "agent_summaries"
|
|
__table_args__ = {'extend_existing': True}
|
|
|
|
id = Column(String(36), primary_key=True, default=lambda: str(uuid.uuid4()))
|
|
summary_id = Column(String(36), ForeignKey("summaries.id", ondelete='CASCADE'))
|
|
agent_type = Column(String(20), nullable=False) # technical, business, user, synthesis
|
|
agent_summary = Column(Text, nullable=True)
|
|
key_insights = Column(JSON, nullable=True)
|
|
focus_areas = Column(JSON, nullable=True)
|
|
recommendations = Column(JSON, nullable=True)
|
|
confidence_score = Column(Float, nullable=True)
|
|
processing_time_seconds = Column(Float, nullable=True)
|
|
created_at = Column(DateTime, default=datetime.utcnow)
|
|
|
|
# Relationship
|
|
summary = relationship("Summary", back_populates="agent_analyses")
|
|
|
|
# backend/models/template_models.py (NEW FILE)
|
|
"""Models for prompt template system"""
|
|
|
|
from sqlalchemy import Column, String, Text, Float, DateTime, Boolean, Integer, JSON
|
|
from backend.models.base import Model
|
|
import uuid
|
|
from datetime import datetime
|
|
|
|
class PromptTemplate(Model):
|
|
"""Custom prompt templates for AI models"""
|
|
__tablename__ = "prompt_templates"
|
|
__table_args__ = {'extend_existing': True}
|
|
|
|
id = Column(String(36), primary_key=True, default=lambda: str(uuid.uuid4()))
|
|
user_id = Column(String(36), nullable=True)
|
|
name = Column(String(200), nullable=False)
|
|
description = Column(Text, nullable=True)
|
|
prompt_text = Column(Text, nullable=False)
|
|
domain_category = Column(String(50), nullable=True)
|
|
model_config = Column(JSON, nullable=True)
|
|
is_public = Column(Boolean, default=False)
|
|
usage_count = Column(Integer, default=0)
|
|
rating = Column(Float, default=0.0)
|
|
created_at = Column(DateTime, default=datetime.utcnow)
|
|
updated_at = Column(DateTime, default=datetime.utcnow, onupdate=datetime.utcnow)
|
|
```
|
|
|
|
### Step 3: Update Models __init__.py (2 min)
|
|
|
|
Update to import models in correct order:
|
|
|
|
```python
|
|
# backend/models/__init__.py
|
|
"""Database and API models for YouTube Summarizer."""
|
|
|
|
# Base models (no Epic 4 dependencies)
|
|
from .user import User, RefreshToken, APIKey, EmailVerificationToken, PasswordResetToken
|
|
from .summary import Summary, ExportHistory
|
|
from .batch_job import BatchJob, BatchJobItem
|
|
from .playlist_models import PlaylistVideo, MultiVideoAnalysis
|
|
|
|
# Epic 4 base models (no cross-dependencies)
|
|
from .template_models import PromptTemplate # NEW
|
|
from .agent_models import AgentSummary # NEW
|
|
|
|
# Epic 4 dependent models (reference above models)
|
|
from .export_models import EnhancedExport, ExportSection
|
|
from .rag_models import RAGChunk, VectorEmbedding, SemanticSearchResult
|
|
|
|
__all__ = [
|
|
# User models
|
|
"User", "RefreshToken", "APIKey", "EmailVerificationToken", "PasswordResetToken",
|
|
# Summary models
|
|
"Summary", "ExportHistory",
|
|
# Batch job models
|
|
"BatchJob", "BatchJobItem",
|
|
# Playlist and multi-video models
|
|
"PlaylistVideo", "MultiVideoAnalysis",
|
|
# Epic 4 models
|
|
"PromptTemplate", "AgentSummary",
|
|
"EnhancedExport", "ExportSection",
|
|
"RAGChunk", "VectorEmbedding", "SemanticSearchResult",
|
|
]
|
|
```
|
|
|
|
### Step 4: Update Summary Model (2 min)
|
|
|
|
Add relationship to agent analyses:
|
|
|
|
```python
|
|
# backend/models/summary.py
|
|
# Add to Summary class:
|
|
class Summary(Model):
|
|
# ... existing fields ...
|
|
|
|
# Add this relationship
|
|
agent_analyses = relationship("AgentSummary", back_populates="summary", cascade="all, delete-orphan")
|
|
```
|
|
|
|
### Step 5: Apply Database Migrations (5 min)
|
|
|
|
```bash
|
|
cd /Users/enias/projects/my-ai-projects/apps/youtube-summarizer
|
|
source ../venv/bin/activate
|
|
|
|
# Check current status
|
|
PYTHONPATH=. ../venv/bin/python3 -m alembic current
|
|
|
|
# Apply the Epic 4 migration
|
|
PYTHONPATH=. ../venv/bin/python3 -m alembic upgrade add_epic_4_features
|
|
|
|
# If that fails, create tables manually via Python
|
|
PYTHONPATH=. ../venv/bin/python3 -c "
|
|
from backend.core.database import engine
|
|
from backend.core.database_registry import registry
|
|
from backend.models import *
|
|
registry.create_all_tables(engine)
|
|
print('Tables created successfully')
|
|
"
|
|
```
|
|
|
|
### Step 6: Re-enable API Routers (3 min)
|
|
|
|
```python
|
|
# backend/main.py - Lines 25-26 and 87-88
|
|
# UNCOMMENT these lines:
|
|
from backend.api.multi_agent import router as multi_agent_router
|
|
# from backend.api.analysis_templates import router as analysis_templates_router
|
|
|
|
# Lines 87-88, UNCOMMENT:
|
|
app.include_router(multi_agent_router) # Multi-agent analysis system
|
|
# app.include_router(analysis_templates_router) # If this router exists
|
|
```
|
|
|
|
### Step 7: Test the System (3 min)
|
|
|
|
```bash
|
|
# Start backend
|
|
./scripts/restart-backend.sh
|
|
|
|
# Check for errors in logs
|
|
tail -f logs/backend.log
|
|
|
|
# Test multi-agent API
|
|
curl -X GET http://localhost:8000/api/analysis/health
|
|
|
|
# Test with frontend
|
|
npm run dev
|
|
# Navigate to http://localhost:3002
|
|
```
|
|
|
|
## If Quick Fix Doesn't Work
|
|
|
|
### Nuclear Option - Fresh Database
|
|
|
|
```bash
|
|
# Backup current database
|
|
cp data/app.db data/app.db.backup_$(date +%Y%m%d_%H%M%S)
|
|
|
|
# Remove current database
|
|
rm data/app.db
|
|
|
|
# Start fresh - backend will create all tables
|
|
./scripts/restart-backend.sh
|
|
```
|
|
|
|
## Verification Checklist
|
|
|
|
✅ Backend starts without errors
|
|
✅ No "table already exists" errors in logs
|
|
✅ Multi-agent health endpoint returns 200
|
|
✅ Frontend can load without errors
|
|
✅ Can process a video with multi-agent analysis
|
|
✅ Export features work
|
|
|
|
## Common Error Solutions
|
|
|
|
### Error: "Table 'rag_chunks' is already defined"
|
|
**Solution**: Add `__table_args__ = {'extend_existing': True}` to the model class
|
|
|
|
### Error: "Foreign key references non-existent table 'prompt_templates'"
|
|
**Solution**: Create PromptTemplate model and ensure it's imported before EnhancedExport
|
|
|
|
### Error: "Circular import detected"
|
|
**Solution**: Use string references in relationships: `relationship("ModelName", ...)`
|
|
|
|
### Error: "No module named 'backend.api.multi_agent'"
|
|
**Solution**: Ensure multi_agent.py exists in backend/api/ directory
|
|
|
|
## Expected Result
|
|
|
|
After these fixes:
|
|
1. ✅ All Epic 4 models properly defined and registered
|
|
2. ✅ Multi-agent API endpoints accessible at `/api/analysis/multi-agent/{video_id}`
|
|
3. ✅ Enhanced export ready for Story 4.4 implementation
|
|
4. ✅ Database has all required tables for Epic 4 features
|
|
5. ✅ No circular dependencies or import errors
|
|
|
|
## Next Steps After Fix
|
|
|
|
1. Test multi-agent analysis with a real YouTube video
|
|
2. Verify agent summaries are saved to database
|
|
3. Begin implementing Story 4.4 (Enhanced Export) features
|
|
4. Create integration tests for Epic 4 features
|
|
|
|
This immediate fix plan should get the system working within 30 minutes, allowing you to continue with Epic 4 development. |