feat: 5 fixes — dead site scoring, Kit Digital precision, social icons, GMB detection, social/GMB weighting

1. scorer: dead sites capped at 5 (was scoring HOT from SSL/CMS signals)
2. Kit Digital: require explicit kit-digital/agente-digitalizador signals;
   generic EU logo patterns (fondos-europeos, logo-ue, cofinanciado) removed.
   Gemini kit_digital_confirmed now overwrites heuristic in DB.
3. Browse table: social links replaced with compact coloured icon badges
   (fb/ig/in/x/tt/yt) linked to the profile URLs
4. site_analyzer: added has_gmb / gmb_url detection (Maps embed, Place links,
   LocalBusiness schema); fed to Gemini prompt
5. scorer: +5 no-social, +3 reachable contact; Gemini prompt includes GMB and
   social media management as sellable services; modal shows GMB/social status

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-04-14 07:21:02 +02:00
parent 793aea8a5f
commit dad910b6b0
6 changed files with 159 additions and 63 deletions

View File

@@ -378,7 +378,9 @@ async def save_ai_assessment(domain: str, assessment: dict, site_analysis: dict
domain,
),
)
# Also update contact_info + kit_digital from site_analysis if available
# Update contact_info + kit_digital from site_analysis if available.
# Gemini's kit_digital_confirmed is the authoritative verdict — it can
# override a false-positive from the heuristic scanner.
if site_analysis:
contacts = {
"emails": site_analysis.get("emails", []),
@@ -386,12 +388,15 @@ async def save_ai_assessment(domain: str, assessment: dict, site_analysis: dict
"whatsapp": site_analysis.get("whatsapp", []),
"social": site_analysis.get("social_links", []),
}
# Prefer Gemini's explicit verdict; fall back to heuristic if null
ai_kit = assessment.get("kit_digital_confirmed")
kit_val = int(ai_kit) if ai_kit is not None else int(site_analysis.get("kit_digital", False))
await db.execute(
"""UPDATE enriched_domains SET
kit_digital=?, kit_digital_signals=?, contact_info=?
WHERE domain=?""",
(
int(site_analysis.get("kit_digital", False)),
kit_val,
_json.dumps(site_analysis.get("kit_digital_signals", [])),
_json.dumps(contacts),
domain,