Saltar al contenido
Banco de tareas

DAT-001DatosImportante

Crear el esquema observatorio con exportaciones agregadas nocturnas

Dificultad
Avanzada
Estimación
3d
Estado
Abierta
Habilidades
postgrespg_cronprivacidad

Zona sensible. Toca permisos, datos personales, el mapa, secretos o la identidad de marca. Necesita revisión de la titular y conviene haber completado alguna tarea antes.

Contexto

El Observatorio (docs/observatorio/OBSERVATORIO.md §4.2) necesita series agregadas sin que ninguna fila individual salga de la base de datos. Hoy solo existen buzon_agregado y adhesiones_total, que son vistas vivas sin historia. Sin esta capa no se puede responder a ninguna pregunta de investigación ni hacer el informe trimestral.

Qué hacer

  1. Crear un esquema observatorio sin acceso desde la API (revoke all on schema observatorio from anon, authenticated).
  2. Crear tablas agregadas: obs_buzon_mes (tipo, tema, comunidad, mes, envios), obs_adhesiones_mes (comunidad, mes, n), obs_comunidad_mes (foro, mes, hilos, comentarios, reacciones por tipo, hilos con al menos 3 autoras distintas), obs_moderacion_mes (tabla, decisión, mes, n, mediana de horas hasta decidir).
  3. Escribir observatorio.exportar_dia(fecha date) (security definer, idempotente) que calcule el día anterior y acote la contribución de cada persona (como mucho 1 hilo y 5 comentarios por persona, foro y día cuentan).
  4. Marcar las celdas con menos de 10 como suprimidas (columna suprimida boolean) en vez de borrarlas, para que la publicación decida.
  5. Documentar en un comentario cómo programarla con pg_cron a las 03:30 de Madrid y crear un rol observatorio_lector que solo pueda leer este esquema.

Criterios de aceptación

  • Con la clave anon no se puede leer ninguna tabla de observatorio

  • Ninguna tabla del esquema tiene user_id, texto libre ni coordenadas

  • Ejecutar la exportación dos veces para el mismo día no duplica filas

  • El rol observatorio_lector no puede leer buzon, hilos ni auditoria

  • Hay una prueba con datos sintéticos que comprueba la supresión por debajo de 10

Archivos

Antes, esto

¿Te la quedas?

  1. 1. Haz un fork y crea la rama tarea/DAT-001-crear-el-esquema-observatorio-con-export.
  2. 2. En tareas/datos/DAT-001-crear-el-esquema-observatorio-con-exportaciones.md, cambia la cabecera:
    estado: reservada
    asignada: tu_usuario_de_github
  3. 3. Abre un PR con ese cambio (commit firmado: git commit -s). Al fusionarse, es tuya durante 14 días.

Todo lo demás