# Prisma 스키마 요약

## 주요 모델 및 관계

### User (유저)
- 역할: SUPER_ADMIN, ADMIN, USER(입주민)
- 1:1 관계: Apartment(관리자), Resident(입주민 프로필)
- 1:N 관계: Notice(공지), Complaint(민원), Poll(투표), PollVote(투표 참여), Comment(댓글), ResidentImportLog(입주민 일괄등록 로그), NotificationReceipt(알림 수신)

### Apartment (아파트)
- 1:1 관계: User(관리자)
- 1:N 관계: Resident(입주민), Complaint(민원), Poll(투표), Notice(공지), Event(일정), ResidentImportLog(입주민 일괄등록 로그)

### Resident (입주민)
- 1:1 관계: User(입주민 계정)
- N:1 관계: Apartment(소속 아파트)

### ResidentImportLog (입주민 일괄등록 로그)
- N:1 관계: Apartment, User

### Complaint (민원)
- N:1 관계: User(작성자), Apartment(소속 아파트)
- 상태: PENDING, IN_PROGRESS, RESOLVED

### Poll (투표)
- N:1 관계: User(작성자), Apartment(소속 아파트)
- 1:N 관계: PollOption(선택지), PollVote(투표 참여)
- 상태: PENDING, IN_PROGRESS, CLOSED

### PollOption (투표 선택지)
- N:1 관계: Poll(소속 투표)
- 1:N 관계: PollVote(선택지별 투표)

### PollVote (투표 참여)
- N:1 관계: User(투표자), Poll(투표), PollOption(선택지)

### Notice (공지)
- N:1 관계: User(작성자), Apartment(소속 아파트)
- 1:1 관계: Event(공지 일정)
- 카테고리: MAINTENANCE, EMERGENCY, COMMUNITY, RESIDENT_VOTE, RESIDENT_COUNCIL, ETC
- 타입: NORMAL, IMPORTANT

### Event (일정)
- 1:1 관계: Notice(공지)
- N:1 관계: Apartment(소속 아파트)

### Comment (댓글)
- N:1 관계: User(작성자)
- 리소스 추상화: resourceId, resourceType(공지/민원 등)

### NotificationEvent/NotificationReceipt (알림)
- NotificationEvent: 다양한 타입(민원, 투표, 공지 등)에 대해 생성
- NotificationReceipt: User별 알림 수신 관리

---

## 삭제 정책(참조 무결성)
- User 삭제 시: Resident, Complaint, Poll, PollVote, Comment, ResidentImportLog, NotificationReceipt 등 Cascade(함께 삭제)
- Apartment 삭제 시: Resident, Complaint, Poll, Notice, Event, ResidentImportLog 등 Cascade(함께 삭제)
- Resident 삭제 시: User도 Cascade(함께 삭제)
- 대부분의 관계는 onDelete: Cascade, 단 Apartment의 manager(User)는 onDelete: SetNull

---

## 데이터 흐름 예시
- 입주민(User) 가입 → Resident 프로필 생성 → Apartment에 소속
- 관리자가 Apartment에 공지(Notice) 등록 → Event(일정) 생성 → 입주민에게 NotificationEvent/Receipt로 알림 발송
- 입주민이 Complaint(민원) 등록 → 상태 변경 및 알림
- 투표(Poll) 생성 → PollOption, PollVote로 투표 진행 → 결과 집계

---

## 기타
- enum, unique, index 등 데이터 무결성 및 성능을 위한 다양한 제약조건 적용
- ResidentImportLog로 엑셀/CSV 기반 입주민 일괄등록 지원

We Live.png