"""
Pattern definitions and constants for target extraction - Spanish
"""

TECHNICAL_CONCEPTS = [
    "estructuras de datos",
    "algoritmos",
    "complejidad computacional",
    "sistemas operativos",
    "memoria virtual",
    "concurrencia",
    "multihilo",
    "computación paralela",
    "sistemas distribuidos",
    "balanceo de carga",
    "arquitectura orientada a eventos",
    "ip",
    "udp",
    "icmp",
    "ssh",
    "ftp",
    "smtp",
    "snmp",
    "websockets",
    "vpn",
    "cdn",
    "servidores proxy",
    "firewalls",
    "nat",
    "bgp",
    "bases de datos relacionales",
    "bases de datos documentales",
    "bases de datos de grafos",
    "bases de datos de series temporales",
    "indexación",
    "optimización de consultas",
    "acid",
    "event sourcing",
    "almacén de datos",
    "etl",
    "lagos de datos",
    "caché",
    "redis",
    "elasticsearch",
    "programación orientada a objetos",
    "programación funcional",
    "desarrollo guiado por pruebas",
    "patrones de diseño",
    "inyección de dependencias",
    "integración continua",
    "despliegue continuo",
    "control de versiones",
    "git",
    "monolito",
    "microfrontends",
    "diseño dirigido por dominio",
    "arquitectura limpia",
    "infraestructura como código",
    "terraform",
    "ansible",
    "jenkins",
    "pipelines cicd",
    "monitoreo",
    "observabilidad",
    "logging",
    "prometheus",
    "grafana",
    "pruebas de carga",
    "ingeniería del caos",
    "aprendizaje por refuerzo",
    "visión por computadora",
    "procesamiento de lenguaje natural",
    "ia generativa",
    "transformers",
    "autoencoders",
    "ingeniería de características",
    "preprocesamiento de datos",
    "despliegue de modelos",
    "mlops",
    "bases de datos vectoriales",
    "encriptación",
    "hashing",
    "ssl",
    "tls",
    "oauth",
    "jwt",
    "arquitectura zero trust",
    "pruebas de penetración",
    "escaneo de vulnerabilidades",
    "control de acceso",
    "iam",
    "next.js",
    "svelte",
    "astro",
    "webassembly",
    "typescript",
    "tailwind css",
    "aplicaciones web progresivas",
    "diseño responsive",
    "optimización del rendimiento web",
    "grpc",
    "openapi",
    "soap",
    "limitación de tasa",
    "api gateway",
    "colas de mensajes",
    "rabbitmq",
    "kafka",
    "sistemas orientados a eventos",
    "trabajos en segundo plano",
    "webhooks",
    "ecs",
    "eks",
    "lambda",
    "cloud run",
    "app engine",
    "cloudflare workers",
    "malla de servicios",
    "istio",
    "helm",
    "orquestación de contenedores",
    "computación en el borde",
    "fog computing",
    "5g",
    "iot",
    "ar",
    "vr",
    "xr",
    "aprendizaje federado",
    "encriptación cuántica",
    "gemelos digitales",
    "computación neuromórfica",
    "go",
    "rust",
    "swift",
    "kotlin",
    "scala",
    "r",
    "bash",
    "c",
    "c++",
    "java",
    "ruby",
    "php",
    "dart",
    "flutter",
    "swiftui",
    "big data",
    "hadoop",
    "spark",
    "kafka streams",
    "flink",
    "databricks",
    "pipelines de datos",
    "analítica en tiempo real",
    "inteligencia de negocios",
    "power bi",
    "tableau",
]

CX_TECHNICAL_CONCEPTS = [
    "experiencia del cliente",
    "viaje del cliente",
    "satisfacción del cliente",
    "retención de clientes",
    "lealtad del cliente",
    "valor de vida del cliente",
    "net promoter score",
    "nps",
    "csat",
    "ces",
    "puntuación de esfuerzo del cliente",
    "tasa de abandono",
    "voz del cliente",
    "voc",
    "sistema de tickets",
    "software de mesa de ayuda",
    "sla",
    "tiempo de primera respuesta",
    "tiempo promedio de manejo",
    "aht",
    "resolución en primera llamada",
    "fcr",
    "tiempo de resolución",
    "gestión de colas",
    "gestión de escalamiento",
    "trabajo posterior a la llamada",
    "acw",
    "códigos de cierre",
    "disposición de llamada",
    "guiones de llamada",
    "base de conocimiento",
    "automatización de faq",
    "portal de autoservicio",
    "soporte omnicanal",
    "soporte multicanal",
    "manejo de llamadas",
    "llamadas entrantes",
    "llamadas salientes",
    "cola de llamadas",
    "transferencia cálida",
    "transferencia fría",
    "escalamiento de llamada",
    "creación de ticket",
    "soporte por voz",
    "soporte por email",
    "soporte por chat",
    "chat en vivo",
    "soporte en redes sociales",
    "soporte whatsapp",
    "soporte sms",
    "soporte por video",
    "agentes mixtos",
    "cambio de canal",
    "co-navegación",
    "compartir pantalla",
    "crm",
    "espacio de trabajo del agente",
    "escritorio unificado del agente",
    "zendesk",
    "freshdesk",
    "intercom",
    "salesforce service cloud",
    "hubspot service hub",
    "helpscout",
    "genesys",
    "genesys cloud",
    "twilio flex",
    "nice incontact",
    "five9",
    "avaya",
    "amazon connect",
    "ccaas",
    "frontapp",
    "aircall",
    "qualtrics",
    "medallia",
    "chatbots",
    "voicebots",
    "asistentes virtuales",
    "ia conversacional",
    "procesamiento de lenguaje natural",
    "enrutamiento nlp",
    "análisis de sentimiento",
    "detección de intención",
    "analítica de voz",
    "reconocimiento de voz",
    "analítica predictiva",
    "enrutamiento ia",
    "respuestas automatizadas",
    "copiloto ia",
    "asistente ia para agentes",
    "flujos de trabajo automatizados",
    "rpa",
    "transferencia de bot",
    "priorización de cola",
    "enrutamiento de llamadas",
    "enrutamiento basado en habilidades",
    "detección de emociones",
    "siguiente mejor acción",
    "plataforma de datos del cliente",
    "cdp",
    "integración crm",
    "integración de datos",
    "analítica en tiempo real",
    "dashboards",
    "automatización de reportes",
    "análisis de cohortes",
    "analítica de texto",
    "analítica del viaje",
    "analítica de feedback",
    "segmentación de clientes",
    "dashboard de rendimiento del agente",
    "tablas de clasificación",
    "seguimiento de kpi",
    "integración api",
    "webhooks",
    "integración con herramientas bi",
    "inicio de sesión único",
    "sso",
    "oauth",
    "api rest",
    "api graphql",
    "automatización de flujos",
    "ifttt",
    "zapier",
    "sincronización de datos",
    "obtención de datos en tiempo real",
    "experiencia de usuario",
    "interfaz de usuario",
    "diseño ux",
    "diseño ui",
    "personalización",
    "onboarding de clientes",
    "mapeo del viaje",
    "mapas de calor",
    "pruebas a/b",
    "optimización de conversión",
    "analítica comportamental",
    "bucles de retroalimentación del usuario",
    "respuestas conscientes del contexto",
    "centro de contacto como servicio",
    "ivr",
    "respuesta de voz interactiva",
    "marcador automático",
    "marcador predictivo",
    "distribuidor automático de llamadas",
    "acd",
    "grabación de llamadas",
    "grabación de pantalla",
    "monitoreo de llamadas",
    "coaching en vivo",
    "voz a texto",
    "telefonía en la nube",
    "diseño de menú ivr",
    "monitoreo en tiempo real",
    "dashboards de agentes",
    "softphone",
    "integración de auriculares",
    "voip",
    "conexión vpn",
    "monitoreo de latencia",
    "tiempo de actividad del sistema",
    "métricas de calidad de red",
    "latencia de llamada",
    "pérdida de paquetes",
    "webrtc",
    "centro de contacto basado en navegador",
    "entornos de cliente ligero",
    "rgpd",
    "ccpa",
    "privacidad de datos",
    "enmascaramiento de pii",
    "redacción de datos",
    "cumplimiento pci",
    "cumplimiento de seguridad",
    "control de acceso",
    "encriptación",
    "registros de auditoría",
    "permisos basados en roles",
    "captura de pago segura",
    "verificación de identidad",
    "autenticación de llamada",
    "biometría de voz",
    "autenticación basada en conocimiento",
    "consentimiento de grabación de sesión",
    "autenticación de dos factores",
    "módulos de e-learning",
    "microaprendizaje",
    "gamificación",
    "sesiones de coaching",
    "onboarding de agentes",
    "simulaciones de llamadas",
    "feedback de ia",
    "analítica de entrenamiento",
    "sugerencias de conocimiento",
    "surfacing contextual de conocimiento",
    "indicaciones de asistencia en tiempo real",
    "entornos de entrenamiento virtual",
    "perfil del cliente",
    "historial de interacciones",
    "notas del caso",
    "sentimiento del cliente",
    "intención del cliente",
    "orquestación del viaje",
    "soporte proactivo",
    "soporte predictivo",
    "hiperpersonalización",
    "engagement contextual",
    "gemelo digital del cliente",
    "ia de emociones",
    "traducción en tiempo real",
    "soporte de realidad aumentada",
    "sistemas auto-reparables",
    "motor de recomendaciones",
    "seguimiento de sentimiento del agente",
    "transcripción en tiempo real",
    "toma de notas automatizada",
    "indicaciones de engagement proactivo",
]

COMPOUND_PHRASES = {
    "soporte al cliente": "TICKET",
    "ticket de soporte": "TICKET",
    "mensaje de email": "EMAIL",
    "transcripción de chat": "TRANSCRIPT",
    "llamada telefónica": "CALL",
    "código fuente": "CODE",
}

TYPE_KEYWORDS = {
    "llamada": "CALL",
    "reunión": "MEETING",
    "junta": "MEETING",
    "chat": "CHAT",
    "conversación": "CONVERSATION",
    "informe": "REPORT",
    "reporte": "REPORT",
    "artículo": "ARTICLE",
}

CONTEXT_KEYWORDS = {
    "cliente": "CUSTOMER",
    "soporte": "SUPPORT",
    "ventas": "SALES",
    "técnico": "TECHNICAL",
}

NER_DOMAIN_PATTERNS = {
    "ACCOUNT_NUMBER": [
        r"\b[A-Z]{2,4}\d{6,12}\b",
        r"\bcuenta(?: número)?[:\s#]+([A-Z0-9-]+)\b",
        r"\bnúmero de cuenta[:\s#]+([A-Z0-9-]+)\b",
        r"\bperfil[:\s#]+([A-Z0-9-]+)\b",
        r"\bID[:\s#]+([A-Z0-9-]+)\b",
    ],
    "ORDER_NUMBER": [
        r"\bpedido(?: número)?[:\s#]+([A-Z0-9-]+)\b",
        r"\borden[:\s#]+([A-Z0-9-]+)\b",
        r"\bORD-?\d{5,12}\b",
        r"\bPO-?\d{5,12}\b",
    ],
    "TRACKING_NUMBER": [
        r"\b([A-Z]{2}-\d{7,12})\b",
        r"\bTRK\d{8,14}\b",
        r"\bseguimiento(?: número)?[:\s#]+([A-Z0-9-]+)\b",
        r"\brastreo[:\s#]+([A-Z0-9-]+)\b",
    ],
    "TICKET_NUMBER": [
        r"\bTIC?-?\d{5,12}\b",
        r"\bTK-?\d{5,12}\b",
        r"\bticket(?: número)?[:\s#]+([A-Z0-9-]+)\b",
        r"\bincidencia[:\s#]+([A-Z0-9-]+)\b",
    ],
    "EMAIL": [
        r"\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}\b",
    ],
    "PHONE_NUMBER": [
        r"\b\+?\d{1,3}[-\s]?\(?\d{2,4}\)?[-\s]?\d{3}[-\s]?\d{3,5}\b",
        r"\b\d{10}\b",
    ],
}

EMOTION_KEYWORDS = {
    "FRUSTRATED": {
        "keywords": [
            "frustrante",
            "frustrado",
            "frustrada",
            "molesto",
            "molesta",
            "irritado",
            "irritada",
            "harto",
            "harta",
            "cansado de esto",
        ],
        "intensity": 0.7,
    },
    "ANGRY": {
        "keywords": [
            "enojado",
            "enojada",
            "furioso",
            "furiosa",
            "enfadado",
            "enfadada",
            "indignado",
            "indignada",
            "inaceptable",
            "ridículo",
        ],
        "intensity": 0.9,
    },
    "DISAPPOINTED": {
        "keywords": [
            "decepcionado",
            "decepcionada",
            "desilusionado",
            "desilusionada",
            "esperaba mejor",
            "no estoy contento",
            "insatisfecho",
            "insatisfecha",
        ],
        "intensity": 0.7,
    },
    "WORRIED": {
        "keywords": [
            "preocupado",
            "preocupada",
            "inquieto",
            "inquieta",
            "ansioso",
            "ansiosa",
            "nervioso",
            "nerviosa",
            "temeroso",
            "temerosa",
        ],
        "intensity": 0.6,
    },
    "CONFUSED": {
        "keywords": [
            "confundido",
            "confundida",
            "no entiendo",
            "no estoy seguro",
            "perdido",
            "perdida",
            "no me queda claro",
        ],
        "intensity": 0.5,
    },
    "GRATEFUL": {
        "keywords": [
            "gracias",
            "agradecido",
            "agradecida",
            "aprecio",
            "muy amable",
            "excelente ayuda",
        ],
        "intensity": 0.6,
    },
    "SATISFIED": {
        "keywords": [
            "satisfecho",
            "satisfecha",
            "contento",
            "contenta",
            "feliz",
            "encantado",
            "encantada",
            "perfecto",
            "excelente",
            "fantástico",
        ],
        "intensity": 0.8,
    },
}

DAY_NAMES = {
    "lunes": "MON",
    "martes": "TUE",
    "miércoles": "WED",
    "jueves": "THU",
    "viernes": "FRI",
    "sábado": "SAT",
    "domingo": "SUN",
}

WORD_TO_NUM = {
    "uno": 1,
    "una": 1,
    "dos": 2,
    "tres": 3,
    "cuatro": 4,
    "cinco": 5,
    "seis": 6,
    "siete": 7,
    "par": 2,
}

DAY_ORDER = ["LUN", "MAR", "MIÉ", "JUE", "VIE", "SÁB", "DOM"]

NER_ADDRESS_ABBREVIATIONS = {
    "Calle": "C/",
    "Avenida": "Av.",
    "Carretera": "Ctra.",
    "Paseo": "P.º",
    "Plaza": "Pza.",
    "Boulevard": "Blvd.",
}
