achados-e-pedidos-site's People
Forkers
jeffersonrpnachados-e-pedidos-site's Issues
Testes front end - feito internamente pela TB
Elaboramos um documento com a descrição do teste e uma planilha para reportar os resultados do teste.
Testes ainda estão pendentes:
- Publicação de notícia
- Envio de pedido como usuário
- envio de pedido via importador (csv) (verificar se requer implementação do importador)
- Carregar imagens, carrossel ou banner
- Testar interações de usuário (seguir, moderar pedido, marcar atendimento, etc.)
[bugfix] Erro com upload de arquivos (fluxo de usuário)
Upload de anexos falham
1- Nesse pedido falta o arquivo Pedido DSEIY - Atendimentos e remoções - Dados remoções 2021.xlsx
(4,6MB) na primeira resposta do órgão, onde estão outros 4 arquivos.
2- Nesse pedido falta o Malaria_serie_Historica.xlsx
(7,2MB) na última resposta.
Os arquivos estão aqui
O anexo não é registrado no banco de dados, exemplo de consulta:
SELECT * FROM pedidos WHERE Slug = "dsei-yanomami";
select * from pedidos_interacoes where CodigoPedido = "294112";
select * from pedidos_anexos where CodigoPedidoInteracao in ("278242","278243", "278244");
Destino de anexo inesperado
No bucket, os anexos que carregaram foi para uma pasta inesperada. O correto não seria guardar o arquivo em no diretório da CGU
achados/pedidos/CGU/PedidoDSEIYAtendimentoseremoesDadosremoes2020278242_1.xlsx
Os anexos estão guardados na pasta
achados/pedidos/PedidoDSEIYAtendimentoseremoesDadosremoes2020278242_1.xlsx
Erro 500 ao cadastrar uma interação com Anexo (ref planilha - Envio de pedido como usuário) Marina
Problema adicionado por Marina na planilha de ajustes da homologação azure
Tópico:
Envio de pedido como usuário
Descrição:
No cadastro de outra interação depois da resposta (recurso de 1ª instância com inclusão de anexo), apareceu erro 500, mas a interação foi registrada e o anexo, upado.
Problema:
o arquivo src/Model/Entity/PedidoAnexo.php responsável por salvar os arquivos estava chamando um método que era obrigatório a passagem de um parâmetro (repare que o () está vazio).
$pedidoAnexo->ES_AtualizarInserirAnexosPorPedido();
Então quando não tinha anexo o sistema funcionava, mas quando um anexo era adicionado o sistema retornava erro 500 pq estava esperando esse parâmetro no metodo.
Solução:
Adicionado null ao método para passar um parâmetro vazio:
$pedidoAnexo->ES_AtualizarInserirAnexosPorPedido(null);
Teste:
Para testar é necessário criar um novo pedido com interação e anexo.
- se logar / criar um novo cadastro
- clicar em inserir pedido
- selecionar ou criar um novo agente público
- preencher o formulário do pedido
- preencher o formulário da interação
5.1. Anexar pelo menos um arquivo
Commit:
Ticket Trello
162# [migracao-azure] AEP: Envio de pedido como usuário - fix criação de interacao com anexo
Pedidos não são listados em /pedidos
Olá, @studiocuboweb e @wgnann
Há dias, os pedidos não são listados/carregados na página /pedidos. Poderiam dar uma olhada, por gentileza?
Obrigada.
Testar interações de usuário (seguir, marcar atendimento, pedir revisão etc.)
Não tem o diretório config, nem o app.php
Ele está no .gitignore
.
Encode gerou problema na visualização de pedidos que foram inseridos durante o problema no banco e refletiu na visualização dos dados
Quando o Azure mudou o encode do banco de dados e o problema aconteceu, novos registros de pedidos foram inseridos. Estes registros entraram com problema de encode e por isso vão continuar com problema mesmo após a correção do Will (SET NAME utf8) aplicada (acompanhado nesse issue..
Ex de pedido com problema de encode:
https://achadosepedidos.org.br/pedidos/calendario-escolar-2020-e-2021--contexto-da-pandemia-
Por isso, na página de dados, um endpoint específico faz o fetch dos dados do mysql, mas não consegue fazer o json_encode por conta de problemas de caracter.
Gráfico que não aparece:
Classificações de atendimento por ano
endpoint retorna tela em branco
https://www.achadosepedidos.org.br/api/atendimentoPedidosPorAnoETipo
No Model
src/Model/Entity/Dados.php
$atendimentoPedidosPorAno_arr = $connection->execute($query)->fetchAll('assoc');
// $totalPedidos = $totalPedido_array[0]["total"];
return json_encode($atendimentoPedidosPorAno_arr);
Importacao da CGU - Importação de 200 mil pedidos da CGU com 140GB de arquivos (anexos)
Precisamos subir 200 mil pedidos com 140GB de arquivos da base da CGU no Achados e Pedidos.
Os recursos atuais utilizados pelo elasticsearch hospedado no Google Cloud não vai conseguir suportar essa carga de dados.
Por isso, existe a necessidade de verificar a melhor configuração x preço para suportar essa quantidade de dados.
Atividades:
- 1. Enviar qtdes de pedidos / volume de dados (Raul)
- 2. Descobrir quantidade de recurso para o ElasticSearch dentro do volume de dados (quanto de recurso precisaremos para o ElasticSearch?) (Will)
- 3. Dimensionar as instâncias dentro deste volume de dados (decidir se vai ser arquitetura monolítico ou horizontal) (Will)
- 4. Verificar custo / orçamento (Will)
- 5. Define o plano de execução. (toda a equipe)
- 5.1. Pedir permissão para a Abraji aumentar o disco do google cloud em até R$30,00 (30GB) (Transparência Br)
- 5.2. Aumentar o disco do google cloud (30GB) (Paulo)
- 5.3. Renomear e transferir os arquivos para a pasta de pedidos (Raul)
- 5.4. Testar o importador na azure Transparencia-Brasil/achados-e-pedidos-importador#7 estiver tudo OK vamos deletá-lo do Google Cloud
- 5.5. Importar as planilhas no importador - pacotes de 20.000 pedidos. descobrir limite do servidor para volume de arquivos (começar apenas após o aumento do disco) obs: Deletei as bibliotecas do mysql. verificar se o importador vai funcionar. (Raul)
- 6. Verificar se o limite de espaço do Storage na Azure atende. Caso não atender, aumentar esse limite (Will)
Caracteres/acentos desconfigurados
Oi, @pauloeducampos! (cc @andremotasc)
O Achados está com os acentos zoados, acho que deu algum chabu na codificação da linguagem... Pode dar uma olhada, por favor?
É uma questão interessante: não aparece na lista de pedidos nem nos menus, mas acontece nas páginas dos pedidos, como este...
... Na área de notícias...
... E na área de publicações
Problema no deploy (git push azure master)
Problema:
Ao dar o comando git push azure master o sistema retorna erro:
remote: hooks/post-receive: 4: hooks/post-receive: /opt/Kudu/KuduConsole/kudu.dll: Exec format error
git remote -v
azure https://[email protected]/transparencia-achados.git (fetch)
azure https://[email protected]/transparencia-achados.git (push)
origin https://github.com/Transparencia-Brasil/achados-e-pedidos-site.git (fetch)
origin https://github.com/Transparencia-Brasil/achados-e-pedidos-site.git (push)
veja imagem com mais detalhes
Página de dados: gráficos com tempo de resposta em dias não aparece no front end, seletores não respondem
Na página de dados o gráfico de tempo de resposta em dias (/api/taxaDeReversao) não aparece. Seletores de Nível federativo e Esfera de poder não respondem. Alterar default dos seletores para NivelFederativo = "Federal"
e EsferaDePoder = "Executivo"
.
Login ao painel administrativo não está funcionando
Problema
Não estamos conseguindo se logar no painel de controle do achados e pedidos
Comportamento
- Entrar na página de login ao painel de controle
- Digitar o usuário e a senha corretos
- Apertar o botão login
A página irá redirecionar de volta para ela mesma (https://www.achadosepedidos.org.br/admin/login/logar) e não vai efetuar o login para o painel de controle. Nenhuma mensagem de erro aparece na interface (ex: usuário e senha errados)
Erro nos logs
Apontamento dos logs dentro do SSH da aplicação no azure (tail -f /var/www/html/wwwroot/logs/error.log | grep session)
Aparecem esses warnings quando o botão login é pressionado:
2021-10-27 21:31:55 Warning: Warning (2): session_write_close() [<a href='http://php.net/function.session-write-close'>function.session-write-close</a>]: write failed: No space left on device (28) in [Unknown, line 0]
session_write_close - [internal], line ??
2021-10-27 21:31:55 Warning: Warning (2): session_write_close() [<a href='http://php.net/function.session-write-close'>function.session-write-close</a>]: Failed to write session data (files). Please verify that the current setting of session.save_path is correct () in [Unknown, line 0]
session_write_close - [internal], line ??
2021-10-27 21:31:55 Warning: Warning (2): session_write_close(): write failed: No space left on device (28) in [Unknown, line 0]
session_write_close - [internal], line ??
2021-10-27 21:31:55 Warning: Warning (2): session_write_close() [<a href='http://php.net/function.session-write-close'>function.session-write-close</a>]: Failed to write session data (files). Please verify that the current setting of session.save_path is correct () in [Unknown, line 0]
session_write_close - [internal], line ??
2021-10-27 21:31:55 Warning: Warning (2): session_write_close(): write failed: No space left on device (28) in [Unknown, line 0]
session_write_close - [internal], line ??
2021-10-27 21:31:55 Warning: Warning (2): session_write_close() [<a href='http://php.net/function.session-write-close'>function.session-write-close</a>]: Failed to write session data (files). Please verify that the current setting of session.save_path is correct () in [Unknown, line 0]
session_write_close - [internal], line ??
Observações
- A última atualização efetuada na plataforma foi em 5 de outubro. O problema foi relatado só hoje 27 de outubro. Aparentemente estava funcionando e parou "do nada"
- O registro do usuário na tabela achadosepedidos.usuarios_admin é atualizado com a data do ultimo login. O problema está no redirecionamento de uma página para outra. No middleware que gera a sessão para o login ser efetivamente liberado
Diagnóstico aparente
Aparentemente o problema está na falta de disco para criar mais sessão.
https://stackoverflow.com/questions/5412435/what-does-write-failed-no-space-left-on-device-mean
[publicações] Arquivo não encontrado
Título do arquivo: Execução do orçamento federal para Covid-19 entre povos indígenas https://transparencia-achados.azurewebsites.net/publicacoes
Implementação / otimização de cache do cloudflare para domínio achadosepedidos.org.br e transparencia.org.br
Implementação de um worker para gerenciar cache.
Configuração de limites para o PHP
Dada a natureza efêmera dos containers, é preciso adicionar ao .htaccess
as linhas abaixo:
php_value upload_max_filesize 20M
php_value post_max_size 32M
Como ele será substituído no próximo push, é bom garantir que as modificações fiquem perenes.
Importacao da CGU - Verificar velocidade para passar o OCR
Quando terminar de subir os 200 mil pedidos com 140GB decidir se iremos contratar uma máquina mais parruda para processar mais rápido os arquivos para o Elasticsearch
Problema com Composer post-install
Diagnóstico Elastic Search
Avaliação e melhorias para infraestrutura do Elastic Search (ES).
Problema:
O site AeP possui um sistema de busca de pedidos que opera com ES.
O sistema de busca possui gargalos com ingestão de dados de pedidos LAI.
Os pedidos são armazenados em um banco de dados e "sincronizados" no Elastic Search, quanto maior o número de pedidos para sincronizar, mais memória o sistema consome. A sincronização não suporta a ingestão de grandes volumes de pedidos (+2000 pedidos).
Necessidades:
- Esquema, desempenho: revisar se a ferramenta opera em conformidade com boas práticas. Diagnóstico com Opster. Implementar melhorias se necessário.
- Infraestrutura: revisar infra em que o sistema está instalado e implementar melhorias se necessário. Temos a limitação de não poder trabalhar com uma instância ES dedicada (custo alto para um baixo volume de dados). Sugerir e dar apoio à implementação de técnicas de devops alternativas (exemplo: modelo aqui. )
MySQL da Azure não tem SUPER
Isso significa que tudo que tem DEFINER no schema quebra a importação.
Precisa revisar se é necessário manter esses usuários, pois o mysql
tenta trocar para eles na importação. Caso for necessário, precisa mudar como é feito, pois não roda na Azure.
Acho que esse problema se agrava se considerarmos o dump definitivo.
Outra coisa: é bom documentar que é necessária a configuração do parâmetro log_bin_trust_function_creators
para TRUE
em lugares onde não é possível usar o SUPER.
Lista de órgãos públicos não aparece na hora de inserir pedidos
Olá, @pauloeducampos e @andremotasc
Mais um chabuzinho: na hora de inserir um pedido pelo método tradicional (interface do usuário logado), a lista de órgãos públicos não está carregando no primeiro passo do fluxo:
Deveria ser assim:
[Elastic Search] página de pedidos Lista de queries com tempo de execução
Relatório das queries consumidas pelo elasticsearch na página de busca do achados e pedidos por tempo de execução.
Forma mapeadas 7 queries com o tempo de execução entre parênteses.
- Query 1: Lista os 10 últimos pedidos na base e mostra na página (média 22ms)
GET pedidos/_search
{
"from" : 0,
"size" : 10,
"query" : {
"bool" : {
"should" : [
{
"match_all" : {
"boost" : 1.0
}
},
{
"match_all" : {
"boost" : 1.0
}
},
{
"match_all" : {
"boost" : 1.0
}
}
],
"disable_coord" : false,
"adjust_pure_negative" : true,
"boost" : 1.0
}
},
"sort" : [
{
"pedidos_codigo_local" : {
"order" : "desc"
}
}
],
"highlight" : {
"fields" : {
"anexos_conteudo_arquivo" : {
"fragment_size" : 300,
"number_of_fragments" : 3
},
"interacoes_descricao_local" : {
"fragment_size" : 300,
"number_of_fragments" : 3
},
"pedidos_titulo_local" : {
"fragment_size" : 300,
"number_of_fragments" : 3
},
"pedidos_descricao_local" : {
"fragment_size" : 300,
"number_of_fragments" : 3
}
}
},
"ext" : { }
}
- Query 2: Autocomplete da caixa de busca - lista até 5 resultados (média 3ms)
obs: Utiliza a palavra CGU como filtro
GET pedidos/_search
{
"from" : 0,
"size" : 5,
"query" : {
"match_phrase_prefix" : {
"pedidos_titulo_local" : {
"query" : "CGU",
"slop" : 0,
"max_expansions" : 50,
"boost" : 1.0
}
}
},
"_source" : {
"includes" : [
"pedidos_titulo_local"
],
"excludes" : [ ]
},
"ext" : { }
}
- Query 3: Autocomplete da caixa do filtro "Pedido enviado para" - lista até 1000 resultados (média 35ms)
obs: Utiliza a palavra CGU como filtro
GET pedidos/_search
{
"from" : 0,
"size" : 10000,
"query" : {
"match_phrase_prefix" : {
"agentes_nome_local" : {
"query" : "CGU",
"slop" : 0,
"max_expansions" : 50,
"boost" : 1.0
}
}
},
"_source" : {
"includes" : [
"agentes_nome_local"
],
"excludes" : [ ]
},
"ext" : { }
}
- Query 4: Autocomplete da caixa do filtro "Pedido disponibilizado por" - lista até 1000 resultados (média 333ms)
obs: Utiliza a frase "transparencia brasil" como filtro
GET pedidos/_search
{
"from" : 0,
"size" : 10000,
"query" : {
"match_phrase_prefix" : {
"usuarios_nome_local" : {
"query" : "transparencia brasil",
"slop" : 0,
"max_expansions" : 50,
"boost" : 1.0
}
}
},
"_source" : {
"includes" : [
"usuarios_nome_local"
],
"excludes" : [ ]
},
"ext" : { }
}
- Query 5: Busca por uma frase em anexos - lista até 10 resultados (média 50ms)
obs: Utiliza a frase "CGU – Controladoria-Geral da União - Operações CGU..."
GET anexos/_search
{
"from" : 0,
"size" : 10,
"query" : {
"bool" : {
"should" : [
{
"bool" : {
"must" : [
{
"query_string" : {
"query" : "CGU – Controladoria-Geral da União - Operações CGU...",
"fields" : [
"pedidos_descricao_local^1.0",
"pedidos_titulo_local^1.0"
],
"use_dis_max" : true,
"tie_breaker" : 0.0,
"default_operator" : "or",
"auto_generate_phrase_queries" : false,
"max_determined_states" : 10000,
"lowercase_expanded_terms" : true,
"enable_position_increment" : true,
"fuzziness" : "AUTO",
"fuzzy_prefix_length" : 0,
"fuzzy_max_expansions" : 50,
"phrase_slop" : 0,
"locale" : "und",
"escape" : false,
"boost" : 1.0
}
}
],
"disable_coord" : false,
"adjust_pure_negative" : true,
"boost" : 1.0
}
},
{
"bool" : {
"must" : [
{
"query_string" : {
"query" : "CGU – Controladoria-Geral da União - Operações CGU...",
"fields" : [
"interacoes_descricao_local^1.0"
],
"use_dis_max" : true,
"tie_breaker" : 0.0,
"default_operator" : "or",
"auto_generate_phrase_queries" : false,
"max_determined_states" : 10000,
"lowercase_expanded_terms" : true,
"enable_position_increment" : true,
"fuzziness" : "AUTO",
"fuzzy_prefix_length" : 0,
"fuzzy_max_expansions" : 50,
"phrase_slop" : 0,
"locale" : "und",
"escape" : false,
"boost" : 1.0
}
}
],
"disable_coord" : false,
"adjust_pure_negative" : true,
"boost" : 1.0
}
},
{
"bool" : {
"must" : [
{
"query_string" : {
"query" : "CGU – Controladoria-Geral da União - Operações CGU...",
"fields" : [
"anexos_conteudo_arquivo^1.0"
],
"use_dis_max" : true,
"tie_breaker" : 0.0,
"default_operator" : "or",
"auto_generate_phrase_queries" : false,
"max_determined_states" : 10000,
"lowercase_expanded_terms" : true,
"enable_position_increment" : true,
"fuzziness" : "AUTO",
"fuzzy_prefix_length" : 0,
"fuzzy_max_expansions" : 50,
"phrase_slop" : 0,
"locale" : "und",
"escape" : false,
"boost" : 1.0
}
}
],
"disable_coord" : false,
"adjust_pure_negative" : true,
"boost" : 1.0
}
}
],
"disable_coord" : false,
"adjust_pure_negative" : true,
"boost" : 1.0
}
},
"sort" : [ ],
"highlight" : {
"fields" : {
"anexos_conteudo_arquivo" : {
"fragment_size" : 300,
"number_of_fragments" : 3
},
"interacoes_descricao_local" : {
"fragment_size" : 300,
"number_of_fragments" : 3
},
"pedidos_titulo_local" : {
"fragment_size" : 300,
"number_of_fragments" : 3
},
"pedidos_descricao_local" : {
"fragment_size" : 300,
"number_of_fragments" : 3
}
}
},
"ext" : { }
}
- Query 6: Busca por uma frase em interacoes - lista até 10 resultados (média 30ms)
obs: Utiliza a frase "CGU – Controladoria-Geral da União - Operações CGU..."
GET interacoes/_search
{
"from" : 0,
"size" : 10,
"query" : {
"bool" : {
"should" : [
{
"bool" : {
"must" : [
{
"query_string" : {
"query" : "CGU – Controladoria-Geral da União - Operações CGU...",
"fields" : [
"pedidos_descricao_local^1.0",
"pedidos_titulo_local^1.0"
],
"use_dis_max" : true,
"tie_breaker" : 0.0,
"default_operator" : "or",
"auto_generate_phrase_queries" : false,
"max_determined_states" : 10000,
"lowercase_expanded_terms" : true,
"enable_position_increment" : true,
"fuzziness" : "AUTO",
"fuzzy_prefix_length" : 0,
"fuzzy_max_expansions" : 50,
"phrase_slop" : 0,
"locale" : "und",
"escape" : false,
"boost" : 1.0
}
}
],
"disable_coord" : false,
"adjust_pure_negative" : true,
"boost" : 1.0
}
},
{
"bool" : {
"must" : [
{
"query_string" : {
"query" : "CGU – Controladoria-Geral da União - Operações CGU...",
"fields" : [
"interacoes_descricao_local^1.0"
],
"use_dis_max" : true,
"tie_breaker" : 0.0,
"default_operator" : "or",
"auto_generate_phrase_queries" : false,
"max_determined_states" : 10000,
"lowercase_expanded_terms" : true,
"enable_position_increment" : true,
"fuzziness" : "AUTO",
"fuzzy_prefix_length" : 0,
"fuzzy_max_expansions" : 50,
"phrase_slop" : 0,
"locale" : "und",
"escape" : false,
"boost" : 1.0
}
}
],
"disable_coord" : false,
"adjust_pure_negative" : true,
"boost" : 1.0
}
},
{
"bool" : {
"must" : [
{
"query_string" : {
"query" : "CGU – Controladoria-Geral da União - Operações CGU...",
"fields" : [
"anexos_conteudo_arquivo^1.0"
],
"use_dis_max" : true,
"tie_breaker" : 0.0,
"default_operator" : "or",
"auto_generate_phrase_queries" : false,
"max_determined_states" : 10000,
"lowercase_expanded_terms" : true,
"enable_position_increment" : true,
"fuzziness" : "AUTO",
"fuzzy_prefix_length" : 0,
"fuzzy_max_expansions" : 50,
"phrase_slop" : 0,
"locale" : "und",
"escape" : false,
"boost" : 1.0
}
}
],
"disable_coord" : false,
"adjust_pure_negative" : true,
"boost" : 1.0
}
}
],
"disable_coord" : false,
"adjust_pure_negative" : true,
"boost" : 1.0
}
},
"sort" : [ ],
"highlight" : {
"fields" : {
"anexos_conteudo_arquivo" : {
"fragment_size" : 300,
"number_of_fragments" : 3
},
"interacoes_descricao_local" : {
"fragment_size" : 300,
"number_of_fragments" : 3
},
"pedidos_titulo_local" : {
"fragment_size" : 300,
"number_of_fragments" : 3
},
"pedidos_descricao_local" : {
"fragment_size" : 300,
"number_of_fragments" : 3
}
}
},
"ext" : { }
}
- Query 7: Busca por uma frase em pedidos - lista até 10 resultados (média 27ms)
obs: Utiliza a frase "CGU – Controladoria-Geral da União - Operações CGU..."
GET pedidos/_search
{
"from" : 0,
"size" : 10,
"query" : {
"bool" : {
"should" : [
{
"bool" : {
"must" : [
{
"query_string" : {
"query" : "CGU – Controladoria-Geral da União - Operações CGU...",
"fields" : [
"pedidos_descricao_local^1.0",
"pedidos_titulo_local^1.0"
],
"use_dis_max" : true,
"tie_breaker" : 0.0,
"default_operator" : "or",
"auto_generate_phrase_queries" : false,
"max_determined_states" : 10000,
"lowercase_expanded_terms" : true,
"enable_position_increment" : true,
"fuzziness" : "AUTO",
"fuzzy_prefix_length" : 0,
"fuzzy_max_expansions" : 50,
"phrase_slop" : 0,
"locale" : "und",
"escape" : false,
"boost" : 1.0
}
}
],
"disable_coord" : false,
"adjust_pure_negative" : true,
"boost" : 1.0
}
},
{
"bool" : {
"must" : [
{
"query_string" : {
"query" : "CGU – Controladoria-Geral da União - Operações CGU...",
"fields" : [
"interacoes_descricao_local^1.0"
],
"use_dis_max" : true,
"tie_breaker" : 0.0,
"default_operator" : "or",
"auto_generate_phrase_queries" : false,
"max_determined_states" : 10000,
"lowercase_expanded_terms" : true,
"enable_position_increment" : true,
"fuzziness" : "AUTO",
"fuzzy_prefix_length" : 0,
"fuzzy_max_expansions" : 50,
"phrase_slop" : 0,
"locale" : "und",
"escape" : false,
"boost" : 1.0
}
}
],
"disable_coord" : false,
"adjust_pure_negative" : true,
"boost" : 1.0
}
},
{
"bool" : {
"must" : [
{
"query_string" : {
"query" : "CGU – Controladoria-Geral da União - Operações CGU...",
"fields" : [
"anexos_conteudo_arquivo^1.0"
],
"use_dis_max" : true,
"tie_breaker" : 0.0,
"default_operator" : "or",
"auto_generate_phrase_queries" : false,
"max_determined_states" : 10000,
"lowercase_expanded_terms" : true,
"enable_position_increment" : true,
"fuzziness" : "AUTO",
"fuzzy_prefix_length" : 0,
"fuzzy_max_expansions" : 50,
"phrase_slop" : 0,
"locale" : "und",
"escape" : false,
"boost" : 1.0
}
}
],
"disable_coord" : false,
"adjust_pure_negative" : true,
"boost" : 1.0
}
}
],
"disable_coord" : false,
"adjust_pure_negative" : true,
"boost" : 1.0
}
},
"sort" : [ ],
"highlight" : {
"fields" : {
"anexos_conteudo_arquivo" : {
"fragment_size" : 300,
"number_of_fragments" : 3
},
"interacoes_descricao_local" : {
"fragment_size" : 300,
"number_of_fragments" : 3
},
"pedidos_titulo_local" : {
"fragment_size" : 300,
"number_of_fragments" : 3
},
"pedidos_descricao_local" : {
"fragment_size" : 300,
"number_of_fragments" : 3
}
}
},
"ext" : { }
}
275# [achadosepedidos] Revisão da query de criação de um anexo no ES. (lentidão para subir pedidos com anexos)
Problema descrito
Ao percorrer o fluxo de cadastro de um pedido pelo site, e na criação de uma interação subir um anexo, o sistema fica lento e ocasionalmente retorna timeout do nginx.
Diagnóstico
O problema não está no upload do arquivo, mas na query que pega os dados do banco mysql para criar o registro do anexo no elasticsearch (exemplo de registro criado).
Se entrar no admin e subir uma publicação com anexo, o sistema executa com uma relativa velocidade (oq prova que o upload está OK).
O fluxo é:
- Se logar no site
- Cadastrar um pedido (escolhendo o órgão publico)
- Cadastrar uma resposta (anexando um arquivo)
O sistema faz o seguinte:
- Salva a resposta na tabela pedidos_interacoes
- Salva os dados do arquivo na tabela pedidos_anexos
- Salva o arquivo no disco / bucket
- Executa a sincronização com o ES
4.1. Pega o registro do anexo no banco de dados (tabela pedidos_anexos) (QUERY LENTA)
4.2. Envia os dados para o ES através do endpoint anexos/gravar/$CodigoDoAnexo
Query com problema
Select pa.Codigo anexos_codigo, pa.Arquivo anexos_arquivo, "" anexos_conteudo_arquivo, pi.Codigo interacoes_codigo, pi.Descricao interacoes_descricao, DATE_FORMAT(pi.DataResposta,"%Y-%m-%d") interacoes_data_resposta,a.Codigo pedidos_codigo,a.CodigoUsuario usuarios_codigo,c.Nome usuarios_nome,c.Nome usuarios_slug,c.Email usuarios_email,d.Codigo agentes_codigo,d.Nome agentes_nome,d.Nome agentes_slug,h.Codigo tipo_pedido_origem_codigo,h.Nome tipo_pedido_origem_nome,a.CodigoTipoPedidoSituacao tipo_pedido_situacao_codigo,g.Nome tipo_pedido_situacao_nome,a.CodigoStatusPedido status_pedido_codigo,e.Nome status_pedido_nome,f.Codigo status_pedido_interno_codigo,f.Nome status_pedido_interno_nome,tpr.Codigo tipo_pedidos_resposta_codigo,tpr.Nome tipo_pedido_origem_nome,tp.Codigo tipo_poder_codigo,tp.Nome tipo_poder_nome,tnf.Codigo tipo_nivel_federativo_codigo,tnf.Nome tipo_nivel_federativo_nome,a.Protocolo pedidos_protocolo,a.Titulo pedidos_titulo,a.Slug pedidos_slug,a.Descricao pedidos_descricao,"" pedidos_enviado_para,DATE_FORMAT(a.DataEnvio,"%Y-%m-%d") pedidos_data_envio,a.FoiProrrogado pedidos_foi_prorrogado,a.Anonimo pedidos_anonimo,case when b.Codigo is null Then 0 Else 1 end JaEnviado from pedidos a join pedidos_interacoes pi on a.Codigo = pi.CodigoPedido join pedidos_anexos pa on pa.CodigoPedidoInteracao = pi.Codigo left join es_pedidos_anexos b on pa.Codigo = b.CodigoPedidoAnexo join usuarios c on a.CodigoUsuario = c.Codigo join agentes d on d.Codigo = a.CodigoAgente join status_pedido e on a.CodigoStatusPedido = e.Codigo join status_pedido f on a.CodigoStatusPedidoInterno = f.Codigo join tipo_pedido_situacao g on g.Codigo = a.CodigoTipoPedidoSituacao join tipo_pedido_origem h on a.CodigoTipoOrigem = h.Codigo join tipo_poder tp on tp.Codigo = d.CodigoPoder join tipo_nivel_federativo tnf on tnf.Codigo = d.CodigoNivelFederativo join tipo_pedido_resposta tpr on tpr.Codigo = pi.CodigoTipoPedidoResposta join moderacoes modera on modera.CodigoObjeto = a.Codigo and modera.CodigoTipoObjeto = 1 and modera.CodigoStatusModeracao = 2 where a.Ativo = 1 and b.Codigo is null;
Tempo de execução: > 1 minuto
Solução
Melhorar a performance do banco (se possível) e da query
- Mapear as tabelas / relacionamentos / campos com gargalo e criar índices
- Verificar configurações do banco de dados e fazer algumas configurações como aumentar o buffer
- Ver se conseguimos melhorar algo da query
Anexos:
Documentação da API: https://endp.achadosepedidos.org.br/doc-api/
Exibição de classificação de atendimento na página de dados com novos gráficos
@rdurl0 : criar visualizações com R
Remover seção "Confira os dados" e "Órgãos com mais pedidos atendidos e negados" da home
email com '+' tipo os aliases de gmail não funciona para login, mas cadastra
forçar HTTPS
Várias partes do site estão mudando para HTTP e isso está dificultando os testes.
Um dos problemas é esse issue #12.
Tentei de várias formas forçar o webroot/.htaccess forçar o HTTPS. ex:
RewriteCond %{HTTPS} !=on
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301,NE]
Me ajuda com isso?
Problema no captcha no fluxo de cadastro de um usuário
Descrição:
No cadastro de um novo usuário o captcha não está funcionando. Sempre que digitar as palavras e submeter o cadastro, volta um erro que o captcha está invalido, mesmo estando correto.
Problema:
O problema acontece porque o captcha não está atualizando a variável de sessão com o desafio correto.
Ao entrar na página é gerado um desafio ex: xptos que é gravado na sessão, mas a imagem mostra um outro desafio ex: ttypo. Ao digitar ttypo ele compara com xptos e retorna captcha invalido.
Solução:
Tiramos o captcha do cadastro.
Teste:
Entrar na página de cadastro e concluir um cadastro até o fim.
Pull Request:
Ticket:
https://trello.com/c/LWncwgHT/158-158-migracao-azure-aep-problema-no-captcha
[URGENTE] Erro 500 na inserção de pedidos
Oi, @studiocuboweb
Por favor, veja esta questão com prioridade.
Quando um usuário completa o fluxo de inserção de um pedido, o site fica um tempão carregando e retorna uma página de "Erro 500". Apesar disso, o pedido é inserido na base. Ou seja, o usuário é levado a acreditar que o processo deu errado e tende a duplicar/triplicar a inserção de pedido.
Isso se reflete também na moderação dos pedidos no admin: o sistema indica "erro interno. Tente novamente mais tarde", mas quando damos "refresh" na página de moderação, o pedido foi aprovado/reprovado.
Limite de 'post' no upload de anexos
Olá, @wgnann
Estou tendo problemas para subir anexos no Achados.
Ao fazer o login de usuário e cadastrar a resposta a este pedido, por exemplo, eu só consegui subir oito arquivos. Quando tento subir outro, nada acontece (nem mensagem de erro). O @studiocuboweb comentou que pode ser o limite de 'post' atual. Você pode dar uma olhada, por favor?
Obrigada
erro 500 em /dados
O banco de dados está sugerido hardcoded como tblai
em vez de usar o que estiver configurado no config/app.php
.
Exemplo:
Exibição de classificação de atendimento na página de pedidos
-
Mouseover próximo à lupa e o texto de status de atendimento (indicar o local com um ponto de interrogação como este) com o seguinte texto e redirecionamento para link (também no texto):
-
"Esta classificação é feita com um modelo de inteligência artificial que analisa a estrutura dos textos do pedido e da resposta para determinar se a solicitação foi atendida de fato, ou seja, se a informação foi fornecida. O código, desenvolvido especialmente para o Achados e Pedidos, tem acurácia de 84,6%. Caso encontre uma classificação incorreta, por favor nos notifique. Saiba mais aqui"
-
-
Reordenamento da coluna à direita do pedido (ver figura abaixo), onde se vê os boxes "0 Seguidores > Avaliação > Encontrou algo errado" reordenar para "Encontrou algo errado > Avaliação > 0 Seguidores"
-
**Remover o (Status verificado) **
Diagnóstico de esquema de Elastic Search com opster.
Opster: ferramenta que faz diagnóstico do Elastic Search
Problema de responsividade da home
Não é possível cadastrar novo agente público (no caso de o agente público não ser encontrado na primeira etapa do envio de pedido pelo usuário).
Problema adicionado por Marina na planilha de ajustes da homologação azure
Tópico:
Envio de pedido como usuário
Descrição:
Não é possível cadastrar novo agente público (no caso de o agente público não ser encontrado na primeira etapa do envio de pedido pelo usuário).
Problema:
Quando logado, ao clicar no Inserir Pedido e cadastrar um novo órgão publico clicando na frase:
Clique aqui caso não tenha encontrado o órgão público.
No campo "insira o órgão publico superior" não aparece as opções de autocomplete conforme digitação impossibilitando a escolha e o cadastro de um novo órgão no campo "Insira o nome do Órgão Público ao qual fez o pedido".
Esse bug foi observado quando não se navega em https.
Quando se navega com o site em HTTP, ele faz uma requisição ajax (background) usando HTTPS e causa problema de CORS (conforme imagem anexada)
Solução:
Criei um issue #13 para o Will tentar forçar o HTTPS. Se não, quando publicar esse problema será corrigido.
Teste:
Para testar é necessário criar um novo pedido se certificando que o endereço está utilizando o HTTPS.
- se logar / criar um novo cadastro
- clicar em inserir pedido
- selecionar um novo agente público (verificar se o navegador está utilizando HTTPS)
Se ao digitar no campo "insira o órgão publico superior", o sistema está funcionando corretamente
Commit:
Não tem commit.
Ticket Trello
163# [migracao-azure] AEP: Envio de pedido como usuário - fix cadastro de órgãos públicos. forçar https no htaccess
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.