Abimael Torcate Claude commited on
Commit ·
3d7739f
1
Parent(s): da316b1
Add database population script with realistic test data
Browse files- Create 20 checklists based on public procurement standards (ETP and TR)
- Simulate diverse completion scenarios (15% to 100% progress)
- Generate realistic user interactions over time periods (20-220 days)
- Include various process types: systems, services, acquisitions, consultancy
- Populate database with meaningful data for dashboard testing
- Enable comprehensive testing of all application features
Categories created:
- 10 ETP checklists (Technical Preliminary Studies)
- 10 TR checklists (Terms of Reference)
- Multiple completion scenarios for informative analytics
- Time-distributed interactions simulating real user behavior
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- populate_database.py +679 -0
populate_database.py
ADDED
|
@@ -0,0 +1,679 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
"""Script para popular o banco de dados com checklists de teste baseados nas normas de compras públicas"""
|
| 2 |
+
|
| 3 |
+
import uuid
|
| 4 |
+
import random
|
| 5 |
+
from datetime import datetime, timedelta
|
| 6 |
+
from utils.database import get_db_connection
|
| 7 |
+
|
| 8 |
+
def create_etp_checklists():
|
| 9 |
+
"""Cria 10 checklists baseados nas normas ETP (Estudo Técnico Preliminar)"""
|
| 10 |
+
|
| 11 |
+
etp_checklists = [
|
| 12 |
+
{
|
| 13 |
+
"name": "ETP - Sistema de Gestão Eletrônica",
|
| 14 |
+
"numero_processo": "2024/001-ETP",
|
| 15 |
+
"items": [
|
| 16 |
+
"Evidenciar problema a ser resolvido",
|
| 17 |
+
"Definir melhor solução proposta",
|
| 18 |
+
"Avaliar viabilidade técnica",
|
| 19 |
+
"Avaliar viabilidade socioeconômica",
|
| 20 |
+
"Avaliar viabilidade ambiental",
|
| 21 |
+
"Verificar alinhamento com Plano de Contratações Anual",
|
| 22 |
+
"Verificar alinhamento com Plano Diretor de Logística Sustentável",
|
| 23 |
+
"Registrar descrição da necessidade da contratação",
|
| 24 |
+
"Definir requisitos da contratação",
|
| 25 |
+
"Realizar levantamento de mercado",
|
| 26 |
+
"Analisar alternativas possíveis",
|
| 27 |
+
"Justificar escolha técnica e econômica",
|
| 28 |
+
"Descrever solução como um todo",
|
| 29 |
+
"Estimar quantidades a serem contratadas",
|
| 30 |
+
"Elaborar memórias de cálculo",
|
| 31 |
+
"Estimar valor da contratação",
|
| 32 |
+
"Definir preços unitários referenciais",
|
| 33 |
+
"Justificar parcelamento ou não da solução",
|
| 34 |
+
"Identificar contratações correlatas",
|
| 35 |
+
"Demonstrar previsão no Plano de Contratações",
|
| 36 |
+
"Demonstrar resultados pretendidos",
|
| 37 |
+
"Listar providências prévias da Administração",
|
| 38 |
+
"Descrever possíveis impactos ambientais",
|
| 39 |
+
"Definir medidas mitigadoras",
|
| 40 |
+
"Elaborar posicionamento conclusivo"
|
| 41 |
+
]
|
| 42 |
+
},
|
| 43 |
+
{
|
| 44 |
+
"name": "ETP - Serviços de Limpeza e Conservação",
|
| 45 |
+
"numero_processo": "2024/002-ETP",
|
| 46 |
+
"items": [
|
| 47 |
+
"Evidenciar necessidade dos serviços de limpeza",
|
| 48 |
+
"Definir escopo dos serviços",
|
| 49 |
+
"Avaliar viabilidade da terceirização",
|
| 50 |
+
"Verificar conformidade com legislação trabalhista",
|
| 51 |
+
"Analisar impacto ambiental dos produtos",
|
| 52 |
+
"Verificar alinhamento estratégico",
|
| 53 |
+
"Registrar área total a ser atendida",
|
| 54 |
+
"Definir frequência dos serviços",
|
| 55 |
+
"Especificar materiais e equipamentos",
|
| 56 |
+
"Pesquisar preços de mercado",
|
| 57 |
+
"Comparar fornecedores qualificados",
|
| 58 |
+
"Justificar modalidade licitatória",
|
| 59 |
+
"Calcular quantidade de profissionais",
|
| 60 |
+
"Estimar custos mensais",
|
| 61 |
+
"Definir critérios de qualidade",
|
| 62 |
+
"Estabelecer indicadores de desempenho",
|
| 63 |
+
"Planejar gestão e fiscalização",
|
| 64 |
+
"Verificar necessidade de treinamentos",
|
| 65 |
+
"Avaliar sustentabilidade ambiental",
|
| 66 |
+
"Concluir sobre adequação da contratação"
|
| 67 |
+
]
|
| 68 |
+
},
|
| 69 |
+
{
|
| 70 |
+
"name": "ETP - Aquisição de Veículos Oficiais",
|
| 71 |
+
"numero_processo": "2024/003-ETP",
|
| 72 |
+
"items": [
|
| 73 |
+
"Justificar necessidade dos veículos",
|
| 74 |
+
"Definir especificações técnicas",
|
| 75 |
+
"Avaliar compra vs locação",
|
| 76 |
+
"Analisar economia circular",
|
| 77 |
+
"Verificar disponibilidade orçamentária",
|
| 78 |
+
"Pesquisar mercado automotivo",
|
| 79 |
+
"Comparar modelos disponíveis",
|
| 80 |
+
"Avaliar custo-benefício",
|
| 81 |
+
"Definir critérios de sustentabilidade",
|
| 82 |
+
"Especificar combustível (flex/elétrico)",
|
| 83 |
+
"Calcular custos de manutenção",
|
| 84 |
+
"Estimar vida útil",
|
| 85 |
+
"Definir garantia mínima",
|
| 86 |
+
"Planejar entrega e recebimento",
|
| 87 |
+
"Verificar documentação necessária",
|
| 88 |
+
"Avaliar impacto ambiental",
|
| 89 |
+
"Definir destinação de veículos antigos",
|
| 90 |
+
"Concluir sobre viabilidade"
|
| 91 |
+
]
|
| 92 |
+
},
|
| 93 |
+
{
|
| 94 |
+
"name": "ETP - Software de Gestão Financeira",
|
| 95 |
+
"numero_processo": "2024/004-ETP",
|
| 96 |
+
"items": [
|
| 97 |
+
"Identificar deficiências do sistema atual",
|
| 98 |
+
"Definir funcionalidades obrigatórias",
|
| 99 |
+
"Especificar requisitos de segurança",
|
| 100 |
+
"Avaliar integração com sistemas existentes",
|
| 101 |
+
"Verificar conformidade com LGPD",
|
| 102 |
+
"Pesquisar soluções de mercado",
|
| 103 |
+
"Analisar fornecedores especializados",
|
| 104 |
+
"Comparar custos de licenciamento",
|
| 105 |
+
"Avaliar custos de implementação",
|
| 106 |
+
"Definir necessidades de treinamento",
|
| 107 |
+
"Planejar migração de dados",
|
| 108 |
+
"Especificar suporte técnico",
|
| 109 |
+
"Calcular retorno sobre investimento",
|
| 110 |
+
"Definir critérios de aceitação",
|
| 111 |
+
"Estabelecer cronograma de implantação",
|
| 112 |
+
"Avaliar riscos tecnológicos",
|
| 113 |
+
"Concluir sobre adequação da solução"
|
| 114 |
+
]
|
| 115 |
+
},
|
| 116 |
+
{
|
| 117 |
+
"name": "ETP - Manutenção Predial Terceirizada",
|
| 118 |
+
"numero_processo": "2024/005-ETP",
|
| 119 |
+
"items": [
|
| 120 |
+
"Diagnosticar estado atual das instalações",
|
| 121 |
+
"Definir serviços de manutenção necessários",
|
| 122 |
+
"Especificar manutenção preventiva",
|
| 123 |
+
"Especificar manutenção corretiva",
|
| 124 |
+
"Listar equipamentos a serem mantidos",
|
| 125 |
+
"Definir periodicidade das manutenções",
|
| 126 |
+
"Pesquisar empresas especializadas",
|
| 127 |
+
"Avaliar qualificação técnica requerida",
|
| 128 |
+
"Calcular custos estimados",
|
| 129 |
+
"Definir indicadores de desempenho",
|
| 130 |
+
"Especificar materiais e peças",
|
| 131 |
+
"Estabelecer prazos de atendimento",
|
| 132 |
+
"Definir garantias dos serviços",
|
| 133 |
+
"Planejar fiscalização contratual",
|
| 134 |
+
"Avaliar impactos na operação",
|
| 135 |
+
"Verificar certificações necessárias",
|
| 136 |
+
"Concluir sobre viabilidade da terceirização"
|
| 137 |
+
]
|
| 138 |
+
},
|
| 139 |
+
{
|
| 140 |
+
"name": "ETP - Consultoria em Gestão de Processos",
|
| 141 |
+
"numero_processo": "2024/006-ETP",
|
| 142 |
+
"items": [
|
| 143 |
+
"Identificar processos críticos",
|
| 144 |
+
"Definir objetivos da consultoria",
|
| 145 |
+
"Especificar metodologia a ser aplicada",
|
| 146 |
+
"Definir perfil dos consultores",
|
| 147 |
+
"Estabelecer cronograma de trabalho",
|
| 148 |
+
"Pesquisar empresas de consultoria",
|
| 149 |
+
"Analisar cases de sucesso",
|
| 150 |
+
"Avaliar custo dos serviços",
|
| 151 |
+
"Definir produtos a serem entregues",
|
| 152 |
+
"Especificar transferência de conhecimento",
|
| 153 |
+
"Estabelecer critérios de avaliação",
|
| 154 |
+
"Definir indicadores de resultado",
|
| 155 |
+
"Planejar acompanhamento dos trabalhos",
|
| 156 |
+
"Avaliar impacto organizacional",
|
| 157 |
+
"Verificar necessidade de capacitação",
|
| 158 |
+
"Concluir sobre retorno esperado"
|
| 159 |
+
]
|
| 160 |
+
},
|
| 161 |
+
{
|
| 162 |
+
"name": "ETP - Equipamentos de Informática",
|
| 163 |
+
"numero_processo": "2024/007-ETP",
|
| 164 |
+
"items": [
|
| 165 |
+
"Levantar necessidades computacionais",
|
| 166 |
+
"Definir configurações mínimas",
|
| 167 |
+
"Especificar software compatível",
|
| 168 |
+
"Avaliar vida útil esperada",
|
| 169 |
+
"Pesquisar fornecedores homologados",
|
| 170 |
+
"Comparar especificações técnicas",
|
| 171 |
+
"Analisar garantia oferecida",
|
| 172 |
+
"Calcular custos totais",
|
| 173 |
+
"Avaliar suporte técnico",
|
| 174 |
+
"Definir logística de entrega",
|
| 175 |
+
"Planejar instalação e configuração",
|
| 176 |
+
"Especificar descarte sustentável",
|
| 177 |
+
"Verificar certificações ambientais",
|
| 178 |
+
"Definir cronograma de substituição",
|
| 179 |
+
"Avaliar compatibilidade tecnológica",
|
| 180 |
+
"Concluir sobre adequação técnica"
|
| 181 |
+
]
|
| 182 |
+
},
|
| 183 |
+
{
|
| 184 |
+
"name": "ETP - Serviços de Segurança Patrimonial",
|
| 185 |
+
"numero_processo": "2024/008-ETP",
|
| 186 |
+
"items": [
|
| 187 |
+
"Avaliar vulnerabilidades de segurança",
|
| 188 |
+
"Definir postos de vigilância",
|
| 189 |
+
"Especificar qualificação dos vigilantes",
|
| 190 |
+
"Definir equipamentos de segurança",
|
| 191 |
+
"Estabelecer procedimentos operacionais",
|
| 192 |
+
"Pesquisar empresas especializadas",
|
| 193 |
+
"Verificar certificações de segurança",
|
| 194 |
+
"Analisar histórico das empresas",
|
| 195 |
+
"Calcular custos dos serviços",
|
| 196 |
+
"Definir indicadores de qualidade",
|
| 197 |
+
"Estabelecer penalidades contratuais",
|
| 198 |
+
"Planejar gestão do contrato",
|
| 199 |
+
"Verificar seguro de responsabilidade",
|
| 200 |
+
"Avaliar conformidade legal",
|
| 201 |
+
"Definir treinamentos específicos",
|
| 202 |
+
"Concluir sobre necessidade da contratação"
|
| 203 |
+
]
|
| 204 |
+
},
|
| 205 |
+
{
|
| 206 |
+
"name": "ETP - Material de Expediente e Consumo",
|
| 207 |
+
"numero_processo": "2024/009-ETP",
|
| 208 |
+
"items": [
|
| 209 |
+
"Levantar consumo histórico",
|
| 210 |
+
"Definir itens essenciais",
|
| 211 |
+
"Especificar qualidade mínima",
|
| 212 |
+
"Calcular demanda anual",
|
| 213 |
+
"Pesquisar fornecedores locais",
|
| 214 |
+
"Comparar preços de mercado",
|
| 215 |
+
"Avaliar critérios de sustentabilidade",
|
| 216 |
+
"Definir prazos de entrega",
|
| 217 |
+
"Estabelecer condições de armazenamento",
|
| 218 |
+
"Planejar controle de estoque",
|
| 219 |
+
"Verificar certificações ambientais",
|
| 220 |
+
"Definir embalagens recicláveis",
|
| 221 |
+
"Calcular economia de escala",
|
| 222 |
+
"Avaliar parcelamento de entregas",
|
| 223 |
+
"Concluir sobre estratégia de aquisição"
|
| 224 |
+
]
|
| 225 |
+
},
|
| 226 |
+
{
|
| 227 |
+
"name": "ETP - Reforma e Modernização de Instalações",
|
| 228 |
+
"numero_processo": "2024/010-ETP",
|
| 229 |
+
"items": [
|
| 230 |
+
"Diagnosticar estado das instalações",
|
| 231 |
+
"Definir escopo da reforma",
|
| 232 |
+
"Elaborar projeto arquitetônico",
|
| 233 |
+
"Especificar materiais sustentáveis",
|
| 234 |
+
"Calcular área a ser reformada",
|
| 235 |
+
"Obter licenças e autorizações",
|
| 236 |
+
"Pesquisar empresas construtoras",
|
| 237 |
+
"Analisar qualificação técnica",
|
| 238 |
+
"Estimar custos da obra",
|
| 239 |
+
"Definir cronograma de execução",
|
| 240 |
+
"Planejar gestão da obra",
|
| 241 |
+
"Estabelecer critérios de recebimento",
|
| 242 |
+
"Avaliar impacto nas atividades",
|
| 243 |
+
"Definir medidas de segurança",
|
| 244 |
+
"Verificar conformidade com normas",
|
| 245 |
+
"Avaliar eficiência energética",
|
| 246 |
+
"Concluir sobre viabilidade da reforma"
|
| 247 |
+
]
|
| 248 |
+
}
|
| 249 |
+
]
|
| 250 |
+
|
| 251 |
+
return etp_checklists
|
| 252 |
+
|
| 253 |
+
def create_tr_checklists():
|
| 254 |
+
"""Cria 10 checklists baseados nas normas TR (Termo de Referência)"""
|
| 255 |
+
|
| 256 |
+
tr_checklists = [
|
| 257 |
+
{
|
| 258 |
+
"name": "TR - Contratação de Auditoria Externa",
|
| 259 |
+
"numero_processo": "2024/011-TR",
|
| 260 |
+
"items": [
|
| 261 |
+
"Definir objeto da auditoria",
|
| 262 |
+
"Especificar natureza dos serviços",
|
| 263 |
+
"Definir quantitativos necessários",
|
| 264 |
+
"Estabelecer prazo do contrato",
|
| 265 |
+
"Avaliar possibilidade de prorrogação",
|
| 266 |
+
"Especificar qualificação dos auditores",
|
| 267 |
+
"Definir metodologia de trabalho",
|
| 268 |
+
"Estabelecer cronograma de execução",
|
| 269 |
+
"Especificar produtos a serem entregues",
|
| 270 |
+
"Definir locais de prestação dos serviços",
|
| 271 |
+
"Estabelecer regras de recebimento",
|
| 272 |
+
"Especificar garantia dos serviços",
|
| 273 |
+
"Referenciar estudos técnicos preliminares",
|
| 274 |
+
"Descrever solução considerando ciclo de vida",
|
| 275 |
+
"Definir requisitos da contratação",
|
| 276 |
+
"Estabelecer modelo de execução",
|
| 277 |
+
"Definir modelo de gestão do contrato",
|
| 278 |
+
"Estabelecer critérios de medição",
|
| 279 |
+
"Definir critérios de pagamento",
|
| 280 |
+
"Optar por critério técnica e preço",
|
| 281 |
+
"Estimar valor da contratação",
|
| 282 |
+
"Verificar adequação orçamentária"
|
| 283 |
+
]
|
| 284 |
+
},
|
| 285 |
+
{
|
| 286 |
+
"name": "TR - Sistema de Gestão Documental",
|
| 287 |
+
"numero_processo": "2024/012-TR",
|
| 288 |
+
"items": [
|
| 289 |
+
"Definir funcionalidades do sistema",
|
| 290 |
+
"Especificar capacidade de armazenamento",
|
| 291 |
+
"Definir prazo de implementação",
|
| 292 |
+
"Estabelecer níveis de segurança",
|
| 293 |
+
"Especificar integração com sistemas",
|
| 294 |
+
"Definir perfis de usuários",
|
| 295 |
+
"Estabelecer backup e recuperação",
|
| 296 |
+
"Especificar treinamento de usuários",
|
| 297 |
+
"Definir suporte técnico",
|
| 298 |
+
"Estabelecer garantia do sistema",
|
| 299 |
+
"Referenciar ETP correspondente",
|
| 300 |
+
"Descrever arquitetura da solução",
|
| 301 |
+
"Definir requisitos de performance",
|
| 302 |
+
"Estabelecer modelo de implementação",
|
| 303 |
+
"Definir fiscalização técnica",
|
| 304 |
+
"Estabelecer marcos de pagamento",
|
| 305 |
+
"Aplicar critério técnica e preço",
|
| 306 |
+
"Calcular estimativa de custos",
|
| 307 |
+
"Verificar previsão orçamentária"
|
| 308 |
+
]
|
| 309 |
+
},
|
| 310 |
+
{
|
| 311 |
+
"name": "TR - Serviços de Telecomunicações",
|
| 312 |
+
"numero_processo": "2024/013-TR",
|
| 313 |
+
"items": [
|
| 314 |
+
"Definir serviços de conectividade",
|
| 315 |
+
"Especificar velocidade mínima",
|
| 316 |
+
"Estabelecer disponibilidade exigida",
|
| 317 |
+
"Definir pontos de acesso",
|
| 318 |
+
"Especificar equipamentos inclusos",
|
| 319 |
+
"Estabelecer SLA dos serviços",
|
| 320 |
+
"Definir suporte técnico 24x7",
|
| 321 |
+
"Especificar monitoramento da rede",
|
| 322 |
+
"Estabelecer procedimentos de contingência",
|
| 323 |
+
"Definir garantia de equipamentos",
|
| 324 |
+
"Referenciar estudos preliminares",
|
| 325 |
+
"Descrever topologia da rede",
|
| 326 |
+
"Definir requisitos de segurança",
|
| 327 |
+
"Estabelecer modelo de prestação",
|
| 328 |
+
"Definir gestão do contrato",
|
| 329 |
+
"Estabelecer medição de performance",
|
| 330 |
+
"Definir forma de pagamento",
|
| 331 |
+
"Aplicar julgamento técnica e preço",
|
| 332 |
+
"Estimar custos mensais",
|
| 333 |
+
"Confirmar adequação orçamentária"
|
| 334 |
+
]
|
| 335 |
+
},
|
| 336 |
+
{
|
| 337 |
+
"name": "TR - Manutenção de Elevadores",
|
| 338 |
+
"numero_processo": "2024/014-TR",
|
| 339 |
+
"items": [
|
| 340 |
+
"Definir elevadores a serem mantidos",
|
| 341 |
+
"Especificar tipo de manutenção",
|
| 342 |
+
"Estabelecer periodicidade das visitas",
|
| 343 |
+
"Definir peças inclusas no contrato",
|
| 344 |
+
"Especificar tempo de atendimento",
|
| 345 |
+
"Estabelecer garantia dos reparos",
|
| 346 |
+
"Definir qualificação dos técnicos",
|
| 347 |
+
"Especificar certificações necessárias",
|
| 348 |
+
"Estabelecer relatórios de manutenção",
|
| 349 |
+
"Definir modernizações incluídas",
|
| 350 |
+
"Referenciar diagnóstico técnico",
|
| 351 |
+
"Descrever escopo completo",
|
| 352 |
+
"Definir requisitos de segurança",
|
| 353 |
+
"Estabelecer execução dos serviços",
|
| 354 |
+
"Definir acompanhamento técnico",
|
| 355 |
+
"Estabelecer medição mensal",
|
| 356 |
+
"Definir pagamento por elevador",
|
| 357 |
+
"Avaliar propostas técnicas",
|
| 358 |
+
"Calcular custos anuais",
|
| 359 |
+
"Verificar previsão orçamentária"
|
| 360 |
+
]
|
| 361 |
+
},
|
| 362 |
+
{
|
| 363 |
+
"name": "TR - Consultoria Jurídica Especializada",
|
| 364 |
+
"numero_processo": "2024/015-TR",
|
| 365 |
+
"items": [
|
| 366 |
+
"Definir áreas do direito",
|
| 367 |
+
"Especificar perfil dos advogados",
|
| 368 |
+
"Estabelecer prazo de atendimento",
|
| 369 |
+
"Definir produtos jurídicos",
|
| 370 |
+
"Especificar pareceres necessários",
|
| 371 |
+
"Estabelecer representação processual",
|
| 372 |
+
"Definir acompanhamento de processos",
|
| 373 |
+
"Especificar relatórios periódicos",
|
| 374 |
+
"Estabelecer reuniões de trabalho",
|
| 375 |
+
"Definir sigilo profissional",
|
| 376 |
+
"Referenciar demandas identificadas",
|
| 377 |
+
"Descrever metodologia jurídica",
|
| 378 |
+
"Definir requisitos de qualificação",
|
| 379 |
+
"Estabelecer forma de prestação",
|
| 380 |
+
"Definir gestão dos trabalhos",
|
| 381 |
+
"Estabelecer critérios de avaliação",
|
| 382 |
+
"Definir pagamento por produto",
|
| 383 |
+
"Aplicar análise técnica",
|
| 384 |
+
"Estimar custos por hora",
|
| 385 |
+
"Verificar disponibilidade orçamentária"
|
| 386 |
+
]
|
| 387 |
+
},
|
| 388 |
+
{
|
| 389 |
+
"name": "TR - Fornecimento de Energia Elétrica",
|
| 390 |
+
"numero_processo": "2024/016-TR",
|
| 391 |
+
"items": [
|
| 392 |
+
"Definir demanda energética",
|
| 393 |
+
"Especificar qualidade da energia",
|
| 394 |
+
"Estabelecer disponibilidade mínima",
|
| 395 |
+
"Definir pontos de medição",
|
| 396 |
+
"Especificar proteções elétricas",
|
| 397 |
+
"Estabelecer manutenção preventiva",
|
| 398 |
+
"Definir atendimento de emergência",
|
| 399 |
+
"Especificar relatórios de consumo",
|
| 400 |
+
"Estabelecer eficiência energética",
|
| 401 |
+
"Definir sustentabilidade ambiental",
|
| 402 |
+
"Referenciar estudo energético",
|
| 403 |
+
"Descrever infraestrutura necessária",
|
| 404 |
+
"Definir requisitos técnicos",
|
| 405 |
+
"Estabelecer modelo de fornecimento",
|
| 406 |
+
"Definir fiscalização energética",
|
| 407 |
+
"Estabelecer medição de consumo",
|
| 408 |
+
"Definir estrutura tarifária",
|
| 409 |
+
"Avaliar propostas comerciais",
|
| 410 |
+
"Calcular custos de demanda",
|
| 411 |
+
"Confirmar previsão orçamentária"
|
| 412 |
+
]
|
| 413 |
+
},
|
| 414 |
+
{
|
| 415 |
+
"name": "TR - Serviços de Jardinagem e Paisagismo",
|
| 416 |
+
"numero_processo": "2024/017-TR",
|
| 417 |
+
"items": [
|
| 418 |
+
"Definir áreas verdes a manter",
|
| 419 |
+
"Especificar tipos de plantas",
|
| 420 |
+
"Estabelecer frequência de podas",
|
| 421 |
+
"Definir sistema de irrigação",
|
| 422 |
+
"Especificar adubação necessária",
|
| 423 |
+
"Estabelecer controle de pragas",
|
| 424 |
+
"Definir limpeza de áreas",
|
| 425 |
+
"Especificar replantio de mudas",
|
| 426 |
+
"Estabelecer manutenção de gramados",
|
| 427 |
+
"Definir sustentabilidade ambiental",
|
| 428 |
+
"Referenciar projeto paisagístico",
|
| 429 |
+
"Descrever cronograma sazonal",
|
| 430 |
+
"Definir requisitos técnicos",
|
| 431 |
+
"Estabelecer execução dos serviços",
|
| 432 |
+
"Definir supervisão técnica",
|
| 433 |
+
"Estabelecer medição mensal",
|
| 434 |
+
"Definir pagamento por área",
|
| 435 |
+
"Avaliar capacidade técnica",
|
| 436 |
+
"Estimar custos sazonais",
|
| 437 |
+
"Verificar adequação orçamentária"
|
| 438 |
+
]
|
| 439 |
+
},
|
| 440 |
+
{
|
| 441 |
+
"name": "TR - Aquisição de Mobiliário Ergonômico",
|
| 442 |
+
"numero_processo": "2024/018-TR",
|
| 443 |
+
"items": [
|
| 444 |
+
"Definir tipos de móveis necessários",
|
| 445 |
+
"Especificar critérios ergonômicos",
|
| 446 |
+
"Estabelecer materiais sustentáveis",
|
| 447 |
+
"Definir dimensões padrão",
|
| 448 |
+
"Especificar acabamentos",
|
| 449 |
+
"Estabelecer garantia mínima",
|
| 450 |
+
"Definir prazos de entrega",
|
| 451 |
+
"Especificar montagem inclusa",
|
| 452 |
+
"Estabelecer assistência técnica",
|
| 453 |
+
"Definir certificações de qualidade",
|
| 454 |
+
"Referenciar estudo ergonômico",
|
| 455 |
+
"Descrever layout planejado",
|
| 456 |
+
"Definir requisitos de durabilidade",
|
| 457 |
+
"Estabelecer logística de entrega",
|
| 458 |
+
"Definir recebimento técnico",
|
| 459 |
+
"Estabelecer medição por item",
|
| 460 |
+
"Definir pagamento após entrega",
|
| 461 |
+
"Avaliar amostras técnicas",
|
| 462 |
+
"Calcular investimento total",
|
| 463 |
+
"Confirmar previsão orçamentária"
|
| 464 |
+
]
|
| 465 |
+
},
|
| 466 |
+
{
|
| 467 |
+
"name": "TR - Serviços de Impressão Gráfica",
|
| 468 |
+
"numero_processo": "2024/019-TR",
|
| 469 |
+
"items": [
|
| 470 |
+
"Definir tipos de impressos",
|
| 471 |
+
"Especificar qualidade do papel",
|
| 472 |
+
"Estabelecer tiragens necessárias",
|
| 473 |
+
"Definir acabamentos gráficos",
|
| 474 |
+
"Especificar cores de impressão",
|
| 475 |
+
"Estabelecer prazos de produção",
|
| 476 |
+
"Definir embalagem e entrega",
|
| 477 |
+
"Especificar armazenagem temporária",
|
| 478 |
+
"Estabelecer controle de qualidade",
|
| 479 |
+
"Definir sustentabilidade do papel",
|
| 480 |
+
"Referenciar demanda histórica",
|
| 481 |
+
"Descrever especificações técnicas",
|
| 482 |
+
"Definir requisitos de produção",
|
| 483 |
+
"Estabelecer processo produtivo",
|
| 484 |
+
"Definir controle de qualidade",
|
| 485 |
+
"Estabelecer medição por produto",
|
| 486 |
+
"Definir pagamento por entrega",
|
| 487 |
+
"Avaliar capacidade produtiva",
|
| 488 |
+
"Estimar custos unitários",
|
| 489 |
+
"Verificar adequação orçamentária"
|
| 490 |
+
]
|
| 491 |
+
},
|
| 492 |
+
{
|
| 493 |
+
"name": "TR - Licenciamento de Software Corporativo",
|
| 494 |
+
"numero_processo": "2024/020-TR",
|
| 495 |
+
"items": [
|
| 496 |
+
"Definir tipos de licenças",
|
| 497 |
+
"Especificar número de usuários",
|
| 498 |
+
"Estabelecer funcionalidades mínimas",
|
| 499 |
+
"Definir compatibilidade técnica",
|
| 500 |
+
"Especificar suporte técnico",
|
| 501 |
+
"Estabelecer atualizações incluídas",
|
| 502 |
+
"Definir treinamento de usuários",
|
| 503 |
+
"Especificar migração de dados",
|
| 504 |
+
"Estabelecer backup e segurança",
|
| 505 |
+
"Definir integração com sistemas",
|
| 506 |
+
"Referenciar análise de necessidades",
|
| 507 |
+
"Descrever arquitetura proposta",
|
| 508 |
+
"Definir requisitos funcionais",
|
| 509 |
+
"Estabelecer implementação faseada",
|
| 510 |
+
"Definir gestão de licenças",
|
| 511 |
+
"Estabelecer medição de uso",
|
| 512 |
+
"Definir pagamento anual",
|
| 513 |
+
"Avaliar soluções técnicas",
|
| 514 |
+
"Calcular custo por usuário",
|
| 515 |
+
"Confirmar previsão orçamentária"
|
| 516 |
+
]
|
| 517 |
+
}
|
| 518 |
+
]
|
| 519 |
+
|
| 520 |
+
return tr_checklists
|
| 521 |
+
|
| 522 |
+
def populate_interactions(checklist_id, items, completion_percentage, days_ago):
|
| 523 |
+
"""Simula interações de usuários com diferentes padrões de uso"""
|
| 524 |
+
|
| 525 |
+
with get_db_connection() as conn:
|
| 526 |
+
with conn.cursor() as cur:
|
| 527 |
+
# Calcular quantos itens devem estar concluídos
|
| 528 |
+
total_items = len(items)
|
| 529 |
+
completed_count = int(total_items * completion_percentage / 100)
|
| 530 |
+
|
| 531 |
+
# Simular interações ao longo do tempo
|
| 532 |
+
base_date = datetime.now() - timedelta(days=days_ago)
|
| 533 |
+
|
| 534 |
+
for i, item in enumerate(items):
|
| 535 |
+
# Determinar se este item deve estar concluído
|
| 536 |
+
should_be_completed = i < completed_count
|
| 537 |
+
|
| 538 |
+
if should_be_completed:
|
| 539 |
+
# Simular algumas interações (marcar/desmarcar) antes da conclusão final
|
| 540 |
+
interaction_count = random.randint(1, 4)
|
| 541 |
+
|
| 542 |
+
for interaction in range(interaction_count):
|
| 543 |
+
# Distribuir interações ao longo do tempo
|
| 544 |
+
days_offset = random.randint(0, days_ago)
|
| 545 |
+
hours_offset = random.randint(0, 23)
|
| 546 |
+
minutes_offset = random.randint(0, 59)
|
| 547 |
+
|
| 548 |
+
interaction_time = base_date + timedelta(
|
| 549 |
+
days=days_offset,
|
| 550 |
+
hours=hours_offset,
|
| 551 |
+
minutes=minutes_offset
|
| 552 |
+
)
|
| 553 |
+
|
| 554 |
+
# Determinar ação (última deve ser checked se item estiver concluído)
|
| 555 |
+
if interaction == interaction_count - 1:
|
| 556 |
+
action = 'checked'
|
| 557 |
+
else:
|
| 558 |
+
action = random.choice(['checked', 'unchecked'])
|
| 559 |
+
|
| 560 |
+
cur.execute("""
|
| 561 |
+
INSERT INTO item_interactions (item_id, checklist_id, action, timestamp)
|
| 562 |
+
VALUES (%s, %s, %s, %s)
|
| 563 |
+
""", (item['id'], checklist_id, action, interaction_time))
|
| 564 |
+
else:
|
| 565 |
+
# Para itens não concluídos, simular algumas interações ocasionais
|
| 566 |
+
if random.random() < 0.3: # 30% chance de ter alguma interação
|
| 567 |
+
interaction_count = random.randint(1, 2)
|
| 568 |
+
|
| 569 |
+
for interaction in range(interaction_count):
|
| 570 |
+
days_offset = random.randint(0, days_ago // 2)
|
| 571 |
+
hours_offset = random.randint(0, 23)
|
| 572 |
+
minutes_offset = random.randint(0, 59)
|
| 573 |
+
|
| 574 |
+
interaction_time = base_date + timedelta(
|
| 575 |
+
days=days_offset,
|
| 576 |
+
hours=hours_offset,
|
| 577 |
+
minutes=minutes_offset
|
| 578 |
+
)
|
| 579 |
+
|
| 580 |
+
# Última ação deve ser 'unchecked' para itens não concluídos
|
| 581 |
+
if interaction == interaction_count - 1:
|
| 582 |
+
action = 'unchecked'
|
| 583 |
+
else:
|
| 584 |
+
action = random.choice(['checked', 'unchecked'])
|
| 585 |
+
|
| 586 |
+
cur.execute("""
|
| 587 |
+
INSERT INTO item_interactions (item_id, checklist_id, action, timestamp)
|
| 588 |
+
VALUES (%s, %s, %s, %s)
|
| 589 |
+
""", (item['id'], checklist_id, action, interaction_time))
|
| 590 |
+
|
| 591 |
+
conn.commit()
|
| 592 |
+
|
| 593 |
+
def populate_database():
|
| 594 |
+
"""Popular o banco de dados com dados de teste"""
|
| 595 |
+
|
| 596 |
+
print("🚀 Iniciando população do banco de dados...")
|
| 597 |
+
|
| 598 |
+
# Criar listas de checklists
|
| 599 |
+
etp_checklists = create_etp_checklists()
|
| 600 |
+
tr_checklists = create_tr_checklists()
|
| 601 |
+
all_checklists = etp_checklists + tr_checklists
|
| 602 |
+
|
| 603 |
+
# Cenários diversos para criar gráficos informativos
|
| 604 |
+
scenarios = [
|
| 605 |
+
{"completion": 100, "days_ago": 45}, # Processo concluído rapidamente
|
| 606 |
+
{"completion": 100, "days_ago": 120}, # Processo concluído no prazo
|
| 607 |
+
{"completion": 95, "days_ago": 30}, # Quase concluído, rápido
|
| 608 |
+
{"completion": 85, "days_ago": 60}, # Bom progresso
|
| 609 |
+
{"completion": 75, "days_ago": 90}, # Progresso médio
|
| 610 |
+
{"completion": 60, "days_ago": 45}, # Progresso lento para o tempo
|
| 611 |
+
{"completion": 40, "days_ago": 150}, # Em risco de atraso
|
| 612 |
+
{"completion": 30, "days_ago": 200}, # Atrasado
|
| 613 |
+
{"completion": 20, "days_ago": 180}, # Muito atrasado
|
| 614 |
+
{"completion": 80, "days_ago": 20}, # Progresso rápido recente
|
| 615 |
+
{"completion": 50, "days_ago": 100}, # Progresso médio
|
| 616 |
+
{"completion": 90, "days_ago": 80}, # Quase concluído
|
| 617 |
+
{"completion": 15, "days_ago": 220}, # Crítico
|
| 618 |
+
{"completion": 70, "days_ago": 70}, # No prazo
|
| 619 |
+
{"completion": 25, "days_ago": 160}, # Em risco
|
| 620 |
+
{"completion": 100, "days_ago": 35}, # Concluído rapidamente
|
| 621 |
+
{"completion": 65, "days_ago": 110}, # Progresso regular
|
| 622 |
+
{"completion": 45, "days_ago": 130}, # Progresso abaixo do esperado
|
| 623 |
+
{"completion": 100, "days_ago": 90}, # Concluído no prazo
|
| 624 |
+
{"completion": 35, "days_ago": 170} # Em risco grave
|
| 625 |
+
]
|
| 626 |
+
|
| 627 |
+
with get_db_connection() as conn:
|
| 628 |
+
with conn.cursor() as cur:
|
| 629 |
+
|
| 630 |
+
for idx, checklist_data in enumerate(all_checklists):
|
| 631 |
+
scenario = scenarios[idx]
|
| 632 |
+
|
| 633 |
+
# Criar checklist
|
| 634 |
+
checklist_id = str(uuid.uuid4())
|
| 635 |
+
created_at = datetime.now() - timedelta(days=scenario["days_ago"])
|
| 636 |
+
|
| 637 |
+
cur.execute("""
|
| 638 |
+
INSERT INTO checklists (id, name, numero_processo, created_at)
|
| 639 |
+
VALUES (%s, %s, %s, %s)
|
| 640 |
+
""", (checklist_id, checklist_data["name"], checklist_data["numero_processo"], created_at))
|
| 641 |
+
|
| 642 |
+
# Criar itens do checklist
|
| 643 |
+
items_with_ids = []
|
| 644 |
+
for position, item_text in enumerate(checklist_data["items"]):
|
| 645 |
+
item_id = str(uuid.uuid4())
|
| 646 |
+
cur.execute("""
|
| 647 |
+
INSERT INTO checklist_items (id, checklist_id, text, position)
|
| 648 |
+
VALUES (%s, %s, %s, %s)
|
| 649 |
+
""", (item_id, checklist_id, item_text, position))
|
| 650 |
+
|
| 651 |
+
items_with_ids.append({
|
| 652 |
+
"id": item_id,
|
| 653 |
+
"text": item_text,
|
| 654 |
+
"position": position
|
| 655 |
+
})
|
| 656 |
+
|
| 657 |
+
conn.commit()
|
| 658 |
+
|
| 659 |
+
# Simular interações
|
| 660 |
+
populate_interactions(
|
| 661 |
+
checklist_id,
|
| 662 |
+
items_with_ids,
|
| 663 |
+
scenario["completion"],
|
| 664 |
+
scenario["days_ago"]
|
| 665 |
+
)
|
| 666 |
+
|
| 667 |
+
print(f"✅ Checklist criado: {checklist_data['name']} ({scenario['completion']}% concluído)")
|
| 668 |
+
|
| 669 |
+
print("🎉 População do banco concluída!")
|
| 670 |
+
print(f"📊 Criados {len(all_checklists)} checklists com diversos cenários de progresso")
|
| 671 |
+
print("📈 Dashboard deve agora mostrar gráficos informativos com:")
|
| 672 |
+
print(" • Processos concluídos rapidamente")
|
| 673 |
+
print(" • Processos no prazo")
|
| 674 |
+
print(" • Processos em risco de atraso")
|
| 675 |
+
print(" • Processos atrasados")
|
| 676 |
+
print(" • Diversos padrões de interação de usuários")
|
| 677 |
+
|
| 678 |
+
if __name__ == "__main__":
|
| 679 |
+
populate_database()
|