Merge branch 'dev' of https://git.hanasys.jp/qcast3/onsitesurvey into feature/survey
This commit is contained in:
commit
14ba63e2b5
71
diagram/layout.md
Normal file
71
diagram/layout.md
Normal file
@ -0,0 +1,71 @@
|
||||
# 루트 레이아웃 구조
|
||||
|
||||
이 문서는 애플리케이션의 모든 페이지에서 공통으로 사용되는 루트 레이아웃(`src/app/layout.tsx`)의 구조를 설명합니다.
|
||||
|
||||
## 컴포넌트 계층 구조
|
||||
|
||||
```mermaid
|
||||
graph TD
|
||||
A[RootLayout] --> B[ReactQueryProviders]
|
||||
B --> C[EdgeProvider]
|
||||
C --> D[HTML Structure]
|
||||
|
||||
D --> E[Header]
|
||||
D --> F[Children/Main Content]
|
||||
D --> G[Footer]
|
||||
D --> H[Float Button]
|
||||
D --> I[PopupController]
|
||||
|
||||
J[Session Management] --> |Session Data| C
|
||||
|
||||
subgraph Providers
|
||||
B
|
||||
C
|
||||
end
|
||||
|
||||
subgraph Layout Components
|
||||
E
|
||||
F
|
||||
G
|
||||
H
|
||||
I
|
||||
end
|
||||
|
||||
subgraph Session
|
||||
J
|
||||
end
|
||||
```
|
||||
|
||||
## 주요 컴포넌트
|
||||
|
||||
### 프로바이더
|
||||
|
||||
- **ReactQueryProviders**: React Query 상태 관리를 위한 최상위 프로바이더
|
||||
- **EdgeProvider**: 세션 데이터를 관리하고 애플리케이션에 제공
|
||||
|
||||
### 레이아웃 컴포넌트
|
||||
|
||||
- **Header**: 공통 헤더 컴포넌트
|
||||
- **Children**: 메인 콘텐츠 영역 (페이지별 콘텐츠)
|
||||
- **Footer**: 공통 푸터 컴포넌트
|
||||
- **Float Button**: 플로팅 액션 버튼
|
||||
- **PopupController**: 팝업/모달 상태 관리
|
||||
|
||||
### 세션 관리
|
||||
|
||||
- `iron-session`을 사용한 서버 사이드 세션 관리
|
||||
- 세션 데이터는 EdgeProvider를 통해 전역적으로 접근 가능
|
||||
|
||||
## 데이터 흐름
|
||||
|
||||
1. 세션 데이터는 서버 사이드에서 관리됨
|
||||
2. 세션 데이터는 EdgeProvider로 전달됨
|
||||
3. 모든 레이아웃 컴포넌트는 세션 컨텍스트에 접근 가능
|
||||
4. React Query는 데이터 페칭과 캐싱 기능을 제공
|
||||
|
||||
## 구현 세부사항
|
||||
|
||||
- 서버 컴포넌트로 구현
|
||||
- Next.js App Router 구조 사용
|
||||
- 서버 사이드 렌더링 지원
|
||||
- 하이드레이션 억제를 통한 성능 최적화
|
||||
@ -8,25 +8,26 @@ datasource db {
|
||||
}
|
||||
|
||||
model SD_SURVEY_SALES_BASIC_INFO {
|
||||
ID Int @id @default(autoincrement())
|
||||
SRL_NO String @db.NVarChar(20)
|
||||
REPRESENTATIVE String @db.NVarChar(200)
|
||||
STORE String? @db.NVarChar(200)
|
||||
CONSTRUCTION_POINT String? @db.NVarChar(200)
|
||||
INVESTIGATION_DATE String? @db.NVarChar(10)
|
||||
BUILDING_NAME String? @db.NVarChar(200)
|
||||
CUSTOMER_NAME String? @db.NVarChar(200)
|
||||
POST_CODE String? @db.NVarChar(10)
|
||||
ADDRESS String? @db.NVarChar(200)
|
||||
ADDRESS_DETAIL String? @db.NVarChar(300)
|
||||
SUBMISSION_STATUS Boolean @default(false)
|
||||
SUBMISSION_DATE DateTime? @db.Date
|
||||
SUBMISSION_TARGET_ID String? @db.NVarChar(200)
|
||||
REG_DT DateTime @default(now())
|
||||
UPT_DT DateTime @updatedAt
|
||||
REPRESENTATIVE_ID String? @db.NVarChar(100)
|
||||
STORE_ID String? @db.NVarChar(100)
|
||||
DETAIL_INFO SD_SURVEY_SALES_DETAIL_INFO?
|
||||
ID Int @id @default(autoincrement())
|
||||
SRL_NO String @db.NVarChar(20)
|
||||
REPRESENTATIVE String @db.NVarChar(200)
|
||||
STORE String? @db.NVarChar(200)
|
||||
CONSTRUCTION_POINT String? @db.NVarChar(200)
|
||||
CONSTRUCTION_POINT_ID String? @db.NVarChar(200)
|
||||
INVESTIGATION_DATE String? @db.NVarChar(10)
|
||||
BUILDING_NAME String? @db.NVarChar(200)
|
||||
CUSTOMER_NAME String? @db.NVarChar(200)
|
||||
POST_CODE String? @db.NVarChar(10)
|
||||
ADDRESS String? @db.NVarChar(200)
|
||||
ADDRESS_DETAIL String? @db.NVarChar(300)
|
||||
SUBMISSION_STATUS Boolean @default(false)
|
||||
SUBMISSION_DATE DateTime? @db.Date
|
||||
SUBMISSION_TARGET_ID String? @db.NVarChar(200)
|
||||
REG_DT DateTime @default(now())
|
||||
UPT_DT DateTime @updatedAt
|
||||
REPRESENTATIVE_ID String? @db.NVarChar(100)
|
||||
STORE_ID String? @db.NVarChar(100)
|
||||
DETAIL_INFO SD_SURVEY_SALES_DETAIL_INFO?
|
||||
}
|
||||
|
||||
model SD_SURVEY_SALES_DETAIL_INFO {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user