|
|
"""Script para popular o banco de dados com checklists de teste baseados nas normas de compras públicas""" |
|
|
|
|
|
import uuid |
|
|
import random |
|
|
from datetime import datetime, timedelta |
|
|
from utils.database import get_db_connection |
|
|
|
|
|
def create_etp_checklists(): |
|
|
"""Cria 10 checklists baseados nas normas ETP (Estudo Técnico Preliminar)""" |
|
|
|
|
|
etp_checklists = [ |
|
|
{ |
|
|
"name": "ETP - Sistema de Gestão Eletrônica", |
|
|
"numero_processo": "2024/001-ETP", |
|
|
"items": [ |
|
|
"Evidenciar problema a ser resolvido", |
|
|
"Definir melhor solução proposta", |
|
|
"Avaliar viabilidade técnica", |
|
|
"Avaliar viabilidade socioeconômica", |
|
|
"Avaliar viabilidade ambiental", |
|
|
"Verificar alinhamento com Plano de Contratações Anual", |
|
|
"Verificar alinhamento com Plano Diretor de Logística Sustentável", |
|
|
"Registrar descrição da necessidade da contratação", |
|
|
"Definir requisitos da contratação", |
|
|
"Realizar levantamento de mercado", |
|
|
"Analisar alternativas possíveis", |
|
|
"Justificar escolha técnica e econômica", |
|
|
"Descrever solução como um todo", |
|
|
"Estimar quantidades a serem contratadas", |
|
|
"Elaborar memórias de cálculo", |
|
|
"Estimar valor da contratação", |
|
|
"Definir preços unitários referenciais", |
|
|
"Justificar parcelamento ou não da solução", |
|
|
"Identificar contratações correlatas", |
|
|
"Demonstrar previsão no Plano de Contratações", |
|
|
"Demonstrar resultados pretendidos", |
|
|
"Listar providências prévias da Administração", |
|
|
"Descrever possíveis impactos ambientais", |
|
|
"Definir medidas mitigadoras", |
|
|
"Elaborar posicionamento conclusivo" |
|
|
] |
|
|
}, |
|
|
{ |
|
|
"name": "ETP - Serviços de Limpeza e Conservação", |
|
|
"numero_processo": "2024/002-ETP", |
|
|
"items": [ |
|
|
"Evidenciar necessidade dos serviços de limpeza", |
|
|
"Definir escopo dos serviços", |
|
|
"Avaliar viabilidade da terceirização", |
|
|
"Verificar conformidade com legislação trabalhista", |
|
|
"Analisar impacto ambiental dos produtos", |
|
|
"Verificar alinhamento estratégico", |
|
|
"Registrar área total a ser atendida", |
|
|
"Definir frequência dos serviços", |
|
|
"Especificar materiais e equipamentos", |
|
|
"Pesquisar preços de mercado", |
|
|
"Comparar fornecedores qualificados", |
|
|
"Justificar modalidade licitatória", |
|
|
"Calcular quantidade de profissionais", |
|
|
"Estimar custos mensais", |
|
|
"Definir critérios de qualidade", |
|
|
"Estabelecer indicadores de desempenho", |
|
|
"Planejar gestão e fiscalização", |
|
|
"Verificar necessidade de treinamentos", |
|
|
"Avaliar sustentabilidade ambiental", |
|
|
"Concluir sobre adequação da contratação" |
|
|
] |
|
|
}, |
|
|
{ |
|
|
"name": "ETP - Aquisição de Veículos Oficiais", |
|
|
"numero_processo": "2024/003-ETP", |
|
|
"items": [ |
|
|
"Justificar necessidade dos veículos", |
|
|
"Definir especificações técnicas", |
|
|
"Avaliar compra vs locação", |
|
|
"Analisar economia circular", |
|
|
"Verificar disponibilidade orçamentária", |
|
|
"Pesquisar mercado automotivo", |
|
|
"Comparar modelos disponíveis", |
|
|
"Avaliar custo-benefício", |
|
|
"Definir critérios de sustentabilidade", |
|
|
"Especificar combustível (flex/elétrico)", |
|
|
"Calcular custos de manutenção", |
|
|
"Estimar vida útil", |
|
|
"Definir garantia mínima", |
|
|
"Planejar entrega e recebimento", |
|
|
"Verificar documentação necessária", |
|
|
"Avaliar impacto ambiental", |
|
|
"Definir destinação de veículos antigos", |
|
|
"Concluir sobre viabilidade" |
|
|
] |
|
|
}, |
|
|
{ |
|
|
"name": "ETP - Software de Gestão Financeira", |
|
|
"numero_processo": "2024/004-ETP", |
|
|
"items": [ |
|
|
"Identificar deficiências do sistema atual", |
|
|
"Definir funcionalidades obrigatórias", |
|
|
"Especificar requisitos de segurança", |
|
|
"Avaliar integração com sistemas existentes", |
|
|
"Verificar conformidade com LGPD", |
|
|
"Pesquisar soluções de mercado", |
|
|
"Analisar fornecedores especializados", |
|
|
"Comparar custos de licenciamento", |
|
|
"Avaliar custos de implementação", |
|
|
"Definir necessidades de treinamento", |
|
|
"Planejar migração de dados", |
|
|
"Especificar suporte técnico", |
|
|
"Calcular retorno sobre investimento", |
|
|
"Definir critérios de aceitação", |
|
|
"Estabelecer cronograma de implantação", |
|
|
"Avaliar riscos tecnológicos", |
|
|
"Concluir sobre adequação da solução" |
|
|
] |
|
|
}, |
|
|
{ |
|
|
"name": "ETP - Manutenção Predial Terceirizada", |
|
|
"numero_processo": "2024/005-ETP", |
|
|
"items": [ |
|
|
"Diagnosticar estado atual das instalações", |
|
|
"Definir serviços de manutenção necessários", |
|
|
"Especificar manutenção preventiva", |
|
|
"Especificar manutenção corretiva", |
|
|
"Listar equipamentos a serem mantidos", |
|
|
"Definir periodicidade das manutenções", |
|
|
"Pesquisar empresas especializadas", |
|
|
"Avaliar qualificação técnica requerida", |
|
|
"Calcular custos estimados", |
|
|
"Definir indicadores de desempenho", |
|
|
"Especificar materiais e peças", |
|
|
"Estabelecer prazos de atendimento", |
|
|
"Definir garantias dos serviços", |
|
|
"Planejar fiscalização contratual", |
|
|
"Avaliar impactos na operação", |
|
|
"Verificar certificações necessárias", |
|
|
"Concluir sobre viabilidade da terceirização" |
|
|
] |
|
|
}, |
|
|
{ |
|
|
"name": "ETP - Consultoria em Gestão de Processos", |
|
|
"numero_processo": "2024/006-ETP", |
|
|
"items": [ |
|
|
"Identificar processos críticos", |
|
|
"Definir objetivos da consultoria", |
|
|
"Especificar metodologia a ser aplicada", |
|
|
"Definir perfil dos consultores", |
|
|
"Estabelecer cronograma de trabalho", |
|
|
"Pesquisar empresas de consultoria", |
|
|
"Analisar cases de sucesso", |
|
|
"Avaliar custo dos serviços", |
|
|
"Definir produtos a serem entregues", |
|
|
"Especificar transferência de conhecimento", |
|
|
"Estabelecer critérios de avaliação", |
|
|
"Definir indicadores de resultado", |
|
|
"Planejar acompanhamento dos trabalhos", |
|
|
"Avaliar impacto organizacional", |
|
|
"Verificar necessidade de capacitação", |
|
|
"Concluir sobre retorno esperado" |
|
|
] |
|
|
}, |
|
|
{ |
|
|
"name": "ETP - Equipamentos de Informática", |
|
|
"numero_processo": "2024/007-ETP", |
|
|
"items": [ |
|
|
"Levantar necessidades computacionais", |
|
|
"Definir configurações mínimas", |
|
|
"Especificar software compatível", |
|
|
"Avaliar vida útil esperada", |
|
|
"Pesquisar fornecedores homologados", |
|
|
"Comparar especificações técnicas", |
|
|
"Analisar garantia oferecida", |
|
|
"Calcular custos totais", |
|
|
"Avaliar suporte técnico", |
|
|
"Definir logística de entrega", |
|
|
"Planejar instalação e configuração", |
|
|
"Especificar descarte sustentável", |
|
|
"Verificar certificações ambientais", |
|
|
"Definir cronograma de substituição", |
|
|
"Avaliar compatibilidade tecnológica", |
|
|
"Concluir sobre adequação técnica" |
|
|
] |
|
|
}, |
|
|
{ |
|
|
"name": "ETP - Serviços de Segurança Patrimonial", |
|
|
"numero_processo": "2024/008-ETP", |
|
|
"items": [ |
|
|
"Avaliar vulnerabilidades de segurança", |
|
|
"Definir postos de vigilância", |
|
|
"Especificar qualificação dos vigilantes", |
|
|
"Definir equipamentos de segurança", |
|
|
"Estabelecer procedimentos operacionais", |
|
|
"Pesquisar empresas especializadas", |
|
|
"Verificar certificações de segurança", |
|
|
"Analisar histórico das empresas", |
|
|
"Calcular custos dos serviços", |
|
|
"Definir indicadores de qualidade", |
|
|
"Estabelecer penalidades contratuais", |
|
|
"Planejar gestão do contrato", |
|
|
"Verificar seguro de responsabilidade", |
|
|
"Avaliar conformidade legal", |
|
|
"Definir treinamentos específicos", |
|
|
"Concluir sobre necessidade da contratação" |
|
|
] |
|
|
}, |
|
|
{ |
|
|
"name": "ETP - Material de Expediente e Consumo", |
|
|
"numero_processo": "2024/009-ETP", |
|
|
"items": [ |
|
|
"Levantar consumo histórico", |
|
|
"Definir itens essenciais", |
|
|
"Especificar qualidade mínima", |
|
|
"Calcular demanda anual", |
|
|
"Pesquisar fornecedores locais", |
|
|
"Comparar preços de mercado", |
|
|
"Avaliar critérios de sustentabilidade", |
|
|
"Definir prazos de entrega", |
|
|
"Estabelecer condições de armazenamento", |
|
|
"Planejar controle de estoque", |
|
|
"Verificar certificações ambientais", |
|
|
"Definir embalagens recicláveis", |
|
|
"Calcular economia de escala", |
|
|
"Avaliar parcelamento de entregas", |
|
|
"Concluir sobre estratégia de aquisição" |
|
|
] |
|
|
}, |
|
|
{ |
|
|
"name": "ETP - Reforma e Modernização de Instalações", |
|
|
"numero_processo": "2024/010-ETP", |
|
|
"items": [ |
|
|
"Diagnosticar estado das instalações", |
|
|
"Definir escopo da reforma", |
|
|
"Elaborar projeto arquitetônico", |
|
|
"Especificar materiais sustentáveis", |
|
|
"Calcular área a ser reformada", |
|
|
"Obter licenças e autorizações", |
|
|
"Pesquisar empresas construtoras", |
|
|
"Analisar qualificação técnica", |
|
|
"Estimar custos da obra", |
|
|
"Definir cronograma de execução", |
|
|
"Planejar gestão da obra", |
|
|
"Estabelecer critérios de recebimento", |
|
|
"Avaliar impacto nas atividades", |
|
|
"Definir medidas de segurança", |
|
|
"Verificar conformidade com normas", |
|
|
"Avaliar eficiência energética", |
|
|
"Concluir sobre viabilidade da reforma" |
|
|
] |
|
|
} |
|
|
] |
|
|
|
|
|
return etp_checklists |
|
|
|
|
|
def create_tr_checklists(): |
|
|
"""Cria 10 checklists baseados nas normas TR (Termo de Referência)""" |
|
|
|
|
|
tr_checklists = [ |
|
|
{ |
|
|
"name": "TR - Contratação de Auditoria Externa", |
|
|
"numero_processo": "2024/011-TR", |
|
|
"items": [ |
|
|
"Definir objeto da auditoria", |
|
|
"Especificar natureza dos serviços", |
|
|
"Definir quantitativos necessários", |
|
|
"Estabelecer prazo do contrato", |
|
|
"Avaliar possibilidade de prorrogação", |
|
|
"Especificar qualificação dos auditores", |
|
|
"Definir metodologia de trabalho", |
|
|
"Estabelecer cronograma de execução", |
|
|
"Especificar produtos a serem entregues", |
|
|
"Definir locais de prestação dos serviços", |
|
|
"Estabelecer regras de recebimento", |
|
|
"Especificar garantia dos serviços", |
|
|
"Referenciar estudos técnicos preliminares", |
|
|
"Descrever solução considerando ciclo de vida", |
|
|
"Definir requisitos da contratação", |
|
|
"Estabelecer modelo de execução", |
|
|
"Definir modelo de gestão do contrato", |
|
|
"Estabelecer critérios de medição", |
|
|
"Definir critérios de pagamento", |
|
|
"Optar por critério técnica e preço", |
|
|
"Estimar valor da contratação", |
|
|
"Verificar adequação orçamentária" |
|
|
] |
|
|
}, |
|
|
{ |
|
|
"name": "TR - Sistema de Gestão Documental", |
|
|
"numero_processo": "2024/012-TR", |
|
|
"items": [ |
|
|
"Definir funcionalidades do sistema", |
|
|
"Especificar capacidade de armazenamento", |
|
|
"Definir prazo de implementação", |
|
|
"Estabelecer níveis de segurança", |
|
|
"Especificar integração com sistemas", |
|
|
"Definir perfis de usuários", |
|
|
"Estabelecer backup e recuperação", |
|
|
"Especificar treinamento de usuários", |
|
|
"Definir suporte técnico", |
|
|
"Estabelecer garantia do sistema", |
|
|
"Referenciar ETP correspondente", |
|
|
"Descrever arquitetura da solução", |
|
|
"Definir requisitos de performance", |
|
|
"Estabelecer modelo de implementação", |
|
|
"Definir fiscalização técnica", |
|
|
"Estabelecer marcos de pagamento", |
|
|
"Aplicar critério técnica e preço", |
|
|
"Calcular estimativa de custos", |
|
|
"Verificar previsão orçamentária" |
|
|
] |
|
|
}, |
|
|
{ |
|
|
"name": "TR - Serviços de Telecomunicações", |
|
|
"numero_processo": "2024/013-TR", |
|
|
"items": [ |
|
|
"Definir serviços de conectividade", |
|
|
"Especificar velocidade mínima", |
|
|
"Estabelecer disponibilidade exigida", |
|
|
"Definir pontos de acesso", |
|
|
"Especificar equipamentos inclusos", |
|
|
"Estabelecer SLA dos serviços", |
|
|
"Definir suporte técnico 24x7", |
|
|
"Especificar monitoramento da rede", |
|
|
"Estabelecer procedimentos de contingência", |
|
|
"Definir garantia de equipamentos", |
|
|
"Referenciar estudos preliminares", |
|
|
"Descrever topologia da rede", |
|
|
"Definir requisitos de segurança", |
|
|
"Estabelecer modelo de prestação", |
|
|
"Definir gestão do contrato", |
|
|
"Estabelecer medição de performance", |
|
|
"Definir forma de pagamento", |
|
|
"Aplicar julgamento técnica e preço", |
|
|
"Estimar custos mensais", |
|
|
"Confirmar adequação orçamentária" |
|
|
] |
|
|
}, |
|
|
{ |
|
|
"name": "TR - Manutenção de Elevadores", |
|
|
"numero_processo": "2024/014-TR", |
|
|
"items": [ |
|
|
"Definir elevadores a serem mantidos", |
|
|
"Especificar tipo de manutenção", |
|
|
"Estabelecer periodicidade das visitas", |
|
|
"Definir peças inclusas no contrato", |
|
|
"Especificar tempo de atendimento", |
|
|
"Estabelecer garantia dos reparos", |
|
|
"Definir qualificação dos técnicos", |
|
|
"Especificar certificações necessárias", |
|
|
"Estabelecer relatórios de manutenção", |
|
|
"Definir modernizações incluídas", |
|
|
"Referenciar diagnóstico técnico", |
|
|
"Descrever escopo completo", |
|
|
"Definir requisitos de segurança", |
|
|
"Estabelecer execução dos serviços", |
|
|
"Definir acompanhamento técnico", |
|
|
"Estabelecer medição mensal", |
|
|
"Definir pagamento por elevador", |
|
|
"Avaliar propostas técnicas", |
|
|
"Calcular custos anuais", |
|
|
"Verificar previsão orçamentária" |
|
|
] |
|
|
}, |
|
|
{ |
|
|
"name": "TR - Consultoria Jurídica Especializada", |
|
|
"numero_processo": "2024/015-TR", |
|
|
"items": [ |
|
|
"Definir áreas do direito", |
|
|
"Especificar perfil dos advogados", |
|
|
"Estabelecer prazo de atendimento", |
|
|
"Definir produtos jurídicos", |
|
|
"Especificar pareceres necessários", |
|
|
"Estabelecer representação processual", |
|
|
"Definir acompanhamento de processos", |
|
|
"Especificar relatórios periódicos", |
|
|
"Estabelecer reuniões de trabalho", |
|
|
"Definir sigilo profissional", |
|
|
"Referenciar demandas identificadas", |
|
|
"Descrever metodologia jurídica", |
|
|
"Definir requisitos de qualificação", |
|
|
"Estabelecer forma de prestação", |
|
|
"Definir gestão dos trabalhos", |
|
|
"Estabelecer critérios de avaliação", |
|
|
"Definir pagamento por produto", |
|
|
"Aplicar análise técnica", |
|
|
"Estimar custos por hora", |
|
|
"Verificar disponibilidade orçamentária" |
|
|
] |
|
|
}, |
|
|
{ |
|
|
"name": "TR - Fornecimento de Energia Elétrica", |
|
|
"numero_processo": "2024/016-TR", |
|
|
"items": [ |
|
|
"Definir demanda energética", |
|
|
"Especificar qualidade da energia", |
|
|
"Estabelecer disponibilidade mínima", |
|
|
"Definir pontos de medição", |
|
|
"Especificar proteções elétricas", |
|
|
"Estabelecer manutenção preventiva", |
|
|
"Definir atendimento de emergência", |
|
|
"Especificar relatórios de consumo", |
|
|
"Estabelecer eficiência energética", |
|
|
"Definir sustentabilidade ambiental", |
|
|
"Referenciar estudo energético", |
|
|
"Descrever infraestrutura necessária", |
|
|
"Definir requisitos técnicos", |
|
|
"Estabelecer modelo de fornecimento", |
|
|
"Definir fiscalização energética", |
|
|
"Estabelecer medição de consumo", |
|
|
"Definir estrutura tarifária", |
|
|
"Avaliar propostas comerciais", |
|
|
"Calcular custos de demanda", |
|
|
"Confirmar previsão orçamentária" |
|
|
] |
|
|
}, |
|
|
{ |
|
|
"name": "TR - Serviços de Jardinagem e Paisagismo", |
|
|
"numero_processo": "2024/017-TR", |
|
|
"items": [ |
|
|
"Definir áreas verdes a manter", |
|
|
"Especificar tipos de plantas", |
|
|
"Estabelecer frequência de podas", |
|
|
"Definir sistema de irrigação", |
|
|
"Especificar adubação necessária", |
|
|
"Estabelecer controle de pragas", |
|
|
"Definir limpeza de áreas", |
|
|
"Especificar replantio de mudas", |
|
|
"Estabelecer manutenção de gramados", |
|
|
"Definir sustentabilidade ambiental", |
|
|
"Referenciar projeto paisagístico", |
|
|
"Descrever cronograma sazonal", |
|
|
"Definir requisitos técnicos", |
|
|
"Estabelecer execução dos serviços", |
|
|
"Definir supervisão técnica", |
|
|
"Estabelecer medição mensal", |
|
|
"Definir pagamento por área", |
|
|
"Avaliar capacidade técnica", |
|
|
"Estimar custos sazonais", |
|
|
"Verificar adequação orçamentária" |
|
|
] |
|
|
}, |
|
|
{ |
|
|
"name": "TR - Aquisição de Mobiliário Ergonômico", |
|
|
"numero_processo": "2024/018-TR", |
|
|
"items": [ |
|
|
"Definir tipos de móveis necessários", |
|
|
"Especificar critérios ergonômicos", |
|
|
"Estabelecer materiais sustentáveis", |
|
|
"Definir dimensões padrão", |
|
|
"Especificar acabamentos", |
|
|
"Estabelecer garantia mínima", |
|
|
"Definir prazos de entrega", |
|
|
"Especificar montagem inclusa", |
|
|
"Estabelecer assistência técnica", |
|
|
"Definir certificações de qualidade", |
|
|
"Referenciar estudo ergonômico", |
|
|
"Descrever layout planejado", |
|
|
"Definir requisitos de durabilidade", |
|
|
"Estabelecer logística de entrega", |
|
|
"Definir recebimento técnico", |
|
|
"Estabelecer medição por item", |
|
|
"Definir pagamento após entrega", |
|
|
"Avaliar amostras técnicas", |
|
|
"Calcular investimento total", |
|
|
"Confirmar previsão orçamentária" |
|
|
] |
|
|
}, |
|
|
{ |
|
|
"name": "TR - Serviços de Impressão Gráfica", |
|
|
"numero_processo": "2024/019-TR", |
|
|
"items": [ |
|
|
"Definir tipos de impressos", |
|
|
"Especificar qualidade do papel", |
|
|
"Estabelecer tiragens necessárias", |
|
|
"Definir acabamentos gráficos", |
|
|
"Especificar cores de impressão", |
|
|
"Estabelecer prazos de produção", |
|
|
"Definir embalagem e entrega", |
|
|
"Especificar armazenagem temporária", |
|
|
"Estabelecer controle de qualidade", |
|
|
"Definir sustentabilidade do papel", |
|
|
"Referenciar demanda histórica", |
|
|
"Descrever especificações técnicas", |
|
|
"Definir requisitos de produção", |
|
|
"Estabelecer processo produtivo", |
|
|
"Definir controle de qualidade", |
|
|
"Estabelecer medição por produto", |
|
|
"Definir pagamento por entrega", |
|
|
"Avaliar capacidade produtiva", |
|
|
"Estimar custos unitários", |
|
|
"Verificar adequação orçamentária" |
|
|
] |
|
|
}, |
|
|
{ |
|
|
"name": "TR - Licenciamento de Software Corporativo", |
|
|
"numero_processo": "2024/020-TR", |
|
|
"items": [ |
|
|
"Definir tipos de licenças", |
|
|
"Especificar número de usuários", |
|
|
"Estabelecer funcionalidades mínimas", |
|
|
"Definir compatibilidade técnica", |
|
|
"Especificar suporte técnico", |
|
|
"Estabelecer atualizações incluídas", |
|
|
"Definir treinamento de usuários", |
|
|
"Especificar migração de dados", |
|
|
"Estabelecer backup e segurança", |
|
|
"Definir integração com sistemas", |
|
|
"Referenciar análise de necessidades", |
|
|
"Descrever arquitetura proposta", |
|
|
"Definir requisitos funcionais", |
|
|
"Estabelecer implementação faseada", |
|
|
"Definir gestão de licenças", |
|
|
"Estabelecer medição de uso", |
|
|
"Definir pagamento anual", |
|
|
"Avaliar soluções técnicas", |
|
|
"Calcular custo por usuário", |
|
|
"Confirmar previsão orçamentária" |
|
|
] |
|
|
} |
|
|
] |
|
|
|
|
|
return tr_checklists |
|
|
|
|
|
def populate_interactions(checklist_id, items, completion_percentage, days_ago): |
|
|
"""Simula interações de usuários com diferentes padrões de uso""" |
|
|
|
|
|
with get_db_connection() as conn: |
|
|
with conn.cursor() as cur: |
|
|
|
|
|
total_items = len(items) |
|
|
completed_count = int(total_items * completion_percentage / 100) |
|
|
|
|
|
|
|
|
base_date = datetime.now() - timedelta(days=days_ago) |
|
|
|
|
|
for i, item in enumerate(items): |
|
|
|
|
|
should_be_completed = i < completed_count |
|
|
|
|
|
if should_be_completed: |
|
|
|
|
|
interaction_count = random.randint(1, 4) |
|
|
|
|
|
for interaction in range(interaction_count): |
|
|
|
|
|
days_offset = random.randint(0, days_ago) |
|
|
hours_offset = random.randint(0, 23) |
|
|
minutes_offset = random.randint(0, 59) |
|
|
|
|
|
interaction_time = base_date + timedelta( |
|
|
days=days_offset, |
|
|
hours=hours_offset, |
|
|
minutes=minutes_offset |
|
|
) |
|
|
|
|
|
|
|
|
if interaction == interaction_count - 1: |
|
|
action = 'checked' |
|
|
else: |
|
|
action = random.choice(['checked', 'unchecked']) |
|
|
|
|
|
cur.execute(""" |
|
|
INSERT INTO item_interactions (item_id, checklist_id, action, timestamp) |
|
|
VALUES (%s, %s, %s, %s) |
|
|
""", (item['id'], checklist_id, action, interaction_time)) |
|
|
else: |
|
|
|
|
|
if random.random() < 0.3: |
|
|
interaction_count = random.randint(1, 2) |
|
|
|
|
|
for interaction in range(interaction_count): |
|
|
days_offset = random.randint(0, days_ago // 2) |
|
|
hours_offset = random.randint(0, 23) |
|
|
minutes_offset = random.randint(0, 59) |
|
|
|
|
|
interaction_time = base_date + timedelta( |
|
|
days=days_offset, |
|
|
hours=hours_offset, |
|
|
minutes=minutes_offset |
|
|
) |
|
|
|
|
|
|
|
|
if interaction == interaction_count - 1: |
|
|
action = 'unchecked' |
|
|
else: |
|
|
action = random.choice(['checked', 'unchecked']) |
|
|
|
|
|
cur.execute(""" |
|
|
INSERT INTO item_interactions (item_id, checklist_id, action, timestamp) |
|
|
VALUES (%s, %s, %s, %s) |
|
|
""", (item['id'], checklist_id, action, interaction_time)) |
|
|
|
|
|
conn.commit() |
|
|
|
|
|
def populate_database(): |
|
|
"""Popular o banco de dados com dados de teste""" |
|
|
|
|
|
print("🚀 Iniciando população do banco de dados...") |
|
|
|
|
|
|
|
|
etp_checklists = create_etp_checklists() |
|
|
tr_checklists = create_tr_checklists() |
|
|
all_checklists = etp_checklists + tr_checklists |
|
|
|
|
|
|
|
|
scenarios = [ |
|
|
{"completion": 100, "days_ago": 45}, |
|
|
{"completion": 100, "days_ago": 120}, |
|
|
{"completion": 95, "days_ago": 30}, |
|
|
{"completion": 85, "days_ago": 60}, |
|
|
{"completion": 75, "days_ago": 90}, |
|
|
{"completion": 60, "days_ago": 45}, |
|
|
{"completion": 40, "days_ago": 150}, |
|
|
{"completion": 30, "days_ago": 200}, |
|
|
{"completion": 20, "days_ago": 180}, |
|
|
{"completion": 80, "days_ago": 20}, |
|
|
{"completion": 50, "days_ago": 100}, |
|
|
{"completion": 90, "days_ago": 80}, |
|
|
{"completion": 15, "days_ago": 220}, |
|
|
{"completion": 70, "days_ago": 70}, |
|
|
{"completion": 25, "days_ago": 160}, |
|
|
{"completion": 100, "days_ago": 35}, |
|
|
{"completion": 65, "days_ago": 110}, |
|
|
{"completion": 45, "days_ago": 130}, |
|
|
{"completion": 100, "days_ago": 90}, |
|
|
{"completion": 35, "days_ago": 170} |
|
|
] |
|
|
|
|
|
with get_db_connection() as conn: |
|
|
with conn.cursor() as cur: |
|
|
|
|
|
for idx, checklist_data in enumerate(all_checklists): |
|
|
scenario = scenarios[idx] |
|
|
|
|
|
|
|
|
checklist_id = str(uuid.uuid4()) |
|
|
created_at = datetime.now() - timedelta(days=scenario["days_ago"]) |
|
|
|
|
|
cur.execute(""" |
|
|
INSERT INTO checklists (id, name, numero_processo, created_at) |
|
|
VALUES (%s, %s, %s, %s) |
|
|
""", (checklist_id, checklist_data["name"], checklist_data["numero_processo"], created_at)) |
|
|
|
|
|
|
|
|
items_with_ids = [] |
|
|
for position, item_text in enumerate(checklist_data["items"]): |
|
|
item_id = str(uuid.uuid4()) |
|
|
cur.execute(""" |
|
|
INSERT INTO checklist_items (id, checklist_id, text, position) |
|
|
VALUES (%s, %s, %s, %s) |
|
|
""", (item_id, checklist_id, item_text, position)) |
|
|
|
|
|
items_with_ids.append({ |
|
|
"id": item_id, |
|
|
"text": item_text, |
|
|
"position": position |
|
|
}) |
|
|
|
|
|
conn.commit() |
|
|
|
|
|
|
|
|
populate_interactions( |
|
|
checklist_id, |
|
|
items_with_ids, |
|
|
scenario["completion"], |
|
|
scenario["days_ago"] |
|
|
) |
|
|
|
|
|
print(f"✅ Checklist criado: {checklist_data['name']} ({scenario['completion']}% concluído)") |
|
|
|
|
|
print("🎉 População do banco concluída!") |
|
|
print(f"📊 Criados {len(all_checklists)} checklists com diversos cenários de progresso") |
|
|
print("📈 Dashboard deve agora mostrar gráficos informativos com:") |
|
|
print(" • Processos concluídos rapidamente") |
|
|
print(" • Processos no prazo") |
|
|
print(" • Processos em risco de atraso") |
|
|
print(" • Processos atrasados") |
|
|
print(" • Diversos padrões de interação de usuários") |
|
|
|
|
|
if __name__ == "__main__": |
|
|
populate_database() |