CamaraDosDeputados / dados-abertos

Repositório do serviço de Dados Abertos da Câmara. Consulte as "Issues" para atendimento a dúvidas e sugestões.
http://dadosabertos.camara.leg.br
198 stars 13 forks source link

Erro nos resultados da nova api para proposições e votações? #128

Open dschwabe opened 6 years ago

dschwabe commented 6 years ago

Olá, nos deparamos com o erro abaixo, que não ocorre na API antiga.

Quando acessamos a proposição referênciada nos resultados de uma votação, a proposição referenciada aparentemente em nada tem haver com a original. Exemplo: Partindo-se da PEC171/93 chega-se a uma PEC sobre a lei do inquilinato.

Na interface SWAGGER, https://dadosabertos.camara.leg.br/swagger/api.html

  1. Consultar /proposicoes com os parâmetros siglaTipo=PEC, numero=171, ano=1993, dataInicio=1993-01-01, dataFim=2017-11-13,

    uri gerada:https://dadosabertos.camara.leg.br/api/v2/proposicoes/14493

  2. Acessar as votações para proposição 14493 na URI https://dadosabertos.camara.leg.br/api/v2/proposicoes/14493/votacoes uma das uris das votações retornadas é https://dadosabertos.camara.leg.br/api/v2/votacoes/6517

  3. Acessar https://dadosabertos.camara.leg.br/api/v2/votacoes/6517

    O elemento dados/proposição/uri contém https://dadosabertos.camara.leg.br/api/v2/proposicoes/15749 e o elemento dados/proposição/ementa contém "Altera a redação do art. 228 da Constituição Federal (imputabilidade penal do maior de dezesseis anos)."

  4. No entanto, recuperando os detalhes da Proposição 1549, na URI https://dadosabertos.camara.leg.br/api/v2/proposicoes/15749 o elemento dados/ementa contém "Altera a Lei nº 8.245, de 18 de outubro de 1991, Lei do Inquilinato, nos dispositivos que menciona...."

Aparemente as proposições 14493 e 15749 não são relacionadas mas compartilham do mesma votação 6517!

Esta mesma situação se repete nas votações de outras proposições.

Gostaria de ser esclarecido se se trata mesmo de um bug ou de um mau entendimento do que estes dados representam...

Obrigado, Daniel

EquipeDadosAbertosCD commented 6 years ago

Salve, professor!

É um bug mesmo, daqueles bem gritantes, famosos, reconhecidos, veteranos, causado pela série de problemas nos dados e na atual implementação do ramo /votacoes da API -- sobre o qual eu disse, no issue #119, que está quebrado, arrebentado, esmigalhado, triturado, liquefeito, moído, arregaçado, etc etc etc.

Vou tentar explicar de forma simplificada o que causa esse problema pontualmente.

Os webservices antigos só retornavam os dados sobre votações em Plenário. Para isso, eles acessavam a base de dados que é alimentada pelo sistema de votações do painel eletrônico do Plenário.

A nova API pretende retornar dados de votações no Plenário e em qualquer órgão deliberativo. Para isso precisamos acessar uma outra base bem mais recente mas bastante interligada com a base que tem os dados sobre as proposições.

O que ocorre é que, na base de Plenário, os identificadores são todos próprios dela -- inclusive os de proposições. E a query que ora está implementada na API foi baseada na do webservice anterior. O que acontece com isso? Os identificadores de proposições que estão sendo retornados são os da base do Plenário, e por isso as referências estão completamente quebradas.

Estamos negociando com as áreas responsáveis pelas bases diversas para que elas providenciem uma forma de juntar e identificar unicamente os dados sobre eventos, as votações que neles ocorram, e as proposições que são objeto de cada votação individual (nominal ou simbólica). Há uma série de dificuldades e problemas nas bases que podem até fazer com que muita informação útil tenha sido perdida ou armazenada sem a estruturação necessária. E sim, essa negociação está lenta demais para as nossas necessidades.

Peço desculpas ao sr. e a todos os usuários por isso. Estamos trabalhando duro para corrigir esses problemas, até porque os dados de votações são os mais requisitados pelos usuários atualmente., mas por sermos um serviço de interface a gente tem uma faixa meio estreita de coisas que podemos fazer sem depender de outras áreas da Câmara.

Pode ter certeza que quando chegarmos a uma solução para esses problemas ela será divulgada com imensa e notória fanfarra!!

Abraço!

Fabricio Rocha Equipe Dados Abertos - Câmara

dschwabe commented 6 years ago

Olá Fabricio, obrigado pela pronta resposta, entendo bem a situação. Conte conosco para ajudar no que for possivel. Aproveitando o ensejo, sugiro que seja disponibilizada também uma chamada que aproxime melhor a API antiga - dada uma proposição (numero e ano, e opcionalmente um periodo de tempo), informar diretamente os votos das votações que ocorreram no periodo especificado. Se não for informado o periodo, o default pode ser os últimos 30 dias, por exemplo. Na resposta, acredito que basta o id do parlamentar, não sendo necessário repetir outras infos, tais como o partido dele(a). Eu entendo que é possível obter a mesma informação compondo várias chamadas na versão proposta atual, mas suspeito que isto acabará criando mais carga no servidor, visto que muitos (maioria?) vão acabar chamando a API nesta sequencia - acredito que o interesse maior é saber como votaram os parlamentares numa dada proposição. Se isto for de fato verdade, seria mais eficiente resolver tudo numa forma parecida com a API antiga, com uma ou mais queries diretamente na(s) base(s)… Um abraço, Daniel

On Nov 16, 2017, at 11:36 - 16/11/17, Centro de Informática da Câmara dos Deputados notifications@github.com wrote:

Salve, professor!

É um bug mesmo, daqueles bem gritantes, famosos, reconhecidos, veteranos, causado pela série de problemas nos dados e na atual implementação do ramo /votacoes da API -- sobre o qual eu disse, no issue #119 https://github.com/labhackercd/dados-abertos/issues/119, que está quebrado, arrebentado, esmigalhado, triturado, liquefeito, moído, arregaçado, etc etc etc.

Vou tentar explicar de forma simplificada o que causa esse problema pontualmente.

Os webservices antigos só retornavam os dados sobre votações em Plenário. Para isso, eles acessavam a base de dados que é alimentada pelo sistema de votações do painel eletrônico do Plenário.

A nova API pretende retornar dados de votações no Plenário e em qualquer órgão deliberativo. Para isso precisamos acessar uma outra base bem mais recente mas bastante interligada com a base que tem os dados sobre as proposições.

O que ocorre é que, na base de Plenário, os identificadores são todos próprios dela -- inclusive os de proposições. E a query que ora está implementada na API foi baseada na do webservice anterior. O que acontece com isso? Os identificadores de proposições que estão sendo retornados são os da base do Plenário, e por isso as referências estão completamente quebradas.

Estamos negociando com as áreas responsáveis pelas bases diversas para que elas providenciem uma forma de juntar e identificar unicamente os dados sobre eventos, as votações que neles ocorram, e as proposições que são objeto de cada votação individual (nominal ou simbólica). Há uma série de dificuldades e problemas nas bases que podem até fazer com que muita informação útil tenha sido perdida ou armazenada sem a estruturação necessária. E sim, essa negociação está lenta demais para as nossas necessidades.

Peço desculpas ao sr. e a todos os usuários por isso. Estamos trabalhando duro para corrigir esses problemas, até porque os dados de votações são os mais requisitados pelos usuários atualmente., mas por sermos um serviço de interface a gente tem uma faixa meio estreita de coisas que podemos fazer sem depender de outras áreas da Câmara.

Pode ter certeza que quando chegarmos a uma solução para esses problemas ela será divulgada com imensa e notória fanfarra!!

Abraço!

Fabricio Rocha Equipe Dados Abertos - Câmara

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/labhackercd/dados-abertos/issues/128#issuecomment-344924266, or mute the thread https://github.com/notifications/unsubscribe-auth/AA204j2jTVbc3OkqFF64QmeIfE2gEU8gks5s3DpRgaJpZM4QfcuP.