HBSA000_시스템 관리 (플랫폼 콘솔)
(Hereby) 시스템 관리 > 앱 개요
| 메타 | 프로토타입 바로가기 (TBU) |
개요
시스템 관리는 병원 내부 Admin Panel이 아니라, 플랫폼 운영자가 병원 tenant를 만들고 관리하는 standalone platform operations console이다. 신규 병원 provisioning, 병원 admin 계정, 병원별 roles/permissions, cross-tenant 근태 리뷰를 다룬다. tenant lifecycle·platform-level audit·IP/VPN 접근통제의 정본 콘솔이다.접근 차단 (라이브 미확인, docs 기반): system-admin.dev.hereby.me는 standalone host + IP allowlist로 격리되어 있고, 현재 접속 IP가 허용되지 않아 Access Denied("Connection from current IP is not permitted.")가 반환됐다. 따라서 화면 세부는 docs.dev + 접근 실패 화면 기준이며, 실제 UI 필드는 allowlist 환경에서 재확인 필요(TBU). standalone host + IP allowlist = 최상위 콘솔의 네트워크 격리 자체가 보안 사양이다.포지셔닝: 구독형 SaaS 멀티테넌트 운영의 심장. provisioning(SA) → import(HBIM 47시트) → tenant 운영(HBAD) 체인이 병원 1곳 도입 end-to-end를 완성한다.
문서 히스토리
- 2026-07-06 최초 작성 - 카나/콸
- 2026-07-10 접속 재확인 (기능 검토 라운드) - 카나/콸
- 2026-07-21 🔴 정정: tenant config(세율/호봉/항목코드/연차기준/근무유형/롤)는 HBAD 소관 확정 — TC 00-SA 매핑 재지정 (TC 정본, 콸 승인) - 카나/콸
- 2026-08-18 라이브 재검증 정정 - 카나: standalone host
system-admin.dev.hereby.me는 현재 환경에서 DNS 미해석(NXDOMAIN) 으로 접근 자체 불가(IP 차단 화면도 못 봄). tenant routeokbest /system-admin는 404가 아니라 S3AccessDeniedXML 반환(스펙 "404" 정정). 어느 경로든 접근 불가 = 기록만, 보안 격리 정합
Data I/O
| 메타 | Client/Network → Server:${client_ip} : 접속 IP. IpAllowlist/AccessPolicy 미통과 시 Access Denied (standalone host에서 확인)${operator_session} : platform operator 세션(User/PlatformRole). allowlist 통과 후 login/console 노출 (auth UI 미확인)${selected_organization} : cross-tenant scope 대상 org.id. 없으면 all/list${date_range} : 근태 리뷰 기간 필터(AttendanceRecord)Server → Client:${organizations} : 모든 등록 병원 list/search (Organization[])${organizationSettings} : name/legalName/type/size/timezone/fiscalYear (OrganizationSettings)${adminAccounts} : 병원 admin 계정 (AdminUser[])${roles} / ${permissions} : 병원별 roles / scoped permissions (Role[]/Permission[])${attendanceRecords} : cross-tenant 근태 records (AttendanceRecord[])${auditLogs} : platform mutation audit (PlatformAuditLog[], 존재 여부 TBU)Client → Server mutation (전부 high-risk, confirm+audit):organization provision : org details + initial admin + default roles → systemAdmin.provisionOrganization() (추정)admin account create/edit/delete · password reset(break-glass, reason+audit) → systemAdmin.admin.*() (추정)role/permission update → systemAdmin.permission.update() (추정) |
화면/접근 플로우 (IP gate → provisioning → audit)
flowchart TD START["system-admin.dev.hereby.me 접속"] --> IP{"IP allowlisted?"} IP -->|no| DENY["Access DeniedConnection from current IP is not permitted"] IP -->|yes| AUTH{"platform operator auth?"} AUTH -->|no| LOGIN["Login/TBU"] AUTH -->|yes| HOME["System Admin Console"] HOME --> ORGS["Organizations"] HOME --> PROV["Provisioning"] HOME --> ATT["Attendance Review"] PROV --> DETAILS["Organization details"] DETAILS --> ADMIN["Initial admin account"] ADMIN --> ROLES["Default roles/permissions"] ROLES --> REVIEW["Preflight/review"] REVIEW --> CONFIRM{"Operator confirm?"} CONFIRM -->|yes| CREATE["Create org + admin + permissions"] CONFIRM -->|no| EDIT["Edit inputs"] CREATE --> AUDIT["PlatformAuditLog"] style START fill:#27ae60,color:#fff style DENY fill:#e74c3c,color:#fff style HOME fill:#3498db,color:#fff style CONFIRM fill:#e67e22,color:#fff style AUDIT fill:#3498db,color:#fff
최고권한 콘솔 = network gate(IP allowlist) 선행. 모든 org/admin/권한 mutation은 operator confirm + audit 경계. 라이브 UI 세부는 allowlist 환경에서 재확인.
앱 개요 사양표
| 번호 | 항목/기능명 | 타입 | 사양 및 기능 설명 | 연관/영향 범위 | 비고 |
|---|---|---|---|---|---|
| 00 | 접근 차단 / Network Gate | - | standalone host + IP allowlist 선행. 허용되지 않은 IP는 Access Denied. ⚠ 2026-08-18: standalone host DNS 미해석(NXDOMAIN). tenant route(okbest /system-admin)는 S3 AccessDenied XML(2026-08-18 정정: 기존 "404" 폐기) = System Admin은 tenant route 아님. allowlist 통과 시 platform operator login/console | IpAllowlist · AccessPolicy | 2026-08-18: DNS NXDOMAIN·tenant route AccessDenied |
| 10 | Organizations | List/Detail | 모든 등록 병원 list/search + 병원 상세 review/edit + 설정 폼(name / legal name / type / size / timezone / fiscal year) + 저장. 라이브 미확인(docs 기반), UI 필드 TBU | Organization · OrganizationSettings | high-risk, audit 필요 |
| 20 | Provisioning | Form/Process | organization details + initial admin account + default roles/permissions(template)를 one-step provision(org + admin + 권한 한 번에 생성). first login policy = 첫 로그인 password change 강제. 라이브 미확인(docs 기반), exact fields TBU | ProvisioningRun · AdminUser · Role/Permission | high-risk mutation |
| 30 | Admin 계정 | Table/Form | 병원 선택 후 admin list + create/edit admin + reset password(break-glass, reason/audit) + delete admin(destructive, confirm). 라이브 미확인(docs 기반), UI TBU | AdminUser · PasswordReset | high-risk |
| 40 | 역할 · 권한 | Grid | role list + permission matrix(role별 permission/scope) + default template(신규 병원 기본 권한셋) + save changes. HBAD 권한 트리와 연결. 라이브 미확인(docs 기반) | Role · Permission · RolePermission | high-risk, audit 필요 |
| 50 | 근태 리뷰 | Table/Filter | organization 필터 + date range + employee number 필터 + status 필터 + cross-tenant attendance table(전 병원 records review). 라이브 미확인(docs 기반), columns/status enum TBU | AttendanceRecord | cross-tenant scope |
| 60 | Admin Panel 경계 | - | System Admin = 플랫폼 운영자·cross-tenant·standalone host+IP allowlist·위험도 매우 높음(org 생성/admin 계정/병원별 권한). HBAD = 병원 내부·single organization·tenant app route. 아래 경계표 참조 | HBAD000 | cross-tenant vs single-org |
| 70 | 도입 체인 | - | provisioning(SA) → import(HBIM 47시트) → tenant 운영(HBAD). ProvisioningRun↔ImportRun 연결로 도입 상태 end-to-end 추적. 아래 도입 체인표 참조 | ProvisioningRun · ImportRun | "신규 병원 온보딩 1주" 근거 |
System Admin vs Admin Panel 경계
| 구분 | System Admin (본 앱) | Admin Panel (HBAD) |
|---|---|---|
| 사용자 | 플랫폼 운영자 | 병원 내부 시스템 관리자/HR admin |
| scope | cross-tenant / all hospitals | single organization |
| 목적 | tenant provisioning, admin bootstrap, platform ops | 직원/팀/권한/근태/병원 설정 운영 |
| 접근 | standalone host + IP allowlist | tenant app route |
| 위험도 | 매우 높음 | 높음 |
| mutation | org 생성, admin 계정, 병원별 권한 | 직원/팀/권한/근태/병원 설정 |
| tenant config | 아님 — 세율/호봉/항목코드/연차기준/근무유형/롤 생성은 HBSA 소관이 아님 | HBAD 소관 확정 — 일반 admin이 payroll.createTaxBracket · salaryGrade.create · itemCode.bulkCreate* · leaveRequest.upsertEntitlementRule · shift.create · role.create 수행 (🔴 정정, TC 확정: 00-SA 전반 — adminClient 실행) |
도입 체인 — System Admin → Importer → Admin Panel
| 단계 | System Admin | Importer (HBIM) | Admin Panel (HBAD) | 결과 |
|---|---|---|---|---|
| 10 | Organization 생성 | target organization 필요 | - | tenant root 생성 |
| 20 | initial admin 생성 | imported employee/admin 연결 | admin login 시작점 | 최초 관리자 bootstrap |
| 30 | default roles/permissions 생성 | imported users에 role mapping | tenant 내부 권한 운영 | 병원 표준 권한셋 생성 |
| 40 | ProvisioningRun 생성 | ImportRun과 연결 | onboarding 상태 확인 | 도입 진행 상태 추적 |
| 50 | tenant ready 확인 | Excel payroll workbook import | 직원/팀/권한/근태 운영 시작 | 병원 1곳 운영 개시 |
AI 접점 요약
System Admin AI는 설정을 대신 바꾸는 agent가 아니라, platform operator가 실수 없이 tenant를 만들고 권한/접근 위험을 검토하도록 돕는 preflight 보조자다. 최고권한 콘솔이므로 AI 안전경계는 12개 앱 중 가장 강하다 — AI 자동 org 생성/admin 생성·삭제·password reset/role·permission mutation/IP allowlist 변경 모두 금지, 모든 mutation은 operator confirm + audit (POL_AI안전경계).
| AI Skill | 트리거 위치 | 동작 | 안전 경계 | 우선도 |
|---|---|---|---|---|
| provisioningChecklist | Provisioning | org 생성 → initial admin → default roles → import → activate 단계 가이드 및 누락 표시 | 읽기 전용 | ★★★★★ |
| accessPolicyAudit | 역할·권한 / Admin | 병원별 admin 권한 위험 조합, 과다권한, 비활성 admin, access policy gap 플래그 | 읽기 전용, mutation 금지 | ★★★★★ |
| permissionTemplateSuggest | 역할·권한 | 한국 병원 직제/규모에 맞는 default roles/permissions 표준셋 제안 | 제안만, 사람 확정 | ★★★★☆ |
| attendanceAnomalyBrief | 근태 리뷰 | cross-tenant attendance에서 52시간 위반 병원 등 이상 패턴 요약 | 읽기 전용 | ★★★☆☆ |
권한 / 상태 요약
| 시나리오 | 트리거 | 결과 | 비고 |
|---|---|---|---|
| [허용되지 않은 IP] | allowlist 밖 접속 | Access Denied — Connection from current IP is not permitted. | live 확인, 네트워크 격리 = 보안 사양 |
| [tenant route 접근] | okbest /system-admin | S3 AccessDenied XML (2026-08-18 정정: 기존 "404" 폐기) | System Admin은 tenant route 아님 |
| [allowlist 통과 + provision] | operator confirm | org + admin + default 권한 생성 + PlatformAuditLog | 첫 로그인 password change 강제 |
OQ
00-SA TC 시나리오 소관→ 확정: TC 00-SA의 tenant config 작업(세율·호봉·항목코드·연차기준·근무유형·롤)은 일반 admin 수행 = HBAD(single-org) 소관. HBSA는 provisioning/admin bootstrap/플랫폼 권한 템플릿까지만 (TC 확정: 00 전반).- PlatformAuditLog 존재 여부 및 cross-tenant audit SoT 위치(HBAD ↔ HBSA) = TBU
- IP allowlist 관리 UI가 System Admin 내부인지 별도 infra인지 = TBU
- allowlist 환경에서의 실제 UI census(Organizations/Provisioning/Attendance 화면 필드), platform operator auth 방식 = TBU
- organization provision form fields 전체, default role/permission template 상세 = TBU
- ProvisioningRun↔ImportRun 연결 여부, provisioning→import→activate 도입 체인 자동화 범위 = TBU
- 멀티테넌트 운영 주체/권한 모델(단독 운영 vs 운영팀) = TBU