refinement phase 3
This commit is contained in:
@@ -49,7 +49,7 @@
|
||||
- `nurse_gender` (`male`|`female`, optional) — the same-gender facet.
|
||||
- `min_price` / `max_price` (long IRR, optional) — inclusive range over the copied `price`.
|
||||
- `price_unit` (enum, optional) — compare like-for-like listings (e.g. only `per_day`).
|
||||
- `page` (int, default 1), `page_size` (int, default 50, max 100).
|
||||
- `page` (int, default 1), `pageSize` (int, default 50, max 100).
|
||||
- **Success `200` payload (`data` = `PagedResultOfNurseSearchResultDto`):**
|
||||
```json
|
||||
{
|
||||
@@ -74,7 +74,7 @@
|
||||
}
|
||||
```
|
||||
- **Failure cases:** `400` — `service_category_id`/`city_id` missing or ≤ 0, `nurse_gender` not `male`/`female`,
|
||||
`min_price > max_price`, invalid `price_unit`, or `page_size > 100`.
|
||||
`min_price > max_price`, invalid `price_unit`, or `pageSize > 100`.
|
||||
- **Notes:** returns only `is_searchable = 1` rows. `districtId = null` in a result row means the nurse covers
|
||||
the whole city. No entity is hydrated — the read is a projected, paginated, `AsNoTracking` index scan.
|
||||
|
||||
@@ -103,3 +103,15 @@
|
||||
|
||||
## Changelog
|
||||
- b7 — initial contract: public `search/nurses`, admin `admin_search/rebuild_index`.
|
||||
|
||||
---
|
||||
|
||||
## Refinement phase 3 additions (REQ-012)
|
||||
|
||||
- **`NurseSearchResultDto`** gains `nurseName` + `avatarUrl` (denormalized onto `nurse_search_index`, so no
|
||||
per-row join) and `distanceKm` (nullable — the covering index carries no coordinate, so it is null today).
|
||||
- **`GET api/v1/nurses/{id}/profile`** (public) — the aggregated discovery detail:
|
||||
`{ nurseId, nurseName, avatarUrl, bio, yearsExperience, averageRating, totalReviews,
|
||||
totalCompletedBookings, isVerified, inoMembership, attributeChips[], services: [{ variantId, displayName,
|
||||
priceIrr, priceUnit, sessionCount? }], latestReview?: { rating, body, authorMasked (null by design),
|
||||
createdAt } }`. No encrypted credential number is ever exposed.
|
||||
|
||||
Reference in New Issue
Block a user