backend phase 13 & frontend phase 6
This commit is contained in:
@@ -150,3 +150,24 @@ delivers fixes in its own change. **Frontend never edits backend code to "fix" a
|
||||
- **Also (minor):** the contract's `VerificationStepDto` has no `isRequired` — the client treats **every**
|
||||
seeded step as required (the "X از Y" meter Y = `steps.length`). Confirm that holds, or add `isRequired`.
|
||||
- **Status:** open
|
||||
|
||||
## REQ-012 — Search result + nurse-profile enrichment for discovery (C2/C3) — filed by frontend-phase-6-b7 — 2026-07-09
|
||||
- **Need:** Two extra read surfaces the discovery UI renders but b7/b6/b5 don't yet expose:
|
||||
1. **On the `search/nurses` result row** (`NurseSearchResultDto`): the nurse's **display name** and
|
||||
**avatar URL** (the C2 card's identity) and a **distance** value (km from the searched area) — b7's
|
||||
index row today carries only ids + price/rating/gender/geo ids. Without the name/avatar the card falls
|
||||
back to a generic label + initials; distance is simply hidden.
|
||||
2. **An aggregated public nurse-profile endpoint** for C3 — proposed `GET api/v1/nurses/{id}/profile` →
|
||||
`{ nurseId, nurseName, avatarUrl, bio, yearsExperience, averageRating, totalReviews,
|
||||
totalCompletedBookings, isVerified, inoMembership, attributeChips: string[] (specialty codes),
|
||||
services: [{ variantId, displayName, priceIrr (string), priceUnit, sessionCount? }],
|
||||
latestReview?: { rating, body, authorMasked, createdAt } }`. Today only the b6 public **trust badge**
|
||||
(`nurses/{id}/trust_badge`, giving `isVerified` + `credentialTypes`) and the b5 single-variant read are
|
||||
public — there is no name/bio/specialties/**full services list**/latest-review aggregation.
|
||||
- **Why:** C2/C3 are the trust funnel — the family chooses a real, named, priced nurse here. The
|
||||
`services/search` domain is **mock-primary** (`USE_SEARCH_MOCK = true`) precisely because these fields
|
||||
aren't available; the real `searchClientApi` maps everything b7/b6 do provide and leaves the above blank.
|
||||
When both land, the swap is a single config flip (no hook/component change).
|
||||
- **Proposed shape:** enrich `NurseSearchResultDto` with `{ nurseName, avatarUrl, distanceKm? }`; add
|
||||
`GET api/v1/nurses/{id}/profile` returning the object above. `price`/`priceIrr` stay IRR digit-strings.
|
||||
- **Status:** open
|
||||
|
||||
Reference in New Issue
Block a user