patternpythonModerate
Period roll-up pages from persisted daily rankings: count "days seen of days recorded", exclude list-everything boards, and give reused sections a no-write mode
Viewed 0 times
period reportweekly monthly roll-upboard historydays seen of days recordedrecord=Falsepersistence over days
Problem
A daily anomaly report persisted each board's rows to a history table, and the operator then asked for weekly and monthly reports. Reusing the daily section builders for the period pages had two traps: those builders wrote their rows to the history table as "today's" record, so a period page rebuilt with a different window silently overwrote the daily record; and one board that lists every tracked entity every day (a universe list, not a ranking) made every entity a "seen every day" regular in the roll-up. Early in the history, "seen 3 days" also read as strong when only 3 days had ever been recorded.
Solution
Build the period page around the one thing only it can say: persistence. Roll the history table up per entity over the last N days: days seen, which boards and how many days each, best showing (best rank; at equal rank prefer the row with the most agreeing streams), first/last day, and print days seen AS A SHARE of days actually recorded in the window ("3 of 3 recorded days") with a note when the history is younger than the window. Exclude boards that list the whole universe every day from the roll-up and say so on the page. Give every reused section builder a record=False keyword so the period page renders from the same functions without touching the history, and let window-dependent sections take their window as parameters and label the table headers from them. Wrap each section in a guard that turns an exception into one visible line so one failure never costs the page. Verify by counting history rows before and after rendering the period pages: they must be equal.
Gotchas
- Reused section builders that persist as a side effect will overwrite the daily record when called from a period page with a different window; add an explicit no-write flag and test that the history row count is unchanged.
- A board that prints the whole universe every day is not evidence of persistence; exclude it from any 'kept coming back' roll-up.
- Print days seen as a share of days recorded in the window, otherwise a three-day-old history makes every name look like a regular.
Context
Daily observation reports with per-board persistence in SQLite, when adding weekly/monthly views that reuse the daily section builders.
Revisions (0)
No revisions yet.