feat(WEB): 전체 페이지 ?mode= URL 네비게이션 패턴 적용

- 등록(?mode=new), 상세(?mode=view), 수정(?mode=edit) URL 패턴 일괄 적용
- 중복 패턴 제거: /edit?mode=edit → ?mode=edit (16개 파일)
- 제목 일관성: {기능} 등록/상세/수정 패턴 적용
- 검수 체크리스트 문서 추가 (79개 페이지)
- UniversalListPage, IntegratedDetailTemplate 공통 컴포넌트 개선

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
유병철
2026-01-25 12:27:43 +09:00
parent 72f1accbe4
commit f6551c7e8b
162 changed files with 2907 additions and 480 deletions

View File

@@ -233,18 +233,19 @@ export default function PartnerForm({ mode, partnerId, initialData }: PartnerFor
}, []);
// 동적 Config (모드별 타이틀/설명)
// Note: IntegratedDetailTemplate이 모드에 따라 '등록'/'수정' 자동 추가
const dynamicConfig = useMemo(() => {
if (isNewMode) {
return {
...partnerConfig,
title: '거래처 등록',
title: '거래처',
description: '새로운 거래처를 등록합니다',
};
}
if (isEditMode) {
return {
...partnerConfig,
title: '거래처 수정',
title: '거래처',
description: '거래처 정보를 수정합니다',
};
}
@@ -628,7 +629,7 @@ export default function PartnerForm({ mode, partnerId, initialData }: PartnerFor
return (
<IntegratedDetailTemplate
config={dynamicConfig}
mode={mode}
mode={mode === 'new' ? 'create' : mode}
initialData={{}}
itemId={partnerId}
isLoading={false}

View File

@@ -70,18 +70,18 @@ export default function PartnerListClient({ initialData = [], initialStats }: Pa
// ===== 핸들러 =====
const handleRowClick = useCallback(
(item: Partner) => {
router.push(`/ko/construction/project/bidding/partners/${item.id}`);
router.push(`/ko/construction/project/bidding/partners/${item.id}?mode=view`);
},
[router]
);
const handleCreate = useCallback(() => {
router.push('/ko/construction/project/bidding/partners/new');
router.push('/ko/construction/project/bidding/partners?mode=new');
}, [router]);
const handleEdit = useCallback(
(item: Partner) => {
router.push(`/ko/construction/project/bidding/partners/${item.id}/edit`);
router.push(`/ko/construction/project/bidding/partners/${item.id}?mode=edit`);
},
[router]
);