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.

@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 e uni_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 e atend_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

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

@Vera e @rogeriolino

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

    @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

      @rogeriolino

      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

      6 dias depois

      Vera

      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.

      22 dias depois
      3 meses depois

      @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

      3 meses depois

      Boa tarde! Alguém já criou um script para migração dos dados?

      um mês depois

      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.

        7 dias depois

        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.

        9 meses depois
        um mês depois

        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.

          3 anos depois

          Vera Boa tarde, pode deria me ajudar com algum docuemento de como fez para utilizar o banco em um BI?

          un ano depois

          Boa tarde. Alguém fez o script de migração ou poderia dar um exemplo da estrutura dele?