feat: add EN/ES/RO language selector for AI pitch generation
- db.py: add `language` column to ai_queue; migration; queue_ai() accepts language param and re-queues with ON CONFLICT UPDATE so changing language works - main.py: batch and single assess endpoints accept `language` from request body - enricher.py: ai_worker_loop reads language column, passes to _assess_one() - replicate_ai.py: assess_domain() and _build_prompt() accept language param; OUTPUT LANGUAGE section injected into prompt so Gemini writes pitch/email in the requested language (EN/ES/RO) - index.html: flag dropdown (🇪🇸/🇬🇧/🇷🇴) next to AI Assess button; aiLang state default ES; language sent in all batch assessment requests Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
10
app/main.py
10
app/main.py
@@ -173,7 +173,10 @@ async def ai_assess_batch(body: dict):
|
||||
domains_list = body.get("domains", [])
|
||||
if not domains_list:
|
||||
return JSONResponse({"error": "no domains provided"}, status_code=400)
|
||||
await queue_ai(domains_list)
|
||||
language = body.get("language", "ES").upper()
|
||||
if language not in ("EN", "ES", "RO"):
|
||||
language = "ES"
|
||||
await queue_ai(domains_list, language=language)
|
||||
ensure_workers_alive() # ensure AI worker is alive when jobs are queued
|
||||
return {"queued": len(domains_list)}
|
||||
|
||||
@@ -233,10 +236,13 @@ async def ai_assess_single(body: dict):
|
||||
domain = body.get("domain")
|
||||
if not domain:
|
||||
return JSONResponse({"error": "no domain"}, status_code=400)
|
||||
language = body.get("language", "ES").upper()
|
||||
if language not in ("EN", "ES", "RO"):
|
||||
language = "ES"
|
||||
from app.site_analyzer import analyze_site
|
||||
from app.replicate_ai import assess_domain as gemini_assess
|
||||
analysis = await analyze_site(domain)
|
||||
assessment = await gemini_assess(analysis)
|
||||
assessment = await gemini_assess(analysis, language=language)
|
||||
await save_ai_assessment(domain, assessment, site_analysis=analysis)
|
||||
return {**assessment, "site_analysis": analysis}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user