Summary
The admin member detail page's Identity tab does not currently expose city, region, countryId, publicLocation, showOnMap, or the geocoded latitude/longitude. Staff editing a member can't fix a typo'd city or toggle map visibility without going to the public dossier.
Requirements
Context
profiles has city, region, countryId, publicLocation, latitude, longitude, showOnMap already (packages/api/src/db/schema/users.ts:103-117). The admin PATCH route just doesn't accept them yet; the detail page just doesn't display them yet.
Depends on #1972 for the geocoded-value population and geocoded_at column.
Implementation Notes
Country picker: the vocab endpoint at packages/api/src/routes/vocab.ts already exposes countries; the web account page uses the same dataset for its country picker (see apps/web/src/hooks/useVocab.ts). Reuse it to avoid a parallel vocab fetch.
showOnMap defaults to false per the schema — admins flipping it on is an explicit consent decision and should be paired with a small note like "Surfaces this member on the public community map at /map."
Summary
The admin member detail page's Identity tab does not currently expose
city,region,countryId,publicLocation,showOnMap, or the geocodedlatitude/longitude. Staff editing a member can't fix a typo'd city or toggle map visibility without going to the public dossier.Requirements
MemberDetailPage.tsxIdentity tab gains an Address section with editable fields:showOnMaptogglePATCH /admin/users/:idbody schema extended (packages/api/src/routes/admin/users/byId.ts) to acceptcity,region,countryId,publicLocation,showOnMapGET /admin/users/:idresponse includes the existing address fields andgeocoded_atso the UI can render the timestampContext
profileshascity,region,countryId,publicLocation,latitude,longitude,showOnMapalready (packages/api/src/db/schema/users.ts:103-117). The admin PATCH route just doesn't accept them yet; the detail page just doesn't display them yet.Depends on #1972 for the geocoded-value population and
geocoded_atcolumn.Implementation Notes
Country picker: the vocab endpoint at
packages/api/src/routes/vocab.tsalready exposes countries; the web account page uses the same dataset for its country picker (seeapps/web/src/hooks/useVocab.ts). Reuse it to avoid a parallel vocab fetch.showOnMapdefaults tofalseper the schema — admins flipping it on is an explicit consent decision and should be paired with a small note like "Surfaces this member on the public community map at /map."