진행중

This commit is contained in:
2026-04-08 04:55:12 +09:00
parent 4603ac7fd6
commit 06ab990dbd
23 changed files with 3679 additions and 1098 deletions
+15 -15
View File
@@ -20,9 +20,9 @@ interface CompanySwitcherProps {
}
/**
* WACE 관리자 전용: 회사 선택 및 전환 컴포넌트
* Invyone 관리자 전용: 회사 선택 및 전환 컴포넌트
*
* - WACE 관리자(company_code = "*", userType = "SUPER_ADMIN")만 표시
* - Invyone 관리자(company_code = "*", userType = "SUPER_ADMIN")만 표시
* - 회사 선택 시 해당 회사로 전환하여 시스템 사용
* - JWT 토큰 재발급으로 company_code 변경
*/
@@ -33,15 +33,15 @@ export function CompanySwitcher({ onClose, isOpen = false }: CompanySwitcherProp
const [searchText, setSearchText] = useState("");
const [loading, setLoading] = useState(false);
// WACE 관리자 권한 체크 (user_type만 확인)
const isWaceAdmin = user?.user_type === "SUPER_ADMIN";
// Invyone 관리자 권한 체크 (user_type만 확인)
const isInvyoneAdmin = user?.user_type === "SUPER_ADMIN";
// 현재 선택된 회사명 표시
const currentCompanyName = React.useMemo(() => {
if (!user?.company_code) return "로딩 중...";
if (user.company_code === "*") {
return "WACE (최고 관리자)";
return "Invyone (최고 관리자)";
}
// companies 배열에서 현재 회사 찾기
@@ -51,10 +51,10 @@ export function CompanySwitcher({ onClose, isOpen = false }: CompanySwitcherProp
// 회사 목록 조회
useEffect(() => {
if (isWaceAdmin && isOpen) {
if (isInvyoneAdmin && isOpen) {
fetchCompanies();
}
}, [isWaceAdmin, isOpen]);
}, [isInvyoneAdmin, isOpen]);
// 검색 필터링
useEffect(() => {
@@ -75,24 +75,24 @@ export function CompanySwitcher({ onClose, isOpen = false }: CompanySwitcherProp
const response = await apiClient.get("/admin/companies/db");
if (response.data.success) {
// 활성 상태의 회사만 필터링 + company_code="*" 제외 (WACE는 별도 추가)
// 활성 상태의 회사만 필터링 + company_code="*" 제외 (Invyone는 별도 추가)
const activeCompanies = response.data.data
.filter((c: Company) => c.company_code !== "*") // DB의 "*" 제외
.filter((c: Company) => c.status === "active" || !c.status)
.sort((a: Company, b: Company) => a.company_name.localeCompare(b.company_name));
// WACE 복귀 옵션 추가
const companiesWithWace: Company[] = [
// Invyone 복귀 옵션 추가
const companiesWithInvyone: Company[] = [
{
company_code: "*",
company_name: "WACE (최고 관리자)",
company_name: "Invyone (최고 관리자)",
status: "active",
},
...activeCompanies,
];
setCompanies(companiesWithWace);
setFilteredCompanies(companiesWithWace);
setCompanies(companiesWithInvyone);
setFilteredCompanies(companiesWithInvyone);
}
} catch (error) {
logger.error("회사 목록 조회 실패", error);
@@ -124,8 +124,8 @@ export function CompanySwitcher({ onClose, isOpen = false }: CompanySwitcherProp
}
};
// WACE 관리자가 아니면 렌더링하지 않음
if (!isWaceAdmin) {
// Invyone 관리자가 아니면 렌더링하지 않음
if (!isInvyoneAdmin) {
return null;
}