refactor(WEB): 회계/차량/결재 등 코드 중복 제거 및 공통 훅 추출

- useAccountingListPage, useDateRange 공통 훅 추출
- accounting/shared/ 공통 컴포넌트 분리
- 회계 모듈(입금/출금/매출/매입/청구 등) 중복 로직 통합
- 차량관리 page.tsx 패턴 간소화
- 건설/결재/자재/출하/단가 등 날짜 관련 코드 공통화
- 코드 중복 제거 체크리스트 문서 추가

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
유병철
2026-02-19 19:01:41 +09:00
parent a2c3e4c41e
commit 71352923c8
80 changed files with 833 additions and 587 deletions

View File

@@ -14,6 +14,7 @@ import { usePermission } from '@/hooks/usePermission';
import { cancelSubscription, requestDataExport } from './actions';
import type { SubscriptionInfo } from './types';
import { PLAN_LABELS, SUBSCRIPTION_STATUS_LABELS } from './types';
import { formatAmountWon as formatCurrency } from '@/lib/utils/amount';
// ===== Props 타입 =====
interface SubscriptionClientProps {
@@ -31,11 +32,6 @@ const formatDate = (dateStr: string): string => {
return `${year}${month}${day}`;
};
// ===== 금액 포맷 함수 =====
const formatCurrency = (amount: number): string => {
return new Intl.NumberFormat('ko-KR').format(amount) + '원';
};
export function SubscriptionClient({ initialData }: SubscriptionClientProps) {
const { canExport } = usePermission();
const [subscription, setSubscription] = useState<SubscriptionInfo>(initialData);

View File

@@ -12,6 +12,7 @@ import { PageHeader } from '@/components/organisms/PageHeader';
import type { SubscriptionInfo } from './types';
import { PLAN_LABELS } from './types';
import { requestDataExport, cancelSubscription } from './actions';
import { formatAmountWon as formatCurrency } from '@/lib/utils/amount';
// ===== 기본 저장공간 (10GB) =====
const DEFAULT_STORAGE_LIMIT = 10 * 1024 * 1024 * 1024; // 10GB in bytes
@@ -42,11 +43,6 @@ const formatDate = (dateStr: string): string => {
return `${year}${month}${day}`;
};
// ===== 금액 포맷 함수 =====
const formatCurrency = (amount: number): string => {
return new Intl.NumberFormat('ko-KR').format(amount) + '원';
};
interface SubscriptionManagementProps {
initialData: SubscriptionInfo | null;
}