Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

✨ 추가: develop 브랜치 생성 #1

Open
wants to merge 148 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
148 commits
Select commit Hold shift + click to select a range
44681b9
:sparkles: 추가: develop 브랜치 생성
0417taehyun Apr 8, 2021
97f5b40
추가 : gitignore ide setting 파일 추가
Limm-jk Apr 10, 2021
7738e2f
추가 : user entity 정의
Limm-jk May 6, 2021
40b6c3b
추가 : auth service test code 작성
Limm-jk May 6, 2021
d218dbb
추가 : auth service 추가
Limm-jk May 6, 2021
3a37085
추가 : config에 token 알고리즘 추가
Limm-jk May 6, 2021
6322a1c
추가 : user fixture 추가
Limm-jk May 6, 2021
cf6b60e
수정 : .env gitginore 추가
Limm-jk May 6, 2021
d7e8d14
수정 : User code formatting
Limm-jk May 6, 2021
8d47232
수정 : test code 개선
Limm-jk May 6, 2021
003ba85
추가 : 개발서버운영을 위한 설정파일
Limm-jk May 9, 2021
4c444fe
추가 : user crud 및 필요 로직 정의
Limm-jk May 9, 2021
a20308c
수정 : Provider enum type String으로 변경
Limm-jk May 9, 2021
ad9ba49
추가 : user route service 정의
Limm-jk May 9, 2021
3f9cb46
추가 : User Schema 정의
Limm-jk May 9, 2021
075ab98
수정 : auth_google_token status에 따른 예외처리 추가
Limm-jk May 9, 2021
2187106
추가 : user api / token expire time config 추가
Limm-jk May 9, 2021
1822e60
추가 : 개발사항 의존성 추가
Limm-jk May 9, 2021
1880960
수정 : user model 구조 변경
Limm-jk May 9, 2021
53fec7f
수정 : router 서비스 변경
Limm-jk May 9, 2021
d573071
수정: 전체적인 폴더 구조 리팩토링
0417taehyun May 9, 2021
ddc3ff1
수정: Conflict 해결 및 사용자 라우터 추가
0417taehyun May 9, 2021
28af917
기타: Conflict 해결
0417taehyun May 9, 2021
39e3214
기타: Conflict 해결
0417taehyun May 9, 2021
04ea70a
기타: 오타 수정
0417taehyun May 9, 2021
33b3739
WIP
0417taehyun May 9, 2021
6d1cd05
기타: Conflict 해결 및 불필요한 파일 제거
0417taehyun May 9, 2021
a318fe0
기타: Conflcit 해결
0417taehyun May 9, 2021
38aa3be
ㅅ수정: .env 파일 삭제
0417taehyun May 9, 2021
72eb587
수정: Product Schema 삭제
0417taehyun May 9, 2021
ca3324f
수정 : config & requirements 수정
Limm-jk May 9, 2021
a886cf6
수정: 전체적인 폴더 구조 리팩토링
0417taehyun May 9, 2021
744aef2
수정: Conflict 해결 및 사용자 라우터 추가
0417taehyun May 9, 2021
a385d75
기타: Conflict 해결
0417taehyun May 9, 2021
2c9afbe
기타: Conflict 해결
0417taehyun May 9, 2021
2d33c89
기타: 오타 수정
0417taehyun May 9, 2021
f5562b1
WIP
0417taehyun May 9, 2021
b706f11
기타: Conflict 해결 및 불필요한 파일 제거
0417taehyun May 9, 2021
b633060
기타: Conflcit 해결
0417taehyun May 9, 2021
101c18e
ㅅ수정: .env 파일 삭제
0417taehyun May 9, 2021
a045900
수정: Product Schema 삭제
0417taehyun May 9, 2021
7b16627
기타: 필요 없는 스키마 삭제
0417taehyun May 9, 2021
54ab10f
수정: 스터디룸 관련 엔드포인트 리팩토링
0417taehyun May 9, 2021
0165e57
추가: 에러 헨들링
0417taehyun May 9, 2021
c0e048a
수정: 스터디룸 관련 코드 리팩토링 및 에러 헨들링 추가
0417taehyun May 11, 2021
cf4fefe
수정: Update Schema 예시 추가
0417taehyun May 11, 2021
46d3786
수정: 코드 리팩토링 및 공통 에러 추가
0417taehyun May 12, 2021
f897487
수정: 모호한 return value 및 CRUD, API 코드 리팩토링
0417taehyun May 12, 2021
df6fea8
수정: 오타 및 클라이언트에 잡히지 못한 에러 메시지 출력
0417taehyun May 12, 2021
9804943
수정: 오타 수정
0417taehyun May 12, 2021
a0beee3
추가 : bearer 제거 데코레이터 추가
Limm-jk May 15, 2021
2e5ee25
추가 : auth 서비스 logging 및 예외처리 추가
Limm-jk May 15, 2021
cccd3d1
수정 : schemas 구조 변경 및 예시 추가
Limm-jk May 15, 2021
855f970
수정 : init 구조 변경
Limm-jk May 15, 2021
a15f2d5
수정 : user api 구조 및 response 형태 변경
Limm-jk May 15, 2021
cbbc3a1
수정 : errors 오타 제거
Limm-jk May 16, 2021
488c344
추가 : Forbidden Handler
Limm-jk May 16, 2021
7dbc260
수정 : response 양식 적용
Limm-jk May 16, 2021
bbb06fa
추가 : get_user 및 user backdoor 추가
Limm-jk May 16, 2021
7d706d8
수정 : settings 구조 변경에 의한 수정사항
Limm-jk May 16, 2021
d8fe5ae
수정 : study_rooms crud get메소드 반환 형식 변경
Limm-jk May 16, 2021
51aae2a
추가 : user에 goal 컬럼 추가
Limm-jk May 16, 2021
9efaf41
수정 : 다양한 입력 커버를 위한 데코레이터 매개변수 형식 변경
Limm-jk May 16, 2021
8418112
추가 : authDecorator 추가
Limm-jk May 16, 2021
aa632b0
수정 : starlette -> fastapi로 수정
Limm-jk May 17, 2021
d786c28
수정 : goal의 dict타입 예시 요일 영어로 변경
Limm-jk May 17, 2021
cfbcd75
수정 : UserResponse 제거 및 success/UserDataResponse 추가
Limm-jk May 17, 2021
254f182
수정 : UserDataResponse 적용
Limm-jk May 17, 2021
dd3b244
수정 : crud/user -> users
Limm-jk May 17, 2021
46f4c8d
수정 : api/users import 구조 변경
Limm-jk May 17, 2021
514e3e0
추가 : DI를 통해 사용할 수 있는 auth 로직 추가
Limm-jk May 17, 2021
05806a1
추가: socket server & 스터디룸 /join 엔드포인트
0417taehyun May 18, 2021
69e6179
추가: 스터디룸 입장 엔드포인트 및 소켓 통신
0417taehyun May 19, 2021
2c7a309
수정: 스터디룸 입장 엔드포인트 및 소켓 관련 DB 로직 CRUD로 이관
0417taehyun May 19, 2021
7bce3bd
수정: requirements.txt
0417taehyun May 20, 2021
eb19059
수정: Error 관련 stackoverflow 해결
0417taehyun May 20, 2021
35982ec
수정: Dockerfile
0417taehyun May 20, 2021
ea1ea71
수정: update 엔드포인트 Exception 메시지 부분 오타 수정
0417taehyun May 20, 2021
d9d8f7d
수정: 소켓 통신 연결 수정
0417taehyun May 20, 2021
bafe976
추가: CORS 관련 ORIGIN & HOST 등의 기능 추가
0417taehyun May 21, 2021
228bfa5
추가: CORS 관련 DeploySetting 추가 (차후 상세 내역 구현 필요)
0417taehyun May 21, 2021
f613365
추가: 학습 레포트 관련 데이터베이스 모델링
0417taehyun May 21, 2021
85dbc31
수정: My Study 테이블 study_room_id 컬럼 추가
0417taehyun May 21, 2021
f9d405d
수정: My Study 테이블 date 컬럼 추가 및 Report 테이블 date 컬럼 삭제
0417taehyun May 22, 2021
41c5034
수정: Report 테이블 date 컬럼 수정
0417taehyun May 22, 2021
0ed410d
수정: MyStudies 테이블 date 컬럼 삭제
0417taehyun May 22, 2021
48863c6
수정: 마이그레이션 삭제 및 오타 수정
0417taehyun May 23, 2021
a3bb56d
수정: 데이터베이스 스키마 및 엔드포인트 스키마
0417taehyun May 24, 2021
815b80b
수정: 컬럼 수정 및 time_settings 삭제
0417taehyun May 24, 2021
7dd6505
수정: TimeSettings 부분 KCT 추가
0417taehyun May 24, 2021
f47b621
수정: 사용하지 않는 패키지 삭제
0417taehyun May 24, 2021
09337ed
수정: date default value
0417taehyun May 24, 2021
420b99d
수정: 스터디룸 엔드포인트 오타 수정
0417taehyun May 25, 2021
1867bc3
수정: 모델에서 처리하던 default date 값 삭제
0417taehyun May 25, 2021
f2966a3
수정: 테이블 컬럼 이름 변경
0417taehyun May 25, 2021
10fae07
수정: 엔드포인트 필터 오타 수정
0417taehyun May 25, 2021
452e08e
수정: ondelete
0417taehyun May 25, 2021
34b5563
수정: as_uuid=True 추가
0417taehyun May 25, 2021
7b93fe4
수정: 본인이 만든 스터디룸 조회 가능하게 엔드포인트 수정
0417taehyun May 25, 2021
b2d4322
수정: 스터디룸 조회 엔드포인트 쿼리 파라미터 수정
0417taehyun May 26, 2021
131f7df
수정: 오타 수정
0417taehyun May 26, 2021
dafaf72
수정: CORS
0417taehyun May 27, 2021
1baa47e
수정: host, expose_headers 구체적 명시
0417taehyun May 27, 2021
1d39701
수정 : 배포 인증정보
Limm-jk May 27, 2021
9735ccb
수정 : 인증 정보 및 SSL정보 해결
Limm-jk May 27, 2021
4adeae8
추가: 학습 레포트 관련 스키마 및 라우터 정의
0417taehyun May 25, 2021
a2e60ef
추가: 학습 레포트 관련 엔드포인트 및 소켓 기능
0417taehyun May 27, 2021
9b7d821
수정: rebase & my_studies update query
0417taehyun May 27, 2021
db282b1
추가: 학습 레포트 관련 스키마 및 라우터 정의
0417taehyun May 25, 2021
1b7e45e
추가: 학습 레포트 관련 엔드포인트 및 소켓 기능
0417taehyun May 27, 2021
be68522
수정: CORS 관련 수정
0417taehyun May 28, 2021
6d5384e
수정: 404 엔드포인트 200으로 변경 (#42)
0417taehyun May 29, 2021
4fb1675
수정: GET 엔드포인트 에러 핸들링 및 disturbances 테이블 모델 (#43)
0417taehyun May 29, 2021
977da2c
수정: main 파일 수정
0417taehyun May 29, 2021
8eac91a
추가 : socket 서비스 class화 및 로직 변경
Limm-jk May 29, 2021
aa6bd37
수정: 스터디룸 수정 및 삭제 엔드포인트 Forbidden 핸들링 추가
0417taehyun May 29, 2021
8952a62
수정 : access token 유지 시간 500시간으로 임시 설정
Limm-jk May 29, 2021
a0702bc
수정 : sign_in 헤더 로직 오류 수정
Limm-jk May 29, 2021
b9e88b2
수정 : get_user 예외처리 추가
Limm-jk May 29, 2021
a62e76b
수정: 스터디룸 수정 및 삭제 유효성 검증 및 마이스터디 업데이트 로직 수정
0417taehyun May 29, 2021
2a55900
수정: 스터디룸 입장 관련 불피요한 사용자 아이디 쿼리 파라미터 삭제
0417taehyun Jun 21, 2021
5a23cbe
수정 : parsing_token_decorator 예외처리 추가
Limm-jk Jun 21, 2021
112f20d
수정 : user_id 자료형 변경
Limm-jk Jun 21, 2021
047b6ed
수정 : 액세스토큰 유효기간 증가
Limm-jk Jun 21, 2021
b5f389e
수정 : status response key값 수정
Limm-jk Jun 24, 2021
4bd9046
수정 : key의 path를 지정해주는 부분 오타 수정
Limm-jk Jun 24, 2021
9515491
추가 : redis 로직
Limm-jk Jun 24, 2021
5bf5a65
추가 : redis_settings 추가
Limm-jk Jun 24, 2021
147e99c
추가 : redis requirements 추가
Limm-jk Jun 30, 2021
82c3752
수정: 소켓 에러 핸들링 추가 및 에밋 양식 수정
0417taehyun Jul 1, 2021
627c4fc
수정: 소켓 에러 핸들링 수정 및 로그 확인을 위한 출력 추가(배포 직전 삭제 예정)
0417taehyun Jul 1, 2021
f17d293
수정: 소켓 연결 해제 이벤트 관련 로직 수정
0417taehyun Jul 1, 2021
2e96faa
추가 : socket에 redis로직 추가
Limm-jk Jul 2, 2021
bc94506
수정 : reports의 success예시 변경
Limm-jk Jul 2, 2021
c1ad819
수정 : reports 결과에 max status 컬럼 추가
Limm-jk Jul 2, 2021
75ad5f7
수정 : redis 인코딩 문제 해결 및 동작 테스트
Limm-jk Jul 2, 2021
c192cf5
수정 : auth 로직 관련 오류 해결
Limm-jk Jul 2, 2021
edf1d57
추가 : 리드미 작성 및 이미지
Limm-jk Jul 2, 2021
a72cadf
추가 : my_study id로 조회하는 api 추가
Limm-jk Jul 2, 2021
bb86e77
추가 : my_study id로 조회하는 repo method 추가
Limm-jk Jul 2, 2021
9db0167
수정 : redis 서버 설정 오류 수정
Limm-jk Jul 2, 2021
8713e99
수정 : study_room join check 로직 추가 및 예외처리
Limm-jk Jul 2, 2021
1a467e6
수정 : get_reports value로 시간을 주도록 설정
Limm-jk Jul 2, 2021
78b2538
추가 : report 업데이트 시, 집중도 연산하는 로직 추가
Limm-jk Jul 2, 2021
b330e8c
수정 : socket 서버 관련 오류 수정
Limm-jk Jul 2, 2021
e13a1a5
수정: Socket status event response
0417taehyun Jul 7, 2021
335ab72
수정: 소켓 모든 이벤트 Response 수정
0417taehyun Jul 14, 2021
7da5430
수정 : 리드미 프로젝트 소개 및 실행방법 추가
Limm-jk Oct 11, 2021
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 0 additions & 3 deletions .env

This file was deleted.

11 changes: 8 additions & 3 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@

#
# Created by https://www.toptal.com/developers/gitignore/api/python,vscode
# Edit at https://www.toptal.com/developers/gitignore?templates=python,vscode

Expand Down Expand Up @@ -152,11 +152,16 @@ Thumbs.db


### vscode ###
.vscode/*
.vscode
!.vscode/settings.json
!.vscode/tasks.json
!.vscode/launch.json
!.vscode/extensions.json
*.code-workspace

# End of https://www.toptal.com/developers/gitignore/api/python,vscode
# End of https://www.toptal.com/developers/gitignore/api/python,vscode
.idea/

.vscode/

.env
10 changes: 10 additions & 0 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
FROM python:3.8

WORKDIR /code
ADD . /code
COPY ./requirements.txt /code/requirements.txt
RUN pip install -r requirements.txt
COPY . /code
ENV DOCKERIZE_VERSION v0.6.1

CMD ["python3", "-m", "app.main"]
44 changes: 42 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,2 +1,42 @@
# ML-Team-Backend
ML Team Backend
# Studeep API Server✨
### **내 꿈을 향해 깊은 곳으로, 스터딥**

학습 모니터링을 통해 몰입환경을 만들어주는 공부 습관 개선 서비스

**집에서 집중하기, 잘하고 계신가요?**

코로나 19로 온라인 개학과 원격 수업이 자리 잡은 환경에서, 집에서 일과 공부를 새로운 방식으로 하는 걸 쉽게 확인할 수 있어요. 이제는 집이라는 공간에서 학업과 업무 그리고 휴식까지 24시간을 함께 하는 공간이 되었고, 그곳에서 각자 공부와 일에 집중하기 위해 큰 노력을 기울이고 있어요.

그래서 "집이라는 공간에서도 몰입할 수 있는 환경을 어떻게 만들 수 있을까?"라는 질문에서, 스터딥이 시작되었어요. 학습 모니터링을 통해 5초면 몰입할 수 있는 환경을 만들어드릴게요.

## Live Service
[Studeep](https://www.studeep.com)

## Getting Started
```
// 의존성 설치
pip install -r requirements.txt

// DB Migration
PYTHONPATH=. alembic revision --autogenerate -m "migration name"
PYTHONPATH=. alembic upgrade head

// 서버 실행
python3 -m app.main
```



## Production
![](./images/studeep_product.png)

## Architecture
![](./images/studeep_architecture.png)

## Modeling
![](./images/studeep_modeling.png)

## API Docs
[Swagger](https://www.studeep.com/docs)


36 changes: 36 additions & 0 deletions app/api/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
from fastapi import APIRouter, Depends

from app.api import users, study_rooms, my_studies, reports
from app.core import (
study_rooms_settings,
user_settings,
my_studies_settings,
report_settings
)
from app.service import auth_token


api_router = APIRouter()
api_router.include_router(
users.router,
prefix=user_settings.API_USER,
tags=['users']
)
api_router.include_router(
router = study_rooms.router,
prefix = study_rooms_settings.API_STUDY_ROOM,
# dependencies = [ Depends(auth_token) ],
tags = [ 'study_rooms' ]
)
api_router.include_router(
router = my_studies.router,
prefix = my_studies_settings.API_MY_STUDY,
# dependencies = [ Depends(auth_token) ],
tags = [ 'my_studies' ]
)
api_router.include_router(
router = reports.router,
prefix = report_settings.API_REPORT,
# dependencies = [ Depends(auth_token) ],
tags = [ 'reports' ]
)
100 changes: 100 additions & 0 deletions app/api/my_studies.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,100 @@
import traceback

from fastapi import (
APIRouter,
Depends,
status
)
from fastapi.responses import JSONResponse
from sqlalchemy.orm.session import Session

from app.api.deps import get_db
from app.crud import my_studies
from app.schemas import (
ErrorResponseBase,
GetMyStudiesResponse,
NotFoundMyStudiesHandling
)
from app.errors import (
get_detail,
NoSuchElementException
)


router = APIRouter()


@router.get(
'',
responses = {
200: {
"model": GetMyStudiesResponse,
"description": "마이스터디 조회 성공"
},
500: {
"model": ErrorResponseBase,
"description": "서버에서 잡지 못한 에러"
}
}
)
def get_my_studies(date: str, user_id: int, db: Session = Depends(get_db)):
try:
data = my_studies.get(db, date, user_id)
return JSONResponse(
status_code = status.HTTP_200_OK,
content = {'data': data}
)

except NoSuchElementException:
return JSONResponse(
status_code = status.HTTP_200_OK,
content = {'data': []}
)

except Exception as error:
print(traceback.print_exc())
return JSONResponse(
status_code = status.HTTP_500_INTERNAL_SERVER_ERROR,
content = {'detail': f'server error: {error}'}
)

finally:
db.close()


@router.get(
'/{my_study_id}',
responses = {
200: {
"model": GetMyStudiesResponse,
"description": "마이스터디 조회 성공"
},
500: {
"model": ErrorResponseBase,
"description": "서버에서 잡지 못한 에러"
}
}
)
def get_my_studies(my_study_id: int, db: Session = Depends(get_db)):
try:
data = my_studies.get_by_id(db, my_study_id)
return JSONResponse(
status_code = status.HTTP_200_OK,
content = {'data': data}
)

except NoSuchElementException:
return JSONResponse(
status_code = status.HTTP_200_OK,
content = {'data': []}
)

except Exception as error:
print(traceback.print_exc())
return JSONResponse(
status_code = status.HTTP_500_INTERNAL_SERVER_ERROR,
content = {'detail': f'server error: {error}'}
)

finally:
db.close()
63 changes: 63 additions & 0 deletions app/api/reports.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
import traceback

from fastapi import (
APIRouter,
Depends,
status
)
from fastapi.responses import JSONResponse
from sqlalchemy.orm.session import Session

from app.api.deps import get_db
from app.crud import reports
from app.schemas import (
ErrorResponseBase,
GetReportReponse,
NotFoundReportHandling
)
from app.errors import (
get_detail,
NoSuchElementException
)


router = APIRouter()


@router.get(
'',
responses = {
200: {
"model": GetReportReponse,
"description": "레포트 조회 성공"
},
500: {
"model": ErrorResponseBase,
"description": "서버에서 잡지 못한 에러"
}
}
)
def get_report(date: str, user_id: int, db: Session=Depends(get_db)):
try:
data = reports.get(db, user_id, date)
return JSONResponse(
status_code = status.HTTP_200_OK,
content = {'data': data}
)

except NoSuchElementException:
return JSONResponse(
status_code = status.HTTP_200_OK,
content = {'data': []}
)

except Exception as error:
print(traceback.print_exc())
return JSONResponse(
status_code = status.HTTP_500_INTERNAL_SERVER_ERROR,
content = {'detail': f'server error: {error}'}
)

finally:
db.close()

Loading