
    i                    @    d Z ddlmZ ddlmZmZ ddlmZ d	dZd
dZ	y)uk  skills/interpretador.py — INTERPRETAR (estación 3)

Combo completo del ganador → strategy.json (queries + filtros para los 4 buscadores paralelos).
Skill canónica: interpretador-estrategia-busqueda.

Backend: claude CLI subprocess (LLM Opus 4.7 para diseñar estrategia).

Inputs:
  caja.analizar.combo_completo
  caja.input_start.{saturated, country}

Output:
  caja.sections.interpretar = {
    queries_fb: [..2..],
    queries_gethookd: [..2..],
    match_criteria: {...},
    cascada_paises: [country, 'UK', 'USA', 'AU', 'CA'] (REGLA #141 REFINADA msg 644),
    saturated_market, need_complex_videos, ...
  }
    )annotations)SkillContextSkillResult   )extract_json_from_claude_outputc           
        |j                         }|j                  di       }|j                  di       j                  d      xs i }|j                  d      xs i }|st        ddg      S t        |j                  dd            }|j                  d	      xs d
j	                         }t        ||||j                  dd            }|j                  |dd      }	|	j                  d      s3t        dd|	j                  d      xs |	j                  d       g      S t        |	j                  dd            }
|ddddg}t        t        j                  |            }i |
|||ddd}|j                  d|dd       t        d t        |j                  d!g             t        |j                  d"g             |d#$      S )%Ninput_startsectionsanalizarcombo_completoFuD   caja.analizar.combo_completo vacío — ANALIZAR debió correr antes)okerrors	saturatedcountryESproduct zclaude-opus-4-7   )model	timeout_sr   u   claude CLI falló: stderrerrorstdoutUKUSAAUCA      )saturated_marketneed_complex_videoscascada_paisesmin_candidates_per_buscadormax_retries_per_buscadorinterpretarreplacez!interpretador-estrategia-busqueda)modeactorT
queries_fbqueries_gethookd)queries_fb_countqueries_gh_countr"   )r   output)	read_cajagetr   boolupperbuild_strategy_prompt
claude_clir   listdictfromkeyswrite_sectionlen)inputscontextcajainpanalyzecombor   country_inputpromptresstrategy_rawcascadastrategys                EC:\Users\ferna\proyecto cero\_factory_3d_demo\skills\interpretador.pyrunrF      s   D
((="
%Chhz2&**:6<"GKK()/REe-s,tuuSWW[%01IWWY'/4668M"5-CGGIWYDZ[F


V+<

LC774=e/B3778CTChX[X_X_`gXhBi-j,kll23778R3HIL dE46G4==)*G
%(!'($%H -	Ilm$C\[]@^<_=@N`bdAe=f;B(D E E    c                t    dd l }|j                  | dd      }|rdnd}d| d| d	| d
| d| d| d| d| dS )Nr   Fr   )ensure_asciiindentu  Mercado saturado: rechazar UGC talking-head básico problem→solution; aceptar VSL larga / advertorial / comparativas / storyselling / parodia / lifestyle / mecanismo / voz over apilada / demo dramático / vertical hook fuerte. Tendencia LARGOS con concepto elaborado.u2   Mercado no saturado: aceptar también UGC simples.u   Eres el agente INTERPRETADOR del flow Factory v4 escalado de formato (5 similares + 1 arriesgado).
Tu tarea: convertir el COMBO COMPLETO del video ganador en una ESTRATEGIA DE BÚSQUEDA accionable.

Combo del ganador:
u.   

Contexto:
- País destino COD del producto: z
- Producto: z
- u   

Genera JSON estricto con esta estructura:
{
  "queries_fb": [
    {"buscador": "fb_1", "query": "<query 1 idioma país>", "filter_country": "z`"},
    {"buscador": "fb_2", "query": "<query 2 alternativa diversificada>", "filter_country": "z"}
  ],
  "queries_gethookd": [
    {"buscador": "gh_1", "filters": {"awareness": "<combo.awareness>", "scaled_days_min": 30, "scaled_days_max": 100, "country": ["u  ", "UK", "USA", "AU"]}},
    {"buscador": "gh_2", "filters": {"awareness": "<combo.awareness>", "category": "<categoría producto>", "format": "<formato_angulo>"}}
  ],
  "match_criteria": {
    "awareness": "<combo.awareness>",
    "sofisticacion": [<sof-1>, <sof>, <sof+1>],
    "deseo_principal_keywords": ["<kw1>", "<kw2>"],
    "avatar_age_range": [<min>, <max>],
    "fuerza_cambio_signals": ["<s1>", "<s2>"],
    "exclude_formats": ["UGC talking-head básico problem→solution"]
  }
}

REGLAS DURAS:
- País input (u   ) PRIMERO en cualquier filtro country (REGLA #141 REFINADA msg 644)
- DIVERSIFICAR queries — fb_1 ≠ fb_2 lingüística/semánticamente
- gh_1 enfoca en awareness + scaled_days · gh_2 enfoca en categoría + formato

Responde SOLO con el JSON.)jsondumps)r>   r?   r   r   _j	combo_strsat_notes          rE   r2   r2   @   s    U1=I `"V   # $1/ 2I * Q
 R_P_ `^^k]l mF GT  FU U  A$ $rG   N)r9   r5   r:   r   returnr   )
r>   r5   r?   strr   r0   r   rQ   rP   rQ   )
__doc__
__future__r   skills._libr   r   analizador_combor   rF   r2    rG   rE   <module>rW      s!   ( # 1 =#EL)rG   