-
Notifications
You must be signed in to change notification settings - Fork 1
Description
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:
- para nome de tabela e campos: https://launchbylunch.com/posts/2014/Feb/16/sql-naming-conventions/
- ids tentam ser legíveis e amigáveis, quando possível, evitando joins