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

@@ -356,7 +356,7 @@ export function AttendanceManagement() {
const handleReasonClick = useCallback((record: AttendanceRecord) => {
if (record.reason?.documentId) {
router.push(`/ko/hr/documents/${record.reason.documentId}`);
router.push(`/ko/hr/documents/${record.reason.documentId}?mode=view`);
}
}, [router]);

View File

@@ -72,7 +72,7 @@ export function CardForm({ mode, card, onSubmit }: CardFormProps) {
const handleBack = () => {
if (mode === 'edit' && card) {
router.push(`/ko/hr/card-management/${card.id}`);
router.push(`/ko/hr/card-management/${card.id}?mode=view`);
} else {
router.push('/ko/hr/card-management');
}

View File

@@ -180,11 +180,11 @@ export function CardManagement({ initialData }: CardManagementProps) {
}, [cardToDelete]);
const handleRowClick = useCallback((row: Card) => {
router.push(`/ko/hr/card-management/${row.id}`);
router.push(`/ko/hr/card-management/${row.id}?mode=view`);
}, [router]);
const handleEdit = useCallback((id: string) => {
router.push(`/ko/hr/card-management/${id}/edit`);
router.push(`/ko/hr/card-management/${id}?mode=edit`);
}, [router]);
const openDeleteDialog = useCallback((card: Card) => {

View File

@@ -309,7 +309,7 @@ export function EmployeeManagement() {
// 핸들러
const handleAddEmployee = useCallback(() => {
router.push('/ko/hr/employee-management/new');
router.push('/ko/hr/employee-management?mode=new');
}, [router]);
const handleCSVUpload = useCallback(() => {
@@ -338,11 +338,11 @@ export function EmployeeManagement() {
}, [employeeToDelete]);
const handleRowClick = useCallback((row: Employee) => {
router.push(`/ko/hr/employee-management/${row.id}`);
router.push(`/ko/hr/employee-management/${row.id}?mode=view`);
}, [router]);
const handleEdit = useCallback((id: string) => {
router.push(`/ko/hr/employee-management/${id}/edit`);
router.push(`/ko/hr/employee-management/${id}?mode=edit`);
}, [router]);
const openDeleteDialog = useCallback((employee: Employee) => {