{{ categoria }} · {{ fecha }}

{{ fecha_humanizada }}
🟢 {{ hits_bases|length }} bases 🟡 {{ hits_apertura|length }} plazos abiertos 🔵 {{ hits_oep|length }} OEP {{ hits_subfases|length }} sub-fases {% if hits_falsos_positivos %} 🔴 {{ hits_falsos_positivos|length }} a revisar {% endif %}
{{ boletines_procesados }} boletines procesados · {{ boletines_sin_publi }} sin publicación hoy · {{ boletines_no_cubiertos|length }} no cubiertos
{% if hits_bases %}

🟢 Bases de la convocatoria · {{ hits_bases|length }}

La fase con temario. Acción recomendada: revisar y planificar materiales.

{% for hit in hits_bases %}

{{ hit.administracion }} — {{ hit.cuerpo }} {% if hit.num_plazas %} · {{ hit.num_plazas }} plazas{% endif %}

📰 {{ hit.boletin }} 📄 pág. {{ hit.pagina }} {% if hit.codigo_cve %}{{ hit.codigo_cve }}{% endif %} {% if hit.paginas_duplicadas %}↻ {{ hit.paginas_duplicadas|length }} menciones{% endif %} 🎯 patrón: {{ hit.patron_disparado }}
{{ hit.fragmento_html|safe }}
{% if hit.datos_estructurados %}
{% if hit.datos_estructurados.plazas_turno_libre %} Turno libre: {{ hit.datos_estructurados.plazas_turno_libre }} {% endif %} {% if hit.datos_estructurados.plazas_promocion_interna %} Promoción interna: {{ hit.datos_estructurados.plazas_promocion_interna }} {% endif %} {% if hit.datos_estructurados.plazas_discapacidad %} Reserva discapacidad: {{ hit.datos_estructurados.plazas_discapacidad }} {% endif %} {% if hit.datos_estructurados.num_ejercicios %} Ejercicios: {{ hit.datos_estructurados.num_ejercicios }} {% endif %} {% if hit.datos_estructurados.tasa_examen %} Tasa examen: {{ hit.datos_estructurados.tasa_examen }} € {% endif %} {% if hit.datos_estructurados.sistema_selectivo %} Sistema: {{ hit.datos_estructurados.sistema_selectivo }} {% endif %}
{% endif %}
{% endfor %}
{% endif %} {% if hits_apertura %}

🟡 Apertura de plazo · {{ hits_apertura|length }}

Acción inmediata: avisar a alumnos. Plazo típico: 20 días hábiles.

{% for hit in hits_apertura %}

{{ hit.administracion }} — {{ hit.cuerpo }}

📰 {{ hit.boletin }} {% if hit.codigo_cve %}{{ hit.codigo_cve }}{% endif %} {% if hit.fecha_fin_plazo %} ⏰ Fin plazo: {{ hit.fecha_fin_plazo }} {% endif %} {% if hit.tasa_examen %}💰 Tasa: {{ hit.tasa_examen }} €{% endif %}
{{ hit.fragmento_html|safe }}
{% endfor %}
{% endif %} {% if hits_oep %}

🔵 Oferta de Empleo Público · {{ hits_oep|length }}

Planificación anual. Bases típicamente en 2–6 meses.

{% for hit in hits_oep %}

{{ hit.administracion }}{% if hit.titulo_oep %} — {{ hit.titulo_oep }}{% endif %}

📰 {{ hit.boletin }} {% if hit.codigo_cve %}{{ hit.codigo_cve }}{% endif %} {% if hit.num_plazas_total %}📊 {{ hit.num_plazas_total }} plazas en total{% endif %}
{{ hit.fragmento_html|safe }}
{% if hit.plazas_categoria %}

Plazas en tu categoría: {{ hit.plazas_categoria }}

{% endif %}
{% endfor %}
{% endif %} {% if procesos_actualizados %}

📊 Procesos actualizados hoy

{% for proceso in procesos_actualizados %}
{{ proceso.cuerpo }} — {{ proceso.administracion }}
{% if proceso.fecha_oep %} ✅ OEP {{ proceso.fecha_oep }} {% else %} ⏳ OEP {% endif %} · {% if proceso.fecha_bases %} ✅ Bases {{ proceso.fecha_bases }} {% else %} ⏳ Bases {% endif %} · {% if proceso.fecha_apertura %} ✅ Plazo {{ proceso.fecha_apertura }} {% else %} ⏳ Plazo {% endif %}
{% endfor %}
{% endif %} {% if hits_subfases %}
⚪ Sub-fases del proceso · {{ hits_subfases|length }} hits {% for hit in hits_subfases %}

{{ hit.subtipo_humanizado }} — {{ hit.administracion }} · {{ hit.cuerpo }}

📰 {{ hit.boletin }} {% if hit.codigo_cve %}{{ hit.codigo_cve }}{% endif %}
{{ hit.fragmento_html|safe }}
{% endfor %}
{% endif %} {% if hits_falsos_positivos %}
🔴 Posibles falsos positivos · {{ hits_falsos_positivos|length }} hits (revisar) {% for hit in hits_falsos_positivos %}
📰 {{ hit.boletin }} pág. {{ hit.pagina }} 🎯 patrón: {{ hit.patron_disparado }} 🚫 regla aplicada: {{ hit.regla_exclusion_aplicada }}
{{ hit.fragmento_html|safe }}
{% endfor %}
{% endif %} {% if boletines_no_cubiertos %}
Boletines no cubiertos por el sistema ({{ boletines_no_cubiertos|length }})

{{ boletines_no_cubiertos|join(', ') }}

{% endif %}