Skip to content

Commit

Permalink
refactor: 🔊 Adicionar loggers no passo 2
Browse files Browse the repository at this point in the history
  • Loading branch information
bcbernardo committed Nov 4, 2024
1 parent 1451941 commit f63d122
Showing 1 changed file with 49 additions and 10 deletions.
59 changes: 49 additions & 10 deletions src/scripts/passo_2_match_com_equipe_e_upload_turn.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
from tenacity import retry, stop_after_attempt, wait_exponential

from src.bd import BigQueryClient
from src.loggers import logger


load_dotenv()
Expand Down Expand Up @@ -54,7 +55,13 @@ def send_one(celular_tratado, token) -> requests.Response:
"type": "text",
"text": {"body": "Este número pertence a ImpulsoGov."}
}
logger.info(f'Enviando mensagem para {celular_tratado}')
response = requests.post(url_message, headers=headers, json=data_message)
response.raise_for_status()
logger.info(
f'Mensagem enviada para {celular_tratado} '
f'({response.status_code})'
)
return response


Expand All @@ -75,25 +82,39 @@ def update_user_profile(
'Accept': 'application/vnd.v1+json',
'Content-Type': 'application/json'
}
logger.info(f'Atualizando perfil para {celular_tratado}')
response = requests.patch(url_profile, headers=headers, json=data_profile)
response.raise_for_status()
logger.info(
f'Perfil atualizado para {celular_tratado} '
f'({response.status_code})'
)
return response


def send_data(df, municipio_id_sus):
logger.info(f'Enviando mensagens para {municipio_id_sus}')
logger.info('Obtendo tokens')
token = next((municipio["token"] for municipio in tokens_municipios if municipio["id_sus"] == municipio_id_sus), None)
if not token:
print(f"Token não encontrado para {municipio_id_sus}")
logger.error(f"Token não encontrado para {municipio_id_sus}")
return

df_filtered = df[df['municipio_id_sus'] == municipio_id_sus]
logger.info(f'Enviamndo mensagens para {len(df_filtered)} usuários')

for _, row in df_filtered.iterrows():
try:
response_message = send_one(row.celular_tratado, token=token)
print(f"Resposta da mensagem para {row.celular_tratado}: {response_message.text}")
logger.debug(
f'Resposta da mensagem para {row.celular_tratado}: '
f'{response_message.text}'
)
time.sleep(1)
except Exception as e:
print(f"Erro ao enviar mensagem para {row.celular_tratado}: {e}")
logger.error(
f'Erro ao enviar mensagem para {row.celular_tratado}: {e}'
)
continue

#atualiza opted_in
Expand Down Expand Up @@ -122,31 +143,45 @@ def send_data(df, municipio_id_sus):
json_data_profile,
token=token,
)
print(f"Resposta do perfil para {row.celular_tratado}: {response_profile.text}")
logger.debug(
f'Resposta do perfil para {row.celular_tratado}: '
f'{response_profile.text}'
)
time.sleep(1)
except Exception as e:
print(f"Erro ao atualizar perfil de {row.celular_tratado}: {e}")

logger.error(
f'Erro ao atualizar perfil de {row.celular_tratado}: {e}'
)

time.sleep(1)


def processo_envio_turn() -> None:
logger.info('Iniciando processo de envio para TurnIO')

logger.info('Configurando ambiente')
bq_client = BigQueryClient()
client = bq_client.configurar_ambiente()
bq_client.configurar_ambiente()

#### Consulta dos dados
logger.info('Consultando dados')
query = """
SELECT *
FROM `predictive-keep-314223.ip_mensageria_camada_prata.historico_envio_mensagens`
WHERE mvp_data_envio = current_date("America/Sao_Paulo") AND mvp_grupo='teste'
"""
df_historico_envio_mensagens: pd.DataFrame = bq_client.consultar_dados(query)
df_historico_envio_mensagens: pd.DataFrame = bq_client.consultar_dados(
query,
)
# carregando dados dos municipios da tabela do ibge
logger.info('Consultando dados - IBGE')
query = """
SELECT *
FROM `predictive-keep-314223.lista_de_codigos.municipios_ibge`
"""
df_ibge: pd.DataFrame = bq_client.consultar_dados(query)
# carregando a view com dados da Turn io
logger.info('Consultando dados - TurnIO')
query = """
SELECT *
FROM `predictive-keep-314223.ip_mensageria_camada_prata.contact_details_turnio`
Expand All @@ -158,6 +193,7 @@ def processo_envio_turn() -> None:
# Une dados da tabela de seção diaria "ip_mensageria_camada_prata.historico_envio_mensagens" do BigQuery
# com os dados do estabelecimento que a pessoa é pertencente, por meio do dos dados que estão registradas
# na view "ip_mensageria_camada_prata.contact_details_turnio" no BigQuery.
logger.info('Matching com equipes')
df_ibge['id_sus'] = df_ibge['id_sus'].astype(str)
df_historico_envio_mensagens['municipio_id_sus'] = df_historico_envio_mensagens['municipio_id_sus'].astype(str)
# merge da tabela de usuários com de municípios
Expand Down Expand Up @@ -186,7 +222,7 @@ def processo_envio_turn() -> None:
'details_estabelecimento_documentos':'estabelecimento_documentos',
'details_estabelecimento_horario':'estabelecimento_horario'})
df_envio_turn[['municipio_id_sus','municipio']].drop_duplicates()

logger.info(f'Registros para envio para TurnIO: {len(df_envio_turn)}')

# #### Upload
# Da upload no perfil respectivo ao seu municipio na Turn. Inclui os seguintes campos:
Expand All @@ -207,10 +243,13 @@ def processo_envio_turn() -> None:
# - estabelecimento_telefone
# - horarios_cronicos
# - horarios_cito
logger.info('Enviando mensagens para TurnIO')
for municipio_id_sus in df_envio_turn['municipio_id_sus'].unique():
send_data(df_envio_turn, municipio_id_sus)
# Retornar sucesso com os dados preparados
logger.success('Dados enviados para TurnIO')

return {
'status': 'sucesso',
'mensagem': 'Dados enviados para TurnIO.'
'mensagem': 'Dados enviados para TurnIO'
}

0 comments on commit f63d122

Please sign in to comment.