CoolFace
Apppublic

OctusTech/cartalogo-api

sourceHugging Faceupdated 1y agoView on Hugging Face
0likes
validate_data.py83 linesDownload Raw Back to scripts
1import os2from dotenv import load_dotenv3from supabase import create_client, Client4import json5 6# Carrega variáveis de ambiente7load_dotenv()8 9class DataValidator:10    def __init__(self):11        """Inicializa o validador de dados"""12        supabase_url = os.getenv('SUPABASE_URL')13        supabase_key = os.getenv('SUPABASE_KEY')  # Usa a chave anon para leitura14        15        if not supabase_url or not supabase_key:16            raise ValueError("❌ Credenciais do Supabase não encontradas!")17        18        self.supabase: Client = create_client(supabase_url, supabase_key)19        print("✅ Conectado ao Supabase para validação.")20 21    def validate_piece(self, sku: str):22        """Valida os dados de uma peça específica e suas imagens"""23        print(f"\n🔍 Validando SKU: {sku}")24        25        try:26            # 1. Busca metadados da peça27            piece_response = self.supabase.table('pieces').select('*').eq('sku', sku).single().execute()28            if not piece_response.data:29                print(f"❌ Peça com SKU {sku} não encontrada na tabela 'pieces'.")30                return31            32            piece_data = piece_response.data33            print("\n--- ✅ Dados da Peça (tabela 'pieces') ---")34            print(f"  - Nome: {piece_data.get('name')}")35            print(f"  - Coleção: {piece_data.get('collection')}")36            print(f"  - Descrição (CSV): {piece_data.get('description', '')[:100]}...")37            38            # 2. Busca imagens associadas39            images_response = self.supabase.table('piece_images').select('*').eq('sku', sku).execute()40            if not images_response.data:41                print("❌ Nenhuma imagem encontrada na tabela 'piece_images'.")42                return43            44            print(f"\n--- ✅ Imagens Associadas ({len(images_response.data)}) ---")45            46            for i, image_data in enumerate(images_response.data, 1):47                image_id = image_data.get('id')48                print(f"\n  🖼️  Imagem {i}: {image_data.get('file_name')}")49                print(f"    - ID da Imagem: {image_id}")50                print(f"    - URL Original: {'Sim' if image_data.get('original_url') else 'Não'}")51                print(f"    - URL Thumbnail: {'Sim' if image_data.get('thumbnail_url') else 'Não'}")52                print(f"    - Descrição IA: {'Sim' if image_data.get('ai_description') else 'Não'} ({len(image_data.get('ai_description', ''))} caracteres)")53                print(f"    - Análise Técnica: {'Sim' if image_data.get('technical_analysis') else 'Não'}")54                print(f"    - Cores Dominantes: {'Sim' if image_data.get('dominant_colors') else 'Não'}")55                print(f"    - Score de Qualidade: {image_data.get('quality_score')}")56                57                # 3. Busca tags da imagem58                tags_response = self.supabase.table('image_tags').select('tag, tag_type').eq('image_id', image_id).execute()59                if tags_response.data:60                    tags = [f"{t['tag']} ({t['tag_type']})" for t in tags_response.data]61                    print(f"    - Tags Automáticas ({len(tags)}): {', '.join(tags)}")62                else:63                    print("    - Tags Automáticas: ❌ Nenhuma encontrada.")64                65                # 4. Busca características visuais66                features_response = self.supabase.table('visual_features').select('feature_type, feature_value').eq('image_id', image_id).execute()67                if features_response.data:68                    features = [f"{f['feature_type']}:{f['feature_value']}" for f in features_response.data]69                    print(f"    - Características Visuais ({len(features)}): {', '.join(features)}")70                else:71                    print("    - Características Visuais: ❌ Nenhuma encontrada.")72 73        except Exception as e:74            print(f"❌ Erro durante a validação: {e}")75 76if __name__ == "__main__":77    validator = DataValidator()78    79    # Substitua pelo SKU de uma peça que você acabou de processar80    sku_para_validar = "CO8671" 81    82    validator.validate_piece(sku_para_validar)83