feat: rebrand AgendaPro -> AgendaMax + calendar fixes + current-week demo seed

- Rebrand all user-facing text to AgendaMax
- Fix sidebar scrolling: card container no longer overflows html (flex h-full min-h-0)
- Fix calendar toolbar hover: active buttons keep readable contrast
- Sticky calendar toolbar (month/week/day always visible on scroll)
- Seed guarantees 2-4 appointments per day for current week (Mon-Sat)
This commit is contained in:
AgendaPro Dev
2026-07-27 10:11:16 -06:00
parent 4227db0c8b
commit d796538fd9
57 changed files with 2477 additions and 322 deletions
+46
View File
@@ -0,0 +1,46 @@
// server/lib/metrics.test.ts
import { test } from "node:test";
import assert from "node:assert/strict";
import { cancelRate, noShowRate, completionRate } from "./metrics.ts";
test("cancelRate: basic ratio rounded to 1 decimal", () => {
assert.equal(cancelRate(1, 4), 25);
assert.equal(cancelRate(3, 7), 42.9);
assert.equal(cancelRate(0, 10), 0);
});
test("cancelRate: zero total → 0 (no NaN)", () => {
assert.equal(cancelRate(0, 0), 0);
assert.equal(cancelRate(5, 0), 0);
assert.equal(cancelRate(5, -3), 0);
});
test("cancelRate: all cancelled → 100", () => {
assert.equal(cancelRate(8, 8), 100);
});
test("noShowRate: basic ratio rounded to 1 decimal", () => {
assert.equal(noShowRate(1, 10), 10);
assert.equal(noShowRate(1, 3), 33.3);
assert.equal(noShowRate(2, 9), 22.2);
});
test("noShowRate: zero total → 0", () => {
assert.equal(noShowRate(0, 0), 0);
assert.equal(noShowRate(3, 0), 0);
});
test("completionRate: basic ratio rounded to whole percent", () => {
assert.equal(completionRate(7, 10), 70);
assert.equal(completionRate(1, 3), 33);
assert.equal(completionRate(2, 3), 67);
});
test("completionRate: zero total → 0", () => {
assert.equal(completionRate(0, 0), 0);
assert.equal(completionRate(5, 0), 0);
});
test("completionRate: all completed → 100", () => {
assert.equal(completionRate(10, 10), 100);
});