Giter Club home page Giter Club logo

achados-e-pedidos-site's People

Contributors

andremotasc avatar marcelo-jrkiko avatar minternauta avatar pauloeducampos avatar renatocafonso avatar studiocuboweb avatar

Watchers

 avatar  avatar

Forkers

jeffersonrpn

achados-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

⚠️ erro 500

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.

  1. se logar / criar um novo cadastro
  2. clicar em inserir pedido
  3. selecionar ou criar um novo agente público
  4. preencher o formulário do pedido
  5. preencher o formulário da interação
    5.1. Anexar pelo menos um arquivo

Commit:

79a0740

Ticket Trello
162# [migracao-azure] AEP: Envio de pedido como usuário - fix criação de interacao com anexo

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)

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

Screen Shot 2021-06-10 at 15 49 54

Login ao painel administrativo não está funcionando

Problema

Não estamos conseguindo se logar no painel de controle do achados e pedidos

Comportamento

  1. Entrar na página de login ao painel de controle
  2. Digitar o usuário e a senha corretos
  3. 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

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.

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.

[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 é:

  1. Se logar no site
  2. Cadastrar um pedido (escolhendo o órgão publico)
  3. Cadastrar uma resposta (anexando um arquivo)

O sistema faz o seguinte:

  1. Salva a resposta na tabela pedidos_interacoes
  2. Salva os dados do arquivo na tabela pedidos_anexos
  3. Salva o arquivo no disco / bucket
  4. 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

  1. Mapear as tabelas / relacionamentos / campos com gargalo e criar índices
  2. Verificar configurações do banco de dados e fazer algumas configurações como aumentar o buffer
  3. Ver se conseguimos melhorar algo da query

Anexos:
Documentação da API: https://endp.achadosepedidos.org.br/doc-api/

forçar HTTPS

@wgnann

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]

e dá too many redirects
Screen Shot 2021-06-10 at 20 53 34

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:

#9

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

Exibição de classificação de atendimento na página de pedidos

  1. 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"

  2. 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"

    • image

  3. **Remover o (Status verificado) **

    • image

    • Queremos retirar esse campo em destaque, mantendo somente o status de atendimento + ponto de interrogação com mouseover;

Problema de responsividade da home

image
há um problema de responsividade para alguns formatos de tela na home do AeP. Na imagem, o navegador utilizado é o Google Chrome para Mac.

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)
Screen Shot 2021-06-10 at 20 41 36

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.

  1. se logar / criar um novo cadastro
  2. clicar em inserir pedido
  3. 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 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.