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

@@ -169,9 +169,9 @@ export function BoardListUnified() {
onClick={() => {
const boardCode = activeTab !== 'my' ? activeTab : boards[0]?.boardCode;
if (boardCode) {
router.push(`/ko/board/${boardCode}/create`);
router.push(`/ko/board/${boardCode}?mode=new`);
} else {
router.push('/ko/board/create');
router.push('/ko/board?mode=new');
}
}}
>
@@ -198,11 +198,11 @@ export function BoardListUnified() {
const isMyPost = item.authorId === currentUserId;
const handleRowClick = () => {
router.push(`/ko/board/${item.boardCode}/${item.id}`);
router.push(`/ko/board/${item.boardCode}/${item.id}?mode=view`);
};
const handleEdit = () => {
router.push(`/ko/board/${item.boardCode}/${item.id}/edit`);
router.push(`/ko/board/${item.boardCode}/${item.id}?mode=edit`);
};
const handleDelete = async () => {
@@ -289,11 +289,11 @@ export function BoardListUnified() {
const isMyPost = item.authorId === currentUserId;
const handleRowClick = () => {
router.push(`/ko/board/${item.boardCode}/${item.id}`);
router.push(`/ko/board/${item.boardCode}/${item.id}?mode=view`);
};
const handleEdit = () => {
router.push(`/ko/board/${item.boardCode}/${item.id}/edit`);
router.push(`/ko/board/${item.boardCode}/${item.id}?mode=edit`);
};
const handleDelete = async () => {

View File

@@ -130,7 +130,7 @@ export function BoardList() {
// ===== 액션 핸들러 =====
const handleRowClick = useCallback(
(item: Post) => {
router.push(`/ko/board/${item.boardCode}/${item.id}`);
router.push(`/ko/board/${item.boardCode}/${item.id}?mode=view`);
},
[router]
);
@@ -138,9 +138,9 @@ export function BoardList() {
const handleNewPost = useCallback(() => {
const boardCode = activeTab !== 'my' ? activeTab : boards[0]?.boardCode;
if (boardCode) {
router.push(`/ko/board/${boardCode}/create`);
router.push(`/ko/board/${boardCode}?mode=new`);
} else {
router.push('/ko/board/create');
router.push('/ko/board?mode=new');
}
}, [router, activeTab, boards]);
@@ -293,7 +293,7 @@ export function BoardList() {
size="icon"
className="h-8 w-8 text-gray-600 hover:text-gray-700 hover:bg-gray-50"
onClick={() =>
router.push(`/ko/board/${item.boardCode}/${item.id}/edit`)
router.push(`/ko/board/${item.boardCode}/${item.id}?mode=edit`)
}
>
<Pencil className="h-4 w-4" />
@@ -352,7 +352,7 @@ export function BoardList() {
variant="outline"
className="flex-1"
onClick={() =>
router.push(`/ko/board/${item.boardCode}/${item.id}/edit`)
router.push(`/ko/board/${item.boardCode}/${item.id}?mode=edit`)
}
>
<Pencil className="w-4 h-4 mr-2" />