Giter Site home page Giter Site logo

ingobernable / kaos155 Goto Github PK

View Code? Open in Web Editor NEW
17.0 17.0 7.0 59.42 MB

Programa de analisis de Contratación con la administración pública y relaciones societarias en España.

License: GNU General Public License v3.0

Shell 0.14% Ruby 0.02% JavaScript 53.67% SQLPL 2.00% HTML 0.09% CSS 42.48% PLpgSQL 1.59%

kaos155's People

Contributors

alex-left avatar j-lml avatar smapman avatar softman65 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

kaos155's Issues

Limitación de responsabilidad.

Como obtenemos nuestros datos de fuentes accesibles al público, para no tener problemas, quizás deberíamos avisarlo de la misma manera que lo hace el Libreborme en un párrafo dentro de su Aviso Legal:

Limitación de responsabilidad

La información que muestra LibreBORME se ha obtenido de fuentes accesibles al público y cuyos datos se presumen correctos. Debido a que la recopilación de los datos es un proceso informático automatizado y a que la enorme cantidad de datos hace imposible su completa verificación, LibreBORME no asume responsabilidad alguna por errores, inexactitudes u omisiones de la información facilitada.

El USUARIO no podrá exigir responsabilidad alguna por los daños y perjuicios derivados de errores y/o incorrección y/o inexactitud en la información suministrada y acepta que la información suministrada en la PAGINA WEB se ofrece con carácter orientativo.

El USUARIO es el único responsable de las infracciones en las que pueda incurrir o de los perjuicios que pueda causar o causarse por la utilización de la PAGINA WEB, quedando LibreBORME, exonerado de cualquier clase de responsabilidad que se pudiera derivar por las acciones del USUARIO.

Elegir la BBDD adecuada

De momento usamos MySQL pero se esta preparando pasar a ElasticSearch (ES).

  1. A mi me preocupa que ES no sea ACID-compliant, he leido mucha gente usando MySQL como BBDD principal y ES como motor de busqueda (FULL TEXT).

  2. Conoceis Percona y TokuDB? Dicen que permite aumentar la velocidad de MySQL por un orden de 10 a 100, manteniendo todo ACID-compliant.. Parece ser el módulo BigData de MySQL.
    https://www.percona.com/software/mysql-database/percona-server/feature-comparison

Saludos

reorganizar ramas

varias incidencias con respecto a los commit:

  • estamos trabajando normalmente contra master
  • las ramas se quedan muertas de risa
  • development siempre se queda desactualizado cuando debe ser la de trabajo

propuesta de soluciones:

  • borrar rama development (normalmente esta rama se conoce como dev)
  • crear rama con nombre dev
  • modificar en github para que dev sea rama por defecto! (ayudará a que cojamos costumbre de trabajar contra dev

siguiente nivel:

  • NO aceptar peticiones Pull Request que vayan contra master. Se rechaza y se pide que se haga el pull request a dev.
  • Eliminar las ramas en las que YA no se esté trabajando. A no ser que tengan información importante (sacado de la documentación de GitHub)

SCRAPEO de textos de comunidades autónomas.

Absorpciones en sumario o en sub-documento de sumario.. ¿porque puede ser?

Os habeis fijado que hay casos en que hay sociedades absorbidas dentro del sumario, y otras dentro de los "sub-documentos" del mismo sumario?! Ver este caso:

https://boe.es/borme/dias/2016/10/07/pdfs/BORME-A-2016-193-02.pdf (absorbente: ACEITES JUNIO)

.. que es un sub-documento de este sumario (buscar "BORME-A-2016-193-02" en el para comprobarlo!):

https://boe.es/diario_borme/xml.php?id=BORME-S-20161007

.. y este sumario lleva absorpciones todo abajo, pero no la de "ACEITES JUNIO", aunque sí este dentro de uno de sus sub-documentos.

Entendeis porque hay absorpciones decladas en el sumario, mientras otras lo son dentro de sus sub-documentos?! Cual es la diferencia para que aparezcan en uno o en otro?

Gracias!

Falla BOCM 2011

Ya había terminado BOE (BOE correcto) pero me falla en BOCM

He lanzado varios años al mismo tiempo y ahora solo me funciona el 2017
Aparte del fallo, ¿hay forma de poder forzar a que rehaga el proceso sin borrar TODAS las tablas?

nota: me da el mismo fallo en varios años

MySQL IP:localhost
PROCESS:BOCM
Anyo:2011
new connection BOCM mysql OK
ERROR http://w3.bocm.es/boletin/CM_Boletin_BOCM/2011/01/01/BOCM-20110101.PDF
delay ok.
/home/data/projects/kaos155/App/node_app/_common.js:183
                                if (data._list.length > 0) {
                                               ^

TypeError: Cannot read property 'length' of undefined
    at /home/data/projects/kaos155/App/node_app/_common.js:183:48
    at /home/data/projects/kaos155/App/node_app/_common.js:84:37
    at /home/data/projects/kaos155/App/node_app/scrap/scr_bocm.js:145:25
    at Timeout._onTimeout (/home/data/projects/kaos155/App/node_app/func_common.js:53:29)
    at ontimeout (timers.js:475:11)
    at tryOnTimeout (timers.js:310:5)
    at Timer.listOnTimeout (timers.js:270:5) 

Abrir wiki de GitHub

La wiki nos puede servir para ir dejando las notas que queramos del proyecto.

PARSER BORME

ya esta disponible en dev la primera versión del parser del BORME funcionando, recomiendo crear la db manualmente, y tiene un error al crear la credenciales si no están presentes las de SCRAP.
image

matrix no, lo siguiente

Leyenda

  • mm/dd: Azul día en proceso de analisis

  • PROVINCIA Blanco

  • +Lectura de nueva linea

  • E Empresa

  • . apunte en diario

  • e Rojo Empresa cesante en cargo

  • d Rojo Directivo cesante en cargo

  • a Rojo Auditora cesante

  • e Verde Empresa entrante en cargo

  • d Verde Directivo entrante en cargo

  • a Verde Auditora entrante

Crear Menu

Crear un menú al comienzo de la aplicación que permita seleccionar si no hay parámetros de entrada

SCRAP
PARSER
DELETE

BORME
BOE
BOCM

años desde inicio hasta la fecha, en el caso de parser años ya existentes en la tabla anyosread.

la rutina ha de ser lo suficientemente flexible como para poder incorporar fácilmente nuevos comandos y tipos de boletines (quizás unas tablas en otra db aparte) bbdd_kaos155_master? que os parece.

Evitar duplicados de la misma empresa

Hola!

Acabo de encontrar estos muy interesantes artículos 405 y 408!!
http://www.rmc.es/documentacion/publico/RMC-%20Art%C3%ADculos%20que%20determinan%20la%20concesi%C3%B3n%20o%20denegaci%C3%B3n%20de%20las%20denominaciones%20sociales.pdf

Artículo 405. Prohibición de denominaciones oficiales.

  1. Las sociedades y demás entidades inscribibles en el Registro
    Mercantil no podrán formar su denominación exclusivamente con el
    nombre de España, sus Comunidades Autónomas, provincias o municipios.
    Tampoco podrán utilizar el nombre de organismos, departamentos o
    dependencias de las Administraciones Públicas, ni el de Estados
    extranjeros u organizaciones internacionales.

-> se entiende que una denominación social puede ser "PLATANOS ANDALUCIA SL", pero no sólo "ANDALUCIA SL". no?

  1. Los adjetivos “nacional” o “estatal” sólo podrán ser utilizados
    por sociedades en las que el Estado o sus organismos autónomos ostenten
    directa o indirectamente la mayoría del capital social.
    Los adjetivos “autonómico”, “provincial” o “municipal” sólo
    podrán ser utilizados por sociedades en las que la correspondiente
    administración ostente directa o indirectamente la mayoría del capital
    social.
    El adjetivo “oficial” y demás de análogo significado sólo
    podrán ser utilizados por las sociedades en que la Administración Pública
    ostente la mayoría del capital.
  2. Las prohibiciones establecidas en este artículo no serán de
    aplicación cuando el empleo en la denominación de las expresiones a que
    se refieren se halle amparado por una disposición legal o haya sido
    debidamente autorizado.

Artículo 408. Concepto de identidad.

  1. Se entiende que existe identidad no sólo en caso de
    coincidencia total y absoluta entre denominaciones, sino también cuando se
    dé alguna de las siguientes circunstancias:
    1ª La utilización de las mismas palabras en diferente orden, género o
    número.

PLATANOS CAÑEROS
== PLATANO CAÑERO
== CAÑERO PLATANO
== CAÑEROS PLATANOS
== CAÑEROS PLATANOS PLATANOS CAÑEROS
== CAÑEROS PLATANO PLATANOS CAÑERO ???

-> para generar ID de empresa, normalizar las palabras al singular, ponerlas en orden alfabético, y quitar los duplicados. Sí?

2ª La utilización de las mismas palabras con la adición o supresión
de términos o expresiones genéricas o accesorias, o de artículos, adverbios,
preposiciones, conjunciones, acentos, guiones, signos de puntuación u otras
partículas similares, de escasa significación.

CAÑERO PLATANO
== CAÑERO-PLATANO
== ¡¿..CAÑERO-PLATANO..+!
== CAÑERÓ -- - -- PLATÄNO
== EL CAÑERO PLATANO
== POR EL CAÑERO PLATANO
== POR_EL_CAÑERO_PLATANO ???
== EL CAÑERO PLATANO DE ESPAÑA ???
== EL CANERO PLATANO ??? identificais la "ñ" en este punto 2ª. ?!

-> quitar los acentos de cualquier letra (y la ñ??)
-> para el ID, quitar conjunciones, preposiciones, adverbios, artículos y palabras de escasa significación (necesitamos un diccionario!!!!)
-> reemplazar lo que no es alphanumérico por un espacio, y reducir todo a espacios únicos.

3ª La utilización de palabras distintas que tengan la misma expresión
o notoria semejanza fonética.

PLATANO CAÑERO
== PLATANI CAÑERO
== PLATANHO CANIERO
== PLATANO CANERO ??? la "ñ" se identifica a la "n" ???

  1. Los criterios establecidos en las reglas 1ª, 2ª y 3ª del apartado
    anterior no serán de aplicación cuando la solicitud de certificación se
    realice a instancia o con autorización de la sociedad afectada por la nueva
    denominación que pretende utilizarse.

-> a veces sí son varias empresas, si tienen la autorización de la primera empresa en tener la denominación social -> lo asimilamos siempre a un grupo de empresa entonces, no a la misma empresa...?

En la certificación expedida por el Registrador Mercantil Central se
consignará la oportuna referencia a la autorización. La autorización habrá
de testimoniarse en la escritura o acompañarse a la misma para su
inscripción en el Registro Mercantil.

  1. Para determinar si existe o no identidad entre dos
    denominaciones se prescindirá de las indicaciones relativas a la forma
    social o de aquellas otras cuya utilización venga exigida por la Ley.-

CAÑERO PLATANO SL
== CAÑERO PLATANO SA
== CAÑERO PLATANO SLU
etc.. no?

Falta saber también si:
CAÑERO BARBACOA == CAÑERO BARBECUE ?? (identidad entre idiomas)
PLATANOS DE ESPAÑA SL == PLATANOS ESPAÑA SL == PLATANOS SL ???

Saludos

TESTEAR que SCRAPEA todos los años correctamente hasta el final

Consideraciones de la DB.

A) cada AÑO y TIPO van en una tabla distinta.
B) anyosRead lleva un control de los años ya escrapeados y si están ya completados.
C) sumarios realiza una lista de todos los sumarios extraídos poniendo una marca si la operación de completo .
D) la tabla errores recoje los errores de aquellos boletines que no han cargado correctamente.
E) en el caso de BOE tiene un campo de anotación para anotar errores encontrados en el formato.
F) en el caso BOE obtendremos también un JSON con los metadatos y el analisis del BOE.

Trabajo a realizar
informar de posibles anomalías y detección de boletines no legibles
objetivo.
scrapear todos los boletines todos los años obteniendo la base de datos con los TEXTOS de CONTRATOS y REGISTRO MERCANTIL

Sobre parseo de lotes e importes

Hola!

  1. como contabilizais cuando solo disponemos del total adjudicado,
    mientras son varias empresas las contratistas? Como en este caso:

screenshot from 2017-11-22 18-57-08

  1. si no hay ningun "Importe o canon de adjudicación" especificado, cogeis el "Valor estimado del contrato"? El presupuesto base de licitación? (nos sirven de algo estas 2 cosas?)

  2. como lo contabilizais cuando el importe esta del tipo "0.06
    euro/palabra"??

  3. almacenais importes totales o netos? (o ambos..?)

  4. podeis darme un doc o algo con las fechas chungas que teneis sobre
    boe y borme? (importante!)

Gracias!

separar ficheros sql

propuesta de separar los ficheros sql en 3 partes diferentes:
CREATE_DB_SCRAP
DELETE_DB_SCRAP
CREATE_PROC_SCRAP

No se si afecta a algo de código, aunque entiendo que en principio no tiene que hacerlo

Fallo en v0.1.4 SCRAP BOCM 2017

v0.1.4
2017 ha empezado a fallar...

delay ok.
ERROR http://w3.bocm.es/boletin/CM_Boletin_BOCM/2017/04/14/BOCM-20170414.PDF
delay ok.
ERROR http://w3.bocm.es/boletin/CM_Boletin_BOCM/2017/04/14/BOCM-20170414.PDF
delay ok.
ERROR http://w3.bocm.es/boletin/CM_Boletin_BOCM/2017/04/14/BOCM-20170414.PDF
delay ok.
ERROR http://w3.bocm.es/boletin/CM_Boletin_BOCM/2017/04/14/BOCM-20170414.PDF
delay ok.
ERROR http://w3.bocm.es/boletin/CM_Boletin_BOCM/2017/04/14/BOCM-20170414.PDF
delay ok.
ERROR http://w3.bocm.es/boletin/CM_Boletin_BOCM/2017/04/14/BOCM-20170414.PDF
delay ok.

Licencia elegida, y licencia de SM

Hola!

  1. Me pregunto porque permiteis el uso comercial de Kaos?

  2. Y también me pregunto si no usar Creative Commons para SM, contestando NO-NO o ALIKE-NO a este cuestionario: https://creativecommons.org/choose/ Veis algo peligroso en hacerlo? (uso futuro por periodistas y más, posible sostenibilidad económica del proyecto por ejemplo..)

Gracias!

Instalación Tika

instalación de esta herramienta https://tika.apache.org/ para la conversión de los pdf a texto

https://github.com/ICIJ/node-tika

Depende de node-java , que a su vez requiere JDK y Python 2 (no 3) para compilar.

Requiere JDK 7. Ejecutar node versionpara verificar la versión que node-java está usando. Si se informa la versión incorrecta incluso si instaló JDK 1.7, asegúrese de que JAVA_HOME esté configurado en la ruta correcta, luego elimínelo node_modules/java y vuelva a ejecutarlo npm install.

Crowdfunding: como lo hacemos?

  1. realmente queremos hacer un crowdfunding?
  2. no sería un riesgo para que luego nos digan que nos financia tal o tal dictador desde la otra punto del planeta?
  3. en que plataforma lo queremos hacer?
  4. incluimos SM en la propuesta de crowdfunding de kaos, o hago otro aparte?
  5. manifiesto para ambos!!

Configuración MARIA-DB

en el proceso de test de la migración, al crear la DB de PARSER genera un error al crear la función

CREATE DEFINER=root@localhost FUNCTION SPLIT_STR( s MEDIUMTEXT , del CHAR(1) , i INT) RETURNS text CHARSET utf8
DETERMINISTIC
BEGIN

generando un error
1418: This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its declaration and binary logging is enabled (you might want to use the less safe log_bin_trust_function_creators variable)

solución:
https://stackoverflow.com/questions/26015160/deterministic-no-sql-or-reads-sql-data-in-its-declaration-and-binary-logging-i
#sudo nano my.cnf
image

hay que tenerlo en cuenta para la documentación.

Leyenda en SCRAPEO

Ampliación de manual
los caracteres que salen en el SCRAP tienen significado

S = leyendo sumario .=leyendo BOLETIN +=anotando CONTRATO -=anotando NO CONTRADO xxx = boletin fallido fff = sumario no encontrado #=SUMARIO duplicado %=Boletín ya analizado

No funciona dev 0.1.4

He probado en dev y no funciona (si funciona en master)

kaos155 App - version -0.1.4.
MySQL IP:localhost
PROCESS:BORME
Anyo:2009
module.js:538
    throw err;
    ^

Error: Cannot find module './node_app/SCRAP/scr_borme.js'
    at Function.Module._resolveFilename (module.js:536:15)
    at Function.Module._load (module.js:466:25)
    at Module.require (module.js:579:17)
    at require (internal/module.js:11:18)
    at Object.SCRAP (/home/data/projects/kaos155/App/app.js:165:33)
    at /home/data/projects/kaos155/App/app.js:273:60
    at /home/data/projects/kaos155/App/app.js:132:21
    at module.exports (/home/data/projects/kaos155/App/node_app/sql_common.js:2:5)
    at Object.init (/home/data/projects/kaos155/App/app.js:129:52)
    at /home/data/projects/kaos155/App/app.js:273:21 

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.