chore(WEB): 다수 컴포넌트 개선 및 CEO 대시보드 추가
- CEO 대시보드 컴포넌트 추가 - AuthenticatedLayout 개선 - 각 모듈 actions.ts 에러 핸들링 개선 - API fetch-wrapper, refresh-token 로직 개선 - ReceivablesStatus 컴포넌트 업데이트 - globals.css 스타일 업데이트 - 기타 다수 컴포넌트 수정 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -12,6 +12,8 @@
|
||||
|
||||
'use server';
|
||||
|
||||
|
||||
import { isRedirectError } from 'next/dist/client/components/redirect';
|
||||
import { serverFetch } from '@/lib/api/fetch-wrapper';
|
||||
import type { Board, BoardApiData, BoardFormData } from './types';
|
||||
|
||||
@@ -133,6 +135,7 @@ export async function getBoards(filters?: {
|
||||
const boards = result.data.map(transformApiToFrontend);
|
||||
return { success: true, data: boards };
|
||||
} catch (error) {
|
||||
if (isRedirectError(error)) throw error;
|
||||
console.error('[BoardActions] getBoards error:', error);
|
||||
return { success: false, error: '서버 오류가 발생했습니다.' };
|
||||
}
|
||||
@@ -181,6 +184,7 @@ export async function getTenantBoards(filters?: {
|
||||
const boards = result.data.map(transformApiToFrontend);
|
||||
return { success: true, data: boards };
|
||||
} catch (error) {
|
||||
if (isRedirectError(error)) throw error;
|
||||
console.error('[BoardActions] getTenantBoards error:', error);
|
||||
return { success: false, error: '서버 오류가 발생했습니다.' };
|
||||
}
|
||||
@@ -220,6 +224,7 @@ export async function getBoardByCode(code: string): Promise<{ success: boolean;
|
||||
|
||||
return { success: true, data: transformApiToFrontend(result.data) };
|
||||
} catch (error) {
|
||||
if (isRedirectError(error)) throw error;
|
||||
console.error('[BoardActions] getBoardByCode error:', error);
|
||||
return { success: false, error: '서버 오류가 발생했습니다.' };
|
||||
}
|
||||
@@ -259,6 +264,7 @@ export async function getBoardById(id: string): Promise<{ success: boolean; data
|
||||
|
||||
return { success: true, data: transformApiToFrontend(result.data) };
|
||||
} catch (error) {
|
||||
if (isRedirectError(error)) throw error;
|
||||
console.error('[BoardActions] getBoardById error:', error);
|
||||
return { success: false, error: '서버 오류가 발생했습니다.' };
|
||||
}
|
||||
@@ -307,6 +313,7 @@ export async function createBoard(
|
||||
data: transformApiToFrontend(result.data),
|
||||
};
|
||||
} catch (error) {
|
||||
if (isRedirectError(error)) throw error;
|
||||
console.error('[BoardActions] createBoard error:', error);
|
||||
return { success: false, error: '서버 오류가 발생했습니다.' };
|
||||
}
|
||||
@@ -356,6 +363,7 @@ export async function updateBoard(
|
||||
data: transformApiToFrontend(result.data),
|
||||
};
|
||||
} catch (error) {
|
||||
if (isRedirectError(error)) throw error;
|
||||
console.error('[BoardActions] updateBoard error:', error);
|
||||
return { success: false, error: '서버 오류가 발생했습니다.' };
|
||||
}
|
||||
@@ -397,6 +405,7 @@ export async function deleteBoard(id: string): Promise<{ success: boolean; error
|
||||
|
||||
return { success: true };
|
||||
} catch (error) {
|
||||
if (isRedirectError(error)) throw error;
|
||||
console.error('[BoardActions] deleteBoard error:', error);
|
||||
return { success: false, error: '서버 오류가 발생했습니다.' };
|
||||
}
|
||||
@@ -424,6 +433,7 @@ export async function deleteBoardsBulk(ids: string[]): Promise<{ success: boolea
|
||||
|
||||
return { success: true };
|
||||
} catch (error) {
|
||||
if (isRedirectError(error)) throw error;
|
||||
console.error('[BoardActions] deleteBoardsBulk error:', error);
|
||||
return { success: false, error: '서버 오류가 발생했습니다.' };
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user