Merge origin/main into gbpark-node
Build & Deploy to K8s / build-and-deploy (push) Successful in 9m45s
Build & Deploy to K8s / build-and-deploy (push) Successful in 9m45s
부서관리 V1 슬림 스코프 + UX 리디자인, 25개 버그 일괄 수정, admin/부서관리 탭 라벨 fallback, Windows dev HMR 복원 흡수. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -6,12 +6,18 @@ import { apiClient } from "./client";
|
||||
import { Department, DepartmentMember, DepartmentFormData } from "@/types/department";
|
||||
|
||||
/**
|
||||
* 부서 목록 조회 (회사별)
|
||||
* 부서 목록 조회 (회사별).
|
||||
* options.includeDeleted=true 시 soft-delete 된 부서도 포함.
|
||||
*/
|
||||
export async function getDepartments(companyCode: string) {
|
||||
export async function getDepartments(
|
||||
companyCode: string,
|
||||
options?: { includeDeleted?: boolean },
|
||||
) {
|
||||
try {
|
||||
const url = `/departments/companies/${companyCode}/departments`;
|
||||
const response = await apiClient.get<{ success: boolean; data: Department[] }>(url);
|
||||
const response = await apiClient.get<{ success: boolean; data: Department[] }>(url, {
|
||||
params: options?.includeDeleted ? { include_deleted: true } : undefined,
|
||||
});
|
||||
return response.data;
|
||||
} catch (error: any) {
|
||||
console.error("부서 목록 조회 실패:", error);
|
||||
@@ -67,11 +73,16 @@ export async function updateDepartment(deptCode: string, data: DepartmentFormDat
|
||||
}
|
||||
|
||||
/**
|
||||
* 부서 삭제
|
||||
* 부서 삭제 (V1: soft-delete).
|
||||
* 응답 호환: 기존 { success, message } 에 data.soft_deleted=true 필드 추가.
|
||||
*/
|
||||
export async function deleteDepartment(deptCode: string) {
|
||||
try {
|
||||
const response = await apiClient.delete<{ success: boolean }>(`/departments/${deptCode}`);
|
||||
const response = await apiClient.delete<{
|
||||
success: boolean;
|
||||
message?: string;
|
||||
data?: { soft_deleted?: boolean; dept_code?: string };
|
||||
}>(`/departments/${deptCode}`);
|
||||
return response.data;
|
||||
} catch (error: any) {
|
||||
console.error("부서 삭제 실패:", error);
|
||||
@@ -79,6 +90,27 @@ export async function deleteDepartment(deptCode: string) {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 부서 복구 (V1 신규 — soft-delete 된 부서 되살리기).
|
||||
* 부모가 deleted 면 차단 (400) → "상위 부서를 먼저 복구해주세요" 메시지.
|
||||
*/
|
||||
export async function restoreDepartment(deptCode: string) {
|
||||
try {
|
||||
const response = await apiClient.post<{
|
||||
success: boolean;
|
||||
message?: string;
|
||||
data?: { dept_code?: string; restored?: boolean };
|
||||
}>(`/departments/${deptCode}/restore`);
|
||||
return response.data;
|
||||
} catch (error: any) {
|
||||
console.error("부서 복구 실패:", error);
|
||||
return {
|
||||
success: false,
|
||||
error: error.response?.data?.message || error.message,
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 부서원 목록 조회
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user