feat(onboarding/phase-6): setup wizard polish, seed script alignment, doctor visit slots

- Setup wizard: 3-pane layout with right-side live previews, resume
  banner, edit/copy icons on team step, AI prompt configuration
- Forms: employee-create replaces invite-member (no email invites),
  clinic form with address/hours/payment, doctor form with visit slots
- Seed script: aligned to current SDK schema — doctors created as
  workspace members (HelixEngage Manager role), visitingHours replaced
  by doctorVisitSlot entity, clinics seeded, portalUserId linked
  dynamically, SUB/ORIGIN/GQL configurable via env vars
- Pages: clinics + doctors CRUD updated for new schema, team settings
  with temp password + role assignment
- New components: time-picker, day-selector, wizard-right-panes,
  wizard-layout-context, resume-setup-banner
- Removed: invite-member-form (replaced by employee-create-form per
  no-email-invites rule)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-04-10 08:37:34 +05:30
parent efe67dc28b
commit f57fbc1f24
25 changed files with 3461 additions and 706 deletions

View File

@@ -80,14 +80,13 @@ export const SetupWizardPage = () => {
const onNext = !isLastStep ? () => setActiveStep(SETUP_STEP_NAMES[activeIndex + 1]) : null;
const handleComplete = async (step: SetupStepName) => {
try {
const updated = await markSetupStepComplete(step, user?.email);
setState(updated);
} catch (err) {
console.error('Failed to mark step complete', err);
// Non-fatal — the step's own save already succeeded. We just
// couldn't persist the wizard-state badge.
}
// No try/catch here — if the setup-state PUT fails, we WANT
// the error to propagate up to the step's handleSave so the
// agent sees a toast AND the advance flow pauses until the
// issue is resolved. Silent swallowing hid the real failure
// mode during the Ramaiah local test.
const updated = await markSetupStepComplete(step, user?.email);
setState(updated);
};
const handleAdvance = () => {