- 52개 이상의 컴포넌트에 isNextRedirectError 처리 추가 - Server Action의 redirect() 에러가 catch 블록에서 삼켜지는 문제 해결 - access_token + refresh_token 모두 만료 시 정상적으로 로그인 페이지로 리다이렉트 수정된 영역: - accounting: 10개 컴포넌트 - production: 12개 컴포넌트 - hr: 5개 컴포넌트 - settings: 8개 컴포넌트 - approval: 5개 컴포넌트 - items: 20개+ 컴포넌트 - board: 5개 컴포넌트 - quality: 4개 컴포넌트 - material, outbound, quotes 등 기타 컴포넌트 Co-Authored-By: Claude <noreply@anthropic.com>
350 lines
13 KiB
TypeScript
350 lines
13 KiB
TypeScript
import type { CEODashboardData } from './types';
|
||
|
||
/**
|
||
* CEO 대시보드 목데이터
|
||
* TODO: API 연동 시 이 파일을 API 호출로 대체
|
||
*/
|
||
export const mockData: CEODashboardData = {
|
||
todayIssue: [
|
||
{ id: '1', label: '수주', count: 3, path: '/sales/order-management-sales', isHighlighted: false },
|
||
{ id: '2', label: '채권 추심', count: 3, path: '/accounting/bad-debt-collection', isHighlighted: false },
|
||
{ id: '3', label: '안전 재고', count: 3, path: '/material/stock-status', isHighlighted: true },
|
||
{ id: '4', label: '세금 신고', count: '부가세 신고 D-15', path: '/accounting/tax', isHighlighted: false },
|
||
{ id: '5', label: '신규 업체 등록', count: 3, path: '/accounting/vendors', isHighlighted: false },
|
||
{ id: '6', label: '연차', count: 3, path: '/hr/vacation-management', isHighlighted: false },
|
||
{ id: '7', label: '발주', count: 3, path: '/construction/order/order-management', isHighlighted: false },
|
||
{ id: '8', label: '결재 요청', count: 3, path: '/approval/inbox', isHighlighted: false },
|
||
],
|
||
dailyReport: {
|
||
date: '2026년 1월 5일 월요일',
|
||
cards: [
|
||
{ id: 'dr1', label: '현금성 자산 합계', amount: 3050000000 },
|
||
{ id: 'dr2', label: '외국환(USD) 합계', amount: 11123000, currency: 'USD' },
|
||
{ id: 'dr3', label: '입금 합계', amount: 1020000000 },
|
||
{ id: 'dr4', label: '출금 합계', amount: 350000000 },
|
||
],
|
||
checkPoints: [
|
||
{
|
||
id: 'dr-cp1',
|
||
type: 'success',
|
||
message: '어제 3.5억원 출금했습니다. 최근 7일 평균 대비 2배 이상으로 점검이 필요합니다.',
|
||
highlights: [
|
||
{ text: '3.5억원 출금', color: 'red' },
|
||
{ text: '점검이 필요', color: 'red' },
|
||
],
|
||
},
|
||
{
|
||
id: 'dr-cp2',
|
||
type: 'success',
|
||
message: '어제 10.2억원이 입금되었습니다. 대한건설 선수금 입금이 주요 원인입니다.',
|
||
highlights: [
|
||
{ text: '10.2억원', color: 'green' },
|
||
{ text: '입금', color: 'green' },
|
||
{ text: '대한건설 선수금 입금', color: 'green' },
|
||
],
|
||
},
|
||
{
|
||
id: 'dr-cp3',
|
||
type: 'success',
|
||
message: '총 현금성 자산이 300.2억원입니다. 월 운영비용 대비 18개월분이 확보되어 안정적입니다.',
|
||
highlights: [
|
||
{ text: '18개월분', color: 'blue' },
|
||
{ text: '안정적', color: 'blue' },
|
||
],
|
||
},
|
||
],
|
||
},
|
||
monthlyExpense: {
|
||
cards: [
|
||
{ id: 'me1', label: '매입', amount: 3050000000, previousLabel: '전월 대비 +10.5%' },
|
||
{ id: 'me2', label: '카드', amount: 30123000, previousLabel: '전월 대비 +10.5%' },
|
||
{ id: 'me3', label: '발행어음', amount: 30123000, previousLabel: '전월 대비 +10.5%' },
|
||
{ id: 'me4', label: '총 예상 지출 합계', amount: 350000000, previousLabel: '전월 대비 +10.5%' },
|
||
],
|
||
checkPoints: [
|
||
{
|
||
id: 'me-cp1',
|
||
type: 'success',
|
||
message: '이번 달 예상 지출이 전월 대비 15% 증가했습니다. 매입 비용 증가가 주요 원인입니다.',
|
||
highlights: [
|
||
{ text: '전월 대비 15% 증가', color: 'red' },
|
||
],
|
||
},
|
||
{
|
||
id: 'me-cp2',
|
||
type: 'success',
|
||
message: '이번 달 예상 지출이 예산을 12% 초과했습니다. 비용 항목별 점검이 필요합니다.',
|
||
highlights: [
|
||
{ text: '예산을 12% 초과', color: 'red' },
|
||
],
|
||
},
|
||
{
|
||
id: 'me-cp3',
|
||
type: 'success',
|
||
message: '이번 달 예상 지출이 전월 대비 8% 감소했습니다. {계정과목명} 비용이 줄었습니다.',
|
||
highlights: [
|
||
{ text: '전월 대비 8% 감소', color: 'green' },
|
||
],
|
||
},
|
||
],
|
||
},
|
||
cardManagement: {
|
||
warningBanner: '가지급금 인정이자 4.6%, 법인세 및 연말정산 시 대표자 종합세 가중 주의',
|
||
cards: [
|
||
{ id: 'cm1', label: '카드', amount: 30123000, previousLabel: '미정리 5건 (가지급금 예정)' },
|
||
{ id: 'cm2', label: '가지급금', amount: 350000000, previousLabel: '전월 대비 +10.5%' },
|
||
{ id: 'cm3', label: '법인세 예상 가중', amount: 3123000, previousLabel: '추가 세금 +10.5%' },
|
||
{ id: 'cm4', label: '대표자 종합세 예상 가중', amount: 3123000, previousLabel: '추가 세금 +10.5%' },
|
||
],
|
||
checkPoints: [
|
||
{
|
||
id: 'cm-cp1',
|
||
type: 'success',
|
||
message: '법인카드 사용 총 850만원이 가지급금으로 전환되었습니다. 연 4.6% 인정이자가 발생합니다.',
|
||
highlights: [
|
||
{ text: '850만원', color: 'red' },
|
||
{ text: '가지급금', color: 'red' },
|
||
{ text: '연 4.6% 인정이자', color: 'red' },
|
||
],
|
||
},
|
||
{
|
||
id: 'cm-cp2',
|
||
type: 'success',
|
||
message: '현재 가지급금 3.5원 × 4.6% = 연 약 1,400만원의 인정이자가 발생 중입니다.',
|
||
highlights: [
|
||
{ text: '연 약 1,400만원의 인정이자', color: 'red' },
|
||
],
|
||
},
|
||
{
|
||
id: 'cm-cp3',
|
||
type: 'success',
|
||
message: '상품권/귀금속 등 접대비 불인정 항목 결제 감지. 가지급금 처리 예정입니다.',
|
||
highlights: [
|
||
{ text: '불인정 항목 결제 감지', color: 'red' },
|
||
],
|
||
},
|
||
{
|
||
id: 'cm-cp4',
|
||
type: 'success',
|
||
message: '주말 카드 사용 100만원 결제 감지. 업무관련성 소명이 어려울 수 있으니 기록을 남겨주세요.',
|
||
highlights: [
|
||
{ text: '주말 카드 사용 100만원 결제 감지', color: 'red' },
|
||
],
|
||
},
|
||
],
|
||
},
|
||
entertainment: {
|
||
cards: [
|
||
{ id: 'et1', label: '매출', amount: 30530000000 },
|
||
{ id: 'et2', label: '{1사분기} 접대비 총 한도', amount: 40123000 },
|
||
{ id: 'et3', label: '{1사분기} 접대비 잔여한도', amount: 30123000 },
|
||
{ id: 'et4', label: '{1사분기} 접대비 사용금액', amount: 10000000 },
|
||
],
|
||
checkPoints: [
|
||
{
|
||
id: 'et-cp1',
|
||
type: 'success',
|
||
message: '{1사분기} 접대비 사용 1,000만원 / 한도 4,012만원 (75%). 여유 있게 운영 중입니다.',
|
||
highlights: [
|
||
{ text: '1,000만원', color: 'green' },
|
||
{ text: '4,012만원 (75%)', color: 'green' },
|
||
],
|
||
},
|
||
{
|
||
id: 'et-cp2',
|
||
type: 'success',
|
||
message: '접대비 한도 85% 도달. 잔여 한도 600만원입니다. 사용 계획을 점검해 주세요.',
|
||
highlights: [
|
||
{ text: '잔여 한도 600만원', color: 'red' },
|
||
],
|
||
},
|
||
{
|
||
id: 'et-cp3',
|
||
type: 'error',
|
||
message: '접대비 한도 초과 320만원 발생. 초과분은 손금불산입되어 법인세 부담이 증가합니다.',
|
||
highlights: [
|
||
{ text: '320만원 발생', color: 'red' },
|
||
],
|
||
},
|
||
{
|
||
id: 'et-cp4',
|
||
type: 'error',
|
||
message: '접대비 사용 중 3건(45만원)의 거래처 정보가 누락되었습니다. 기록을 보완해 주세요.',
|
||
highlights: [
|
||
{ text: '3건(45만원)', color: 'red' },
|
||
{ text: '거래처 정보가 누락', color: 'red' },
|
||
],
|
||
},
|
||
],
|
||
},
|
||
welfare: {
|
||
cards: [
|
||
{ id: 'wf1', label: '당해년도 복리후생비 한도', amount: 30123000 },
|
||
{ id: 'wf2', label: '{1사분기} 복리후생비 총 한도', amount: 10123000 },
|
||
{ id: 'wf3', label: '{1사분기} 복리후생비 잔여한도', amount: 5123000 },
|
||
{ id: 'wf4', label: '{1사분기} 복리후생비 사용금액', amount: 5123000 },
|
||
],
|
||
checkPoints: [
|
||
{
|
||
id: 'wf-cp1',
|
||
type: 'success',
|
||
message: '1인당 월 복리후생비 20만원. 업계 평균(15~25만원) 내 정상 운영 중입니다.',
|
||
highlights: [
|
||
{ text: '1인당 월 복리후생비 20만원', color: 'green' },
|
||
],
|
||
},
|
||
{
|
||
id: 'wf-cp2',
|
||
type: 'error',
|
||
message: '식대가 월 25만원으로 비과세 한도(20만원)를 초과했습니다. 초과분은 근로소득 과세됩니다.',
|
||
highlights: [
|
||
{ text: '식대가 월 25만원으로', color: 'red' },
|
||
{ text: '초과', color: 'red' },
|
||
],
|
||
},
|
||
],
|
||
},
|
||
receivable: {
|
||
cards: [
|
||
{
|
||
id: 'rv1',
|
||
label: '누적 미수금',
|
||
amount: 30123000,
|
||
subItems: [
|
||
{ label: '매출', value: 60123000 },
|
||
{ label: '입금', value: 30000000 },
|
||
],
|
||
},
|
||
{
|
||
id: 'rv2',
|
||
label: '당월 미수금',
|
||
amount: 10123000,
|
||
subItems: [
|
||
{ label: '매출', value: 60123000 },
|
||
{ label: '입금', value: 30000000 },
|
||
],
|
||
},
|
||
{
|
||
id: 'rv3',
|
||
label: '회사명',
|
||
amount: 3123000,
|
||
subItems: [
|
||
{ label: '매출', value: 6123000 },
|
||
{ label: '입금', value: 3000000 },
|
||
],
|
||
},
|
||
{
|
||
id: 'rv4',
|
||
label: '회사명',
|
||
amount: 2123000,
|
||
subItems: [
|
||
{ label: '매출', value: 6123000 },
|
||
{ label: '입금', value: 3000000 },
|
||
],
|
||
},
|
||
],
|
||
checkPoints: [
|
||
{
|
||
id: 'rv-cp1',
|
||
type: 'success',
|
||
message: '90일 이상 장기 미수금 3건(2,500만원) 발생. 회수 조치가 필요합니다.',
|
||
highlights: [
|
||
{ text: '90일 이상 장기 미수금 3건(2,500만원) 발생', color: 'red' },
|
||
],
|
||
},
|
||
{
|
||
id: 'rv-cp2',
|
||
type: 'success',
|
||
message: '(주)대한전자 미수금 1,500만원으로 전체의 35%를 차지합니다. 리스크 분산이 필요합니다.',
|
||
highlights: [
|
||
{ text: '(주)대한전자 미수금 1,500만원으로 전체의 35%를', color: 'red' },
|
||
],
|
||
},
|
||
],
|
||
detailButtonPath: '/accounting/receivables-status',
|
||
},
|
||
debtCollection: {
|
||
cards: [
|
||
{ id: 'dc1', label: '누적 악성채권', amount: 350000000, subLabel: '25건' },
|
||
{ id: 'dc2', label: '추심중', amount: 30123000, subLabel: '12건' },
|
||
{ id: 'dc3', label: '법적조치', amount: 3123000, subLabel: '3건' },
|
||
{ id: 'dc4', label: '회수완료', amount: 280000000, subLabel: '10건' },
|
||
],
|
||
checkPoints: [
|
||
{
|
||
id: 'dc-cp1',
|
||
type: 'success',
|
||
message: '(주)대한전자 건 지급명령 신청 완료. 법원 결정까지 약 2주 소요 예정입니다.',
|
||
highlights: [{ text: '(주)대한전자 건 지급명령 신청 완료.', color: 'red' }],
|
||
},
|
||
{
|
||
id: 'dc-cp2',
|
||
type: 'success',
|
||
message: '(주)삼성테크 건 회수 불가 판정. 대손 처리 검토가 필요합니다.',
|
||
highlights: [{ text: '(주)삼성테크 건 회수 불가 판정.', color: 'red' }],
|
||
},
|
||
],
|
||
detailButtonPath: '/accounting/bad-debt-collection',
|
||
},
|
||
vat: {
|
||
cards: [
|
||
{ id: 'vat1', label: '매출세액', amount: 3050000000 },
|
||
{ id: 'vat2', label: '매입세액', amount: 2050000000 },
|
||
{ id: 'vat3', label: '예상 납부세액', amount: 110000000 },
|
||
{ id: 'vat4', label: '세금계산서 미발행', amount: 3, unit: '건' },
|
||
],
|
||
checkPoints: [
|
||
{
|
||
id: 'vat-cp1',
|
||
type: 'success',
|
||
message: '2026년 1기 예정신고 기준, 예상 환급세액은 5,200,000원입니다. 설비투자에 따른 매입세액 증가가 주요 원인입니다.',
|
||
highlights: [{ text: '2026년 1기 예정신고 기준, 예상 환급세액은 5,200,000원입니다.', color: 'red' }],
|
||
},
|
||
{
|
||
id: 'vat-cp2',
|
||
type: 'success',
|
||
message: '2026년 1기 예정신고 기준, 예상 납부세액은 110,100,000원입니다. 전기 대비 12.9% 증가했으며, 이는 매출 증가에 따른 정상적인 증가로 판단됩니다.',
|
||
highlights: [{ text: '2026년 1기 예정신고 기준, 예상 납부세액은 110,100,000원입니다.', color: 'red' }],
|
||
},
|
||
],
|
||
},
|
||
calendarSchedules: [
|
||
{
|
||
id: 'sch1',
|
||
title: '제목',
|
||
startDate: '2026-01-01',
|
||
endDate: '2026-01-04',
|
||
startTime: '09:00',
|
||
endTime: '12:00',
|
||
type: 'schedule',
|
||
department: '부서명',
|
||
},
|
||
{
|
||
id: 'sch2',
|
||
title: '제목',
|
||
startDate: '2026-01-06',
|
||
endDate: '2026-01-06',
|
||
type: 'schedule',
|
||
personName: '홍길동',
|
||
},
|
||
{
|
||
id: 'sch3',
|
||
title: '제목',
|
||
startDate: '2026-01-06',
|
||
endDate: '2026-01-06',
|
||
startTime: '09:00',
|
||
endTime: '12:00',
|
||
type: 'order',
|
||
department: '부서명',
|
||
},
|
||
{
|
||
id: 'sch4',
|
||
title: '제목',
|
||
startDate: '2026-01-06',
|
||
endDate: '2026-01-06',
|
||
startTime: '12:35',
|
||
type: 'construction',
|
||
personName: '홍길동',
|
||
},
|
||
],
|
||
}; |