2026/03/30 예비군 훈련 이슈로 생략
기획문서 작성
테이블 명세서

1차
사용자 테이블 : 아이디, 비밀번호, 알림 수신 동의 여부
약속 테이블 : 약속 이름, 약속 종류(비즈니스 혹은 개인), 방장 고유번호
참여자 테이블 : 약속 고유번호, 사용자 고유번호, 친구 초대 권한 보유 여부, 약속 삭제 동의 여부
가능 시간 테이블 : 참여자 고유번호, 시작 시간, 종료 시간
장소 후보 테이블 : 약속 고유번호, 장소 이름, 위도 및 경도(GPS 정보), 카테고리(식당, 숙박 등)
ERD

요구사항 정의서

코드 예시
DB
from django.db import models
from django.contrib.auth.models import AbstractUser
class User(AbstractUser):
push_enabled = models.BooleanField(default=True)
class Event(models.Model):
title = models.CharField(max_length=100)
is_business = models.BooleanField(default=False)
host = models.ForeignKey(User, on_delete=models.CASCADE)
created_at = models.DateTimeField(auto_now_add=True)
class EventMember(models.Model):
event = models.ForeignKey(Event, on_delete=models.CASCADE)
user = models.ForeignKey(User, on_delete=models.CASCADE)
can_invite = models.BooleanField(default=False)
agree_delete = models.BooleanField(default=False)
class Meta:
unique_together = ('event', 'user')
class TimeSlot(models.Model):
member = models.ForeignKey(EventMember, on_delete=models.CASCADE)
start_time = models.DateTimeField()
end_time = models.DateTimeField()
class PlaceCandidate(models.Model):
event = models.ForeignKey(Event, on_delete=models.CASCADE)
place_name = models.CharField(max_length=255)
category = models.CharField(max_length=50)
latitude = models.DecimalField(max_digits=9, decimal_places=6, null=True, blank=True)
longitude = models.DecimalField(max_digits=9, decimal_places=6, null=True, blank=True)
vote_count = models.IntegerField(default=0)