Tópico para ajudar na criação do script de migração dos dados da versão 1.5 para a versão 2.0.
Migração dados 1.5 para 2.0
- Editado
@rogeriolino obrigada por criar tópico, vou registrar aqui os itens que já analisei. Aguardo contribuições dos outros participantes.
Na versão 1.5.1 são 30 tabelas com 158 campos no total. Nem todas as tabelas precisam ser migradas, por exemplo as do atendimento do dia (são transferidos para a tabela histórico ao reiniciar as senhas toda madrugada) e a que controla o painel de senhas chamadas no dia.
Aqui na Prefeitura identifiquei que será necessário migrar apenas 14 tabelas pois das outras 16 tabelas:
- 9 estão vazias (
historico_atend_meta
,oauth_access_tokens
,oauth_clients
,oauth_refresh_tokens
,oauth_scopes
,paineis
,paineis_servicos
,serv_meta
euni_meta
) - 2 são de configuração / gerenciamento de módulos da versão 1.5 (config e modulos)
- 4 são zeradas de madrugada quando as senhas são reiniciadas automaticamente (painel_senha, atendimentos,
atend_codif
eatend_meta
) - 1 talvez não seja necessária, pois é preenchida a medida que os usuários acessam a tela de atendimento (
usu_meta
)
O que deve dar trabalho é entender as diferenças na estrutura de serviços, subserviços e unidades.
Na versão 1.5 as colunas não possuem o COMMENT para indicar o significado do conteúdo, e nem sempre o nome do campo é o suficiente para o entendimento.
O primeiro passo para a criação do script é analisar a estrutura das tabelas das 2 versões para gerar um 'de / para'.
-- lista de tabelas
SELECT t.table_name, t.table_rows, t.engine, t.auto_increment, t.table_comment
FROM information_schema.tables t
WHERE t.table_schema = 'sga'
and t.table_type != 'VIEW'
order by t.table_name
Observações:
a) a quantidade de linhas apresentada pelo information_schema.tables é aproximada para as tabelas com engine = InnoDB.
b) a informação auto_increment é necessária para que após a importação dos dados sejam executados os comandos ALTER TABLE nomedatabela AUTO_INCREMENT = novovalor;
para cada uma das tabelas
-- lista de campos das tabelas
SELECT * FROM INFORMATION_SCHEMA.COLUMNS c
where c.TABLE_SCHEMA = 'sga' and c.TABLE_NAME not like 'view%'
order by c.TABLE_NAME,c.ORDINAL_POSITION
Antes de migrar resetar as senhas para que os dados das tabelas ATEND sejam transferidos para as tabelas HIST e o campo TOTAL da tabela CONTADOR seja zerado.
Tabela USUARIOS - antes de migrar verificar se na versão 2.0 foi inserido campo para email e analisar a possibilidade de já importar preenchendo esta informação. Se no perfil o usuário pode alterar o email, então esse cuidado não será necessário.
Verificar se a criptografia de senha é igual nas duas versões, se for diferente uma opção é voltar todas as senhas para um valor padrão e orientar os usuários para alterar pelo sistema.
Tabela CARGOS_MOD_PERM
- ajustar para o código do módulo correspondente na versão 2.0
- Editado
Continuando, como as 30 tabelas da versão 1.5 não possuem a informação 'Comment', listei abaixo o que consegui identificar.
Agradeço se alguém puder revisar e completar as informações faltantes, marcadas com ???
Os dados abaixo possuem tabulações, se quiser uma tabela formatada, copie e no Excel use a opção 'colar especial / texto'.
1 atendimentos Senhas do dia
2 atend_codif Senhas do dia atendidas com serviços realizados
3 atend_meta Metadados do atendimento ???
4 cargos Cargos que podem ser associados a um usuário
5 cargos_mod_perm Módulos que cada cargo tem permissão de acessar
6 config Parâmetros de configuração gerais
7 contador Última senha emitida em cada unidade
8 grupos Grupos
9 historico_atendimentos Senhas de dias anteriores ao atual
10 historico_atend_codif Senhas de dias anteriores ao atual com serviços realizados
11 historico_atend_meta Metadados do atendimento (histórico) ???
12 locais Locais de atendimento: guichê, mesa, sala
13 modulos Módulos instalados e controle se está ativo / inativo
14 oauth_access_tokens ???
15 oauth_clients ???
16 oauth_refresh_tokens ???
17 oauth_scopes ???
18 paineis ???
19 paineis_servicos ???
20 painel_senha Senhas chamadas no dia
21 prioridades Prioridades aceitas
22 servicos Serviços e subserviços
23 serv_meta Metadados dos serviços ???
24 unidades Unidades
25 uni_meta Metadados das unidades ???
26 uni_serv Serviços ativos em cada unidade com o local, letra e peso do serviço na unidade
27 usuarios Usuários ativos e inativos
28 usu_grup_cargo Grupo e cargo de cada usuário, indica as unidades que o usuário pode acessar e o cargo em cada unidade (módulos que está autorizado a usar em cada unidade)
29 usu_meta Metadados de cada usuário última unidade acessada, último nº de guichê usado e último tipo de atendimento (todos, convencional, prioritário)
30 usu_serv Serviços de cada unidade associados aos usuários
- Editado
Segue a lista de tabelas da v2.0
SELECT * FROM information_schema.tables t
WHERE t.table_schema = 'public'
and t.table_type != 'VIEW'
order by t.table_name
https://drive.google.com/file/d/15PTug42rFUSPKWctdwoASyJTlGp48_zL/view?usp=sharing
Lista de Campos das tabelas
SELECT table_name, table_rows, engine, auto_increment, table_comment
FROM information_schema.tables t
WHERE t.table_schema = 'public'
and t.table_type != 'VIEW'
order by t.table_name
https://drive.google.com/file/d/18VJ7hrzE8ScjDgzBFVTMpXZJkrNk383r/view?usp=sharing
Eu nao estou usando Mysql ou estou usando Postgres como banco de dados
@rarandrade
obrigada! Vi que são 30 tabelas.
@rogeriolino
devemos ter algum cuidado especial ao comparar estrutura MySQL com PostgreSQL?
Já existe um manual ou um local onde seja possível conhecer as telas / funcionalidades da versão 2.0? Não localizei esta informação no http://novosga.org/docs/current/
Vi que tem uma tabela 'agendamentos', estou interessada em conhecer este item, pois uma de nossas unidades tem esta necessidade e isto pode significar agilizar nossa migração para a versão 2.0...
- Editado
@rogeriolino
apesar de não conhecer as telas da versão 2.0, tentei fazer uma análise inicial usando como referência apenas os nomes das tabelas. Você pode validar ou enviar um link onde eu possa obter mais informações?
Coloquei ??? nas tabelas em que estou com dúvidas.
Não localizei uma tabela da versão 2.0 equivalente à tabela oauth_scopes da versão 1.5.1.
Por acaso as tabelas 'oauth' são as que contém os dados de integração com outras aplicações via API web do sistema? Como na Prefeitura não usamos, nossas tabelas estão vazias. Imagino que neste caso estas tabelas também não seriam migradas, bastaria fazer a configuração pela aplicação.
Aguardo a revisão desta etapa de identificação das tabelas para poder iniciar a parte de análise dos campos.
Obrigada.
Os dados abaixo possuem tabulações, se quiser uma tabela formatada, copie e no Excel use a opção 'colar especial / texto'.
Tabela versão 2.0 = Tabela versão 1.5.1
agendamentos = NOVA
atendimentos = atendimentos
atendimentos_codificados = atend_codif
atendimentos_metadata = atend_meta
clientes = NOVA - CLIENTES AGENDADOS???
contador = contador
departamentos = grupos ???
historico_atendimentos = historico_atendimentos
historico_atendimentos_codificados = historico_atend_codif
historico_atendimentos_metadata = historico_atend_meta
locais = locais
lotacoes = usu_grup_cargo + cargos_mod_perm???
metadata = NOVA - config + modulos???
migration_versions = NOVA - QUAL FINALIDADE???
oauth_access_tokens = oauth_access_tokens
oauth_clients = oauth_clients
oauth_refresh_tokens = oauth_refresh_tokens
??? = oauth_scopes
paineis = paineis
paineis_servicos = paineis_servicos
painel_senha = painel_senha
perfis = cargos
prioridades = prioridades
servicos = servicos
servicos_metadata = serv_meta
servicos_unidades = uni_serv
servicos_usuarios = usu_serv
unidades = unidades
unidades_metadata = uni_meta
usuarios = usuarios
usuarios_metadata = usu_meta
- Editado
Vc chegou a testar o painel web usando o sistema com banco Postgres, eu não consigo fazer rodar o painel de jeito nenhum cadastro dentro de WEB API client ele gera o public_id e o Client Secret, mas quando insiro essas chaves no painel aparece sempre a mesma msg
"Oops!
Bad Request: The client credentials are invalid"
E se executo o Force reload aparece essa msg
"Oops!
Unauthorized: The access token provided is invalid."
Dependo de fazer o funcionar o painel para conseguir testar bem o sistema para tentar ajudar na migração dos dados
Problema do Painel resolvido
rarandrade Não cheguei testar não. Era algum problema do sistema?
As tabelas OAuth não precisa migrar.
Clientes é a tabela para guardar os dados dos clientes que antes eram salvos direto na tabela de atendimentos. Agora ao invés de replicar os dados, faz a associação. Assim também é possível fazer integrações e relatórios.
Departamentos é uma nova entidade utilizada para agrupar serviços. É útil na triagem-touch. E para futuros relatórios.
Metadata seria a antiga tabela config
. São metadados globais do sistema.
A tabela migration_versions
é de controle do Doctrine Migrations, serve para controlar a execução dos scripts de migração para futuros upgrades.
Vera não precisa se preocupar com banco. Fazendo o script para um será fácil adaptar para o outro.
A documentação da v2.0 ainda está bem limitada.
Essa tabela agendamentos
serve para integrar com algum sistema de agendamento, caso possua. É possível vincular o atendimento gerado a um registro nessa tabela.
@rogeriolino voltei das férias e vou retomar os estudos da migração, obrigada pelas orientações.
@rogeriolino você tem o sga 2.0 com as dependencias instalado amigo, pode liberar pra nos amigo porque não estou conseguindo instalar ele pode liberar pra nos amigo NOVOSGA 2.O FINAL
Boa tarde! Alguém já criou um script para migração dos dados?
rarandrade estou com o problema do painel do sga 2.4 no Windows não estou conseguindo configurar poderia me ajuda ? os mesmos erros que estava acontecendo com você estão comigo.
ayrton Desculpe a demora para responder, verifique se não esta com espaço no final do client_secret e no public_id, não sei por que no momento que eu esta copiando os dados eles esta copiando um espaço no final.
É possivel atualizar da versão v.1.1.4 para v2.0.8 ?
Olá, apenas atualizando...
Há alguns meses passamos a copiar diariamente os dados do NovoSGA para o banco de dados de um sistema interno de BI onde são feitos relatórios e gráficos de análises mais detalhados do que os oferecidos pelo NovoSGA.
Continuamos a usar a versão 1.5.1 com MySQL e ambiente Linux que nos atende bem desde maio/2017.
Como temos os dados no sistema de BI, definimos que quando viermos a mudar de versão não faremos a migração do banco de dados, apenas vamos adaptar as views usadas para copiar para o BI.
Boa tarde. Alguém fez o script de migração ou poderia dar um exemplo da estrutura dele?