feat: ESLint 정리 및 전체 코드 품질 개선

- eslint.config.mjs 규칙 강화 및 정리
- 전역 unused import/변수 제거 (312개 파일)
- next.config.ts, middleware, proxy route 개선
- CopyableCell molecule 추가
- 회계/결재/HR/생산/건설/품질/영업 등 전 도메인 lint 정리
- IntegratedListTemplateV2, DataTable, MobileCard 등 공통 컴포넌트 개선
- execute-server-action 에러 핸들링 보강
This commit is contained in:
유병철
2026-03-11 10:27:10 +09:00
parent 924726cba1
commit 81affdc441
315 changed files with 1977 additions and 1344 deletions

View File

@@ -29,7 +29,6 @@ import type { Post } from '../types';
import { getBoards } from '../BoardManagement/actions';
import { getPosts, getMyPosts, deletePost } from '../actions';
import type { Board } from '../BoardManagement/types';
import { toast } from 'sonner';
import { DeleteConfirmDialog } from '@/components/ui/confirm-dialog';
export function BoardListUnified() {
@@ -133,7 +132,7 @@ export function BoardListUnified() {
totalCount: 0,
};
},
deleteItem: async (id: string) => {
deleteItem: async (_id: string) => {
// 게시글 삭제는 boardCode가 필요하므로 별도 처리
// UniversalListPage에서는 사용하지 않고 커스텀 삭제 처리
return { success: false, error: 'Use custom delete handler' };
@@ -143,10 +142,10 @@ export function BoardListUnified() {
// ===== 테이블 컬럼 =====
columns: [
{ key: 'no', label: 'No.', className: 'w-[60px] text-center' },
{ key: 'title', label: '제목', className: 'min-w-[300px]' },
{ key: 'author', label: '작성자', className: 'w-[120px]' },
{ key: 'createdAt', label: '등록일', className: 'w-[120px]' },
{ key: 'viewCount', label: '조회수', className: 'w-[80px] text-center' },
{ key: 'title', label: '제목', className: 'min-w-[300px]', copyable: true },
{ key: 'author', label: '작성자', className: 'w-[120px]', copyable: true },
{ key: 'createdAt', label: '등록일', className: 'w-[120px]', copyable: true },
{ key: 'viewCount', label: '조회수', className: 'w-[80px] text-center', copyable: true },
{ key: 'actions', label: '작업', className: 'w-[100px] text-center' },
],
@@ -161,7 +160,7 @@ export function BoardListUnified() {
detailMode: 'none', // 커스텀 라우팅 사용 (boardCode 포함)
// ===== 헤더 액션 =====
headerActions: ({ onCreate }) => (
headerActions: ({ onCreate: _onCreate }) => (
<>
<DateRangeSelector
startDate={startDate}

View File

@@ -132,7 +132,7 @@ export function BoardList() {
}, []);
// ===== 액션 핸들러 =====
const handleRowClick = useCallback(
const _handleRowClick = useCallback(
(item: Post) => {
router.push(`/ko/board/${item.boardCode}/${item.id}?mode=view`);
},
@@ -224,10 +224,10 @@ export function BoardList() {
columns: [
{ key: 'no', label: 'No.', className: 'w-[60px] text-center' },
{ key: 'title', label: '제목', className: 'min-w-[300px]', sortable: true },
{ key: 'author', label: '작성자', className: 'w-[120px]', sortable: true },
{ key: 'createdAt', label: '등록일', className: 'w-[120px]', sortable: true },
{ key: 'viewCount', label: '조회수', className: 'w-[80px] text-center', sortable: true },
{ key: 'title', label: '제목', className: 'min-w-[300px]', sortable: true, copyable: true },
{ key: 'author', label: '작성자', className: 'w-[120px]', sortable: true, copyable: true },
{ key: 'createdAt', label: '등록일', className: 'w-[120px]', sortable: true, copyable: true },
{ key: 'viewCount', label: '조회수', className: 'w-[80px] text-center', sortable: true, copyable: true },
{ key: 'actions', label: '작업', className: 'w-[100px] text-center' },
],