frontend phase 3: geography — addresses, map-pin picker & nurse coverage areas
Three domain services (mirroring the patients/nurse template): services/geography (cached province→city→district lookups; Infinity staleTime + shared geographyKeys), services/addresses (address book CRUD + set-primary; single-primary invariant), and services/serviceAreas (coverage add/remove; areaExists dup-guard, districtId=null = whole city). Four tested composites in src/components/geography: CascadingRegionSelect (drives the cascade queries), AddressMapPicker (map-pin stand-in emitting real lat/lng), AddressForm, AddressCard. Screens: customer address book (/addresses, reached from the profile hub) and nurse coverage editor (/nurse/coverage, new sidebar tab, inline duplicate block + 409). Adds geo/address/coverage i18n namespaces (both locales), location/delete/coverage icons, ADDRESSES/NURSE_COVERAGE routes. Consumes the b4 geography-addresses contract; filed REQ-008 (accept the map pin on create/update) and REQ-009 (provinceId on CustomerAddressDto) for gaps. Gate: npm run check + npm run test:ci (129, +17) + npm run build all green. A 5-dimension adversarial review fixed 3 findings (map-marker RTL transform, page_size→pageSize pagination casing, coverage districts-scope dead-end on district-less cities). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,14 @@
|
||||
/**
|
||||
* When true, the nurse service-areas domain is served by the in-memory mock (apis/mockApi.ts)
|
||||
* behind the ServiceAreasApi seam — the duplicate `(cityId, districtId)` 409 and whole-city-first
|
||||
* ordering are enforced in-memory so the coverage editor demos before backend-phase-4 is
|
||||
* reachable. Flip to false to use the live `api/v1/nurse_service_areas/*` routes — no
|
||||
* hook/component changes (see dev/shared-working-context/reports/mocks-registry.md).
|
||||
*/
|
||||
export const USE_SERVICE_AREAS_MOCK = true;
|
||||
|
||||
/** Service areas change only on mutation; keep them warm across screen visits. */
|
||||
export const SERVICE_AREAS_STALE_TIME = 60_000;
|
||||
|
||||
/** api-conventions default page size; `pageSize` ≤ 100. A nurse covers a handful of areas. */
|
||||
export const SERVICE_AREAS_PAGE_SIZE = 100;
|
||||
Reference in New Issue
Block a user