fix: Handle None values in SEO audit result extraction

Bug: When page fetch fails (SSL error), result['onpage'] is None.
Using dict.get('key', {}) returns None when key exists with None value.

Fix: Use 'or {}' pattern to handle both missing keys and None values.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
Maciej Pienczyn 2026-01-13 18:20:19 +01:00
parent d722fdb71e
commit 59c50e0267

View File

@ -488,23 +488,23 @@ class SEOAuditor:
with self.Session() as session:
company_id = result['company_id']
# Extract values from result
onpage = result.get('onpage', {})
technical = result.get('technical', {})
pagespeed = result.get('pagespeed', {})
meta_tags = onpage.get('meta_tags', {}) if onpage else {}
headings = onpage.get('headings', {}) if onpage else {}
images = onpage.get('images', {}) if onpage else {}
links = onpage.get('links', {}) if onpage else {}
structured_data = onpage.get('structured_data', {}) if onpage else {}
og = onpage.get('open_graph', {}) if onpage else {}
tc = onpage.get('twitter_card', {}) if onpage else {}
robots = technical.get('robots_txt', {}) if technical else {}
sitemap = technical.get('sitemap', {}) if technical else {}
canonical = technical.get('canonical', {}) if technical else {}
indexability = technical.get('indexability', {}) if technical else {}
cwv = pagespeed.get('core_web_vitals', {}) if pagespeed else {}
ps_scores = pagespeed.get('scores', {}) if pagespeed else {}
# Extract values from result (use 'or {}' to handle None values)
onpage = result.get('onpage') or {}
technical = result.get('technical') or {}
pagespeed = result.get('pagespeed') or {}
meta_tags = onpage.get('meta_tags') or {}
headings = onpage.get('headings') or {}
images = onpage.get('images') or {}
links = onpage.get('links') or {}
structured_data = onpage.get('structured_data') or {}
og = onpage.get('open_graph') or {}
tc = onpage.get('twitter_card') or {}
robots = technical.get('robots_txt') or {}
sitemap = technical.get('sitemap') or {}
canonical = technical.get('canonical') or {}
indexability = technical.get('indexability') or {}
cwv = pagespeed.get('core_web_vitals') or {}
ps_scores = pagespeed.get('scores') or {}
# Upsert query for company_website_analysis
# Uses ON CONFLICT DO UPDATE for idempotent upserts