feat(services): match Figma خدمات page in settings shell + multi-staff

Render the clinic services page (sections → services) inside the settings
sub-navigation shell (SettingsLayout, "خدمات" active) to match the Figma
settings design. Restyle section cards to show the service count and a
status toggle with edit/delete actions, and service cards with labelled
price/duration and personnel chips.

A service can now have multiple personnel: add an additive many-to-many
ServiceItem↔ClinicStaff (staffMembers, EAGER) while keeping the legacy
single `staff` column mirrored for backward compatibility. Endpoints accept
`staff_uuids[]` (falling back to the legacy single `staff_uuid`) and return
`staff_members[]`; the section list now reports `items_count`.

Backfill-safe: pre-migration rows fall back to the single staff in toArray.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
hamed
2026-07-13 13:28:51 +03:30
co-authored by Claude Opus 4.8
parent 5e59785854
commit 9e4ee11831
10 changed files with 464 additions and 71 deletions
+5
View File
@@ -421,13 +421,18 @@ export interface ServiceSection {
uuid: string;
name: string;
active: boolean;
/** number of services in this section (only present in the list endpoint) */
items_count?: number;
}
export interface ServiceItem {
uuid: string;
name: string;
price_rials: number;
/** primary staff (first member) — kept for backward compatibility */
staff: { uuid: string; full_name: string } | null;
/** all personnel assigned to this service */
staff_members?: { uuid: string; full_name: string }[];
active: boolean;
insurance_covered?: boolean;
insurance_price_rials?: number | null;