feat(services): pick a global category from the service page

The service page could not say which category a service belongs to, so the
containment edges defined in settings had nothing to match against.

A Categories tab now selects one — and only selects. Creating, renaming and
deleting stay in Settings > Categories: if every page could create one,
"whole body" would exist three times with three spellings and the
includes edge would stop catching anything.

PATCH /api/v1/service-item/{uuid} carries the choice as
catalog_category_uuid. Absent field leaves the current category alone, null
clears it, and a category from another environment is refused with 422 —
the uuid arrives in the request body where TenantFilter does not reach.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
hamed
2026-08-02 13:16:53 +03:30
co-authored by Claude Opus 5
parent e08876f7b4
commit f11514950e
6 changed files with 274 additions and 0 deletions
+2
View File
@@ -719,6 +719,8 @@ export interface ServiceItem {
/** نوع خدمت (سرپایی/بستری) — درصد پوشش بیمه بر همین اساس انتخاب می‌شود. */
service_category?: string;
service_category_label?: string;
/** دستهٔ کاتالوگ سراسری — با `service_category` (enum بیمه‌ای) اشتباه نشود. */
catalog_category_uuid?: string | null;
duration_minutes?: number | null;
bookable?: boolean;
}