From ef7914b19ec0788fefc81aae17642145959b9c3d Mon Sep 17 00:00:00 2001 From: leeleeleeleejun Date: Mon, 10 Nov 2025 12:29:35 +0900 Subject: [PATCH 01/12] =?UTF-8?q?refactor:=20API=20path=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/admin/src/consts/path.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/apps/admin/src/consts/path.ts b/apps/admin/src/consts/path.ts index cc14fdd..a20c437 100644 --- a/apps/admin/src/consts/path.ts +++ b/apps/admin/src/consts/path.ts @@ -3,14 +3,14 @@ export const BASE_URL = process.env.NEXT_PUBLIC_API_URL || '' export const API_PATH = { REQUEST: { GET: { - LIST: `/request/places`, - DETAIL: (id: string | number) => `/request/places/${id}`, + LIST: `/requests/places`, + DETAIL: (id: string | number) => `/requests/places/${id}`, }, - POST: (id: string | number) => `/request/places/${id}/review`, + POST: (id: string | number) => `/requests/places/${id}/review`, }, } as const export const CLIENT_PATH = { MAIN: '/', - REQUEST_DETAIL: (id: string | number) => `/request/${id}`, + REQUEST_DETAIL: (id: string | number) => `/requests/${id}`, } as const From 460018f9f8439eee255b959eeab307a821aa936b Mon Sep 17 00:00:00 2001 From: leeleeleeleejun Date: Mon, 10 Nov 2025 12:29:56 +0900 Subject: [PATCH 02/12] =?UTF-8?q?fix:=20=EC=88=98=EC=A0=95=EB=90=9C=20?= =?UTF-8?q?=EC=BA=A0=ED=8D=BC=EC=8A=A4=20=EC=9D=B4=EB=A6=84=20'CHEANAN'?= =?UTF-8?q?=EC=9D=84=20'CHEONAN'=EC=9C=BC=EB=A1=9C=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/admin/src/consts/campus.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/admin/src/consts/campus.ts b/apps/admin/src/consts/campus.ts index d0347c0..d3e9bda 100644 --- a/apps/admin/src/consts/campus.ts +++ b/apps/admin/src/consts/campus.ts @@ -1,6 +1,6 @@ export const CAMPUS = { SINGWAN: '신관', - CHEANAN: '천안', + CHEONAN: '천안', YESAN: '예산', } as const From 20877b5bdfdf2761f7ad0f9771a19e8c805c7424 Mon Sep 17 00:00:00 2001 From: leeleeleeleejun Date: Mon, 10 Nov 2025 12:33:50 +0900 Subject: [PATCH 03/12] =?UTF-8?q?feat:=20Request=20=ED=83=80=EC=9E=85=20?= =?UTF-8?q?=ED=95=84=EB=93=9C=20=ED=99=95=EC=9E=A5(campus,=20categories,?= =?UTF-8?q?=20tags)=20=EB=B0=8F=20RequestReview=20=ED=83=80=EC=9E=85=20?= =?UTF-8?q?=EC=8B=A0=EA=B7=9C=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/admin/src/app/_api/types.ts | 17 ++++++++++++++++- apps/admin/src/app/request/[id]/_api/types.ts | 19 ++++++------------- 2 files changed, 22 insertions(+), 14 deletions(-) diff --git a/apps/admin/src/app/_api/types.ts b/apps/admin/src/app/_api/types.ts index dc9eaea..6d0acd4 100644 --- a/apps/admin/src/app/_api/types.ts +++ b/apps/admin/src/app/_api/types.ts @@ -1,8 +1,23 @@ import type { IconType } from '@repo/ui/components/Icon' +import { CampusType } from '@/consts/campus' + +export type Category = { + id: string + name: string + iconKey: IconType +} + +export type Tag = { + id: string + name: string + iconKey: IconType +} export type Request = { placeId: string placeName: string - icon: IconType requestDate: string + campus: CampusType + categories: Category[] + tags: Tag[] } diff --git a/apps/admin/src/app/request/[id]/_api/types.ts b/apps/admin/src/app/request/[id]/_api/types.ts index 4316ade..ceed2ae 100644 --- a/apps/admin/src/app/request/[id]/_api/types.ts +++ b/apps/admin/src/app/request/[id]/_api/types.ts @@ -1,22 +1,10 @@ -import type { IconType } from '@repo/ui/components/Icon' import { Coord } from '../_utils/toLatLng' +import type { Tag, Category } from '@/app/_api/types' type Photo = { photoId: string; photoUrl: string; displayOrder: number } type Menu = { name: string; price: number; isRecommended: boolean } -type Category = { - id: string - name: string - iconKey: IconType -} - -type Tag = { - id: string - name: string - iconKey: IconType -} - export type RequestDetail = { placeId: string placeName: string @@ -29,3 +17,8 @@ export type RequestDetail = { categories: Category[] tags: Tag[] } + +export type RequestReview = { + status: 'APPROVED' | 'REJECTED' + rejectedReason: string | null +} From aea1457af487d42399795997e1a704bcedcc9259 Mon Sep 17 00:00:00 2001 From: leeleeleeleejun Date: Mon, 10 Nov 2025 12:49:16 +0900 Subject: [PATCH 04/12] =?UTF-8?q?feat:=20=EC=9A=94=EC=B2=AD=EB=AA=A9?= =?UTF-8?q?=EB=A1=9D=20=EC=A1=B0=ED=9A=8C=20api=20=EB=A1=9C=EC=A7=81=20?= =?UTF-8?q?=EC=97=B0=EA=B2=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/admin/src/app/_api/services/request.ts | 8 +++ .../RequestListItem/RequestListItem.tsx | 4 +- apps/admin/src/app/page.tsx | 49 +++++++++---------- 3 files changed, 34 insertions(+), 27 deletions(-) create mode 100644 apps/admin/src/app/_api/services/request.ts diff --git a/apps/admin/src/app/_api/services/request.ts b/apps/admin/src/app/_api/services/request.ts new file mode 100644 index 0000000..802ebde --- /dev/null +++ b/apps/admin/src/app/_api/services/request.ts @@ -0,0 +1,8 @@ +import { API_PATH, BASE_URL } from '@/consts/path' +import { Request } from '@/app/_api/types' + +export const getRequests = async (): Promise => { + const response = await fetch(BASE_URL + API_PATH.REQUEST.GET.LIST) + const { data: res } = await response.json() + return res +} diff --git a/apps/admin/src/app/_components/RequestListItem/RequestListItem.tsx b/apps/admin/src/app/_components/RequestListItem/RequestListItem.tsx index 5d4d528..c2dc640 100644 --- a/apps/admin/src/app/_components/RequestListItem/RequestListItem.tsx +++ b/apps/admin/src/app/_components/RequestListItem/RequestListItem.tsx @@ -8,7 +8,7 @@ import { Request } from '@/app/_api/types' export const RequestListItem = ({ placeId, placeName, - icon, + categories, requestDate, }: Request) => (
  • @@ -21,7 +21,7 @@ export const RequestListItem = ({ {placeName} - + 등록 신청 일자: {requestDate} diff --git a/apps/admin/src/app/page.tsx b/apps/admin/src/app/page.tsx index 1339cef..65f52c7 100644 --- a/apps/admin/src/app/page.tsx +++ b/apps/admin/src/app/page.tsx @@ -1,37 +1,36 @@ import { VerticalScrollArea } from '@repo/ui/components/Layout' import { RequestsByCampus } from './_components/RequestsByCampus' import { OnlyLeftHeader } from '@repo/ui/components/Header' -import type { Request } from './_api/types' +import { getRequests } from '@/app/_api/services/request' +import type { Request } from '@/app/_api/types' -const MOCK_DATA: Request[] = [ - { - placeId: '1', - placeName: '짬뽕집', - icon: 'chinese', - requestDate: '2025-10-29', - }, - { - placeId: '2', - placeName: '짬뽕집', - icon: 'chinese', - requestDate: '2025-10-29', - }, - { - placeId: '3', - placeName: '짬뽕집', - icon: 'chinese', - requestDate: '2025-10-29', - }, -] +export default async function Home() { + const data = (await getRequests()) || [] + const singwan: Request[] = [] + const cheonan: Request[] = [] + const yesan: Request[] = [] + + for (const request of data) { + switch (request.campus) { + case 'SINGWAN': + singwan.push(request) + break + case 'CHEONAN': + cheonan.push(request) + break + case 'YESAN': + yesan.push(request) + break + } + } -export default function Home() { return ( <> - - - + + + ) From 6502d1c29c0f8bbb8c726983c4c7782857f64d51 Mon Sep 17 00:00:00 2001 From: leeleeleeleejun Date: Mon, 10 Nov 2025 12:50:26 +0900 Subject: [PATCH 05/12] =?UTF-8?q?feat:=20Description=20=EC=BB=B4=ED=8F=AC?= =?UTF-8?q?=EB=84=8C=ED=8A=B8=EC=97=90=20tags=20prop=20=EC=B6=94=EA=B0=80?= =?UTF-8?q?=20=EB=B0=8F=20Chip=20=EB=A0=8C=EB=8D=94=EB=A7=81=20=EB=A1=9C?= =?UTF-8?q?=EC=A7=81=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../[id]/_components/Description/Description.tsx | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/apps/admin/src/app/request/[id]/_components/Description/Description.tsx b/apps/admin/src/app/request/[id]/_components/Description/Description.tsx index c85aa9f..a5a910b 100644 --- a/apps/admin/src/app/request/[id]/_components/Description/Description.tsx +++ b/apps/admin/src/app/request/[id]/_components/Description/Description.tsx @@ -1,22 +1,25 @@ -import { Column } from '@repo/ui/components/Layout' +import { Column, Flex } from '@repo/ui/components/Layout' import { Chip } from '@repo/ui/components/Chip' import { Text } from '@repo/ui/components/Text' import { RequestDetail } from '../../_api/types' type Props = { description: RequestDetail['description'] + tags: RequestDetail['tags'] } -export const Description = ({ description }: Props) => { +export const Description = ({ description, tags }: Props) => { return ( 소개 {description} -
    - -
    + + {tags.map((tag) => ( + + ))} +
    ) } From fe3eb69f3e02c62ce88070eeb6ae4842188ea3ca Mon Sep 17 00:00:00 2001 From: leeleeleeleejun Date: Mon, 10 Nov 2025 12:55:34 +0900 Subject: [PATCH 06/12] =?UTF-8?q?feat:=20=EC=9A=94=EC=B2=AD=EC=83=81?= =?UTF-8?q?=EC=84=B8=20=EC=A1=B0=ED=9A=8C=20api=20=EB=A1=9C=EC=A7=81=20?= =?UTF-8?q?=EC=97=B0=EA=B2=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../app/request/[id]/RequestDetailPage.tsx | 78 ++++++++----------- .../app/request/[id]/_api/services/request.ts | 22 ++++++ apps/admin/src/app/request/[id]/page.tsx | 8 +- 3 files changed, 59 insertions(+), 49 deletions(-) create mode 100644 apps/admin/src/app/request/[id]/_api/services/request.ts diff --git a/apps/admin/src/app/request/[id]/RequestDetailPage.tsx b/apps/admin/src/app/request/[id]/RequestDetailPage.tsx index 3edba20..912ef15 100644 --- a/apps/admin/src/app/request/[id]/RequestDetailPage.tsx +++ b/apps/admin/src/app/request/[id]/RequestDetailPage.tsx @@ -1,22 +1,30 @@ 'use client' +import Image from 'next/image' +import { useRouter } from 'next/navigation' +import { useDisclosure } from '@heroui/react' + import { Header } from '@repo/ui/components/Header' import { Icon } from '@repo/ui/components/Icon' import { Text } from '@repo/ui/components/Text' import { Column, VerticalScrollArea } from '@repo/ui/components/Layout' import { Banner } from '@repo/ui/components/Banner' +import type { RequestDetail } from './_api/types' import { Location } from './_components/Location/Location' import { Menus } from './_components/Menus/Menus' import { Description } from './_components/Description' import { ActionButtonGroup } from './_components/ActionButtonGroup' -import { useDisclosure } from '@heroui/react' -import { RejectModal } from '@/app/request/[id]/_components/RejectModal' -import { useRouter } from 'next/navigation' +import { RejectModal } from './_components/RejectModal' -export const RequestDetailPage = () => { +type Props = { + data: RequestDetail +} + +export const RequestDetailPage = ({ data }: Props) => { const { isOpen, onOpen, onOpenChange } = useDisclosure() const { back } = useRouter() + const { placeName, menus, description, tags, photos } = data return ( <> @@ -26,53 +34,29 @@ export const RequestDetailPage = () => { } - center={우돈탄 다산본점} + center={{placeName}} /> - + {photos.length > 0 && ( + ( + place-photo + ))} + minHeight={180} + showIndicator={true} + /> + )} - - + + diff --git a/apps/admin/src/app/request/[id]/_api/services/request.ts b/apps/admin/src/app/request/[id]/_api/services/request.ts new file mode 100644 index 0000000..c342035 --- /dev/null +++ b/apps/admin/src/app/request/[id]/_api/services/request.ts @@ -0,0 +1,22 @@ +import { API_PATH, BASE_URL } from '@/consts/path' +import { RequestDetail, RequestReview } from '../types' + +export const getRequestDetail = async (id: string): Promise => { + const response = await fetch(BASE_URL + API_PATH.REQUEST.GET.DETAIL(id)) + const { data: res } = await response.json() + return res + // const { data } = res + // return data +} + +export const requestReview = async (id: string, review: RequestReview) => { + const response = await fetch(BASE_URL + API_PATH.REQUEST.POST(id), { + method: 'POST', + body: JSON.stringify(review), + }) + if (!response.ok) { + throw new Error() + } + + return response.json() +} diff --git a/apps/admin/src/app/request/[id]/page.tsx b/apps/admin/src/app/request/[id]/page.tsx index 113ae0a..7824d3f 100644 --- a/apps/admin/src/app/request/[id]/page.tsx +++ b/apps/admin/src/app/request/[id]/page.tsx @@ -1,9 +1,13 @@ import { RequestDetailPage } from './RequestDetailPage' +import { getRequestDetail } from './_api/services/request' + +const Page = async ({ params }: { params: Promise<{ id: string }> }) => { + const { id } = await params + const data = await getRequestDetail(id) -const Page = () => { return ( <> - + ) } From e3501cbc7a6bfafbc402a89737a02b118cbeb2cf Mon Sep 17 00:00:00 2001 From: leeleeleeleejun Date: Mon, 10 Nov 2025 12:55:57 +0900 Subject: [PATCH 07/12] =?UTF-8?q?feat:=20next.config.ts=EC=97=90=20remoteP?= =?UTF-8?q?atterns=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/admin/next.config.ts | 31 ++++++++++++++++++++++++++++--- 1 file changed, 28 insertions(+), 3 deletions(-) diff --git a/apps/admin/next.config.ts b/apps/admin/next.config.ts index e9ffa30..b11c726 100644 --- a/apps/admin/next.config.ts +++ b/apps/admin/next.config.ts @@ -1,7 +1,32 @@ -import type { NextConfig } from "next"; +import type { NextConfig } from 'next' const nextConfig: NextConfig = { /* config options here */ -}; + images: { + remotePatterns: [ + { + protocol: 'https', + hostname: '*.pstatic.net', + port: '', + pathname: '/**', + }, + { + protocol: 'https', + hostname: 't1.daumcdn.net', + pathname: '/**', + }, + { + protocol: 'http', + hostname: 't1.daumcdn.net', + pathname: '/**', + }, + { + protocol: 'https', + hostname: 'blog.kakaocdn.net', + pathname: '/**', + }, + ], + }, +} -export default nextConfig; +export default nextConfig From e06fa98b56c74d386790dc59a341f236e2d6bbab Mon Sep 17 00:00:00 2001 From: leeleeleeleejun Date: Mon, 10 Nov 2025 13:15:12 +0900 Subject: [PATCH 08/12] =?UTF-8?q?refactor:=20admin/../request=20=ED=8F=B4?= =?UTF-8?q?=EB=8D=94=20=EC=9D=B4=EB=A6=84=EC=9D=84=20requests=EB=A1=9C=20?= =?UTF-8?q?=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/app/{request => requests}/[id]/RequestDetailPage.tsx | 0 .../src/app/{request => requests}/[id]/_api/services/request.ts | 0 apps/admin/src/app/{request => requests}/[id]/_api/types.ts | 0 .../[id]/_components/ActionButtonGroup/ActionButtonGroup.tsx | 0 .../[id]/_components/ActionButtonGroup/index.tsx | 0 .../[id]/_components/Description/Description.tsx | 0 .../[id]/_components/Description/index.tsx | 0 .../[id]/_components/Location/Location.tsx | 0 .../{request => requests}/[id]/_components/Location/index.tsx | 0 .../app/{request => requests}/[id]/_components/Menus/Menu.tsx | 2 +- .../app/{request => requests}/[id]/_components/Menus/Menus.tsx | 2 +- .../app/{request => requests}/[id]/_components/Menus/index.tsx | 0 .../[id]/_components/RejectModal/RejectModal.tsx | 0 .../[id]/_components/RejectModal/index.tsx | 0 .../admin/src/app/{request => requests}/[id]/_utils/toLatLng.ts | 0 apps/admin/src/app/{request => requests}/[id]/page.tsx | 0 16 files changed, 2 insertions(+), 2 deletions(-) rename apps/admin/src/app/{request => requests}/[id]/RequestDetailPage.tsx (100%) rename apps/admin/src/app/{request => requests}/[id]/_api/services/request.ts (100%) rename apps/admin/src/app/{request => requests}/[id]/_api/types.ts (100%) rename apps/admin/src/app/{request => requests}/[id]/_components/ActionButtonGroup/ActionButtonGroup.tsx (100%) rename apps/admin/src/app/{request => requests}/[id]/_components/ActionButtonGroup/index.tsx (100%) rename apps/admin/src/app/{request => requests}/[id]/_components/Description/Description.tsx (100%) rename apps/admin/src/app/{request => requests}/[id]/_components/Description/index.tsx (100%) rename apps/admin/src/app/{request => requests}/[id]/_components/Location/Location.tsx (100%) rename apps/admin/src/app/{request => requests}/[id]/_components/Location/index.tsx (100%) rename apps/admin/src/app/{request => requests}/[id]/_components/Menus/Menu.tsx (91%) rename apps/admin/src/app/{request => requests}/[id]/_components/Menus/Menus.tsx (96%) rename apps/admin/src/app/{request => requests}/[id]/_components/Menus/index.tsx (100%) rename apps/admin/src/app/{request => requests}/[id]/_components/RejectModal/RejectModal.tsx (100%) rename apps/admin/src/app/{request => requests}/[id]/_components/RejectModal/index.tsx (100%) rename apps/admin/src/app/{request => requests}/[id]/_utils/toLatLng.ts (100%) rename apps/admin/src/app/{request => requests}/[id]/page.tsx (100%) diff --git a/apps/admin/src/app/request/[id]/RequestDetailPage.tsx b/apps/admin/src/app/requests/[id]/RequestDetailPage.tsx similarity index 100% rename from apps/admin/src/app/request/[id]/RequestDetailPage.tsx rename to apps/admin/src/app/requests/[id]/RequestDetailPage.tsx diff --git a/apps/admin/src/app/request/[id]/_api/services/request.ts b/apps/admin/src/app/requests/[id]/_api/services/request.ts similarity index 100% rename from apps/admin/src/app/request/[id]/_api/services/request.ts rename to apps/admin/src/app/requests/[id]/_api/services/request.ts diff --git a/apps/admin/src/app/request/[id]/_api/types.ts b/apps/admin/src/app/requests/[id]/_api/types.ts similarity index 100% rename from apps/admin/src/app/request/[id]/_api/types.ts rename to apps/admin/src/app/requests/[id]/_api/types.ts diff --git a/apps/admin/src/app/request/[id]/_components/ActionButtonGroup/ActionButtonGroup.tsx b/apps/admin/src/app/requests/[id]/_components/ActionButtonGroup/ActionButtonGroup.tsx similarity index 100% rename from apps/admin/src/app/request/[id]/_components/ActionButtonGroup/ActionButtonGroup.tsx rename to apps/admin/src/app/requests/[id]/_components/ActionButtonGroup/ActionButtonGroup.tsx diff --git a/apps/admin/src/app/request/[id]/_components/ActionButtonGroup/index.tsx b/apps/admin/src/app/requests/[id]/_components/ActionButtonGroup/index.tsx similarity index 100% rename from apps/admin/src/app/request/[id]/_components/ActionButtonGroup/index.tsx rename to apps/admin/src/app/requests/[id]/_components/ActionButtonGroup/index.tsx diff --git a/apps/admin/src/app/request/[id]/_components/Description/Description.tsx b/apps/admin/src/app/requests/[id]/_components/Description/Description.tsx similarity index 100% rename from apps/admin/src/app/request/[id]/_components/Description/Description.tsx rename to apps/admin/src/app/requests/[id]/_components/Description/Description.tsx diff --git a/apps/admin/src/app/request/[id]/_components/Description/index.tsx b/apps/admin/src/app/requests/[id]/_components/Description/index.tsx similarity index 100% rename from apps/admin/src/app/request/[id]/_components/Description/index.tsx rename to apps/admin/src/app/requests/[id]/_components/Description/index.tsx diff --git a/apps/admin/src/app/request/[id]/_components/Location/Location.tsx b/apps/admin/src/app/requests/[id]/_components/Location/Location.tsx similarity index 100% rename from apps/admin/src/app/request/[id]/_components/Location/Location.tsx rename to apps/admin/src/app/requests/[id]/_components/Location/Location.tsx diff --git a/apps/admin/src/app/request/[id]/_components/Location/index.tsx b/apps/admin/src/app/requests/[id]/_components/Location/index.tsx similarity index 100% rename from apps/admin/src/app/request/[id]/_components/Location/index.tsx rename to apps/admin/src/app/requests/[id]/_components/Location/index.tsx diff --git a/apps/admin/src/app/request/[id]/_components/Menus/Menu.tsx b/apps/admin/src/app/requests/[id]/_components/Menus/Menu.tsx similarity index 91% rename from apps/admin/src/app/request/[id]/_components/Menus/Menu.tsx rename to apps/admin/src/app/requests/[id]/_components/Menus/Menu.tsx index e25d24f..dfa244d 100644 --- a/apps/admin/src/app/request/[id]/_components/Menus/Menu.tsx +++ b/apps/admin/src/app/requests/[id]/_components/Menus/Menu.tsx @@ -1,7 +1,7 @@ import { Flex, JustifyBetween } from '@repo/ui/components/Layout' import { Text } from '@repo/ui/components/Text' import { Icon } from '@repo/ui/components/Icon' -import type { RequestDetail } from '@/app/request/[id]/_api/types' +import type { RequestDetail } from '@/app/requests/[id]/_api/types' type Props = { menu: RequestDetail['menus'][0] diff --git a/apps/admin/src/app/request/[id]/_components/Menus/Menus.tsx b/apps/admin/src/app/requests/[id]/_components/Menus/Menus.tsx similarity index 96% rename from apps/admin/src/app/request/[id]/_components/Menus/Menus.tsx rename to apps/admin/src/app/requests/[id]/_components/Menus/Menus.tsx index 8b9fc7d..bfa926a 100644 --- a/apps/admin/src/app/request/[id]/_components/Menus/Menus.tsx +++ b/apps/admin/src/app/requests/[id]/_components/Menus/Menus.tsx @@ -1,7 +1,7 @@ import { Text } from '@repo/ui/components/Text' import { Column, VerticalScrollArea } from '@repo/ui/components/Layout' import { cn } from '@repo/ui/utils/cn' -import type { RequestDetail } from '@/app/request/[id]/_api/types' +import type { RequestDetail } from '@/app/requests/[id]/_api/types' import { Menu } from './Menu' type Props = { diff --git a/apps/admin/src/app/request/[id]/_components/Menus/index.tsx b/apps/admin/src/app/requests/[id]/_components/Menus/index.tsx similarity index 100% rename from apps/admin/src/app/request/[id]/_components/Menus/index.tsx rename to apps/admin/src/app/requests/[id]/_components/Menus/index.tsx diff --git a/apps/admin/src/app/request/[id]/_components/RejectModal/RejectModal.tsx b/apps/admin/src/app/requests/[id]/_components/RejectModal/RejectModal.tsx similarity index 100% rename from apps/admin/src/app/request/[id]/_components/RejectModal/RejectModal.tsx rename to apps/admin/src/app/requests/[id]/_components/RejectModal/RejectModal.tsx diff --git a/apps/admin/src/app/request/[id]/_components/RejectModal/index.tsx b/apps/admin/src/app/requests/[id]/_components/RejectModal/index.tsx similarity index 100% rename from apps/admin/src/app/request/[id]/_components/RejectModal/index.tsx rename to apps/admin/src/app/requests/[id]/_components/RejectModal/index.tsx diff --git a/apps/admin/src/app/request/[id]/_utils/toLatLng.ts b/apps/admin/src/app/requests/[id]/_utils/toLatLng.ts similarity index 100% rename from apps/admin/src/app/request/[id]/_utils/toLatLng.ts rename to apps/admin/src/app/requests/[id]/_utils/toLatLng.ts diff --git a/apps/admin/src/app/request/[id]/page.tsx b/apps/admin/src/app/requests/[id]/page.tsx similarity index 100% rename from apps/admin/src/app/request/[id]/page.tsx rename to apps/admin/src/app/requests/[id]/page.tsx From fb7279fdf9a6d5c28dc958c64f397d26468d4f4d Mon Sep 17 00:00:00 2001 From: leeleeleeleejun Date: Mon, 10 Nov 2025 23:06:55 +0900 Subject: [PATCH 09/12] =?UTF-8?q?feat:=20Location=20=EC=BB=B4=ED=8F=AC?= =?UTF-8?q?=EB=84=8C=ED=8A=B8=EC=97=90=20=EC=9C=84=EC=B9=98=20prop=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80=20=EB=B0=8F=20=EB=A7=88=EC=BB=A4=20=EB=A0=8C?= =?UTF-8?q?=EB=8D=94=EB=A7=81=20=EB=A1=9C=EC=A7=81=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/app/requests/[id]/RequestDetailPage.tsx | 2 +- .../[id]/_components/Location/Location.tsx | 15 +++++++++++---- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/apps/admin/src/app/requests/[id]/RequestDetailPage.tsx b/apps/admin/src/app/requests/[id]/RequestDetailPage.tsx index 912ef15..59a5d96 100644 --- a/apps/admin/src/app/requests/[id]/RequestDetailPage.tsx +++ b/apps/admin/src/app/requests/[id]/RequestDetailPage.tsx @@ -54,7 +54,7 @@ export const RequestDetailPage = ({ data }: Props) => { /> )} - + diff --git a/apps/admin/src/app/requests/[id]/_components/Location/Location.tsx b/apps/admin/src/app/requests/[id]/_components/Location/Location.tsx index 49efa9a..800ede7 100644 --- a/apps/admin/src/app/requests/[id]/_components/Location/Location.tsx +++ b/apps/admin/src/app/requests/[id]/_components/Location/Location.tsx @@ -2,18 +2,25 @@ import { useState } from 'react' import { Column } from '@repo/ui/components/Layout' -import { Container, NaverMap } from 'react-naver-maps' +import { Container, Marker, NaverMap } from 'react-naver-maps' import { Text } from '@repo/ui/components/Text' +import { toLatLng } from '../../_utils/toLatLng' +import type { RequestDetail } from '../../_api/types' -export const Location = () => { +type Props = { + location: RequestDetail['location'] +} + +export const Location = ({ location }: Props) => { const [, setMap] = useState(null) + const setLocation = toLatLng(location) return ( 위치 - - {/**/} + + From 04d8aeb434989a2c3aa0f5c78427205b18658b5e Mon Sep 17 00:00:00 2001 From: leeleeleeleejun Date: Mon, 10 Nov 2025 23:08:23 +0900 Subject: [PATCH 10/12] =?UTF-8?q?feat:=20ActionButtonGroup=20=EB=B0=8F=20R?= =?UTF-8?q?ejectModal=EC=97=90=20placeId=20prop=20=EC=B6=94=EA=B0=80=20?= =?UTF-8?q?=EB=B0=8F=20=EC=9A=94=EC=B2=AD=20=EC=8A=B9=EC=9D=B8/=EA=B1=B0?= =?UTF-8?q?=EC=A0=88=20=EB=A1=9C=EC=A7=81=20=EC=97=B0=EA=B2=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../app/requests/[id]/RequestDetailPage.tsx | 11 +++- .../ActionButtonGroup/ActionButtonGroup.tsx | 66 +++++++++++-------- .../_components/RejectModal/RejectModal.tsx | 12 +++- 3 files changed, 56 insertions(+), 33 deletions(-) diff --git a/apps/admin/src/app/requests/[id]/RequestDetailPage.tsx b/apps/admin/src/app/requests/[id]/RequestDetailPage.tsx index 59a5d96..54f3320 100644 --- a/apps/admin/src/app/requests/[id]/RequestDetailPage.tsx +++ b/apps/admin/src/app/requests/[id]/RequestDetailPage.tsx @@ -24,7 +24,8 @@ type Props = { export const RequestDetailPage = ({ data }: Props) => { const { isOpen, onOpen, onOpenChange } = useDisclosure() const { back } = useRouter() - const { placeName, menus, description, tags, photos } = data + const { placeId, placeName, menus, description, tags, photos, location } = + data return ( <> @@ -57,10 +58,14 @@ export const RequestDetailPage = ({ data }: Props) => { - + - + ) } diff --git a/apps/admin/src/app/requests/[id]/_components/ActionButtonGroup/ActionButtonGroup.tsx b/apps/admin/src/app/requests/[id]/_components/ActionButtonGroup/ActionButtonGroup.tsx index 16cff97..898139f 100644 --- a/apps/admin/src/app/requests/[id]/_components/ActionButtonGroup/ActionButtonGroup.tsx +++ b/apps/admin/src/app/requests/[id]/_components/ActionButtonGroup/ActionButtonGroup.tsx @@ -1,35 +1,47 @@ import { Flex } from '@repo/ui/components/Layout' import { cn } from '@repo/ui/utils/cn' import { COLOR_VARIANTS } from '@repo/ui/consts/colorVariant' +import { requestReview } from '@/app/requests/[id]/_api/services/request' type Props = { + placeId: string onOpen: VoidFunction } -export const ActionButtonGroup = ({ onOpen }: Props) => ( - - - - -) +export const ActionButtonGroup = ({ placeId, onOpen }: Props) => { + const approved = async () => { + await requestReview(placeId, { + status: 'APPROVED', + rejectedReason: null, + }) + } + + return ( + + + + + ) +} diff --git a/apps/admin/src/app/requests/[id]/_components/RejectModal/RejectModal.tsx b/apps/admin/src/app/requests/[id]/_components/RejectModal/RejectModal.tsx index 1ebee75..66fa448 100644 --- a/apps/admin/src/app/requests/[id]/_components/RejectModal/RejectModal.tsx +++ b/apps/admin/src/app/requests/[id]/_components/RejectModal/RejectModal.tsx @@ -9,14 +9,19 @@ import { import { cn } from '@repo/ui/utils/cn' import { Textarea } from '@repo/ui/components/Textarea' import { COLOR_VARIANTS } from '@repo/ui/consts/colorVariant' +import { requestReview } from '@/app/requests/[id]/_api/services/request' type Props = { isOpen: boolean onOpenChange: VoidFunction + placeId: string } -export const RejectModal = ({ isOpen, onOpenChange }: Props) => { +export const RejectModal = ({ isOpen, onOpenChange, placeId }: Props) => { const [value, setValue] = useState('') + const rejected = async (rejectedReason: string) => { + await requestReview(placeId, { status: 'REJECTED', rejectedReason }) + } return ( @@ -27,8 +32,9 @@ export const RejectModal = ({ isOpen, onOpenChange }: Props) => { diff --git a/apps/admin/src/app/requests/[id]/_components/RejectModal/RejectModal.tsx b/apps/admin/src/app/requests/[id]/_components/RejectModal/RejectModal.tsx index 48b16e2..34a98a8 100644 --- a/apps/admin/src/app/requests/[id]/_components/RejectModal/RejectModal.tsx +++ b/apps/admin/src/app/requests/[id]/_components/RejectModal/RejectModal.tsx @@ -6,22 +6,19 @@ import { ModalFooter, ModalHeader, } from '@heroui/react' +import type { HandleReview } from '../../_api/types' import { cn } from '@repo/ui/utils/cn' import { Textarea } from '@repo/ui/components/Textarea' import { COLOR_VARIANTS } from '@repo/ui/consts/colorVariant' -import { requestReview } from '@/app/requests/[id]/_api/services/request' type Props = { isOpen: boolean onOpenChange: VoidFunction - placeId: number + handleReview: HandleReview } -export const RejectModal = ({ isOpen, onOpenChange, placeId }: Props) => { +export const RejectModal = ({ isOpen, onOpenChange, handleReview }: Props) => { const [value, setValue] = useState('') - const rejected = async (rejectedReason: string) => { - await requestReview(placeId, { status: 'REJECTED', rejectedReason }) - } return ( @@ -33,7 +30,7 @@ export const RejectModal = ({ isOpen, onOpenChange, placeId }: Props) => {