actualoizacion del bloque 1 temas 1 a 4 y planning

This commit is contained in:
Tatiana Villa 2026-05-09 19:24:13 +02:00
parent d3867f9015
commit 2bcf6cbb23
13 changed files with 3980 additions and 75 deletions

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

1992
bloque1/leyes/TREBEP.md Normal file

File diff suppressed because it is too large Load Diff

1706
bloque1/leyes/TREBEP.txt Normal file

File diff suppressed because it is too large Load Diff

View File

@ -4,43 +4,48 @@
<meta charset="UTF-8">
<title>Planning TAI — Mayo 2026</title>
<style>
body { font-family: Arial, Helvetica, sans-serif; font-size: 12pt; color: #111; background: #fff; padding: 1.5cm; }
h1 { font-size: 20pt; text-align: center; margin-bottom: 0.1em; }
.subtitle { text-align: center; font-size: 11pt; color: #666; margin-bottom: 1.5em; }
* { box-sizing: border-box; margin: 0; padding: 0; }
body { font-family: Arial, Helvetica, sans-serif; font-size: 11pt; color: #111; background: #fff; padding: 1cm 1.5cm; }
h1 { font-size: 18pt; text-align: center; margin-bottom: 0.2em; }
.subtitle { text-align: center; font-size: 10pt; color: #666; margin-bottom: 1em; }
table { width: 100%; border-collapse: collapse; table-layout: fixed; }
th {
background: #5d6d7e; color: #fff; padding: 8px 4px;
text-align: center; font-size: 11pt;
/* ── Semana ─────────────────────────────────── */
.semana { margin-bottom: 1.5em; page-break-after: always; break-after: page; }
.semana:last-of-type { page-break-after: auto; break-after: auto; }
/* ── Cabecera de días ───────────────────────── */
.cabecera-dias { display: flex; gap: 4px; margin-bottom: 4px; }
.cabecera-dias span {
flex: 1; text-align: center; font-size: 9pt; font-weight: bold;
color: #fff; background: #5d6d7e; padding: 4px 2px; border-radius: 3px;
-webkit-print-color-adjust: exact; print-color-adjust: exact;
}
td {
border: 1px solid #ccc; vertical-align: top;
padding: 6px 8px; height: 90px; font-size: 10pt;
/* ── Fila de días ───────────────────────────── */
.dias { display: flex; gap: 4px; }
/* ── Celda día ──────────────────────────────── */
.dia {
flex: 1; border: 1px solid #ccc; border-radius: 4px;
padding: 6px 7px; min-height: 160px;
page-break-inside: avoid; break-inside: avoid;
}
.dia .num { font-size: 15pt; font-weight: bold; color: #333; display: block; margin-bottom: 5px; line-height: 1; }
.dia .contenido { font-size: 8pt; color: #444; line-height: 1.45; }
.day-num { font-size: 16pt; font-weight: bold; color: #333; display: block; margin-bottom: 4px; }
.day-content { font-size: 9pt; color: #444; line-height: 1.4; }
/* ── Tipos de día ───────────────────────────── */
.vacio { background: #f9f9f9; border-color: #eee; }
.fin-semana { background: #fafafa; -webkit-print-color-adjust: exact; print-color-adjust: exact; }
.simulacro { background: #fff8e1; -webkit-print-color-adjust: exact; print-color-adjust: exact; }
.simulacro .num { color: #8a6000; }
.examen { background: #fde8e8; -webkit-print-color-adjust: exact; print-color-adjust: exact; }
.examen .num { font-size: 20pt; color: #a00; }
.examen .contenido { font-weight: bold; color: #a00; font-size: 11pt; }
.hoy { background: #e8f4fd; }
.descanso { background: #f0fff0; }
.descanso .day-num { color: #2a7a2a; }
.simulacro { background: #fff8e1; }
.simulacro .day-num { color: #8a6000; }
.examen { background: #fde8e8 !important; -webkit-print-color-adjust: exact; print-color-adjust: exact; }
.examen .day-num { font-size: 20pt; color: #a00; }
.examen .day-content { font-weight: bold; color: #a00; font-size: 11pt; }
.vacio { background: #f9f9f9; }
.fin-semana { background: #fafafa; }
.leyenda { margin-top: 1.5em; font-size: 9.5pt; display: flex; gap: 1.5em; flex-wrap: wrap; }
.leyenda-item { display: flex; align-items: center; gap: 6px; }
.leyenda-color { width: 16px; height: 16px; border: 1px solid #bbb; flex-shrink: 0; }
@media print {
body { padding: 0.8cm 1cm; }
.descanso, .simulacro, .examen, .hoy { -webkit-print-color-adjust: exact; print-color-adjust: exact; }
}
/* ── Leyenda ────────────────────────────────── */
.leyenda { margin-top: 1.2em; font-size: 9pt; display: flex; gap: 1.2em; flex-wrap: wrap; }
.leyenda-item { display: flex; align-items: center; gap: 5px; }
.leyenda-color { width: 14px; height: 14px; border: 1px solid #bbb; flex-shrink: 0; }
</style>
</head>
<body>
@ -48,52 +53,148 @@
<h1>Planning de repaso TAI</h1>
<p class="subtitle">Mayo 2026 · Examen: <strong>sábado 23 de mayo</strong></p>
<table>
<tr>
<th>Lun</th>
<th>Mar</th>
<th>Mié</th>
<th>Jue</th>
<th>Vie</th>
<th>Sáb</th>
<th>Dom</th>
</tr>
<tr>
<!-- semana 1: 410 mayo (lun-vie están antes del examen, empezamos sáb 9) -->
<td class="vacio"></td>
<td class="vacio"></td>
<td class="vacio"></td>
<td class="vacio"></td>
<td class="hoy"><span class="day-num">8</span><span class="day-content">Hoy 🎉<br>Preparar el planning</span></td>
<td class="fin-semana"><span class="day-num">9</span><span class="day-content">B1: Leyes<br>Jerarquía normativa<br>Flashcards B1</span></td>
<td class="fin-semana"><span class="day-num">10</span><span class="day-content">B2: LPAC<br>Plazos, recursos<br>Proc. administrativo</span></td>
</tr>
<tr>
<td><span class="day-num">11</span><span class="day-content">B2: LRJSP<br>Órganos, competencia<br>Organización AGE</span></td>
<td class="descanso"><span class="day-num">12</span><span class="day-content">💤 Descanso<br>Solo flashcards<br>si apetece</span></td>
<td><span class="day-num">13</span><span class="day-content">B3: BBDD<br>SQL, normalización<br>Modelos de datos</span></td>
<td><span class="day-num">14</span><span class="day-content">B3: Programación<br>Ciclo de vida<br>Metodologías ágiles</span></td>
<td><span class="day-num">15</span><span class="day-content">B4: Redes<br>OSI, TCP/IP<br>Puertos, protocolos</span></td>
<td class="fin-semana"><span class="day-num">16</span><span class="day-content">B4: Sistemas<br>RAID, virtualización<br>Cloud, almacenamiento</span></td>
<td class="fin-semana"><span class="day-num">17</span><span class="day-content">B4: Seguridad<br>Ataques, cifrado<br>ENS, firma electrónica</span></td>
</tr>
<tr>
<td><span class="day-num">18</span><span class="day-content">B1 + B2<br>Flashcards + test<br>Repaso rápido</span></td>
<td class="descanso"><span class="day-num">19</span><span class="day-content">💤 Descanso<br>Nada de estudio</span></td>
<td class="simulacro"><span class="day-num">20</span><span class="day-content">🧪 Simulacro<br>Examen completo<br>con tiempo real</span></td>
<td><span class="day-num">21</span><span class="day-content">Repaso de fallos<br>del simulacro</span></td>
<td><span class="day-num">22</span><span class="day-content">Solo flashcards<br>Nada nuevo<br>Descansar pronto</span></td>
<td class="examen"><span class="day-num">23</span><span class="day-content">🎯 EXAMEN</span></td>
<td class="vacio"></td>
</tr>
</table>
<!-- ══════════════════════════════════════════ SEMANA 1: 511 mayo -->
<section class="semana">
<div class="cabecera-dias">
<span>Lun</span><span>Mar</span><span>Mié</span><span>Jue</span><span>Vie</span><span>Sáb</span><span>Dom</span>
</div>
<div class="dias">
<div class="dia vacio"></div>
<div class="dia vacio"></div>
<div class="dia vacio"></div>
<div class="dia vacio"></div>
<div class="dia">
<span class="num">8</span>
<span class="contenido">Preparar el planning<br>Preparar flashcards</span>
</div>
<div class="dia fin-semana">
<span class="num">9</span>
<span class="contenido">
1.1. La Constitución Española de 1978. Derechos y deberes fundamentales. Su garantía y suspensión. La Corona: funciones constitucionales del Rey.<br>
1.2. Las Cortes Generales: atribuciones del Congreso de los Diputados y del Senado. El Tribunal Constitucional: composición y atribuciones. El Defensor del Pueblo.<br>
1.3. El Gobierno: composición, nombramiento y cese. Las funciones del Gobierno. Relaciones entre el Gobierno y las Cortes Generales.<br>
1.4. Estatuto Básico del Empleado Público: derechos y deberes, provisión de puestos, promoción interna, carrera profesional, situaciones administrativas, incompatibilidades y régimen sancionador. Ley 19/2013 de transparencia. Agenda 2030 y ODS.
</span>
</div>
<div class="dia fin-semana">
<span class="num">10</span>
<span class="contenido">
1.5. Políticas de igualdad y contra la violencia de género. Igualdad LGTBI. Discapacidad y dependencia.<br>
1.6. Sociedad de la información. Identidad y firma electrónica. DNIe. Agenda Digital para España.<br>
1.7. Protección de datos personales: principios, derechos y obligaciones. Derechos digitales.<br>
1.8. Acceso electrónico a los servicios públicos. Registros, notificaciones, medios electrónicos. ENS y ENI. NTI.
</span>
</div>
</div>
</section>
<!-- ══════════════════════════════════════════ SEMANA 2: 1218 mayo -->
<section class="semana">
<div class="cabecera-dias">
<span>Lun</span><span>Mar</span><span>Mié</span><span>Jue</span><span>Vie</span><span>Sáb</span><span>Dom</span>
</div>
<div class="dias">
<div class="dia">
<span class="num">11</span>
<span class="contenido">
1.9. Instrumentos de acceso electrónico: sedes electrónicas, canales, identificación y autenticación. Infraestructuras y servicios comunes.<br>
2.1. Informática básica. Representación y comunicación de la información: elementos constitutivos de un sistema de información. Características y funciones. Arquitectura de ordenadores. Componentes internos de los equipos microinformáticos.<br>
2.2. Periféricos: conectividad y administración. Elementos de impresión. Elementos de almacenamiento. Elementos de visualización y digitalización.<br>
2.3. Tipos abstractos y Estructuras de datos. Organizaciones de ficheros. Algoritmos. Formatos de información y ficheros.
</span>
</div>
<div class="dia">
<span class="num">12</span>
<span class="contenido">
2.4. Sistemas operativos. Características y elementos constitutivos. Sistemas Windows. Sistemas Unix y Linux. Sistemas operativos para dispositivos móviles.<br>
2.5. Sistemas de gestión de bases de datos relacionales, orientados a objetos y NoSQL: características y componentes.<br>
3.1. Modelado de datos, metodologías y reglas. Entidades, atributos y relaciones. Diseño de bases de datos. Diseño lógico y físico. El modelo lógico relacional. Normalización.<br>
3.2. Lenguajes de programación. Representación de tipos de datos. Operadores. Instrucciones condicionales. Bucles y recursividad. Procedimientos, funciones y parámetros. Vectores y registros. Estructura de un programa.
</span>
</div>
<div class="dia">
<span class="num">13</span>
<span class="contenido">
3.3. Lenguajes de interrogación de bases de datos. Estándar ANSI SQL. Procedimientos almacenados. Eventos y disparadores.<br>
3.4. Diseño y programación orientada a objetos. Elementos y componentes software: objetos, clases, herencia, métodos, sobrecarga. Ventajas e inconvenientes. Patrones de diseño y lenguaje de modelado unificado (UML).<br>
3.5. Arquitectura Java EE/Jakarta EE y plataforma .NET: componentes, persistencia y seguridad. Características, elementos, lenguajes y funciones en ambos entornos. Desarrollo de interfaces.
</span>
</div>
<div class="dia">
<span class="num">14</span>
<span class="contenido">
3.6. Arquitectura de sistemas cliente/servidor y multicapas: componentes y operación. Arquitecturas de servicios web y protocolos asociados.<br>
3.7. Aplicaciones web. Desarrollo web front-end y en servidor, multiplataforma y multidispositivo. Lenguajes: HTML, XML y sus derivaciones. Navegadores y lenguajes de programación web. Lenguajes de script.<br>
3.8. Accesibilidad, diseño universal y usabilidad. Acceso y usabilidad de las tecnologías, productos y servicios relacionados con la sociedad de la información. Confidencialidad y disponibilidad de la información en puestos de usuario final. Conceptos de seguridad en el desarrollo de los sistemas.<br>
3.9. Repositorios: estructura y actualización. Generación de código y documentación. Metodologías de desarrollo. Pruebas. Programas para control de versiones. Plataformas de desarrollo colaborativo de software.
</span>
</div>
<div class="dia">
<span class="num">15</span>
<span class="contenido">
4.1. Administración del Sistema operativo y software de base. Actualización, mantenimiento y reparación del sistema operativo.<br>
4.2. Administración de bases de datos. Sistemas de almacenamiento y su virtualización. Políticas, sistemas y procedimientos de backup y su recuperación. Backup de sistemas físicos y virtuales. Virtualización de sistemas y virtualización de puestos de usuario.<br>
4.3. Administración de servidores de correo electrónico y sus protocolos. Administración de contenedores y microservicios.
</span>
</div>
<div class="dia fin-semana">
<span class="num">16</span>
<span class="contenido">
4.4. Administración de redes de área local. Gestión de usuarios. Gestión de dispositivos. Monitorización y control de tráfico.<br>
4.5. Conceptos de seguridad de los sistemas de información. Seguridad física. Seguridad lógica. Amenazas y vulnerabilidades. Técnicas criptográficas y protocolos seguros. Mecanismos de firma digital. Infraestructura física de un CPD: acondicionamiento y equipamiento. Sistemas de gestión de incidencias. Control remoto de puestos de usuario.<br>
4.6. Comunicaciones. Medios de transmisión. Modos de comunicación. Equipos terminales y equipos de interconexión y conmutación. Redes de comunicaciones. Redes de conmutación y redes de difusión. Comunicaciones móviles e inalámbricas.
</span>
</div>
<div class="dia fin-semana">
<span class="num">17</span>
<span class="contenido">
4.7. El modelo TCP/IP y el modelo de referencia de interconexión de sistemas abiertos (OSI) de ISO. Protocolos TCP/IP.<br>
4.8. Internet: arquitectura de red. Origen, evolución y estado actual. Principales servicios. Protocolos HTTP, HTTPS y SSL/TLS.<br>
4.9. Seguridad y protección en redes de comunicaciones. Seguridad perimetral. Acceso remoto seguro a redes. Redes privadas virtuales (VPN). Seguridad en el puesto del usuario.<br>
4.10. Redes locales. Tipología. Técnicas de transmisión. Métodos de acceso. Dispositivos de interconexión.
</span>
</div>
</div>
</section>
<!-- ══════════════════════════════════════════ SEMANA 3: 1923 mayo -->
<section class="semana">
<div class="cabecera-dias">
<span>Lun</span><span>Mar</span><span>Mié</span><span>Jue</span><span>Vie</span><span>Sáb</span><span>Dom</span>
</div>
<div class="dias">
<div class="dia">
<span class="num">18</span>
<span class="contenido"><strong>Repaso</strong><br>B1. Organización del Estado y Administración electrónica<br>B2. Tecnología básica</span>
</div>
<div class="dia">
<span class="num">19</span>
<span class="contenido"><strong>Repaso</strong><br>B3. Desarrollo de sistemas<br>B4. Sistemas y comunicaciones</span>
</div>
<div class="dia simulacro">
<span class="num">20</span>
<span class="contenido">🧪 Simulacro<br>Examen completo<br>con tiempo real</span>
</div>
<div class="dia">
<span class="num">21</span>
<span class="contenido">Repaso de fallos<br>del simulacro</span>
</div>
<div class="dia">
<span class="num">22</span>
<span class="contenido">Solo flashcards<br>Nada nuevo<br>Descansar pronto</span>
</div>
<div class="dia examen">
<span class="num">23</span>
<span class="contenido">🎯 EXAMEN</span>
</div>
<div class="dia vacio"></div>
</div>
</section>
<div class="leyenda">
<div class="leyenda-item"><div class="leyenda-color" style="background:#e8f4fd;"></div> Hoy</div>
<div class="leyenda-item"><div class="leyenda-color" style="background:#f0fff0;"></div> Descanso</div>
<div class="leyenda-item"><div class="leyenda-color" style="background:#fff8e1;"></div> Simulacro</div>
<div class="leyenda-item"><div class="leyenda-color" style="background:#fde8e8;"></div> Examen</div>
<div class="leyenda-item"><div class="leyenda-color" style="background:#fafafa;"></div> Fin de semana</div>
<div class="leyenda-item"><div class="leyenda-color" style="background:#fff8e1;-webkit-print-color-adjust:exact;print-color-adjust:exact;"></div> Simulacro</div>
<div class="leyenda-item"><div class="leyenda-color" style="background:#fde8e8;-webkit-print-color-adjust:exact;print-color-adjust:exact;"></div> Examen</div>
<div class="leyenda-item"><div class="leyenda-color" style="background:#fafafa;-webkit-print-color-adjust:exact;print-color-adjust:exact;"></div> Fin de semana</div>
</div>
</body>

106
scripts/trebep_a_audio.py Normal file
View File

@ -0,0 +1,106 @@
"""
Convierte TREBEP.md a audio dividido por Títulos.
Genera un MP3 por Título (8 Títulos + Disposiciones) en audios/mp3/bloque1/.
Usa edge_tts (es-ES-AlvaroNeural) + ffmpeg, igual que md_a_audio_con_edge_y_metadatos.py
"""
import asyncio
import edge_tts
import re
import os
from pathlib import Path
def limpiar_markdown(texto):
texto = re.sub(r'```.*?```', ' [código] ', texto, flags=re.DOTALL)
texto = re.sub(r'\|.*?\|', '', texto)
texto = re.sub(r'[#*_~`>]', '', texto)
return ' '.join(texto.split())
def dividir_por_titulos(md_path):
"""
Devuelve lista de (nombre_fichero, titulo_meta, texto_seccion).
Las secciones son los 8 Títulos + un bloque final de Disposiciones.
"""
texto = Path(md_path).read_text(encoding='utf-8')
secciones = []
# Separar por ## TÍTULO
partes = re.split(r'(?=^## TÍTULO)', texto, flags=re.MULTILINE)
for parte in partes:
if not parte.strip():
continue
match = re.match(r'^## (TÍTULO ([IVX]+)) · (.+)', parte, re.MULTILINE)
if match:
titulo_num = match.group(2)
titulo_texto = match.group(3).strip()
num_romano = {'I': 1, 'II': 2, 'III': 3, 'IV': 4,
'V': 5, 'VI': 6, 'VII': 7, 'VIII': 8}.get(titulo_num, 0)
nombre = f'trebep_titulo{num_romano:02d}_audio'
meta = f'TREBEP · Título {titulo_num}: {titulo_texto}'
# Si hay disposiciones al final de TÍTULO VIII, separarlas
idx_disp = parte.find('\n#### Disposición adicional primera')
if idx_disp != -1:
secciones.append((nombre, meta, parte[:idx_disp]))
disp_texto = parte[idx_disp:]
secciones.append(('trebep_disposiciones_audio',
'TREBEP · Disposiciones adicionales, transitorias y finales',
disp_texto))
else:
secciones.append((nombre, meta, parte))
else:
# Bloque inicial (antes del primer Título): ignorar si es mínimo
if len(parte.strip()) > 100:
secciones.append(('trebep_intro_audio', 'TREBEP · Introducción', parte))
return secciones
async def generar_audio(nombre, meta, texto, mp3_dir):
mp3_path = mp3_dir / f'{nombre.replace("_audio", "")}.mp3'
temp_path = mp3_dir / f'{nombre}.temp.mp3'
if mp3_path.exists():
print(f'⏭️ Ya existe, omitiendo: {mp3_path.name}')
return
texto_limpio = limpiar_markdown(texto)
print(f'🎙️ Generando: {mp3_path.name} ({len(texto_limpio.split())} palabras)...')
comunicar = edge_tts.Communicate(texto_limpio, 'es-ES-AlvaroNeural')
await comunicar.save(str(temp_path))
meta_escaped = meta.replace('"', '\\"')
comando = (
f'ffmpeg -i "{temp_path}" -codec:a libmp3lame -b:a 192k -ar 44100 '
f'-metadata title="{meta_escaped}" -id3v2_version 3 -write_id3v1 1 '
f'-y "{mp3_path}" > /dev/null 2>&1'
)
os.system(comando)
if temp_path.exists():
temp_path.unlink()
print(f'✅ Listo: {mp3_path.name} (Título: {meta})')
async def main():
base_dir = Path(__file__).parent.parent
md_path = base_dir / 'bloque1' / 'leyes' / 'TREBEP.md'
mp3_dir = base_dir / 'audios' / 'mp3' / 'bloque1'
mp3_dir.mkdir(parents=True, exist_ok=True)
secciones = dividir_por_titulos(md_path)
print(f'\nTREBEP.md → {len(secciones)} secciones de audio\n')
for nombre, meta, texto in secciones:
await generar_audio(nombre, meta, texto, mp3_dir)
print('\n🎧 Todos los audios del TREBEP generados en:', mp3_dir)
if __name__ == '__main__':
asyncio.run(main())