Skip to content

Sugestão arquitetural #1

@dalssoft

Description

@dalssoft

Descrição da arquitetura

Lista dos candidatos (core)

Essa parte da arquitetura é responsável por guardar e garantir os dados alimentados de maneira manual. É através dessas informações que:

  • a UI será montada
  • o crawler usará como seed

Inicialmente não há necessidade de UI para a manutenção (CRUD) desses dados, sendo mantido via um arquivo de seed (ex: http://davidmles.com/blog/seeding-database-rails/)

Bando de dados

Tabela: candidato

campo descrição
id id único do candidato, seguindo a numeração do TSE/TRE (??)
nome nome do candidato
partido_id FK tabela partido
candidatura_id FK tabela candidatura
data_criacao data de criação do registro
data_atualizacao data de atualização do registro

Tabela: candidatura

campo descrição
id id único do tipo da candidatura (um caractere) (Ex: P - Prefeito, V - vereador)
descricao descrição do tipo de candidatura
data_criacao data de criação do registro
data_atualizacao data de atualização do registro

Tabela: partido

campo descrição
id id único do partido, seguindo a numeração do TSE/TRE
nome nome do partido
data_criacao data de criação do registro
data_atualizacao data de atualização do registro

Tabela: candidato_link

campo descrição
id id único da página (GUID)
candidato_id FK tabela candidato
link URL para um site ou mídia social do candidato
tipo_link_id FK tabela tipo_link
data_criacao data de criação do registro
data_atualizacao data de atualização do registro

Tabela: tipo_link

campo descrição
id id único do tipo do link (dois caracteres) (Ex: FB - Facebook, TT - Twitter)
descricao descricao do tipo do link
data_criacao data de criação do registro
data_atualizacao data de atualização do registro

Info: é importante manter as tabelas normalizadas e suas constraints ligadas entre os relacionamentos, garantindo que os dados aqui não sejam corrompidos. Outras tabelas, como as do crawler, talvez não necessitem do mesmo rigor.

Client / UI: Home, páginas e filtros [~/client]

[TBD]

Crawler 1: Posts da página do candidato [~/crawler/posts]

Atualiza quais os posts de cada página (no FB) de cada candidato nos últimos N dias.

Bando de dados

[TBD]

Parametros

  • É executado a cada N horas.
  • Lista os posts apenas dos últimos X dias ou Y páginas do json.

Crawler 2: Engajamento do post [~/crawler/likes]

Atualiza quantos likes e quantos comentários cada post tem.

Bando de dados

[TBD]

Parametros

  • É executado a cada N horas.
  • Atualiza apenas os posts dos últimos N dias.

Apêndice

Padrão para o bando de dados:

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions