feat: facility address (Slice 1 of calendar sync payload) #225
No reviewers
Labels
No labels
agent:hermes
bug
chore
dependency
feature
status:blocked
status:in-progress
status:needs-info
status:needs-review
status:ready
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
owlburtoe/Shiftd!225
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "feat/calendar-sync-slice-1-facility-address"
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
Slice 1 of the Calendar Sync Payload enrichment (spec:
docs/superpowers/specs/2026-05-28-calendar-sync-payload-design.md, Section A). Adds a facility postal address so later slices (iOS EventKit sync, ICS feed) can surface a shiftLOCATION.facilities(address_line_1/2,city,state,postal_code,country) + committed Drizzle migration0054_facility_address.sql.GET /api/d/:deptSlug/facility(metadata + address + server-renderedformattedAddress) andPUT /api/d/:deptSlug/facility/address(gated byconfig:manage, writes the parent facility row, emits afacility.address_updatedaudit event with prev/next snapshots). PublicGET /api/facilitystays minimal — no address exposed.nullclears a field, strings are trimmed and empty → null. OpenAPI splitsFacilityAddress(full response) fromFacilityAddressPatch(sparse request body).FacilityAddress+FacilityWithAddressat@schedule-app/shared-types/facility.FacilityAddressSection), consuminguseFacilityWithAddressQuery/useUpdateFacilityAddressMutation.tier6-destructive-permissions.test.tsto mint real signed tokens instead ofsetTestActor(was flaking under full-suite runs), and tightened the invite allow-case to an exact 400.Test plan
formatAddressunit tests (5) — empty, country-suppression, country-fallback, full, partial intlFacilityAddressSectiontests (8) — helpers + render statespnpm tsc --noEmit, frontendtsc -b— cleanpnpm check:runtime-contracts/check:migration-ordering/check:url-generation— passpnpm smoke:backend-runtime—/api/ready200