- Extend medicalAlertPool with 4 new entries: 2 behavioral, 2 skin
- Make TestCooper (uat-charlie) get a deterministic behavioral alert
- Make TestRocky (uat-delta) get a deterministic skin alert
- Other UAT pets retain random alert assignment
Co-Authored-By: Paperclip <noreply@paperclip.ing>
Extract UAT staff account seeding into a shared async function so it
runs in both seedKnownUsers() and the full seed() UAT branch.
Before this change the full seed() UAT path never created the
deterministic UAT staff (UAT Super/Staff/Groomer) with their numeric
oidcSub values from SEED_UAT_*_OIDC_SUB env vars — seedKnownUsers()
had that logic but was bypassed by SEED_KNOWN_USERS_ONLY=true in the
UAT reset CronJob.
seedUatStaffAccounts() handles:
- UAT Super Staff (SEED_UAT_SUPER_OIDC_SUB)
- UAT Staff Groomer (SEED_UAT_STAFF_OIDC_SUB)
- UAT Groomer Personas (SEED_UAT_GROOMER_EMAILS + _NAMES)
- Better Auth email+password credentials (SEED_UAT_*_PASSWORD)
- UAT Customer client + 2 pets
Co-Authored-By: Paperclip <noreply@paperclip.ing>
The petProfileSummary mock's sql tag returned a plain string instead of
a proper Drizzle SQL object, so count(*) queries via .as("count") failed.
Also added Symbol.asyncIterator support for for-await-of patterns used
in the pets router.
Fixes: GRO-1917
Co-Authored-By: Paperclip <noreply@paperclip.ing>
TS2749: enumValues is a value, not a type — wrap with typeof before
indexing.
Also extends Lint & Typecheck CI job to run pnpm --filter @groombook/db
typecheck so this class of error is caught at lint time rather than
Docker build time.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>