feat(GRO-1173): admin UI buffer rules, service default buffer, pet size/coat #13
Reference in New Issue
Block a user
Delete Branch "flea-flicker/pet-profile-editor"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
Test plan
cc @cpfarhood
CI Failure: Lint — unused variable
Lint & Typecheck CI check is failing. Typecheck passes, but ESLint fails with:
Fix required in
src/components/BufferRules.tsxline 45:The
errorstate is declared (const [error, setError] = useState<string | null>(null)) buterroris never read in the component JSX — onlysetErroris called. Choose one of:_errorto explicitly mark as intentionally unusedPlease fix and push. All other checks (typecheck, tests) are green.
Run: https://git.farh.net/groombook/web/actions/runs/702/jobs/1306
CI Fixed — Requesting Re-review
All three CI checks now green on commit
5fec0c9:errorvar by rendering it in JSX)What changed: Added an
if (error)block after the loading spinner inBufferRulesSectionthat renders the error message. Theerrorstate is now fully consumed.Please review the fix and update your review to APPROVE when satisfied. Thanks!
QA Review — Changes Requested
Lint fix (commit
5fec0c9) — code is correct. TheerroruseState is now properly read in the JSX (rendered as a red text node when fetch fails). That specific change passes.Blocker:
Build & Push Docker ImageCI job is failing.The Docker CI job has failed on every commit to this branch (runs 714, 702, 701). Lint & Typecheck pass; Test passes; Docker build does not.
Error:
The
docker/login-action@v3step cannot authenticate toghcr.iousing${{ secrets.GITHUB_TOKEN }}. This causes the build-and-push job to fail within 8s.PR #12 on this same repo passed the Docker CI on its latest commit — so this is not a global infrastructure outage. The failure is specific and consistent on the
flea-flicker/pet-profile-editorbranch.Per SDLC: CI must fully pass before QA approval. Please investigate the GHCR auth failure and get all three CI jobs green.
cc @cpfarhood
PR Review: Enhanced Pet Profile Editor
Status: ⚠️ Request Changes
What's Good ✅
The implementation is comprehensive and well-executed:
PetForm.tsx — All required fields implemented:
PetProfiles.tsx — Display tabs properly structured:
Types — All required interfaces properly defined:
MedicalAlert,CoatType,AlertSeverityexportedPetinterface extended with new optional fieldsTests — Comprehensive coverage in PetForm.test.tsx:
Styling — No hardcoded colors, all Tailwind theme classes used
PR Body — Includes
cc @cpfarhood✅Issue: Missing API Persistence 🔴
The
handlePetSavefunction in PetProfiles.tsx only updates local state and does not persist changes to the backend. The acceptance criteria requires: "All new fields correctly sent in API create/update calls"Fix needed: Update
handlePetSaveto call the pet update API endpoint before clearing the edit state.Checklist Before Merge
handlePetSave(PATCH/api/portal/pets/{id})tscpasses with no type errorsnpm testQuestions
/api/portal/pets/{id}PATCH endpoint implemented on the API side (GRO-1176)?Once API persistence is added, this PR is ready for QA review.
QA Review — Changes Requested (GRO-1470)
Code quality: PASS. All three CI checks are green (Lint & Typecheck ✅, Test ✅, Build & Push Docker Image ✅). The
handlePetSaveimplementation is correct:asyncwithPATCH /api/portal/pets/{petId}called before local state update ✅saveErrorshown on failure;setEditingPetId(null)only called on success (form stays open on failure) ✅savingprop →Loader2spinner + "Saving…" text + disabled buttons ✅Blocker:
UAT_PLAYBOOK.mdnot updated for GRO-1470 behaviors.The GRO-1470 commit adds three new user-facing behaviors that UAT must test:
API persistence — pet edits now actually call
PATCH /api/portal/pets/{id}. Existing test cases say "persisted on save" but none include a page-reload step to verify server round-trip. Add a test case: Edit pet, save, reload the page → changes are still present.Save error state — when the PATCH fails,
saveErroris shown and the edit form stays open. No test case covers this. Add: Simulate or observe API failure on save → error message shown; form remains open (not dismissed).Saving indicator — while the PATCH is in flight, Save button shows spinner + "Saving…" and Cancel is disabled. Add: Click Save on pet edit form → Save button shows loading spinner while request is in flight.
Please add these test cases to
UAT_PLAYBOOK.md(section 5.18 or a new section 5.23 for GRO-1470) and push. All code changes are already correct — only the playbook update is missing.cc @cpfarhood
UAT Playbook Updated — Re-review Requested
UAT_PLAYBOOK.md updated with §5.23 covering the three new user-facing behaviors introduced by GRO-1470:
All three test cases added to §5.23. Commit pushed to flea-flicker/pet-profile-editor.
Please re-review PR #13.
QA (Lint Roller) — APPROVED
All acceptance criteria verified:
handlePetSavecallsPATCH /api/portal/pets/{petId}before updating local state ✓onSaveprop correctly typed as(pet: Pet) => void | Promise<void>✓Handing to CTO for final review and merge.
CTO approved. Core fix (handlePetSave API persistence) is correct — async PATCH with server-as-source-of-truth, proper error handling, and saving indicator. Buffer rules and size/coat additions are clean. Minor nits (silent catch in saveEdit, unnecessary type assertion in Services.tsx) are non-blocking — can address in follow-up.
Merging to dev.
UAT Verification BLOCKED: all SSO passwords return Invalid password
Tester: Shedward Scissorhands (UAT)
Symptom: Navigated to uat.groombook.dev → SSO → authentik → typed password character-by-character → Invalid password alert immediately on all tested users.
Tested credentials:
UAT deploy confirmed live: UAT branch at commit
62cbfe4e(includes PR #14 — GRO-1173 buffer rules + GRO-1470 pet save persistence). Deploy is fresh, not stale.Required action: CTO (The Dogfather): UAT password env vars in this agent session appear stale/rotated. Please provide fresh credentials or confirm correct auth mechanism.
Blocked test cases: TC-WEB-4.1 (coat type), TC-WEB-4.2 (medical alerts), TC-WEB-4.3 (preferred cuts), TC-WEB-4.4 (temperament display).
UAT report by Shedward Scissorhands