feat: Sprint 1 - Deep discovery, lead persistence, and dashboard nav
- Add BacklinkOutreachScraper (Exa + DuckDuckGo deep scraping) - Extend DB and Pydantic models for lead enrichment columns - Add StorageService methods for lead CRUD with auto-migration - Add backend endpoints: deep discover, campaign detail, lead management - Extend frontend API client and store with discovery + lead actions - Create BacklinkOutreachDashboard component with campaigns/discover/leads tabs - Register route at /backlink-outreach under SEO feature flag - Add nav entry under Enterprise & Advanced in tool categories
This commit is contained in:
@@ -99,13 +99,14 @@ def _map_wix_error(exc: Exception, fallback: str = "Wix API request failed") ->
|
||||
return exc
|
||||
if isinstance(exc, requests.HTTPError):
|
||||
status = exc.response.status_code if exc.response is not None else None
|
||||
msg = str(exc) if str(exc) != "" else fallback
|
||||
if status == 401:
|
||||
return HTTPException(status_code=401, detail="Wix authentication expired or invalid")
|
||||
return HTTPException(status_code=401, detail=msg)
|
||||
if status == 403:
|
||||
return HTTPException(status_code=403, detail="Insufficient Wix permissions/scope")
|
||||
return HTTPException(status_code=502, detail=fallback)
|
||||
return HTTPException(status_code=403, detail=msg)
|
||||
return HTTPException(status_code=502, detail=msg)
|
||||
if isinstance(exc, requests.RequestException):
|
||||
return HTTPException(status_code=502, detail=fallback)
|
||||
return HTTPException(status_code=502, detail=str(exc) or fallback)
|
||||
return HTTPException(status_code=500, detail=str(exc))
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user