diff --git a/.gitignore b/.gitignore index 18eb24c..d400534 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,3 @@ data/ -TASKS.org BUGS.org diff --git a/TASKS.org b/TASKS.org new file mode 100644 index 0000000..bf9ab66 --- /dev/null +++ b/TASKS.org @@ -0,0 +1,45 @@ +#+title: TASKS — napi +#+date: [2026-02-25] + +* DONE Clonar estructura ~/napi-data/ a ~/napi-data2/ para ASIR1 +CLOSED: [2026-02-25] +** DONE Crear ~/napi-data2/ con 21 carpetas (apellido) + _plantilla/notas.md adaptada a Programación +** DONE Decisión arquitectónica: subdominio separado (asir1.qu3v3d0.tech) en vez de regex hack +- Más KISS: cada server block es independiente, sin lógica condicional +- SSL wildcard *.qu3v3d0.tech ya cubre todos los subdominios +** DONE Crear /var/www/napi2/ en zzz con viewer.html + marked.min.js + twemoji.min.js +** DONE Server block Nginx para asir1.qu3v3d0.tech (auth_pam → /var/www/napi2/data/$remote_user/) +** DONE Crear 21 usuarios SFTP en zzz (apellido, leet-speak passwords, chroot /home/USER/python/) +** DONE Unit systemd sshfs: ~/napi-data2/ ↔ zzz:/var/www/napi2/data/ +** DONE Generar lista alumnos-AKAs en ~/napi-data2/programacion-seguimiento-de-las-practicas.md + +* DONE Watcher XMPP para entregas ASIR1 — python-upload-watcher.sh +CLOSED: [2026-02-25] +** DONE v1: notificación básica por fichero (inotifywait + xmpp-notify.py) +** DONE v1.1: detectar creación de carpetas (CREATE,ISDIR) +** DONE v2: batching por carpeta — UN mensaje XMPP con listado completo (10s de silencio) +** DONE v3: detectar re-entregas (delete+recreate <120s) +** DONE v4: fix — estado en disco en vez de variables bash (subshell pipeline) +** DONE v5: fix — eliminar 'local' fuera de funciones (syntax error en subshell) +** DONE v6: filtrar __pycache__/, *.pyc, .git/, .venv/, node_modules/, .idea/, .vscode/ +** DONE v7: nombre completo en notificaciones ([María Jara] en vez de [jara]) + +* DONE Corregir notificaciones: no listar __pycache__/ +CLOSED: [2026-02-25] +- Resuelto en watcher v6: is_junk() + is_junk_path() filtran directorios y ficheros basura +- Filtros: __pycache__, *.pyc, *.pyo, .git, .venv, node_modules, .idea, .vscode +- También filtra basura Windows/macOS: Thumbs.db, desktop.ini, .DS_Store, *.tmp + +* DONE Nombre completo en notificaciones XMPP (nombre + apellido) +CLOSED: [2026-02-25] +- Resuelto en watcher v7: función fullname() mapea username → nombre completo +- Ejemplo: [jara] → [María Jara], [barrios] → [Andrés Barrios] +- El log sigue usando username (para correlacionar con el sistema) + +* DONE Documentación actualizada +CLOSED: [2026-02-25] +- README.md: reescrito para cubrir ambos grupos (DDAW2 + ASIR1) +- CLAUDE.md: actualizado con arquitectura multi-grupo +- scripts/README.md: watcher v7, ejemplos con nombres completos +- nginx/README.md: ambos server blocks documentados +- Commits: aa3126c + 42c1a7d → pushed to origin/main