diff --git a/README.md b/README.md index c6869cd..e6a83f7 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,74 @@ -# prisma 연결 +# 모바일 현장 조사 애플리케이션 (onsitesurvey) + +## 개요 + +Next.js와 TypeScript로 구축된 현장 조사용 모바일 애플리케이션입니다. + +## 기술 스택 + +- **프레임워크**: Next.js (App Router) +- **언어**: TypeScript +- **UI 컴포넌트**: Shadcn UI, Radix UI +- **스타일링**: Tailwind CSS +- **상태 관리**: React Query +- **데이터베이스**: Prisma ORM +- **인증**: 세션 기반 인증 + +## 시작하기 + +### 필수 요구사항 + +- Node.js (LTS 버전) +- npm 또는 yarn 또는 pnpm 또는 burn +- Prisma CLI + +### 설치 방법 + +```bash +# 의존성 설치 +npm install + +# 환경 변수 설정 +cp .env.example .env.local + +# 데이터베이스 초기화 <- 절대 함부로 실행하지 마시오 +# npx prisma migrate dev +# npx prisma generate +``` + +### 개발 서버 실행 + +```bash +# 개발 서버 실행 +npm run dev +``` + +### 프로덕션 빌드 + +```bash +# 애플리케이션 빌드 +npm run build + +# 프로덕션 서버 실행 +npm start +``` + +## 프로젝트 구조 + +[프로젝트 구조 Diagram](./diagram/mermaid.md) + +``` +├── app/ # Next.js 앱 디렉토리 +├── components/ # React 컴포넌트 +├── hooks/ # 커스텀 React 훅 +├── lib/ # 유틸리티 함수 및 설정 +├── prisma/ # 데이터베이스 스키마 및 마이그레이션 +└── public/ # 정적 자산 +``` + +## 참고 + +### prisma 연결 ``` npx prisma migrate dev @@ -11,38 +81,38 @@ npx prisma db push generate 를 진행해야 로컬에 연결 파일들이 생성이되고 pull push 를 사용할 수 있게 됨. -# react query cache data 가져오기 +### react query cache data 가져오기 ``` const cache = useQueryClient() const data = cache.getQueryData(['user', 'info']) as UserState ``` -# 팝업 컨트롤러 제어 +### 팝업 컨트롤러 제어 -### open +[open] -``` +```javascript const popupController = usePopupController() onClick={() => popupController.setMemberInformationPopup(true)} onClick={() => popupController.setZipCodePopup(true)} ``` -### close +[close] -``` +```javascript const popupController = usePopupController() onClick={() => popupController.setMemberInformationPopup(false)} onClick={() => popupController.setZipCodePopup(false)} ``` -# useEffect 정리 +### useEffect 정리 - client url pathname 변경시 -> @/components/ui/Header.tsx -# User Role 구분 +### User Role 구분 session에 있는 role 키로 구분한다 @@ -61,7 +131,7 @@ session에 있는 role 키로 구분한다 - 이외의 경우 -> 굳이 체크할 필요 없어보임\ session.role === 'User' -# 지붕재 적합성 TODO +### 지붕재 적합성 TODO ``` const suitableCheckIcon = (value: string): string => { @@ -82,3 +152,21 @@ const suitableCheckMemo = (value: string): string => { - src/hooks/useSuitable.ts > suitableCheckIcon(), suitableCheckMemo() - 추후 지붕재 적합성 데이터 CUD 구현 시 ×, ー 데이터 관리 필요 + +# 주의 + +## Prisma ORM 사용 시 주의사항 + +현재 프로젝트는 Prisma ORM을 통해 데이터베이스의 일부 테이블만 관리하고 있습니다. 이로 인해 `prisma db pull` 또는 `prisma db push` 명령어 사용 시 주의가 필요합니다. + +### 잠재적 위험성 + +- `schema.prisma` 파일에 정의된 모델이 의도치 않게 수정될 수 있습니다. +- 기존에 정의된 모델의 속성이나 관계가 손상될 수 있습니다. +- 데이터베이스 스키마와 Prisma 스키마 간의 불일치가 발생할 수 있습니다. + +### 권장 사항 + +- 데이터베이스 스키마 변경이 필요한 경우, 반드시 팀 내 논의 후 진행하시기 바랍니다. +- `prisma db pull` 실행 전 현재 `schema.prisma` 파일의 백업을 권장합니다. +- 변경 사항 적용 전 staging 환경에서 충분한 테스트를 진행하시기 바랍니다. diff --git a/prisma/schema.prisma b/prisma/schema.prisma index da1d7e9..2c353a4 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -169,7 +169,6 @@ model MS_SUITABLE_MAIN { @@index([ROOF_MT_CD, PRODUCT_NAME], map: "MS_SUITABLE_MAIN_ROOF_MT_CD_IDX") } -/// The underlying table does not contain a valid unique identifier and can therefore currently not be handled by Prisma Client. model MS_USR_TRK { ID Int @id @default(autoincrement()) OWNER String @db.NVarChar(100)