parlametria / leggo-painel

GNU Affero General Public License v3.0
2 stars 1 forks source link

Aba de Redes sociais da página do parlamentar #463

Closed ArthurJahn closed 2 years ago

ArthurJahn commented 2 years ago

Implementação da aba de redes sociais da pág. de detalhe do parlamentar https://xd.adobe.com/view/6180941d-6f9a-405e-841d-3c840322850a-34d3/screen/a97cb090-6fe5-4a3c-bf1e-75929a05b439

Model de Tweet:

Model de pressão (relaciona pressão com proposição):

Model de Engajamento (relacionado ao parlamentar):

Fluxo:

  1. Requisitar 100 tweet mais relevantes da última semana para cada proposição a cada 3 dias.
  2. Identificar tweets relacionados ao parlamentar.
  3. Identificar tweets relacionados a um interesse.
  4. Cadastra Pressão
  5. Cadastra Engajamento

Critérios de Aceitação:

  1. Adicionar o diagrama de contexto das models e relações.
  2. Gráfico de engajamento do parlamentar para cada interesse (select de interesse).
  3. Gráfico de pressão de cada proposição.
  4. Testes Cypress para a aba de redes sociais
  5. Testes unitários para o backend
  6. Testes de integração para o pipeline
andersonms1 commented 2 years ago

Ideias reunião

andersonms1 commented 2 years ago

@ArthurJahn A gente tem um problema aqui. Hoje eu estava finalizando os testes e a requisição falhou

    raise BadRequest(response)
tweepy.errors.BadRequest: 400 Bad Request
Invalid 'start_time':'2022-05-03T15:42Z'. 'start_time' must be on or after 2022-05-03T18:02Z
andersonms1 commented 2 years ago

O endpoint do recent tem um limite máximo de 7 dias, passando o start_time. Mas parece que passando o id de um tweet é possível fazer a requisição. Vou tentar por esse metodo com since e until id

image

ArthurJahn commented 2 years ago

não, essa resposta da requisição está correta. Nós vamos requisitar sempre dos últimos 7 dias, então não precisa fazer nenhuma req usando o id

andersonms1 commented 2 years ago

Simm, verdade. Eu tava contando que fariamos tambem retroativo de um periodo, tipo do ultimo ano. Para pegar PLs passada como a da fake news

ArthurJahn commented 2 years ago

não, não. Vamos pegar só pra frente, com no máximo uma semana de histórico.

andersonms1 commented 2 years ago

@ArthurJahn então tudo certo, vou começar a estrurar os endpoints das api

andersonms1 commented 2 years ago

O numero máximo de caracteres de um tweet não é 280? kkk

Vou tacar textfield aqui. @ArthurJahn

image

andersonms1 commented 2 years ago

@ArthurJahn

Uma questão da arquitetura que a gente vai ter que tomar é em relação em como popular a model que guarda as informações do twitter de um parlamentar.

class ParlamentarPerfil(models.Model):
    """
    O perfil pode ser tanto de um parlamentar, quanto de uma personalidade
    """
    entidade = models.OneToOneField(
        Entidade, related_name='entidadePerfil', null=True, on_delete=models.SET_NULL)
    is_personalidade = models.BooleanField()
    # if a person has more than one account?
    twitter_id = models.CharField(max_length=40, default=None, null=True)

    name = models.CharField(max_length=150)

    def __str__(self):
        return self.twitter_id

Para poder pegar esse twitter_id é necessário fazer uma requisição na API do twitter. A gente faz essa requisição direto no backend ou a partir de uma dag?

Acredito que essa primeiro escolha deve guiar em qual momento isso acontece, quando solicitado no front ou um script que popula.

ArthurJahn commented 2 years ago

Vamos fazer a partir da DAG do airflow, acho que seria melhor, o que acha? O problema é que isso é feito no momento de analizar os tweets, certo?

andersonms1 commented 2 years ago

Eu gosto da ideia da dag tambem, pq a gente consegue passar mais que um parlamentar por vez, para criar o seu perfil que tem o tweet. No momento de analise dos tweets é procurado no banco o perfil que tem o mesmo id do criador do tweet, se ele encontra então adiciona a relação ao perfil. Na analise do tweet tem só essa atribuição de relação. Não acho que tenha problema usar uma dag não. O ideal é já ter a base com todos os perfis cadastrados para que essa relação possa ser feita nesse momento. Então a gente quebra isso em outra issue ou posso mexer com essa outra dag tambem?

ArthurJahn commented 2 years ago

Quebra em outra issue. Essa dag vai ter mais relação com o processamento de dados de Parlamentares e não de proposições, que é o que estamos estudando agora

ArthurJahn commented 2 years ago

Mas foca no frontend como conversamos. Essa parte do airflow ainda não temos uma estrutura base e não é a hora de trabalhar nisso