Padron y censo electoral

Esta guia describe el modulo vigente de padron electoral en v3.0. El contenido fue contrastado contra la UI administrativa, los validadores Wicket, ExcelUtils, la logica EJB de altas/cargas/sincronizacion y los procesos asincronos que actualizan votantes.

Ubicacion en el flujo

  • La pantalla de padron esta montada en /admin/election/voters.
  • En el wizard de gestion vuelve a Organizaciones y continua hacia Calendario.
  • Si la eleccion esta cerrada, la UI deriva a Eleccion cerrada y no permite edicion.
  • El comportamiento depende de manageVotersManual. Todas las elecciones nuevas comienzan en modo manual y no dependen de un servicio externo. Cualquier instalación que sincronice organizaciones mediante el contrato HTTP documentado puede cambiar el padrón a modo automático desde el detalle de la elección.

Reglas base del padron

  • La identidad operativa del padron es ORGID, no MAIL. Altas manuales, ediciones, cargas masivas y sincronizaciones reconcilian votantes por ORGID normalizado a mayusculas.
  • El backend exige ORGID unico por eleccion. No hay una regla equivalente de unicidad por email.
  • Las operaciones por snapshot no solo crean y actualizan: tambien eliminan votantes existentes cuyo ORGID ya no venga en la fuente, o filas legacy sin ORGID / duplicadas en base.
  • Si una eliminacion implicaria remover votantes que ya emitieron voto, la operacion completa se rechaza.
  • Mientras exista un proceso asincrono de padron u organizaciones para esa eleccion, la pantalla bloquea acciones operativas y muestra el progreso del proceso activo.

Carga masiva manual

La carga masiva solo aparece cuando la eleccion se gestiona con manageVotersManual=true y no hay procesamiento asincrono activo.

Columna Obligatoria Regla efectiva
IDIOMASiSolo acepta SP/ES, EN o PT.
NOMBRESiNo admite vacio.
ORGNAMENoQueda como nombre visible de la organizacion del votante.
MAILSiDebe tener formato basico valido.
CANTVOTOSSiDebe ser entero entre 1 y 11.
PAISNoSi viene informado, debe ser un codigo ISO de 2 letras.
ORGIDSiEs obligatorio en todas las filas y debe ser unico dentro del archivo.
  • El archivo debe ser .xlsx y el sistema procesa solo la primera hoja.
  • La carga es de tipo snapshot completo: crea votantes nuevos, actualiza los existentes por ORGID y elimina los que no esten presentes en la planilla.
  • El check Regenerar links de votacion para votantes existentes solo controla tokens: si esta apagado, mantiene el token actual y solo genera uno cuando falta; si esta encendido, regenera el token de cada votante actualizado.
  • Si no se dispone de otro identificador, la propia ayuda operativa del modulo admite usar el email como ORGID.
  • La operacion corre en segundo plano. Si ya existe otro proceso activo para la eleccion, la cola rechaza la nueva carga.

Alta, edicion y baja manual

La alta y edicion manual tambien solo estan disponibles cuando la eleccion gestiona el padron en modo manual.

  • El formulario expone Nombre, Email, Nombre organizacion, Idioma, # Votos, Pais y Org ID.
  • Nombre y Email son obligatorios. # Votos debe ser entero entre 1 y 11. Pais es opcional, pero si se informa debe ser ISO-2.
  • Org ID es obligatorio y valida el patron actual: debe comenzar con letra o numero, puede contener ., - o _ y no puede superar 255 caracteres.
  • Al dar de alta manualmente, el backend normaliza MAIL, PAIS y ORGID, genera un voteToken nuevo y deja electorsSet=true.
  • La edicion manual reutiliza las mismas validaciones y no regenera el token del votante.
  • La baja manual solo se permite si el votante no voto. Si se elimina el ultimo votante del padron, el backend vuelve electorsSet=false.

Listado y acciones operativas

  • La tabla muestra resumen de votantes listados, votantes que ya votaron, pendientes y total de votos representados.
  • Los filtros actuales permiten buscar por ORGID, nombre de organizacion, nombre o email, y combinar ademas pais, cantidad de votos, idioma y estado de voto.
  • La exportacion del padron solo se muestra cuando la eleccion tiene electorsSet=true.
  • Cada fila permite ver el link de votacion, regenerar el token individual y reenviar el mail de votacion.
  • Los botones de editar y eliminar solo se muestran en modo manual. En modo automatico sigue existiendo la tabla, pero sin acciones manuales de mantenimiento.

Sincronizacion automatica desde organizaciones

Cuando manageVotersManual=false, la pantalla no permite altas ni cargas manuales. El padron se recalcula a partir de la lista local de organizaciones de la eleccion.

  • La fuente inmediata del padron automatico no es un Excel ni un WS directo desde esta pantalla: toma las organizaciones ya cargadas en la base para esa eleccion. Ese modulo esta documentado en esta guia.
  • Solo generan votante automatico las organizaciones con member=true, deudor=false, orgId, membershipContactName, membershipContactEmail y votes.
  • El idioma del votante sale de membershipContactLanguage; si falta o no es valido, el backend cae a SP.
  • Si la fuente local tiene orgId duplicado, miembros con datos obligatorios faltantes o una baja potencial por encima del umbral configurado, la corrida termina en error y no aplica cambios.
  • La sincronizacion automatica tambien bloquea corridas que intentarian eliminar votantes que ya emitieron voto.
  • El boton Forzar sincronizacion del padron solo se habilita dentro de la ventana de calendario N_23_PERIODO_PADRON_MILACNIC_SYNC y cuando no hay otro proceso activo. El nombre de la clave se conserva por compatibilidad histórica; el proceso puede consumir organizaciones de cualquier backend que implemente el contrato documentado.
  • Ese forzado recalcula el padron desde organizaciones locales y mantiene los links de votacion existentes; solo genera token si falta. La UI actual no ofrece una variante de forzado que regenere todos los tokens.
  • El cron tambien usa la ventana N_23 y el mismo criterio de reconciliacion por ORGID. En el job combinado primero se sincronizan organizaciones y luego el padron.
  • El historial de corridas solo aparece en modo automatico. Muestra fecha/hora, estado, metricas de procesadas/creadas/actualizadas/eliminadas, duracion, syncRunId y mensaje. Al expandir una corrida, la UI muestra la auditoria texto anterior/nuevo del snapshot del votante por ORGID.

Acciones avanzadas

  • Regenerar link de votacion: encola una regeneracion masiva de voteToken para todos los votantes actuales. No ejecuta una sincronizacion y deja invalidos los links emitidos antes.
  • Eliminar completamente el padron: encola el borrado total del censo actual. No esta disponible si ya existen votos emitidos.
  • Ambas acciones usan procesamiento asincrono y quedan deshabilitadas mientras haya otro proceso activo o no existan votantes cargados.

Completitud y navegacion

  • Atras: vuelve a Organizaciones.
  • Continuar despues: navega a Calendario sin marcar el padron como completado.
  • Marcar como terminada y seguir: solo deja electorsSet=true y navega a Calendario. La implementacion actual no valida que exista al menos un votante cargado ni que una sincronizacion automatica se haya ejecutado.

Siguiente modulo

Despues del padron, el wizard continua en calendario y luego en tareas.

  • Calendario y tareas: configure etapas, hitos publicables, dependencias y orden de tareas desde esta guia.

Fuentes contrastadas

ElectionsManagerApp, ElectionCensusDashboard, UploadCensusFilePanel, AddUserVoterPanel, EditUserVoterDashboard, CensusListPanel, AutomaticCensusSyncActionsPanel, CensusAdvancedActionsPanel, CensusExcelFileValidator, CensusOrgIdIdentityValidator, CensusDeleteActionValidator, CensusVotesValidator, OrganizationValidationRules, ExcelUtils.processCensusExcel, ExcelUtils.exportToExcel, FilesUtils.getJbossTempCensusExample, ElectionsManagerEJBBean.updateElectionCensus, applyElectionCensusSnapshot, addUserVoter, editUserVoter, removeUserVoter, queueElectionCensusSyncFromOrganizations, processAutomaticOrganizationsAndCensusSync, regenerateElectionCensusVoteLinks, deleteElectionCensus y ElectionsManagerApp.properties.xml.