todo el codigo que necesiten :)
El objetivo de la aplicación es ser una capa de presentación tanto del REP como de los resultados de cada elección, ahora a nivel de arquitectura de la aplicación mi modelo de datos para esa fase es la siguiente:
A nivel fisico las entidades son:
Estados > Municipios > Parroquias > Centros > Mesa
Tomando esto en cuenta tenemos tres tipos de data para cada entidad
* La data fisica e inmutable en el tiempo como el codigo del CNE, el nombre de la entidad, la descripción en geocoordenadas o la geolocalización del centro, número de
mesa, etc.
* La data del REP que dentro del contexto del tiempo (cuando se hizo el corte), cuales son los votantes de esta entidad en el transcurso del tiempo.
* La data resultado de unas elecciones, que al igual que la data del REP tiene un contexto temporal (el día que se realizo la elección) y contiene información como:
** cantidad de electores transmitidos en actas (deberia ser igual al corte del REP de esa entidad para esas elecciones)
** cantidad de electores que sufragaron
** cantidad de votos realizados, que no es una relación 1:1 con los electores sufragados, p.e. en las legislativas en ciertas entidades se votaba por mas de 1 diputado por circunscripcion.
** abstención (electores en actas - electores que sufragaron)
** votos validos
** votos nulos
** actas totales
** actas escrutadas
** los resultados que en si mismos son un arreglo de alianzas de partidos compuestas por el nombre del partido y la cantidad de votos que obtuvo.
Ahora, una vez tienes el esquema de como es la data y tienes los resultados por mesa, lo que queda es map/reduce de los resultados hacia arriba para cada entidad.
Entonces, tomando esto en cuenta me gustaria llevar a la aplicación al objetivo inicial de poder mostrar los resultados de todas las elecciones de las cuales tengamos data y de ser posible conseguir copias de los snapshots del REP para cada elección de forma de poder mostrar estadísticas del electorado.
El TODO list creo que deberia comenzar por:
* Specs para la funcionalidad actual de la aplicación tanto en el lado de ruby como del lado de coffeescript, con rspec y jasmine/sinon respectivamente
* Una vez se cuente con un suite de tests para cubrir la funcionalidad actual se puede comenzar a extender la aplicación para:
* Rediseñar la interacción de la aplicación para mostrar las circunscripciones electorales para las elecciones legislativas del 2010, el paradigma actual funciona bien para
diputados lista y parlatino pero se rompe para los diputados nominales e indigenas, siendo el caso de la elección más compleja; pero… si vamos directo a montar primero la
data del 7O y 16D podemos dejar esa interacción para luego.
* Corregir el algoritmo del reduce actual para las sumatorias de los votos por alianzas, en particular en el caso de la oposición
* Diseñar e implementar la presentación del resultado de las elecciones, quizas un donut al igual q la distribución de electores pero tambien seria interesante presentar un grafico
de comparación entre los resultados de la entidad y sus hermanos dentro de la entidad que la contiene. e.g. al ver los resultados de una mesa de votación hay una vista
comparativa con el resto de las mesas del mismo centro o ir mas lejos y compararlo con el resto de las mesas dentro de la parroquia, poder ver la distribución de los votos.
* Montar la data de las elecciones actuales
* En alguna parte del modelo debe ir la data de cuales son los nominados a cada cargo y cuales resultaron adjudicados en cada elección
Mas a la larga:
Seria interesante montar un motor de reglas para las alianzas de manera de no inferir a partir del dump del CNE como están configuradas sino seguirse por el
motor de reglas para asignar los votos a quienes corresponden.
De obtener las copias del REP diseñar los gráficos para mostrar los histogramas por edad, por profesión y los patrones de migración del electorado y consecuentemente el backend para como va a estar guardada la data.
En una tangente, que data representan los 15GB del CNE que tienen, la data del 7O que esta en heroku apenas son 20mb en mongodb y los resultados del 26S son a lo sumo 140mb
Sorry por la pared de texto :) creo que es un buen inicio de la conversa para los requerimientos tecnicos de presentar la data y para comentar que ideas o criticas tienen sobre el app y que dirección consideran que se deba tomar.