Segnala in modo visibile se il portale CSI cambia formato
Le vittorie in campionato dipendono dal JSON delle partite (non dalla classifica HTML, come erroneamente documentato prima). Se quel formato cambia, il parsing fallisce in silenzio: nessun errore, nessuna notifica, le vittorie restano ferme a 0% finché qualcuno non se ne accorge per caso. Aggiunta partiteFormatoSospetto() in csi-core.ts: confronta gli eventi grezzi con il risultato del parsing per distinguere un vero "formato cambiato" da un legittimo "nessuna gara ancora in programma". La route logga l'errore server e il flag arriva fino a /classifica, dove sostituisce la riga "Dati CSI aggiornati alle..." con un badge discreto color warning - visibile a chi apre la pagina, senza notifiche invasive. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
@@ -39,6 +39,8 @@ export type DatiCsi = {
|
||||
partite: PartitaCsi[];
|
||||
girone: string;
|
||||
aggiornato: string;
|
||||
/** true se il formato delle partite sembra cambiato (vedi `partiteFormatoSospetto`). */
|
||||
formatoSospetto: boolean;
|
||||
};
|
||||
|
||||
/** "C.R.A.P. Volley" e "CRAP Volley" devono confrontarsi uguali. */
|
||||
@@ -162,6 +164,20 @@ export function partiteGiocate(partite: PartitaCsi[]): PartitaCsi[] {
|
||||
return partite.filter((p) => p.setNostri !== null && p.setLoro !== null);
|
||||
}
|
||||
|
||||
/**
|
||||
* True se il formato di `getEventsByTeamId.php` sembra cambiato: `partiteDaEventi()` fallisce
|
||||
* in modo silenzioso (nessun array o campi non riconosciuti), quindi un array vuoto da solo non
|
||||
* distingue "il portale CSI ha cambiato formato" da "la squadra non ha ancora gare in
|
||||
* programma". Qui invece si confronta con la risposta grezza: se contiene eventi ma nessuno è
|
||||
* stato riconosciuto come nostra partita, è quasi certamente un problema di parsing, non una
|
||||
* stagione senza gare. Usata da `/api/public/csi` per loggare il caso invece di lasciarlo
|
||||
* silenzioso — vedi "Limiti noti" in docs/modules/collegamento-csi.md.
|
||||
*/
|
||||
export function partiteFormatoSospetto(eventiGrezzi: unknown, partite: PartitaCsi[]): boolean {
|
||||
if (!Array.isArray(eventiGrezzi)) return true;
|
||||
return eventiGrezzi.length > 0 && partite.length === 0;
|
||||
}
|
||||
|
||||
/** Converte una gara CSI già giocata nella forma comune usata nelle liste risultati. */
|
||||
export function matchDaPartitaCsi(p: PartitaCsi) {
|
||||
return {
|
||||
|
||||
Reference in New Issue
Block a user