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:
11
app/db.py
11
app/db.py
@@ -52,7 +52,8 @@ CREATE TABLE IF NOT EXISTS ai_queue (
|
||||
status TEXT DEFAULT 'pending',
|
||||
created_at TEXT DEFAULT (datetime('now')),
|
||||
completed_at TEXT,
|
||||
error TEXT
|
||||
error TEXT,
|
||||
language TEXT DEFAULT 'ES'
|
||||
);
|
||||
CREATE TABLE IF NOT EXISTS scores (
|
||||
domain TEXT PRIMARY KEY,
|
||||
@@ -74,6 +75,7 @@ _MIGRATIONS = [
|
||||
"ALTER TABLE enriched_domains ADD COLUMN ai_assessed_at TEXT",
|
||||
"ALTER TABLE enriched_domains ADD COLUMN site_analysis TEXT",
|
||||
"CREATE TABLE IF NOT EXISTS ai_queue (domain TEXT PRIMARY KEY, status TEXT DEFAULT 'pending', created_at TEXT DEFAULT (datetime('now')), completed_at TEXT, error TEXT)",
|
||||
"ALTER TABLE ai_queue ADD COLUMN language TEXT DEFAULT 'ES'",
|
||||
]
|
||||
|
||||
# Index build state
|
||||
@@ -332,11 +334,12 @@ async def get_enriched(min_score=0, cms=None, country=None, kit_digital=None, pa
|
||||
return total, rows
|
||||
|
||||
|
||||
async def queue_ai(domains: list[str]):
|
||||
async def queue_ai(domains: list[str], language: str = "ES"):
|
||||
async with aiosqlite.connect(SQLITE_PATH) as db:
|
||||
await db.executemany(
|
||||
"INSERT OR IGNORE INTO ai_queue (domain) VALUES (?)",
|
||||
[(d,) for d in domains],
|
||||
"""INSERT INTO ai_queue (domain, language) VALUES (?, ?)
|
||||
ON CONFLICT(domain) DO UPDATE SET language=excluded.language, status='pending'""",
|
||||
[(d, language) for d in domains],
|
||||
)
|
||||
await db.commit()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user