File size: 1,869 Bytes
85f2f4b
56f917a
 
85f2f4b
 
56f917a
 
1128cf2
56f917a
 
85f2f4b
 
56f917a
 
 
 
 
 
 
 
 
325e056
56f917a
 
 
 
 
 
 
 
 
85f2f4b
56f917a
85f2f4b
56f917a
 
1128cf2
56f917a
325e056
56f917a
1128cf2
56f917a
 
 
1128cf2
56f917a
 
 
 
 
325e056
56f917a
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
"""
Ultra Supreme Analyzer - VERSIÓN SIMPLIFICADA
Solo formatea, no limita
"""

import re
from typing import Dict, List, Any, Tuple

class UltraSupremeAnalyzer:
    """Analyzer simplificado que NO limita CLIP"""
    
    def __init__(self):
        pass
    
    def ultra_supreme_analysis(self, clip_fast: str, clip_classic: str, clip_best: str) -> Dict[str, Any]:
        """Análisis mínimo - solo devuelve los datos raw"""
        return {
            "clip_fast": clip_fast,
            "clip_classic": clip_classic, 
            "clip_best": clip_best,
            "full_description": f"{clip_fast} {clip_classic} {clip_best}"
        }
    
    def build_ultra_supreme_prompt(self, ultra_analysis: Dict[str, Any], clip_results: List[str]) -> str:
        """NO construye nada - este método ya no se usa con el nuevo pipeline"""
        # Este método existe solo por compatibilidad
        # El verdadero trabajo se hace en optimizer.py con apply_flux_rules()
        return clip_results[0] if clip_results else ""
    
    def calculate_ultra_supreme_score(self, prompt: str, ultra_analysis: Dict[str, Any]) -> Tuple[int, Dict[str, int]]:
        """Calcula score basado en la longitud y riqueza del prompt"""
        score = 0
        breakdown = {}
        
        # Simple scoring basado en características del prompt final
        if len(prompt) > 50:
            score += 25
            breakdown["length"] = 25
        
        if "Shot on" in prompt:
            score += 25
            breakdown["camera"] = 25
            
        if "lighting" in prompt.lower():
            score += 25
            breakdown["lighting"] = 25
            
        if any(word in prompt.lower() for word in ["photography", "cinematic", "professional"]):
            score += 25
            breakdown["style"] = 25
        
        return min(score, 100), breakdown