okfn-brasil / gastos_abertos_dev

Gastos Abertos Development Environment with Vagrant
1 stars 1 forks source link

API de Execução? #11

Open carlosandrade opened 8 years ago

carlosandrade commented 8 years ago

Abrindo o issue para discussão. Em que pé está isso aqui? Vamos reusar o que já tem do Andres com os dados geo-referenciados ou criar uma outra com os dados que usamos por exemplo na historia do Sérgio tiradas de Orçamento?

Também não está claro para mim se a API de Execução é usada atualmente pelo meu bairro e modificar alguma coisa lá poderia resultar em problemas na aplicação deles. Isso é importante pois aparentemente a API de execução atualmente não permite filtragem por exemplo por orgão, dentre outras coisas mais úteis a um usuário usando direto a API.

andresmrm commented 8 years ago

Oi, @carlosandrade! Sim, o Cuidando usa a API de execução e se mudarem algo nela pode quebrar o Cuidando sim (como aconteceu há pouco tempo quando colocaram um /api/v1. =P ).

Mas seria bacana ter filtragens. Permitiria ao Cuidando, futuramente, filtrar resultados lá também. Inclusive, busca textual era uma funcionalidade que chegamos a combinar para ser implementada no GA e já usaríamos agora no Cuidando, mas como ela pelo visto não saiu, tivemos que cortar lá também...

LuizArmesto commented 8 years ago

@andresmrm Filtragem não foi implementada no endpoint de execução? No de receita e contrato já tinha, se não me engano. Busca textual já está encaminhada e sendo usada nos contratos, para implementar na execução é dois palitos

Obs.: Tem o elasticsearch como dependência.

carlosandrade commented 8 years ago

@LuizArmesto só tem por poucos campos que são mais dificeis de um jornalista usar:

screenshot 2015-12-07 10 59 36

carlosandrade commented 8 years ago

@andresmrm Ainda bem que eu perguntei antes! Eu preciso saber de mais algumas coisas de você nisso aqui:

  1. Você saberia me dizer detalhes da fonte dos dados que você fez de execução? Atualmente tiramos diretamente do http://orcamento.prefeitura.sp.gov.br/orcamento/ para fazer historias, mas seria interessante que a API refletisse os mesmos dados. Me pareceu que vocês usam isso também.
  2. Eu vi que o Cuidando tem dados já de 2015, com que frequência vocês atualizam lá?
  3. E se pudesse me dizer se a única diferença entre os dados na API e os da fonte que usam é ter os campos de latitude e longitude ou se o pre-processamento adiciona, modifica ou remove alguma coisa.
andresmrm commented 8 years ago

Oi, @LuizArmesto! Acho que não tem filtragem na execução não... O que tem é isso que o Carlos colocou, que é mais para paginar ou pegar uma despesa específica.

  1. O código que alimenta a API de execução do GA está usando como fonte esse site mesmo: http://orcamento.prefeitura.sp.gov.br/orcamento/execucao.html Mais especificamente esse arquivo para esse ano: http://orcamento.prefeitura.sp.gov.br/orcamento/uploads/2015/basedadosexecucao2015.ods
  2. Não sei se entendi bem a pergunta... O Cuidando usa o GA, logo seria: com que frequência o GA atualiza os dados disponibilizados pela API de execução? Diariamente.
  3. Não me lembro de todas as alterações agora... Mas o código dá uma padronizada geral nos dados. E sei que além das latitudes e longitudes ele cria uma coluna com um "id" para cada linha. Ele compõe esse id concatenando as outras colunas que são códigos dos dados originais. Foi o melhor que consegui para identificar cada linha unicamente, já que os dados originais não tem uma coluna para isso...
carlosandrade commented 8 years ago

@andresmrm

Questão 1: Pelo que falou é responsabilidade do projeto do GA em si manter os dados da API, mas quem anda fazendo isso atualmente então? Você? Sei que tem um script para pre-processar os dados e adicionar o geo-referenciamento mas nem o @LuizArmesto e nem o @aivuk parecem lembrar onde/como rodar isso então estou meio perdido no pipeline.

Quanto a questão 2..como assim diariamente? Tem algum CRON baixando a mesma planilha diariamente? (Eu ainda não olhei os detalhes de como os dados são adicionados).

Questão 3: Ok sem problemas era so para saber se alguma coluna era removida no processo.

Vai aqui a pergunta 4: Sabe dizer quais endpoints especificamente o Cuidando usa? porque ai permite mais flexibilidade em editar os demais endpoints sem dar pau direto no site :-)

andresmrm commented 8 years ago

1 e 2. Sim, deixei um CRON no servidor do GA atualizando os dados de execução. =)

4 - Atualmente o Cuidando usa todos os endpoints de execução do GA...

carlosandrade commented 8 years ago

@andresmrm Valeu andres isso esclarece bastante coisa pra mim :)

Pergunta 4: Se adicionarmos filtragem no método de /list para outros campos como orgão, será que da pau no site do Cuidando? Seria melhor criar outro endpoint? Os demais blueprints todos tem list com filtragem então a inconsistência pode gerar confusão se tivermos que criar outro endpoint.

Já que você citou o cron, vou colocar uma pergunta 5 mesmo não sendo execução: Os scripts de Receita que são citados na documentação de historico:

https://github.com/okfn-brasil/documents/blob/master/gastos_abertos/gastos_abertos.md

também tem um CRON atualizando ou foi algo pontual? E se for pontual, os scripts que estão listados lá (revenue_downloader.py, import_revenue.py, generate_total_json.py), são suficientes para executar todo o processo para alimentar o ano de 2015 ou teria mais algo faltando?

Estou crendo que seja pontual pois na API eles ainda estão em 2014. (p.s.: O que é receita series? O "try it out" ta dando internal error!). Se for pontual e isso bastar, me candidato a tentar executar todo o pipeline para documentar o processo, o que acha? :)

Pode parecer masoquismo de documentar, mas estou querendo replicar essas coisas para cidade de Salvador para adicionar a API depois a curto prazo, então esses detalhes são super bem vindos.

andresmrm commented 8 years ago

4 - Depende de como adicionar... Se for um parâmetro novo na query string acho que dá adicionar essa funcionalidade sem interferir no que já está rodando, não?

5 - Que eu me lembre a Receita não tem cron rodando não. Mas é para conseguir importar com esses scripts sim, porque foi com eles que importamos antes...

carlosandrade commented 8 years ago

@andresmrm

[ok] 4 - :P you tell me! você é o mestre dos magos aqui. eu ainda estou aprendendo flask e o restful api plus com swagger. Mas o @LuizArmesto e o @aivuk vão revisar o código antes de passar para produção é claro. Isso é só cuidado extremo que eu gosto de ter hehe.

[ok] 5- Ótimo! Vai ser uma boa forma de eu entender melhor o pipeline desde raspagem até exibição da API.

Perg 6- Sabe me dizer se ta no repo em algum lugar o equivalente a esses códigos de receita para execução que ta rodando no CRON ou tem algo anotado em algum lugar? Imagino que não tenha Selenium já que as tabelas estão disponíveis no site.

E muito obrigado por todas as respostas!

Eventualmente o que foi discutido aqui bem como outras coisas eu vou passar para uma nova versão de histórico do projeto. O @aivuk vai ter que me dizer também onde foi parar o código de raspagem de contratos eventualmente para ficar redondo :)

andresmrm commented 8 years ago

4 - Acho que seria só o caso de se não passar esse parâmetro extra ele continuar se comportando como está agora. 6 - Não entendi...

Vendo uma outra pergunta do Luiz, e só para deixar claro para você também, os scripts que baixam dados devem estar aqui: https://github.com/okfn-brasil/gastos_abertos_dados/tree/master/utils Já os scripts que importam esses dados no BD devem estar aqui: https://github.com/okfn-brasil/gastos_abertos/tree/master/utils (pelo menos foi mais ou menos isso que eu tentei seguir)

carlosandrade commented 8 years ago

@andresmrm Obrigado por todo o feedback Andres! Você entendeu certo o que eu estava perguntando! Se você tiver alguma sugestão de como integrar dados da CGM e/ou TCM ao que a gente já tem em execução ou indicadores o feedback será super bem vindo para as proximas releases! :)