feat: hoppa över predicted rating när inga nya tävlingar tillkommit sedan senaste PDGA-uträkning #30
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Beskrivning
Vi beräknar och visar
predicted_ratingäven när det inte tillkommit några nya rundor sedan PDGA:s senaste officiella uträkning. I det läget är prediktionen i praktiken lika medcurrent_rating(ingen ny indata kan flytta den), så beräkningen är meningslös och prediktionen riskerar att se ut som "ny information" trots att den inte är det.Motivation / Förväntat beteende
Om spelarens senaste tävlingsrunda ligger före (eller på) datumet för den senaste officiella PDGA-uträkningen ska vi inte visa någon prediktion —
current_ratinginkorporerar redan all den datan. Istället visas—med en kort förklaring (tooltip/hjälptext, t.ex. "Inga nya rundor sedan senaste PDGA-uträkning").Tekniska noteringar
round_history-tabellen (src/db.js:82-91) lagrardate(tävlingsdatum) per runda → spelarens senaste tävlingsdatum kan härledas.getNextPDGAUpdateDate()(src/services/rating-calculator.js:40-71) ger nästa andra-tisdag. Vi behöver motsvarande för föregående uträkning: helperngetPreviousPDGAUpdateDate(). Denna delas med #29 — implementeras där eller här beroende på vilken som landar först.max(round_history.date) <= getPreviousPDGAUpdateDate()→ ingen ny data → ingen prediktion.getPlayerDataFromDB(src/services/player-service.js:35-85) är naturlig plats att applicera skip-logiken innan predicted returneras.views/partials/ratings-table.ejs:71-80,views/partials/ratings-cards.ejsochviews/partials/player-history.ejs:22-50. Null→—finns redan (player-history.ejs:23,?? '—'), men den förklarande tooltip-texten är ny och bör skilja "inga nya rundor" från andra null-orsaker.Edge cases att överväga
date > lastUpdaterakt av, eller behövs en marginal? Bestäms vid implementation.round_history→ redannullidag, ingen ändring.Förhållande till #29
#29 hanterar temporal invalidering (cachat värde blir inaktuellt när cykeln rullar). Denna issue hanterar data-driven skip (ingen ny indata → ingen meningsfull output). De delar helpern
getPreviousPDGAUpdateDate()men löser olika problem och kan implementeras oberoende.Scope
getPlayerDataFromDB),—-visning med förklarande text i vyerna, ev. delning avgetPreviousPDGAUpdateDate()med #29.