Skip to content

HBSA211_Provision New Organization (모달) ​

(Hereby) 시스템 관리 > [[HBSA200]] > [[HBSA210]] > Provision Modal

앱System Admin (포트 4100)
부모 화면[[HBSA210]]
대상 사용자플랫폼 운영자(OPERATOR)
프로토타입TBU
관련 정책[[POL_권한(RBAC)]]
Statusdraft (코드 기반 — 라이브 실사 불가: dev 라우트 AccessDenied 격리, 2026-08-25 확인)
Owner카나

개요 ​

신규 병원(조직)을 한 번에 프로비저닝하는 모달. 조직 정보 + 근무/급여 설정 + 초기 관리자 계정을 입력하면 조직·권한·역할·관리자를 원샷 생성한다. redesign에서 raw SQL 사본을 버리고 회원가입 경로의 provisionWorkspace 서비스를 재사용 — 법정공제 요율 시드·알림 기본값·SUPER_ADMIN 배정까지 가입 경로와 동일.

문서 히스토리 ​

날짜작성자팀변경 내용
2026-08-25카나콸최초 작성 (redesign PR #583 코드 census 기반, 라이브 미실사)
2026-10-02카나PM첫 관리자 PASSWORD 라벨·검사를 기본 비밀번호 규칙으로 통일(min 8 → 공용 규칙), 첫 로그인 비밀번호 변경 강제(c6347029·382eec17, #995) — 커밋 근거, 라이브 실사 이월(TBU) - 카나/PM

Data I/O ​

Client → Server ​

액션전달 값콘솔 RESTsystemProcedure
프로비저닝{ organization{name,code,legalName,type,size,medicalField,timezone,fiscalYearStart,settings{workHours,payroll}}, admin{email,password,firstName,lastName,employeeNumber,phone,createOwnerAccount} }POST /api/provision/organization (?endpoint=)provisionWorkspace 재사용 (원문 비번 TLS → API bcrypt)
미리보기-GET /api/provision/previewsystemProvisionPreview

Server → Client ​

변수소스비고
provisionResult.organization생성 결과name/code
provisionResult.admin생성 결과email/employeeNumber
provisionResult.permissions.total생성 결과표준 51
provisionResult.roles[]생성 결과6 roles code
provisionError실패 메시지중복 409 등

코드 근거: modals/provision.html, server/routes/provision.ts.


화면 플로우 ​


Provision 모달 사양표 ​

번호항목/기능명타입사양 및 기능 설명연관/영향 범위비고
00노출 조건-showProvisionModal. [[HBSA210]] "+ New Organization" 클릭 시openProvisionModal()
01초기 상태Output폼 뷰(!provisionResult.success). 타이틀 "Provision New Organization" + "close"-
10Organization 섹션Input Box"NAME *"(placeholder "베스트재활의원") / "CODE *"(placeholder "BESTRH") / "LEGAL NAME"(placeholder "의료법인 베스트재활의원")provisionForm
11ㄴ 종류Dropdown의원/병원/종합병원/상급종합병원/요양병원/정신병원/치과병원/한방병원/조산원/기타orgType
12ㄴ 병상 수Dropdown30미만/30~99/100~299/300이상orgSize
13ㄴ 진료 분야Input Boxplaceholder "재활 전문, 노인 요양 중심 등"orgMedicalField
14ㄴ 로케일Input Box"TIMEZONE"(placeholder "Asia/Seoul") / "FISCAL YEAR START (month)"(1-12)-
20Work & Payroll Settings 섹션Input Box"WEEKLY LIMIT (h)" / "DAILY STANDARD (h)" / "PAY DAY"(1-31) / "CUTOFF DAY"(1-31)settings.workHours/payroll
30Admin Account 섹션Input Box"LAST NAME (성) *"(placeholder "김") / "FIRST NAME (이름) *"(placeholder "관리자") / "EMAIL *"(placeholder "admin@hospital.com") / "EMPLOYEE NUMBER *"(placeholder "ADMIN001") / "PASSWORD * — 8자 이상, 대문자·소문자·숫자·특수문자 포함" / "PHONE"(placeholder "010-0000-0000")
• 새 병원은 아직 비밀번호 설정이 없어 PASSWORD는 기본 규칙으로 안내·제출 전 검사(위반 시 provisionError 배너, 예: "비밀번호는 8자 이상이어야 해요.") · 첫 관리자는 첫 로그인 때 비밀번호 변경 강제
admin*갱신 (코드 반영: c6347029·382eec17, #995) · minlength=8 제거 · TBU: 라이브 실사 이월
31ㄴ Create owner accountCheckbox"Create owner account — admin을 owner 회원(Account)으로 생성해 조직에 연결합니다. (회원가입 경로와 동일: owner 보호 가드 + 멀티 워크스페이스. 이메일이 이미 회원이면 실패)"createOwnerAccount
40This will create 요약Info"1 Organization with settings" / "51 Permissions (standard RBAC set)" / "6 Roles: SUPER_ADMIN, HR_ADMIN, PAYROLL_ADMIN, GENERAL_AFFAIRS_ADMIN, TEAM_LEADER, EMPLOYEE" / "1 Admin account (isSystemAdmin=true, mustChangePassword=true)"-첫 로그인 비번 변경 강제
50제출Button"PROVISION ORGANIZATION" → doProvision(). 진행 중 "provisioning...". 실패 시 provisionError red 배너provisionWorkspace중복 code/이메일 409
50-1ㄴ CancelButton"Cancel" → closeProvisionModal()-
60성공 화면OutputprovisionResult.success 시 green 박스: "Organization provisioned successfully" + Organization/Admin/Permissions/Roles 요약 + "Roles created:" 배지 목록-
61ㄴ Done / Create AnotherButton"Done" → 닫기+목록 갱신 / "Create Another" → resetProvisionForm()-
70에러·실패-중복 등 4xx 시 provisionError 문구 배너. 실측 문구 TBU(라이브 격리)-

권한 / 상태 요약 ​

시나리오트리거결과비고
case01 [정상]필수 입력 후 제출조직+51권한+6역할+admin 생성, 성공 화면audit 기록
case02 [중복 code/email]기존 값409 provisionError
case03 [owner 이메일 기존회원]createOwnerAccount + 기존 이메일실패
case04 [멀티 엔드포인트]?endpoint= 대상지정 엔드포인트에 생성단일 등록 시 자동

OQ ​

  • 51 Permissions / 6 Roles는 UI 요약 문구 기준 — 실제 시드 카탈로그 수량은 systemProvisionPreview 실측 필요(design 로그엔 "preview 106/6" 언급, 권한 수 불일치 가능) TBU
  • 성공 후 목록 자동 리프레시 동작 실측 = TBU