Merged
Conversation
- Worker: User 1:N Worker 관계, (user_id, tenant_id) unique constraint - OrganizationMember: 복합 PK (organization_id, user_id), BaseEntity 제거, status 필드 제거 - TenantWorkerMap: 복합 PK (tenant_id, worker_id), Shared Tenant 접근 관리 - WorkerRole: 복합 PK (worker_id, role_id, tenant_id), Worker 역할 관리 Related to #172, #163, #165
- existsByName 추가 (설계 B: name 필드 사용) - Deprecated 필드 사용 메서드들 @deprecated 처리 - 계층 구조 관련 메서드들 빈 결과 반환하도록 수정 Related to #172, #163, #165
- Deprecated 필드들 @deprecated 처리하여 호환성 유지 - name 필드만 사용 - from() 메서드에서 테넌트 정보 매핑 제거 (설계 B: Organization에 tenant 필드 없음) Related to #172, #163, #165
- Worker 관련 DTO 추가 (CreateWorkerRequest, WorkerResponse) - OrganizationMember 관련 DTO 추가 (AddMemberRequest, OrganizationMemberResponse) - TenantWorkerMap 관련 DTO 추가 (AssignWorkerRequest, TenantWorkerMapResponse) - WorkerRole 관련 DTO 추가 (AssignRoleRequest, WorkerRoleResponse) 이슈 #172 Phase 5 완료
- OrganizationMemberController 추가 (조직 멤버 관리 API) - WorkerController 추가 (Worker 생성 및 조회 API) - TenantWorkerController 추가 (테넌트-Worker 할당 API) - WorkerRoleController 추가 (Worker 역할 관리 API) - UserOrganizationController 추가 (사용자 조직 목록 조회 API) - OrganizationController TODO 주석 업데이트 (완료 표시) 이슈 #172 Phase 6 완료
- Worker 기반 멀티 테넌트 구조 마이그레이션 스크립트 추가 - 새로운 테이블 생성 (workers, organization_member, tenant_worker_map, worker_role) - Tenant 테이블 수정 (tenant_type 컬럼 추가, MySQL 버전 호환 처리) - 기존 데이터 마이그레이션 스크립트 (User.tenant_id, User.organization_id 이관) - 데이터 검증 쿼리 및 롤백 스크립트 포함 이슈 #172 Phase 7 완료
- OrganizationMemberControllerTest 추가 (3개 테스트) - WorkerControllerTest 추가 (3개 테스트) - TenantWorkerControllerTest 추가 (3개 테스트) - WorkerRoleControllerTest 추가 (4개 테스트) - UserOrganizationControllerTest 추가 (2개 테스트) 총 15개 테스트 모두 통과 이슈 #172 Phase 8 완료
- Worker 엔티티: tenant_id 제거, organization_id 추가 - Worker는 User 또는 Organization 중 하나에만 연결 (테넌트 독립적) - WorkerService: createWorkerFromUser, createWorkerFromOrganization 메서드 추가 - WorkerRepository: tenant_id 관련 메서드 제거, organization_id 관련 메서드 추가 - WorkerResponse: tenant_id 제거, organizationId 추가 이슈 #172 설계 C안 적용
- CloudResourceWorkerMap 엔티티 추가 (복합 PK: cloud_resource_id, worker_id) - CloudResourceWorkerMapId 복합 PK 클래스 추가 - CloudResourceWorkerMapRepository 추가 - CloudResourceWorkerService 추가 (리소스 단위 Worker 접근 권한 관리) - CloudResourceWorkerController 추가 (리소스-Worker 매핑 관리 API) - CloudResourceWorkerMapResponse DTO 추가 - TenantWorkerService, TenantWorkerController @deprecated 처리 - WorkerErrorCode: CloudResourceWorkerMap 관련 에러 코드 추가 이슈 #172 설계 C안 적용
- WorkerRole 엔티티: tenant_id 제거 (Role이 이미 tenant_id를 가짐) - WorkerRoleId: tenant 필드 제거 - WorkerRoleRepository: tenant_id 관련 쿼리 수정 (Role을 통해 필터링) - WorkerRoleService: findByWorkerIdAndTenantId, findByTenantId 메서드 제거 - WorkerRoleController: tenantId 파라미터 제거 - WorkerRoleResponse: tenant 정보는 Role을 통해 제공 이슈 #172 설계 C안 적용
- Role 엔티티: UNIQUE(tenant_id, role_key) 제약조건 추가 - Permission 엔티티: UNIQUE(tenant_id, action, resource) 제약조건 추가 - 인덱스 추가: tenant_id, role_key, action, resource - 테넌트별 역할 및 권한 중복 방지 이슈 #172 설계 C안 적용
- WorkerControllerTest: tenantId 제거, createWorkerFromUser 사용 - WorkerRoleControllerTest: tenantId 파라미터 제거, findByWorkerId만 사용 - WorkerServiceIntegrationTest: 설계 C안 시나리오에 맞게 수정 - TenantWorkerControllerTest: @deprecated 처리 이슈 #172 설계 C안 적용
- Organization 기반 Worker 생성 API 추가
- POST /api/v1/organizations/{id}/workers 엔드포인트 추가
이슈 #172 설계 C안 적용
This was referenced Dec 31, 2025
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
설계 C안 적용 - Worker 기반 멀티 테넌트 구조 리팩토링
📋 개요
이슈 #172의 설계 C안을 적용하여 Worker 기반 멀티 테넌트 구조를 구현했습니다. 기존 설계 B안에서 설계 C안으로 전환하며,
tenant_worker_map을 제거하고cloud_resource_worker_map을 추가하여 리소스 단위 접근 제어를 구현했습니다.🎯 주요 변경 사항
1. Worker 엔티티 및 서비스 수정
tenant_id제거,organization_id추가WorkerService:createWorkerFromUser(),createWorkerFromOrganization()메서드 추가WorkerRepository: 테넌트 관련 메서드 제거, Organization 관련 메서드 추가2. CloudResourceWorkerMap 추가
CloudResourceWorkerMap(복합 PK:cloud_resource_id,worker_id)access_scope필드 제거 (리소스 단위 관리로 불필요)CloudResourceWorkerService: 리소스-Worker 매핑 관리 서비스CloudResourceWorkerController: 리소스-Worker 매핑 관리 API3. TenantWorkerMap Deprecated 처리
TenantWorkerService,TenantWorkerController@deprecated 처리CloudResourceWorkerMap사용4. WorkerRole 구조 개선
WorkerRole에서tenant_id제거 (Role이 이미tenant_id를 가짐)WorkerRoleId: tenant 필드 제거WorkerRoleService: 불필요한 tenant 관련 메서드 제거WorkerRoleController:tenantId파라미터 제거5. RBAC 제약조건 강화
UNIQUE(tenant_id, role_key)제약조건 추가UNIQUE(tenant_id, action, resource)제약조건 추가🔄 설계 C안 핵심 원칙
CloudResourceWorkerMap을 통해 리소스별로 Worker 접근 권한 관리tenant_id를 가지므로 WorkerRole에는 중복 제거📝 변경된 파일
엔티티
Worker.java: tenant_id 제거, organization_id 추가WorkerRole.java: tenant_id 제거CloudResourceWorkerMap.java: 새로 추가Role.java: UNIQUE 제약조건 추가Permission.java: UNIQUE 제약조건 추가서비스
WorkerService.java: User/Organization 기반 Worker 생성 메서드 추가CloudResourceWorkerService.java: 새로 추가WorkerRoleService.java: tenant 관련 메서드 제거TenantWorkerService.java: @deprecated 처리컨트롤러
WorkerController.java: 주석 수정 (설계 C 기준)CloudResourceWorkerController.java: 새로 추가WorkerRoleController.java: tenantId 파라미터 제거TenantWorkerController.java: @deprecated 처리OrganizationController.java: Organization 기반 Worker 생성 API 추가DTO
WorkerResponse.java: tenant_id 제거, organizationId 추가WorkerRoleResponse.java: tenant 정보는 Role을 통해 제공CloudResourceWorkerMapResponse.java: 새로 추가테스트
✅ 검증 완료
🔗 관련 이슈
Closes #172
📚 참고 문서