adicao de campo played ao firebase no campo das jornadas

This commit is contained in:
2026-04-30 10:24:13 +01:00
parent 85f1a3679f
commit c79c38044c
2 changed files with 43 additions and 0 deletions

View File

@@ -195,4 +195,16 @@ public class Match {
public void setMatchReportUrl(String matchReportUrl) {
this.matchReportUrl = matchReportUrl;
}
private boolean played;
@PropertyName("played")
public boolean isPlayed() {
return played;
}
@PropertyName("played")
public void setPlayed(boolean played) {
this.played = played;
}
}

View File

@@ -137,3 +137,34 @@ As notícias foram promovidas a ecrã principal (Ínicio) da aplicação. A sec
**O que foi removido**
- O cabeçalho estático no ficheiro `fragment_news.xml` foi removido para promover um design mais nativo e espaçoso.
## Relatório de Intervenção (Preparação de Jogos em Direto - Live Matches)
**Progresso Geral Atualizado**
Foi implementada a lógica para o Scraper detetar jogos que ainda não foram disputados (sem golos) e prepará-los automaticamente na base de dados para acompanhamento em direto. A estrutura base do jogo é injetada no Firebase de modo a que um árbitro ou gestor possa depois adicionar eventos em tempo real, sem o risco do Scraper apagar o seu trabalho a meio do jogo.
**O que foi criado ou adicionado**
- Adicionada a extração inicial (usando um `ValueEventListener` com `CountDownLatch`) para obter todas as chaves (IDs de jornada) dos jogos já registados no nó `live_matches`.
- Adicionada lógica no processo de iteração dos jogos do `StandingsScraper.java` para injetar um objeto JSON preparatório nos jogos futuros. A estrutura inclui o nó `info` (com os nomes, logótipos, estado de agendado, e 0 golos) e o nó de `eventos` com o primeiro texto automático ("Partida iniciada em...").
**O que foi modificado e porquê**
- O `StandingsScraper.java` foi modificado para suportar o estado de "agendado". Para além de não enviar golos para a classificação nestes jogos, ele avalia ativamente se deve instanciar o jogo no Firebase. O bloqueio anti-overwrite (ler os `existingLiveMatches`) foi criado intencionalmente porque se o Scraper corresse a meio de uma partida, faria reset dos golos para `0` e apagaria as anotações do árbitro.
**O que foi removido**
- Nada foi removido. Apenas foi expandida a robustez e conectividade do Scraper.
## Relatório de Intervenção (Campo 'played' nas Jornadas)
**Progresso Geral Atualizado**
Foi implementada a lógica para distinguir entre jogos já realizados e jogos agendados através de um novo campo booleano `played`. Esta melhoria permite à aplicação Android e a outros sistemas identificar rapidamente o estado de cada partida sem necessidade de inferência baseada na presença ou ausência de golos em tempo de execução.
**O que foi criado ou adicionado**
- Adicionado o campo `played` (booleano) a cada objeto de jogo dentro do nó `jornadas` na Firebase.
- No projeto Android, foi adicionado o atributo `played` à classe `Match.java` (no package `ui.gallery`), juntamente com os seus getters e setters devidamente anotados com `@PropertyName("played")`.
**O que foi modificado e porquê**
- **StandingsScraper.java:** Modificado para calcular o valor de `played`. A lógica baseia-se na presença de dados de golos (`homeGoals` / `awayGoals`) retornados pela API da AFAVCD. Se existirem golos registados, o campo é definido como `true`; caso contrário, é `false`.
- **Match.java (Android):** Atualizado para permitir que a aplicação consuma esta nova propriedade da base de dados, facilitando futuras implementações de UI (ex: esconder scores em jogos não jogados ou aplicar estilos diferenciados).
**O que foi removido**
- Nenhuma funcionalidade foi removida. Trata-se de um enriquecimento do modelo de dados existente.