90 lines
2.9 KiB
Markdown
90 lines
2.9 KiB
Markdown
|
|
# 테넌트 / 사용자 / 권한 도메인
|
||
|
|
|
||
|
|
> **모델 수**: 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)
|