refactor: 로딩 스피너 표준화 및 프로젝트 헬스 개선

- LoadingSpinner 컴포넌트 5가지 변형 구현
  - LoadingSpinner (인라인/버튼용)
  - ContentLoadingSpinner (상세/수정 페이지)
  - PageLoadingSpinner (페이지 전환)
  - TableLoadingSpinner (테이블/리스트)
  - ButtonSpinner (버튼 내부)
- 18개+ 페이지 로딩 UI 표준화
  - HR 페이지 (사원, 휴가, 부서, 급여, 근태)
  - 영업 페이지 (견적, 거래처)
  - 게시판, 팝업관리, 품목기준정보
- API 키 보안 개선 (NEXT_PUBLIC_API_KEY → API_KEY)
- Textarea 다크모드 스타일 개선
- DropdownField Radix UI Select 버그 수정 (key prop)
- 프로젝트 헬스 개선 계획서 문서화

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
byeongcheolryu
2025-12-20 14:33:11 +09:00
parent c6b605200d
commit d7f491fa84
50 changed files with 666 additions and 246 deletions

View File

@@ -491,8 +491,6 @@ export function BillManagement({ initialVendorId, initialBillType }: BillManagem
getItemId={(item: BillRecord) => item.id}
renderTableRow={renderTableRow}
renderMobileCard={renderMobileCard}
addButtonLabel="어음 등록"
onAddClick={() => router.push('/ko/accounting/bills/new')}
pagination={{
currentPage,
totalPages,

View File

@@ -92,6 +92,7 @@ const generateMockData = (): PurchaseRecord[] => {
sourceDocument: i % 3 === 0 ? {
type: i % 2 === 0 ? 'proposal' : 'expense_report',
documentNo: `DOC-2025-${String(i + 1).padStart(4, '0')}`,
title: `${i % 2 === 0 ? '품의' : '지출'} 건 - ${vendors[i % vendors.length]}`,
expectedCost: supplyAmount,
} : undefined,
withdrawalAccount: {