This repository has been archived by the owner on Nov 7, 2019. It is now read-only.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Por acelerado, no pensé jamás en la arquitectura de esta madre y terminó siendo un cagadero. Hablando con @miguelsalazar me puse a hacer memoria de pa dónde quería que se moviera este pedo y pa que les cuento, mejor lo documento. Representantes Patito debe ser tres cosas: "Repre", "Sentantes", y "Patito". No, no es cierto, pero si deben ser tres partes:
Generadores / Agregador
Lo que existe ahora en /bin es difícil de mantener pues los congresos cambian en chinga, y la dependencia de ruby me late que limita a que más banda contribuya. Era el año de 2015, cuando en
retiro-jaq-v0.0.0
le escuché una muy buena idea al @tlacoyodefrijol, y quedé convencido que sería ideal desacoplar la adquisición de datos, de la fuente final para su consumo. Entonces, para lograrlo, este asunto debe:Generar datos de congresos de manera distribuida
El plan es separar cada scraper a su propio repo encargado de generar archivos con la información de cada congreso. Hoy existen 8 scrapers escritos en ruby que no han sido actualizados desde hace dos años (y que pues hice con las patas). Los archivos generados deben seguir una estructura común y encontrarse en un formato estándar de intercambio de datos. Yo soy fan de YAML, pero chance hay algo más adecuado.
Abusar de git y Github
Por otro lado, creemos un repo para que los generadores puedan aportar la información y desde aquí se distribuya. Creo que podemos abusar de Git y github, pues da chance de clonar el repo para obtener la información vigente del congreso, con el beneficio de poder usar el historial para navegar cambios. Además, se puede usar el API de github para obtener programáticamente los mismos datos.
Como seguro sigue habiendo congresos que entiendan por formato de intercambio de datos un PDF de asistencias escaneadas, este esquema permite hacer pull requests que no necesariamente vengan de un generador, sino de peticiones de información pública y/o valientes que transcriban.
Por ejemplo, la información se podría guardar como:
TODO:
id
para representantesIngesta / API
Ingestar los datos fue un pedo porque nunca averigué cómo seguir mostrando la info de la legislaturas vigentes y anteriores; esto resultó en que se detuviera por completo el desarrollo del proyecto. Ya que la idea empezó como un cliente para la ALDF, el API fue hecho para atender necesidades de render y en consecuencia los endpoints no son claros por si mismos. Esto se puede resolver en corto:
Haciendo una herramienta de ingesta
Bien pues, se trata de crear una herramienta que se encargue de obtener los datos en el formato estándar de ... (yayson, digámosle yayson porque ya me cansé de escribir formato estándar ...) y proyectarla a una base de datos.
Secretario es una herramienta de comandos que se encarga de obtener datos de Github. Por ahora sólo consume los distritos electorales, pero la idea es que haga uso del repo agregador para crear la base del API. El nombre de dos lados: secretario par-ti-cu-lar y mi total agrado con Bojack Horseman 🐴.
El plan es usarlo continuamente para mantener la información siempre actualizada, hasta se puede integrar con webhooks y nadie tiene que amenazar con usar jenkins.
API
Ya con los datos machacados en la base de datos, entonces sí extraemos el API existente que puede:
[lat, lng]
,id_seccion
,id
Eso sí, creo que no hice bien REST y pensé más en lo que usaría el cliente. Habrá que re-acomodar endpoints y pensar bien en la arquitectura.
TODO:
Cliente s?
Por fin, con un API decente entonces sí se hace un cliente web que haga uso de ubicación geográfica del usuario para mostrar loas representantes que correspondan y la información detallada de los mismos. Ya de ahí pal real.
TODO: