name: ikusmira_ruta_estudio
description: |
  Clasificador del "modo de lectura" de un artículo. Dado el cuerpo del
  artículo, decide qué etiqueta de lectura mostrar al lector y qué ruta de
  estudio sugerir:

    - lectura:rapida        — texto breve, ideal para resolver una duda puntual.
    - lectura:profunda      — texto extenso o conceptualmente exigente.
    - tipo:definicional     — el artículo se centra en definir un término.
    - tipo:narrativo        — predomina la exposición histórica / biográfica.
    - tipo:conceptual       — articulación de un concepto teórico.
    - tipo:tecnico          — abundancia de fórmulas, símbolos o tecnicismos.
    - tipo:comparativo      — compara escuelas, modelos o conceptos.

  La primera coincidencia define la etiqueta mostrada en /p/<slug>/. El
  default es `lectura:rapida`, la mayoría del corpus son entradas breves
  estilo enciclopédico.

rules:

  # ---------- TIPO ----------

  - id: tipo_tecnico_formulas
    when:
      all:
        - language_is: ["es"]
        - any:
            - regex: "(?ui)[a-zα-ωΑ-Ω]\\s*=\\s*[a-zα-ωΑ-Ω0-9\\(]"
            - contains_any:
                - "\\frac"
                - "\\sum"
                - "\\int"
                - "$$"
                - "\\(x\\)"
            - regex: "\\bP\\s*\\(\\s*[A-Z]\\s*\\|"
    classify: tipo:tecnico
    confidence: 0.9
    explanation: "Presencia de fórmulas, símbolos o notación matemática."

  - id: tipo_comparativo
    when:
      all:
        - language_is: ["es"]
        - any:
            - contains_any:
                - "diferencia entre"
                - "frente a"
                - "en contraste con"
                - "a diferencia de"
                - "mientras que"
                - "por su parte"
                - "comparación entre"
                - "comparativa entre"
            - regex: "(?ui)\\b(primero|segundo|tercero|de un lado|de otro lado|por un lado|por otro lado)\\b[\\s\\S]{0,400}?\\b(primero|segundo|tercero|de un lado|de otro lado|por un lado|por otro lado)\\b"
    classify: tipo:comparativo
    confidence: 0.78
    explanation: "Estructura comparativa entre dos o más posiciones."

  - id: tipo_narrativo_historico
    when:
      all:
        - language_is: ["es"]
        - any:
            - has_entity: { kind: date_iso, min_count: 2 }
            - regex: "(?ui)\\b(en|hacia|durante|hasta)\\s+(el\\s+|el año\\s+|la década\\s+de\\s+)?\\b1[0-9]{3}\\b"
            - regex: "(?ui)\\b(en|hacia|durante|hasta)\\s+(el\\s+)?siglo\\s+(xv|xvi|xvii|xviii|xix|xx|xxi)\\b"
            - contains_any:
                - "biografía"
                - "biografia"
                - "nació en"
                - "nacio en"
                - "falleció en"
                - "fallecio en"
                - "murió en"
                - "murio en"
                - "fue un"
                - "fue una"
                - "creció en"
                - "crecio en"
    classify: tipo:narrativo
    confidence: 0.82
    explanation: "Texto con fuerte componente cronológico o biográfico."

  - id: tipo_definicional
    when:
      all:
        - language_is: ["es"]
        - chars: { min: 60 }
        - any:
            - regex: "(?ui)^[A-ZÁÉÍÓÚÑÜ][\\w\\s]{2,60}(es|son)\\s+(un|una|el|la|los|las|aquel|cualquier|todo|toda|cada)\\b"
            - regex: "(?ui)^[A-ZÁÉÍÓÚÑÜ][\\w\\s]{2,60}:\\s+\\w"
            - contains_any:
                - "se define como"
                - "se denomina"
                - "se conoce como"
                - "recibe el nombre de"
                - "consiste en"
                - "consiste basicamente en"
    classify: tipo:definicional
    confidence: 0.85
    explanation: "El artículo se abre con una definición canónica."

  - id: tipo_conceptual
    when:
      all:
        - language_is: ["es"]
        - chars: { min: 400 }
        - any:
            - semantic_match:
                examples:
                  - "el concepto articula una relación entre los principios fundamentales y los fenómenos observables"
                  - "esta noción permite pensar la estructura de los procesos sociales más allá de su manifestación inmediata"
                  - "la categoría teórica organiza el campo de análisis y delimita los problemas pertinentes"
                  - "el modelo explicativo integra variables cuya interacción determina el resultado observado"
                threshold: 0.32
                language: "es"
            - regex: "(?ui)\\b(concepto|noción|categoría|teoría|modelo|enfoque)\\s+(de|del|sobre|para)\\s+\\w{4,}\\b[\\s\\S]{0,400}?\\b(concepto|noción|categoría|teoría|modelo|enfoque)\\s+(de|del|sobre|para)\\s+\\w{4,}\\b"
    classify: tipo:conceptual
    confidence: 0.78
    explanation: "El artículo articula una categoría teórica o un modelo."

  # ---------- LECTURA ----------

  - id: lectura_profunda_extension
    when:
      all:
        - language_is: ["es"]
        - chars: { min: 5000 }
    classify: lectura:profunda
    confidence: 0.85
    explanation: "Artículo extenso (más de 5 000 caracteres): planifica una lectura sin prisas."

  - id: lectura_profunda_estructura
    when:
      all:
        - language_is: ["es"]
        - chars: { min: 2500 }
        - paragraphs: { min: 6 }
    classify: lectura:profunda
    confidence: 0.7
    explanation: "Texto con varios apartados — léelo de forma estructurada."

default:
  classify: lectura:rapida
  confidence: 1.0
