mirror of
https://github.com/MBombeck/HealthLog.git
synced 2026-11-07 04:12:04 +00:00
The demo seeds no waist measurement and no wellbeing screener, so two of the seven pillars have never had data and the score rests on three areas instead of five. Adiposity and wellbeing render as empty rows on the card that is meant to show the feature. Both are seeded now: a fortnightly waist that walks 96 cm down to 88 cm over the window (0.527 to 0.484 at the demo profile's height, so the ratio crosses NICE 2022's threshold inside the seeded span rather than sitting flat green), and six WHO-5 / PHQ-9 / GAD-7 administrations with their item answers encrypted the way the check-in route writes them, each with the COMPUTED projection measurement so the history view and the trend chart agree. Totals sit in the calm bands and item 9 is answered zero throughout, which also keeps the pillar clear of its crisis-signposting arm. Verified against a throwaway Postgres: before, five ok pillars over three areas; after, seven over five, tier full. The dates were never the problem. Every timestamp the seed writes is already relative to the run, and the header says so. What ages is the seeded DATA — the pillar windows keep moving after a seed, so four weeks on, activity and sleep fall out of theirs and the score narrows to whatever cardiometabolic data is still fresh. Since v1.38 that is a labelled partial score rather than a blank card, but it is still not the demo at its best, and the header now says that too.
scripts/
One-shot operator and build scripts. These are not part of the running application — they are run by hand during a deploy, a backfill, or a release, or wired into CI. Recurring work belongs on pg-boss (src/lib/jobs/), not here.
How to run them
From a source checkout:
pnpm dlx tsx scripts/<file>.ts
The production image intentionally removes npm, pnpm, and Corepack. Only
container-safe scripts named by an operator runbook use its pinned
healthlog-tsx launcher; scripts that import the full application dependency
graph must run from a source checkout. scripts/ is excluded from the project
typecheck.
What lives here
generate-openapi.ts— emitsdocs/api/openapi.yamlfrom the registered Zod schemas (pnpm openapi:generate).check-openapi.ts— compares a freshly generated spec against the committed YAML; CI fails on drift (pnpm openapi:check).check-env.ts— pre-deploy env-var sanity check againstenv-manifest.json(pnpm check-env); wired into CI.assert-deploy.ts— post-deploy/api/versionassertion.rotate-encryption-key.ts— AES-256-GCM key rotation; seedocs/ops/encryption-key-rotation.md.restore-backup.ts— restore an off-host AES-GCM backup from an S3-compatible bucket.repair-intake-anomalies.ts— repair historic medication-ledger defects (duplicate dose-slot rows, implausibletaken_at); dry-run by default, seedocs/ops/intake-repair.md.backfill-rollups.ts,drain-per-sample-cumulative.ts,backfill-mood-note-column.ts— historical data backfills (note: the boot-timerollup-full-backfillqueue handles new accounts automatically; the CLI is the manual fallback).seed-demo.ts+seed-demo-v15.sql— populate a demo tenant.test-notifications.ts— exercise the notification dispatcher + reminder check.fetch-geolite2.sh— download the MaxMind GeoLite2 MMDBs (needs a licence key) beforedocker build.install-hooks.sh— install the local git hooks.generate-sw-version.mjs,print-bundle-report.mjs— service-worker version stamp and bundle-size report.i18n/— locale tooling;__tests__/— tests for the scripts above.
Conventions
See ../CLAUDE.md "Tests and commands" + "Self-hosting gotchas". Operator runbooks that drive these scripts live in ../docs/ops/.