¶ Data de elaboração |
23/01/2024 |
| Autor | Alef Carvalho da Silva (Analista de Tecnologia da Informação e Comunicação) |
| Equipe do estudo | André Honório de Andrade Silva (Tecnico), Emanuel Rufino Alcantara de Lima (Analista), Alef Carvalho da Silva (Analista), Gezinéia Paula da Costa (Product Owner) |
| Alvos | NovoSGA |
| Origem | Eu, Vingadores, preciso realizar um estudo de analise do sistema SGA, para verificar viabilidade técnica de realizar a atualização da versão mais recente. |
| Objetivo | Avaliar a possibilidade e viabilidade de migração do sistema NovoSGA utilizado pelas unidades do TudoAqui da versão 1.0 para 2.0 |
| Documentação correlata | |
| Observações | O presente estudo pretende também levantar as melhores estratégias para a atualização da versão, mantendo os dados atuais. |
Os objetivos deste estudo são:
O NovoSGA é um sistema de código aberto voltado para o gerenciamento de atendimento presencial de empresas e organizações. Com ele, além do além do atendimento, é possível emitir relatórios contendo informações sobre o tipo de atendimento realizado, tempo de atendimento, dados estes que podem ser agrupados ou individuais (por grupo de atendimento ou por atendente).
O sistema é utilizado pelas unidades do Tudo Aqui Centro, Porto Velho Shopping, Ariquemes, Ji-Paraná e Rolim de Moura. Atualmente o projeto encontra-se na versão v2.0.9 porém a versão atual utilizada é a v1.5.0, lançada em 13 de Agosto de 2015 e que não conta mais com atualizações ou correções de segurança.
Desta forma tornando urgente o levantamento dos requisitos e processos necessários para uma migração para a última versão do sistema. O presente estudo discorre sobre o cenário atual, bem como o que deve ser realizado para alcançar este objetivo.
Para a instalação da versão 2.0.9 há uma lista de pré-requisitos detalhados abaixo:
Há uma opção de instalação do sistema por meio de uma imagem docker, o que facilita bastante a instalação uma vez que todas as dependências e configurações necessárias estão inclusas na própria imagem, eliminando a necessidade de uma instalação e configuração manual e facilitando a integração com ferramentas como Openshift.
version: '2'
services:
novosga:
image: novosga/novosga:latest
container_name: novosga
restart: always
ports:
- "80:80"
- "2020:2020"
environment:
APP_ENV: 'prod'
APP_DEBUG: 1
DATABASE_URL: 'mysql://novosga:novosga@database:3306/sga_v2_local?charset=utf8mb4&serverVersion=5.7'
LANGUAGE: 'pt_BR'
TZ: 'America/Porto_Velho'
Unidade de atendimento é o local físico aonde os atendimentos são executados. Por exemplo: Uma unidade de saúde, um departamento de atendimento ao cliente, ou uma localidade. A extração dos dados pode ser feita por meio do script SQL abaixo:
SELECT
id,
nome,
nome AS descricao,
msg_imp AS impressao_cabecalho,
'' AS impressao_rodape,
1 AS impressao_exibir_data,
1 AS impressao_exibir_prioridade,
1 AS impressao_exibir_nome_unidade,
1 AS impressao_exibir_nome_servico,
1 AS impressao_exibir_mensagem_servico,
1 AS ativo,
CURRENT_TIMESTAMP AS created_at
FROM unidades;
Por padrão existem duas prioridades cadastradas: Sem prioridade e Prioridade. A prioridade possui um campo de peso que influencia na ordem da fila. Sendo por padrão Sem prioridade peso 0 e Prioridade peso 1. A extração dos dados pode ser feita por meio do script SQL abaixo:
SELECT
id,
nome,
descricao,
peso,
status AS ativo,
CURRENT_TIMESTAMP AS created_at
FROM prioridades;
Um perfil define quais módulos os usuários poderão acessar. O relacionamento do perfil com o usuário se dar através da lotação, que é a configuração de acesso de um usuário à uma unidade pelo perfil escolhido. Por conta da estrutura de banco de dados e dos novos nomes de permissão o scrip a extração dos dados pode ser feita por meio do script SQL abaixo:
SELECT
id,
nome,
descricao,
(
SELECT
GROUP_CONCAT(modulos.chave SEPARATOR ',')
FROM cargos_mod_perm
JOIN modulos ON cargos_mod_perm.modulo_id = modulos.id
WHERE cargos_mod_perm.cargo_id = cargos.id
) AS `modulos`,
CURRENT_TIMESTAMP AS `created_at`
FROM cargos;
UPDATE perfis SET modulos = REPLACE(modulos, 'sga.atendimento', 'novosga.attendance');
UPDATE perfis SET modulos = REPLACE(modulos, 'sga.monitor', 'novosga.monitor');
UPDATE perfis SET modulos = REPLACE(modulos, 'sga.estatisticas', 'novosga.reports');
UPDATE perfis SET modulos = REPLACE(modulos, 'sga.triagem', 'novosga.triage');
UPDATE perfis SET modulos = REPLACE(modulos, 'sga.usuarios', 'novosga.users');
O local serve para orientar o cliente para que ele saiba para onde se dirigir quando for chamado. Por exemplo: Guichê, sala, mesa. Os dados podem ser extraidos por meio do script SQL abaixo:
SELECT
id,
nome,
CURRENT_TIMESTAMP AS created_at
FROM locais
O serviço é um cadastro global, podendo estar disponível ou não nas unidades cadastradas. Um mesmo serviço pode ser atendido em mais de uma unidade. Os dados podem ser extraidos por meio do script SQL abaixo:
SELECT
`id`,
`macro_id`,
`nome`,
`descricao`,
`peso`,
`status` AS ativo,
CURRENT_TIMESTAMP AS created_at
FROM servicos;
Os vinculos de serviços e unidades anteriormente cadastrados podem ser extraidos por meio do script SQL abaixo:
SELECT
`servico_id`,
`unidade_id`,
`local_id`,
`sigla`,
`peso`,
`status` AS ativo,
1 AS prioridade,
1 AS numero_inicial,
1 AS incremento
FROM uni_serv;
Os usuários cadastrados na versão atual podem ser migrados porém houve uma mudança no algoritimo de criptografia das senhas. A versão anterior também não guardava um endereço de e-mail associado ao usuário, portanto a melhor opção disponível é definir um e-mail e senha padrão para todos e solicitar que individualmente realizem a alteração de senha.
SELECT
`id`,
`login`,
`senha`,
`nome`,
`sobrenome`,
null AS `email`,
`status` AS `ativo`,
'md5' AS `algorithm`,
`ult_acesso` AS `ultimo_acesso`,
0 AS `admin`,
CURRENT_TIMESTAMP AS `created_at`
FROM usuarios
;
Painel Web é a aplicação responsável por exibir as senhas chamadas pelo atendente. O código fonte pode ser encontrado neste repositório. Após a instalação é preciso criar ua chave de API na administração do NovoSGA, além de configurar os dados de acesso no painel Web.
| Sistema | História | Pontuação |
| NovoSGA | Configurar repositório para o NovoSGA no Gitlab da SETIC | 3 |
| Configurar build e pipeline de deployment do NovoSGA no Openshift | 5 | |
| Configurar build e pipeline de deployment do PainelWeb no Openshift | 5 | |
| Realizar a migração das unidades de atendimento para o banco de dados do NovoSGA. | 5 | |
| Realizar a migração das prioridades de atendimento para o banco de dado do NovoSGA. | 5 | |
| Realizar a migração dos perfis e permissões de usuário para o banco de dados do NovoSGA. | 5 | |
| Realizar a migração dos locais de atendimento para o banco de dados do NovoSGA. | 5 | |
| Realizar a migração dos serviços para o banco de dados do NovoSGA. | 5 | |
| Realizar a migração dos vinculos de unidade e serviço para o banco de dados do NovoSGA. | 5 | |
| Realizar a migração dos usuários para o banco de dados do NovoSGA. | 5 | |
| Realizar a migração do histórico de atendimentos para o banco de dados do NovoSGA. | 5 |
Com a atualização para a versão mais recente haverá um ganho significativo na performance geral do sistema, além de atualizações críticas de segurança e novas funcionalidades que foram lançadas no período.
Já houveram várias solicitações à SETIC para correções emergenciais na versão atual, especialmente no que tange a emissão de relatórios, que apresentou problemas de compatibilidade com navegadores mais recentes, porém em todos os casos sempre foram feitas correções paliativas para manter o sistema funcionando.
Atualmente não há um mapeamento claro do uso do SGA nas unidades estaduais. Já houve casos de problemas serem relatados no sistema e no painel nos quais foi descoberto que algumas unidades utilizavam instâncias próprias ou de terceiros.
Observado este ponto, em conjunto com as mudanças na interface do usuário presentes na nova versão e também na necessidade de validar se a migração dos dados da versão anterior foi feita de forma correta, possivelmente torna-se necessária a visita presencial as unidades que fazem uso do sistema para treinamento e homologação da nova versão em ambiente de teste.
Com a conclusão deste estudo ficam mapeado os procedimentos necessários para a instalação, configuração e migração dos dados da versão 1.5 para a versão 2.0.9 do NovoSGA e PainelWeb, além das histórias de usuário que serão necessárias para que este objetivo seja alcançado com o menor impacto possível.