Added onboarding progress tracking & landing page
This commit is contained in:
134
docs/STYLE_DETECTION_404_ANALYSIS.md
Normal file
134
docs/STYLE_DETECTION_404_ANALYSIS.md
Normal file
@@ -0,0 +1,134 @@
|
||||
# Style Detection 404 Error Analysis
|
||||
**Date:** October 1, 2025
|
||||
**Issue:** `GET /api/style-detection/session-analyses` returning 404 Not Found
|
||||
**Impact:** Low - Feature degrades gracefully, no user-facing errors
|
||||
|
||||
---
|
||||
|
||||
## 🔍 Root Cause Analysis
|
||||
|
||||
### **The Problem:**
|
||||
|
||||
**Frontend calls:**
|
||||
```typescript
|
||||
// Line 252 in websiteUtils.ts
|
||||
const res = await fetch('/api/style-detection/session-analyses');
|
||||
```
|
||||
|
||||
**Backend registered at:**
|
||||
```python
|
||||
# Line 43 in component_logic.py
|
||||
router = APIRouter(prefix="/api/onboarding", tags=["component_logic"])
|
||||
|
||||
# Line 645 in component_logic.py
|
||||
@router.get("/style-detection/session-analyses")
|
||||
```
|
||||
|
||||
**Actual endpoint:**
|
||||
```
|
||||
/api/onboarding/style-detection/session-analyses
|
||||
^^^^^^^^^^^^ Missing prefix!
|
||||
```
|
||||
|
||||
**Frontend calling:**
|
||||
```
|
||||
/api/style-detection/session-analyses
|
||||
❌ No /onboarding prefix
|
||||
```
|
||||
|
||||
**Result:** 404 Not Found ❌
|
||||
|
||||
---
|
||||
|
||||
## 📋 What Is This Endpoint?
|
||||
|
||||
### **Purpose:**
|
||||
Pre-fill the website URL input field with the last analyzed website from the user's session.
|
||||
|
||||
### **User Experience:**
|
||||
```
|
||||
User Journey:
|
||||
1. User analyzes website: example.com (Step 2)
|
||||
2. User completes onboarding
|
||||
3. User starts new session / refreshes page
|
||||
4. Returns to Step 2 (Website Analysis)
|
||||
5. ✅ Website field auto-filled with: example.com
|
||||
6. User doesn't have to type URL again
|
||||
```
|
||||
|
||||
**UX Benefit:** Convenience feature - saves user from re-typing
|
||||
|
||||
---
|
||||
|
||||
## 🎯 Why It's Being Called
|
||||
|
||||
### **Location:** `WebsiteStep.tsx` (Lines 192-206)
|
||||
|
||||
```typescript
|
||||
useEffect(() => {
|
||||
// Prefill from last session analysis on mount
|
||||
const loadLastAnalysis = async () => {
|
||||
const result = await fetchLastAnalysis(); // ← Calls the 404 endpoint
|
||||
if (result.success) {
|
||||
if (result.website) {
|
||||
setWebsite(result.website); // Auto-fill URL
|
||||
}
|
||||
if (result.analysis) {
|
||||
setAnalysis(result.analysis); // Load previous analysis
|
||||
}
|
||||
}
|
||||
};
|
||||
loadLastAnalysis();
|
||||
}, []);
|
||||
```
|
||||
|
||||
**Trigger:** Component mounts (every time user visits Step 2)
|
||||
|
||||
---
|
||||
|
||||
## 📊 Current Impact
|
||||
|
||||
### **User Experience:**
|
||||
- ✅ **No visible errors** - Error caught and handled gracefully
|
||||
- ✅ **Feature fails silently** - Just doesn't pre-fill
|
||||
- ✅ **User can still proceed** - Manual URL entry works fine
|
||||
- ⚠️ **Slightly inconvenient** - User must re-type URL
|
||||
|
||||
### **System Impact:**
|
||||
- ⚠️ **Backend logs pollution** - 404 errors on every Step 2 visit
|
||||
- ⚠️ **Network noise** - Unnecessary failed requests
|
||||
- ✅ **No crashes** - Error handled properly
|
||||
|
||||
**Severity:** 🟡 Low (convenience feature, not critical)
|
||||
|
||||
---
|
||||
|
||||
## 🔧 Solutions
|
||||
|
||||
### **Option 1: Fix Frontend URL (Quick Fix - 30 seconds)**
|
||||
|
||||
```typescript
|
||||
// frontend/src/components/OnboardingWizard/WebsiteStep/utils/websiteUtils.ts
|
||||
// Line 252
|
||||
|
||||
// Before:
|
||||
const res = await fetch('/api/style-detection/session-analyses');
|
||||
|
||||
// After:
|
||||
const res = await fetch('/api/onboarding/style-detection/session-analyses');
|
||||
// ^^^^^^^^^^^^ Add missing prefix
|
||||
```
|
||||
|
||||
**Pros:**
|
||||
- ✅ Quick fix (1 line change)
|
||||
- ✅ Restores functionality
|
||||
- ✅ No breaking changes
|
||||
|
||||
**Cons:**
|
||||
- None
|
||||
|
||||
**Recommendation:** ✅ **Do this**
|
||||
|
||||
---
|
||||
|
||||
### **Option 2: Update Backend Route
|
||||
Reference in New Issue
Block a user