Skip to content

v1.1.0: cross-round comparison view (#29) + list pagination (#33) - #59

Merged
mondial7 merged 1 commit into
mainfrom
feat/v1.1.0-growth-and-pagination
Jul 11, 2026
Merged

v1.1.0: cross-round comparison view (#29) + list pagination (#33)#59
mondial7 merged 1 commit into
mainfrom
feat/v1.1.0-growth-and-pagination

Conversation

@mondial7

Copy link
Copy Markdown
Owner

The v1.1.0 milestone: the best next enhancement plus the requested performance work.

#29 — Cross-round comparison (growth over time)

The most on-purpose feature for a 360 tool. A subject can now see how their peer competency scores trend across their shared rounds:

  • A new server-rendered multi-series line chart (view.LineSVG, no JS lib — consistent with the existing radar/donut SVGs).
  • A round-by-round table of per-competency averages and a summary timeline.
  • Linked from My Feedback once ≥2 rounds are shared; a friendly empty state below that.

Read-only over consolidations the subject already has access to — no manager-only data, no new privacy surface.

#33 — Pagination

The Rounds (admin), Audit log, and Users lists are paginated (25/page) with Prev/Next controls, via a shared pageNav helper and paged repo methods (FindPaged, fetch pageSize+1 for has-next).

Post-review hardening

A code review over the diff surfaced no runtime bugs but flagged real quality items, addressed here:

  • Deterministic paging: paged feedback_rounds/audit_logs queries now carry a unique id tiebreaker so page boundaries can't skip/duplicate rows when created_at collides. A gateway test (5 rows sharing a timestamp, paged in 2s) proves every row appears exactly once.
  • Consistency: pageNav is a value type across all three handlers (was a mix of pointer/value).

Verification

go build, go vet, gofmt, go test ./... (incl. Postgres gateway tests) all green. gosec 0 / govulncheck 0. Release Docker image builds and serves the new routes. New behavior covered by unit + handler + gateway tests. CHANGELOG stamped [1.1.0], sonar bumped to 1.1.0.

Known follow-ups (correct today, optimize later)

  • The list pages still build a full user index for name resolution — fine now, bound it with a batch FindByIDs as the user base grows.
  • The audit filtered view caps at the most recent 200 (unfiltered is fully paged); DB-side filtering would let it page too.

- #29 Growth over time: a subject sees their peer competency scores trending
  across shared rounds — a new server-rendered multi-series LineSVG chart, a
  round-by-round table, and a summary timeline, linked from My Feedback once
  two or more rounds are shared. Read-only over shared consolidations; no
  manager-only data.
- #33 Pagination (25/page) on the Rounds (admin), Audit, and Users lists with
  Prev/Next controls, a shared pageNav helper, and paged repo methods.

Post-review hardening: paged queries carry a unique id tiebreaker so page
boundaries are deterministic under colliding timestamps (gateway test proves no
skip/duplicate); pageNav is a consistent value type across handlers.

gosec 0 / govulncheck 0; full test suite (incl. Postgres gateway) green.

Known follow-ups (correct today, optimize later): the list pages still build a
full user index for name resolution (bound it with a batch lookup as the user
base grows), and the audit action-filter view caps at 200 rather than paging.
@mondial7
mondial7 merged commit 6168451 into main Jul 11, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant