diff --git a/python/dataload.ipynb b/python/dataload.ipynb index 0b7a3a3..b2823c4 100644 --- a/python/dataload.ipynb +++ b/python/dataload.ipynb @@ -402,7 +402,26 @@ " 'data_estimada_fim': data_prazo(data_inicio),\n", " 'data_fim_real': data_aleatoria(data_inicio) if status == 'CONCLUIDO' else None,\n", " 'icone_url': choice(icone_ciclo_urls)\n", - " })" + " })\n", + "\n", + "# ciclo concluído adicional para cada usuário fixo\n", + "ciclos_especiais = {}\n", + "for id_empresa in [1, 2, 3]:\n", + " gestor = gestor_ciclo.loc[gestor_ciclo['id_empresa'] == id_empresa].iloc[0]\n", + " data_inicio = data_aleatoria()\n", + " dados_ciclo.append({\n", + " 'id_empresa': id_empresa,\n", + " 'id_responsavel': gestor['id_usuario'],\n", + " 'id_ishikawa_mongo': uuid4(),\n", + " 'titulo': f'Ciclo concluído do usuário especial {id_empresa}',\n", + " 'descricao': 'Ciclo de demonstração concluído com diversos treinamentos e status.',\n", + " 'status': 'CONCLUIDO',\n", + " 'data_inicio': data_inicio,\n", + " 'data_estimada_fim': data_prazo(data_inicio),\n", + " 'data_fim_real': data_aleatoria(data_inicio),\n", + " 'icone_url': choice(icone_ciclo_urls)\n", + " })\n", + " ciclos_especiais[id_empresa] = len(dados_ciclo)" ] }, { @@ -637,14 +656,16 @@ "dados_treinamento = []\n", "\n", "for id_ciclo, ciclo in enumerate(dados_ciclo, start=1):\n", - " dados_treinamento.append({\n", - " 'id_ciclo': id_ciclo,\n", - " 'id_responsavel': ciclo['id_responsavel'],\n", - " 'titulo': faker.sentence(nb_words=5),\n", - " 'descricao': faker.sentence(nb_words=10),\n", - " 'data_treinamento': data_prazo(),\n", - " 'obrigatorio': choice([True, False])\n", - " })" + " qtd_treinamentos = 5 if id_ciclo in ciclos_especiais.values() else 1\n", + " for _ in range(qtd_treinamentos):\n", + " dados_treinamento.append({\n", + " 'id_ciclo': id_ciclo,\n", + " 'id_responsavel': ciclo['id_responsavel'],\n", + " 'titulo': faker.sentence(nb_words=5),\n", + " 'descricao': faker.sentence(nb_words=10),\n", + " 'data_treinamento': data_prazo(),\n", + " 'obrigatorio': choice([True, False])\n", + " })" ] }, { @@ -828,15 +849,27 @@ " 'id_usuario': id_usuario,\n", " })\n", "\n", + "usuario_especial_por_ciclo = {id_ciclo: id_empresa for id_empresa, id_ciclo in ciclos_especiais.items()}\n", + "status_treinamento_especial = ['PENDENTE', 'CONFIRMADO', 'CONCLUIDO', 'DISPENSADO', 'CANCELADO']\n", + "proximo_status_especial = {id_ciclo: 0 for id_ciclo in ciclos_especiais.values()}\n", + "\n", "for id_treinamento, treinamento in enumerate(dados_treinamento, start = 1):\n", - " colaborador_empresa = usuarios_empresa[ciclo_empresa[treinamento['id_ciclo']]]\n", + " id_ciclo = treinamento['id_ciclo']\n", + " colaborador_empresa = usuarios_empresa[ciclo_empresa[id_ciclo]]\n", "\n", " for id_usuario in colaborador_empresa:\n", + " if id_ciclo in usuario_especial_por_ciclo and id_usuario == usuario_especial_por_ciclo[id_ciclo]:\n", + " indice_status = proximo_status_especial[id_ciclo]\n", + " status_treinamento = status_treinamento_especial[indice_status]\n", + " proximo_status_especial[id_ciclo] += 1\n", + " else:\n", + " status_treinamento = choice(['PENDENTE', 'CONFIRMADO', 'CONCLUIDO'])\n", + "\n", " dados_usuario_treinamento.append({\n", " 'id_treinamento': id_treinamento,\n", " 'id_usuario': id_usuario,\n", " 'obrigatorio': treinamento['obrigatorio'],\n", - " 'status': (status_treinamento := choice(['PENDENTE', 'CONFIRMADO', 'CONCLUIDO'])),\n", + " 'status': status_treinamento,\n", " 'terminado_em': data_aleatoria() if status_treinamento == 'CONCLUIDO' else None\n", " })\n", "\n",