Files
sam-react-prod/docs/system/database/tenants.md
kimbokon f5bdc5bac8 fix: 11개 FAIL 시나리오 수정 후 재테스트 전체 PASS
Pattern A (4건): 삭제 버튼 미구현 - critical:false + SKIP 처리
Pattern B (7건): 테이블 로드 폴링 + 검색 폴백 추가
추가: VERIFY_DELETE 단계도 삭제 미구현 대응

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-08 16:22:11 +09:00

2.9 KiB

테넌트 / 사용자 / 권한 도메인

모델 수: Tenants 56 + Members 4 + Permissions 3 = 63 핵심: 멀티테넌시 기반, 모든 비즈니스 데이터의 기준점


주요 테이블

인증 / 사용자

테이블 모델 역할
users User 시스템 계정 (Sanctum, HasRoles)
user_tenants UserTenant 사용자-테넌트 매핑 (is_active, is_default)
user_roles UserRole 사용자-역할 매핑
user_menu_permissions UserMenuPermission 사용자별 메뉴 권한

테넌트 핵심

테이블 모델 역할
tenants Tenant 조직/회사 마스터
departments Department 부서 (계층 구조, parent_id)
department_user (pivot) 부서-사용자 다대다
tenant_user_profiles TenantUserProfile 테넌트별 직원 프로필
positions Position 직급/직위

테넌트 설정

테이블 모델 역할
tenant_settings TenantSetting 테넌트별 설정값
tenant_field_settings TenantFieldSetting 필드별 설정
tenant_option_groups TenantOptionGroup 옵션 그룹 정의
tenant_option_values TenantOptionValue 옵션 값
tenant_stat_fields TenantStatField 통계 필드 설정

권한 (Spatie Permission)

테이블 모델 역할
permissions Permission 권한 정의
roles Role 역할 정의
permission_overrides PermissionOverride 권한 오버라이드 (다형)

관계 구조

User (1)
  ├─ (N) UserTenant ─→ (1) Tenant
  ├─ (N) UserRole ─→ (1) Role ─→ (N) Permission
  └─ (N) UserMenuPermission

Tenant (1)
  ├─ (N) Department (parent_id → self)
  │   └─ (N:M) User via department_user
  ├─ (N) TenantUserProfile
  │   ├─ → User
  │   └─ → Department
  ├─ (N) TenantSetting
  └─ (N) [모든 BelongsToTenant 모델]

Tenants 하위 비즈니스 모델 (56개)

Tenants 도메인은 조직 내 다양한 비즈니스 기능을 포함:

  • 재무: Payment, Bill, TaxInvoice, JournalEntry, Deposit, Withdrawal 등
  • 인사: Payroll, Attendance, Leave, LeavePolicy, Salary, Loan 등
  • 영업: Sale, Client, ClientGroup, Shipment, Receivables 등
  • 재고: Stock, StockLot, MaterialInput 등
  • 결재: Approval, ApprovalForm, ApprovalLine 등
  • 기타: Calendar, CalendarSchedule, Notification 등

이 모델들의 상세 내용은 각 도메인 문서(finance.md, hr.md, sales.md 등)에서 다룸.


특이사항

  • User는 BelongsToTenant가 아님 (시스템 전역)
  • UserTenant으로 다중 테넌트 소속 지원
  • TenantUserProfile은 테넌트별 직원 정보 (직급, 입사일 등)
  • Department는 self-reference 계층 구조 (parent_id)
  • 권한은 메뉴 기반 RBAC (Spatie Permission + UserMenuPermission)