Files
ALwrity/docs/STEP_2_BACKWARD_COMPATIBLE_FIX.md

68 lines
2.4 KiB
Markdown

# Step 2 Backward Compatible Fix
## Problem
After updating Step 2 and Step 6 for database migration, the "existing analysis cache" feature in Step 2 stopped working because we have two different `session_id` strategies:
1. **Legacy**: SHA256 hash of Clerk user_id → `session_id = 724716666`
2. **New**: `OnboardingSession.id` (auto-increment) → `session_id = 1, 2, 3...`
## Non-Breaking Solution
Made the `check-existing` endpoint **support BOTH approaches** for backward compatibility.
### Change Made
**File**: `backend/api/component_logic.py` (Line 660-696)
```python
@router.get("/style-detection/check-existing/{website_url:path}")
async def check_existing_analysis(website_url, current_user):
"""Check if analysis exists (supports both session_id types)."""
# Try Approach 1: SHA256 hash (legacy)
user_id_int = clerk_user_id_to_int(user_id)
existing_analysis = analysis_service.check_existing_analysis(user_id_int, website_url)
# Try Approach 2: OnboardingSession.id (new) if not found
if not existing_analysis or not existing_analysis.get('exists'):
onboarding_service = OnboardingDatabaseService()
session = onboarding_service.get_session_by_user(user_id, db_session)
if session:
existing_analysis = analysis_service.check_existing_analysis(session.id, website_url)
return existing_analysis
```
## Benefits
**No breaking changes** - Steps 1-5 continue working as before
**Backward compatible** - Finds analysis saved with either session_id type
**Cache works** - Existing analysis feature now works correctly
**Step 6 works** - Can retrieve data saved via OnboardingSession approach
## Testing
1. **Restart backend** to load the updated endpoint
2. **Go to Step 2** and enter a website URL you've analyzed before
3. **Verify** you see the "Use existing analysis?" dialog
4. **Click "Use Existing"** to load previous analysis
5. **Navigate to Step 6** to verify all data displays correctly
## What This Fixes
- ✅ Existing analysis cache now works
- ✅ Step 6 can retrieve website analysis
- ✅ No impact on Steps 1, 3, 4, 5
- ✅ Backward compatible with old data
## Status
**Fixed**: Backward-compatible endpoint update applied
**Pending**: Restart backend and test
---
**Next Action**: Restart backend server and test the existing analysis feature in Step 2.