promote: dev → uat (GRO-1790 pet profile summary bug fixes) #90

Closed
The Dogfather wants to merge 0 commits from dev into uat
Member

UAT Promotion

Promotes dev → uat after CTO review and QA pass on PR #30.

Changes included

  • GRO-1790: fix visitCount bug (was capped at 0/1, now returns actual count)
  • GRO-1790: fix upcomingAppointment date filter (past appointments excluded)
  • GRO-1177: pet profile summary endpoint
  • RBAC guard fix, CI fixes

Verification

  • QA reviewed and passed (Lint Roller)
  • CTO reviewed and merged PR #30
  • CI green (run 1805)
## UAT Promotion Promotes dev → uat after CTO review and QA pass on PR #30. ### Changes included - **GRO-1790**: fix visitCount bug (was capped at 0/1, now returns actual count) - **GRO-1790**: fix upcomingAppointment date filter (past appointments excluded) - **GRO-1177**: pet profile summary endpoint - RBAC guard fix, CI fixes ### Verification - QA reviewed and passed (Lint Roller) - CTO reviewed and merged PR #30 - CI green (run 1805)
The Dogfather added 9 commits 2026-05-26 11:53:55 +00:00
feat(GRO-1177): add GET /api/pets/:id/profile-summary endpoint
CI / Lint & Typecheck (pull_request) Successful in 9s
CI / Test (pull_request) Successful in 9s
CI / Build & Push Docker Images (pull_request) Successful in 37s
8c62ce2368
Returns aggregated pet profile with:
- All pet fields (basic + extended)
- recentGroomingHistory: last 10 entries from groomingVisitLogs with staff name join
- lastVisitDate: most recent groomedAt timestamp
- visitCount: count of completed appointments
- upcomingAppointment: next scheduled/confirmed appointment with service/staff name

Enforces same groomer RBAC as GET /:id. Returns 404 for non-existent pets.
Adds PetProfileSummary, GroomingHistoryEntry, and UpcomingAppointment types.
Adds unit tests covering: 404, 403, aggregated profile, empty history, no upcoming appt.
Updates UAT_PLAYBOOK.md §3 with TC-API-3.8 and TC-API-3.9.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Co-Authored-By: Paperclip <noreply@paperclip.ing>
Co-authored-by: Lint Roller <lint@groombook.dev>
Co-committed-by: Lint Roller <lint@groombook.dev>
Co-Authored-By: Paperclip <noreply@paperclip.ing>
fix(ci): remove duplicate provenance keys causing YAML parse error
CI / Lint & Typecheck (push) Failing after 4s
CI / Test (push) Successful in 15s
CI / Build & Push Docker Images (push) Has been skipped
b796d36aed
Duplicate 'provenance: false' in each docker/build-push-action step caused
Gitea to reject the workflow file, breaking push CI and workflow_dispatch.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
fix(rbac): guard noUncheckedIndexedAccess in name derivation and newStaff insert
CI / Lint & Typecheck (push) Successful in 12s
CI / Test (push) Successful in 14s
CI / Build & Push Docker Images (push) Successful in 46s
3b9e82adff
With noUncheckedIndexedAccess:true, split("@")[0] returns string|undefined,
making `name` typed as string|undefined and failing the notNull staff.name
insert constraint. Fix by using ?? fallback on the array access.

Also add newStaff null guard after .returning() destructure — array
destructuring yields T|undefined with noUncheckedIndexedAccess enabled.
- Replace .select({ count: appointments.id }).limit(1) + .length with
  sql<number>`count(*)::int` pattern per project standard (references invoices.ts:86)
- Add gte(appointments.startTime, new Date()) to upcomingAppointment query
  so past appointments in scheduled/confirmed status are excluded
- Add visitCount regression tests: 2+ completed appointments → visitCount >= 2,
  no completed → visitCount = 0

Updated UAT_PLAYBOOK.md §profile-summary (visitCount regression + date filter)

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
docs: add TC-API-3.18 and TC-API-3.19 to UAT_PLAYBOOK for visitCount regression + date filter
CI / Lint & Typecheck (pull_request) Successful in 12s
CI / Test (pull_request) Successful in 12s
CI / Build & Push Docker Images (pull_request) Successful in 1m4s
a25b2fe281
Updated UAT_PLAYBOOK.md §3.3 — new visitCount cap and past appointment filter test cases

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Merge pull request 'feat(GRO-1177): add pet profile summary endpoint' (#30) from flea-flicker/pet-profile-summary into dev
CI / Lint & Typecheck (push) Successful in 12s
CI / Test (push) Successful in 12s
CI / Build & Push Docker Images (push) Successful in 2m52s
9622b109d0
feat(GRO-1177): add pet profile summary endpoint (#30)

Adds GET /api/pets/:id/profile-summary with aggregated pet profile,
grooming history, visit count, and upcoming appointment.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
The Dogfather requested review from Lint Roller 2026-05-26 11:56:03 +00:00
Lint Roller approved these changes 2026-05-26 11:58:30 +00:00
Lint Roller left a comment
Member

QA approval for dev → uat promotion. Changes already reviewed in PR #30.

QA approval for dev → uat promotion. Changes already reviewed in PR #30.
The Dogfather closed this pull request 2026-05-26 12:01:19 +00:00
Some checks are pending
CI / Lint & Typecheck (push) Successful in 12s
CI / Test (push) Successful in 12s
CI / Build & Push Docker Images (push) Successful in 2m52s

Pull request closed

Sign in to join this conversation.