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

[Server] apple oauth 로그인 로직 수정 #118

Merged
merged 8 commits into from
Nov 27, 2023

Conversation

pminsung12
Copy link
Collaborator

@pminsung12 pminsung12 commented Nov 27, 2023

🚀 완료한 기능 혹은 수정 기능


💡 고민과 해결 과정

로그인 로직

image

  1. client로부터 {identityToken, fullName}을 받는다.
  2. identity 토큰을 검증한다.

image

3.그런데, identity Token내 payload에 속한 값들이 변조되지 않았는지 검증하기 위해서는 애플 서버의 public key를 사용해 JWS E256 signature를 검증해야한다.
4. public key는 get요청을 apple서버로부터 반환을 받는데, 키를 두개를 받는다. 이 중에 identity token 헤더에 있던 kid 값과 일치하는 키 값을 가져온다.
5. 이때, 반환 값은 JWTSet.Keys 형식이지만, identity 토큰을 검증하는 부분에서 jwt.verify 함수에 전달되는 applePublicKey 인자는 JWK 형식의 객체가 아닌 PEM 형식의 문자열이어야 하기 때문에 @panva/jose 라이브러리를 사용해 형식을 바꿔준다.
6. identityToken에서 항목들을 검증한다.
7. user가 존재하는지 확인하고, 없다면 identityToken에 있던 email, body에서 받은 fullName등을 활용해 user를 생성한다.
8. 자체적인 accessToken과 refeshToken을 발급해 반환한다.
9. 성공은 200, {accessToken, refreshToken}
10. 실패는 400, Unauthorized exception.


1. appleToken 발급 로직 삭제

배경

  • 기존에는 clientSecret을 통해 appleToken을 발급받고 발급받으면 accessToken과 refreshToken을 반환해주었다.

문제

  • appleToken을 발급받는 것 자체가 세션 유지와 apple api를 사용하기 위해 발급받는 것인데, 우리는 이미 사용자 인증과 동시에 자체적인 jwt 토큰을 만들어주어 세션유지를 한다.

해결

  • 우리서비스는 apple api를 사용하지도 않고, only 사용자의 인증 목적인데 identityToken만 검증하면 사용자의 인증은 완료되므로 client secret과 apple token을 발급받는 로직을 삭제한다.
  • 인증과 동시에 signToken 함수를 사용해 accessToken과 refreshToken을 발급해주고 함께 반환한다.

2. accessToken 재발급

배경

  • refreshAccessToken 함수는 refreshToken이 오면, accessToken을 새로 발급해준다.

문제

  • refreshToken이 만료될 때마다 사용자는 다시 애플 로그인 해야하는 번거로움이 있다.

해결

  • accessToken이 만료되서 재발급 요청이 들어올 때마다 refreshToken도 같이 갱신되도록 한다.

📸 스크린샷

N/A


✅ 테스트 결과(커버리지/테스트 결과)

N/A

@pminsung12 pminsung12 added server 서버 쪽 이슈 feature 기능 개발 bug 버그 수정 labels Nov 27, 2023
@pminsung12 pminsung12 added this to the 0.3.0 milestone Nov 27, 2023
@pminsung12 pminsung12 self-assigned this Nov 27, 2023
@yangdongsuk
Copy link
Collaborator

수고하셨습니다.

@yangdongsuk yangdongsuk merged commit 7f88671 into server/develop Nov 27, 2023
@yangdongsuk yangdongsuk deleted the server/feature/#111 branch November 27, 2023 17:31
yangdongsuk added a commit that referenced this pull request Nov 27, 2023
* [Server] 개발환경 세팅 (#4)

* build: open-list-server init

* chore: @nestjs/config class-validator class-transformer 설치

* chore: 루트 레벨에서 설치한 패키지 삭제

* chore: NestJs 개발 환경 세팅

* chore: @nestjs/config class-validator class-transformer 설치

* Server/feature/#13 (#25)

* chore: postgresql, nestjs docker 세팅

* chore: @nestjs/typeorm, typeorm, pg 설치

* chore: Typeorm 세팅 및 TestModel 테이블 생성

* 테스트용 유저 API 구현 (#30)

* chore: common resource 추가

* chore: users resource 추가

* feature: base entity 구현

* feature: usersEntity 구현

* feature: 모듈에 usersModel 추가

* style: entity,dto의 users -> user로 변경

* feature: CreateUserDto 구현

* feature: userEntity 이메일 필드 추가

* feature: createUserDto 이메일 필드 추가

* feature: user patch->put으로 변경

* feature: updateUserDto 구현

* feature : create user 구현

* feature: 모든 유저의 정보를 가져오는 API 구현

* feature: 특정 유저의 정보를 가져오는 API 구현

* feature: user 정보 수정 API 구현

* feature: user 삭제 API 구현

* feature: ValidationPipe 적용

* refactor: usersService 리팩토링

* [Server] 유닛 테스트 환경 세팅 (#32)

* chore: test 경로 설정

* feature: TestCommonModule 구현

* feature: users.service.spec.ts 의존성 주입

* feature: users.controller.spec.ts 의존성 주입

* [Server] Users resource 이름 변경 (#34)

* style: usersController 네이밍에 컨벤션 맞게 변경

* style: usersService 컨벤션에 따른 네이밍 변경

* style: UsersModel -> UserModel 컨벤션에 따른 네이밍 변경

* feature: usersService 테스트 코드 작성 (#39)

* [Server] Folder entity 생성 및 crud 구현 (#42)

* feat: folders crud 구현

* chore: TestModel 삭제 및 관련된 종속성 제거

* feat: folders.controller.spec.ts 삭제, folders.service.spec.ts 구현

* feature: docker파일 수정 (#57)

* feat: private checklist entity 생성 및 crud 구현 (#61)

* chore: 개발용 postgres 포트변경 5432->5433, .env도 port 5433으로 변경필요

* feat: checklists res 생성

* feat: checklist, private-checklist, shared-checklisst 엔티티 생성, user모델과 folder모델과의 의존관계 주입

* feat: author->editor로 수정, 공유체크리스트와 사용자의 relation을 many to many로 업데이트

* feat: 개인, 공유 체크리스트에 대해 생성과 업데이트 시 dto 생성

* fix: class 이름 오타 수정

* refactor: rest api 방식에 따라 함수명 변경

* feat: CheckListModel에서 진행률 컬럼 삭제

* feat: folder와 user간의 manyToOne relation적용

* feat: private-checklist crud 작성

* feat: folder service 커버리지 100 달성

* test: private-checklist test code 작성, 커버리지 92퍼센트

* feat: checklist 폴더 분리 & dto 빈문자열 검증 추가 (#66)

* refactor: checklists를 private, shared폴더로 분리.

* refactor: private-checklists를 folders 하위로 이동

* fix: 빈문자열 검증 추가

* [Server] Winston으로 로그 관리 (#70)

* chore: nest-winston winston winston-daily-rotate-file 설치

* feat: winston logger 설정 파일 구현

* feat: winston logger middleware 구현

* feat: 요청 logger middleware 구현

* feat: 로그에 요청 처리 시간 추가되도록 개선

* chore: PR 템플릿 수정

* chore: PR 템플릿 수정

* feat: jwt access, refresh token 기반 인가 구현

* chore: auth resource 추가

* chore: jwt 모듈 추가

* feature: signToken 구현

* feature: 토큰 검증, 토큰 재발급 기능 구현

* feature: 로그인 기능 구현

* feature: 로그인 관련 서비스 구현

* feature: login 컨트롤러 구현

* style: loginDto -> loginUserDto로 변경

* feature: access 토큰 재발급 컨트롤러 구현

* refactor: access토큰 재발급 형식 변경

* feature: 유저 register 기능 구현

* feature: auth.service.ts 테스트 코드 작성

* fix: 이메일 중복시 에러 메시지 수정

---------

Co-authored-by: Minseong Park <52368015+pminsung12@users.noreply.github.com>

* [Server] shared-checklist 소켓 구현 (#78)

* [Server] apple oauth api 구현 (#86)

* chore: @nestjs/axios 설치

* chore: axios 설치

* chore: axios 설치

* feat: dto수정, userId 컬럼추가, providerId 수정, fullName 컬럼 추가

* feat: entity에 따라 dto 항목 수정

* feat: apple oauth 로그인 서비스 함수 추가

client secret 만들고, axios post로 user 정보 가지고옴.

* feat: apple oauth 로그인 엔드포인트 추가

* feat: apple 유저에대해 create, update 함수 구현

* feat: publicKey 발급받는 로직추가

* [Server] access 토큰 재발급시 유저 정보 없는 버그 수정 (#83)

* [Server] privateChecklist의 내용 저장 api 구현 (#88)

* [Server] apple oauth 로그인 로직 수정 (#118)

* feat: env 사용방식 변경 + idToken 검증로직 추가

* chore: jwk를 pem으로 변환하기 위한 jose 라이브러리 설치

* chore: jose 라이브러리 제거 @panva/jose 설치

* feat: request body로 들어오는 auth-user.dto.ts 수정

* feat: 애플 유저 등록 로직 수정

* docs: jsdoc return type 수정

* feat: apple login 로직 수정(appleToken, clientSecret 로직 삭제)

* feat: refreshAccessToken 함수에서 refreshToken도 함께 반환해주도록 로직 수정

---------

Co-authored-by: Minseong Park <52368015+pminsung12@users.noreply.github.com>
@pminsung12 pminsung12 modified the milestones: 0.3.0, 0.4.0 Nov 30, 2023
yangdongsuk added a commit that referenced this pull request Nov 30, 2023
* [Server] 개발환경 세팅 (#4)

* build: open-list-server init

* chore: @nestjs/config class-validator class-transformer 설치

* chore: 루트 레벨에서 설치한 패키지 삭제

* chore: NestJs 개발 환경 세팅

* chore: @nestjs/config class-validator class-transformer 설치

* Server/feature/#13 (#25)

* chore: postgresql, nestjs docker 세팅

* chore: @nestjs/typeorm, typeorm, pg 설치

* chore: Typeorm 세팅 및 TestModel 테이블 생성

* 테스트용 유저 API 구현 (#30)

* chore: common resource 추가

* chore: users resource 추가

* feature: base entity 구현

* feature: usersEntity 구현

* feature: 모듈에 usersModel 추가

* style: entity,dto의 users -> user로 변경

* feature: CreateUserDto 구현

* feature: userEntity 이메일 필드 추가

* feature: createUserDto 이메일 필드 추가

* feature: user patch->put으로 변경

* feature: updateUserDto 구현

* feature : create user 구현

* feature: 모든 유저의 정보를 가져오는 API 구현

* feature: 특정 유저의 정보를 가져오는 API 구현

* feature: user 정보 수정 API 구현

* feature: user 삭제 API 구현

* feature: ValidationPipe 적용

* refactor: usersService 리팩토링

* [Server] 유닛 테스트 환경 세팅 (#32)

* chore: test 경로 설정

* feature: TestCommonModule 구현

* feature: users.service.spec.ts 의존성 주입

* feature: users.controller.spec.ts 의존성 주입

* [Server] Users resource 이름 변경 (#34)

* style: usersController 네이밍에 컨벤션 맞게 변경

* style: usersService 컨벤션에 따른 네이밍 변경

* style: UsersModel -> UserModel 컨벤션에 따른 네이밍 변경

* feature: usersService 테스트 코드 작성 (#39)

* [Server] Folder entity 생성 및 crud 구현 (#42)

* feat: folders crud 구현

* chore: TestModel 삭제 및 관련된 종속성 제거

* feat: folders.controller.spec.ts 삭제, folders.service.spec.ts 구현

* feature: docker파일 수정 (#57)

* feat: private checklist entity 생성 및 crud 구현 (#61)

* chore: 개발용 postgres 포트변경 5432->5433, .env도 port 5433으로 변경필요

* feat: checklists res 생성

* feat: checklist, private-checklist, shared-checklisst 엔티티 생성, user모델과 folder모델과의 의존관계 주입

* feat: author->editor로 수정, 공유체크리스트와 사용자의 relation을 many to many로 업데이트

* feat: 개인, 공유 체크리스트에 대해 생성과 업데이트 시 dto 생성

* fix: class 이름 오타 수정

* refactor: rest api 방식에 따라 함수명 변경

* feat: CheckListModel에서 진행률 컬럼 삭제

* feat: folder와 user간의 manyToOne relation적용

* feat: private-checklist crud 작성

* feat: folder service 커버리지 100 달성

* test: private-checklist test code 작성, 커버리지 92퍼센트

* feat: checklist 폴더 분리 & dto 빈문자열 검증 추가 (#66)

* refactor: checklists를 private, shared폴더로 분리.

* refactor: private-checklists를 folders 하위로 이동

* fix: 빈문자열 검증 추가

* [Server] Winston으로 로그 관리 (#70)

* chore: nest-winston winston winston-daily-rotate-file 설치

* feat: winston logger 설정 파일 구현

* feat: winston logger middleware 구현

* feat: 요청 logger middleware 구현

* feat: 로그에 요청 처리 시간 추가되도록 개선

* chore: PR 템플릿 수정

* chore: PR 템플릿 수정

* feat: jwt access, refresh token 기반 인가 구현

* chore: auth resource 추가

* chore: jwt 모듈 추가

* feature: signToken 구현

* feature: 토큰 검증, 토큰 재발급 기능 구현

* feature: 로그인 기능 구현

* feature: 로그인 관련 서비스 구현

* feature: login 컨트롤러 구현

* style: loginDto -> loginUserDto로 변경

* feature: access 토큰 재발급 컨트롤러 구현

* refactor: access토큰 재발급 형식 변경

* feature: 유저 register 기능 구현

* feature: auth.service.ts 테스트 코드 작성

* fix: 이메일 중복시 에러 메시지 수정

---------

Co-authored-by: Minseong Park <52368015+pminsung12@users.noreply.github.com>

* [Server] shared-checklist 소켓 구현 (#78)

* [Server] apple oauth api 구현 (#86)

* chore: @nestjs/axios 설치

* chore: axios 설치

* chore: axios 설치

* feat: dto수정, userId 컬럼추가, providerId 수정, fullName 컬럼 추가

* feat: entity에 따라 dto 항목 수정

* feat: apple oauth 로그인 서비스 함수 추가

client secret 만들고, axios post로 user 정보 가지고옴.

* feat: apple oauth 로그인 엔드포인트 추가

* feat: apple 유저에대해 create, update 함수 구현

* feat: publicKey 발급받는 로직추가

* [Server] access 토큰 재발급시 유저 정보 없는 버그 수정 (#83)

* [Server] privateChecklist의 내용 저장 api 구현 (#88)

* [Server] apple oauth 로그인 로직 수정 (#118)

* feat: env 사용방식 변경 + idToken 검증로직 추가

* chore: jwk를 pem으로 변환하기 위한 jose 라이브러리 설치

* chore: jose 라이브러리 제거 @panva/jose 설치

* feat: request body로 들어오는 auth-user.dto.ts 수정

* feat: 애플 유저 등록 로직 수정

* docs: jsdoc return type 수정

* feat: apple login 로직 수정(appleToken, clientSecret 로직 삭제)

* feat: refreshAccessToken 함수에서 refreshToken도 함께 반환해주도록 로직 수정

* [Server] Clova Studio api  구현 (#126)

* feat:  checklist-ai 리소스 생성

* feat: create-checklist-items.dto.ts 요청 dto 생성

* feat: 문자열 및 각종 옵션 상수화

* feat: user-role const 파일 삭제 => 함수화

* feat: /checklist-ai POST 요청 api 생성

대,중,소 카테고리를 body로 받아오면 clova studio에서 체크리스트 항목 10개를 반환한다.

* feat: AccessTokenGuard 구현 및 적용 (#129)

* feat: access token guard 구현

* feat: access token guard 전역 적용

* style: access-token.guard.ts 주석 추가

* feat: userId decorator 구현

* feat: folders controller에 userId 데코레이터 추가

* feat: 폴더 서비스에 user 데코레이터 추가

* feat: 개인 체크리스트 컨트롤러에 유저 데코레이터 추가

* feat: private-checklists service에 user 데코레이터 추가

* fix: 테스트 코드 수정

* Server/feature/#128 (#139)

* feat: json 구조로 카테고리 데이터 정의

* feat: categories 의존성 주입

* feat: endpoint만들고, 실제 존재하는 id인지 검증하는 dto 생성

* fix: 오타수정 forder->folder

* feat: param에 dto 적용하지 못해 삭제

* feat: 카테고리 json 데이터 변수명 변경, 대문자로

* feat: 대,중,소 카테고리 반환 api 구현

* test: categories.service.spec.ts 테스트 코드 작성

* test: categories.service.spec.ts 테스트 코드 수정 커버리지 100

* feat: 공유 체크리스트 API 및 소켓 작업 구현 (#140)

* feat: shared checklist item entity 구현

* style: SharedChecklistItemModel 오타 수정

* feat: shared checklist id uuid로 변경

* feat: create shared checklist 디티오 수정

* feat: shared-checklists 생성 구현

* refactor: shared-checklists 저장하는 함수 분리

* feat: shared-checklists 1개, 전부 가져오는 기능 추가

* feat: 유저 초대 기능 추가

* feat: 공유 체크리스트 삭제 기능 구현

* style: shared-checklists service 주석 추가

* feature: 공유 체크리스트 소켓에 데이터 누적 기능 추가

* feat: shared-checklists 소켓 통신 시 데이터 데베에 저장 구현

* feat: 소켓 연결시 방의 데이터 히스토리를 전송하는 기능 추가

* style: 소켓 주석 추가

* 🔐feat: 개발용 임시로 액세스,리프레시 토큰들 만료기한 일주일로 설정 (#142)

---------

Co-authored-by: Minseong Park <52368015+pminsung12@users.noreply.github.com>
yangdongsuk added a commit that referenced this pull request Dec 4, 2023
* [Server] 개발환경 세팅 (#4)

* build: open-list-server init

* chore: @nestjs/config class-validator class-transformer 설치

* chore: 루트 레벨에서 설치한 패키지 삭제

* chore: NestJs 개발 환경 세팅

* chore: @nestjs/config class-validator class-transformer 설치

* Server/feature/#13 (#25)

* chore: postgresql, nestjs docker 세팅

* chore: @nestjs/typeorm, typeorm, pg 설치

* chore: Typeorm 세팅 및 TestModel 테이블 생성

* 테스트용 유저 API 구현 (#30)

* chore: common resource 추가

* chore: users resource 추가

* feature: base entity 구현

* feature: usersEntity 구현

* feature: 모듈에 usersModel 추가

* style: entity,dto의 users -> user로 변경

* feature: CreateUserDto 구현

* feature: userEntity 이메일 필드 추가

* feature: createUserDto 이메일 필드 추가

* feature: user patch->put으로 변경

* feature: updateUserDto 구현

* feature : create user 구현

* feature: 모든 유저의 정보를 가져오는 API 구현

* feature: 특정 유저의 정보를 가져오는 API 구현

* feature: user 정보 수정 API 구현

* feature: user 삭제 API 구현

* feature: ValidationPipe 적용

* refactor: usersService 리팩토링

* [Server] 유닛 테스트 환경 세팅 (#32)

* chore: test 경로 설정

* feature: TestCommonModule 구현

* feature: users.service.spec.ts 의존성 주입

* feature: users.controller.spec.ts 의존성 주입

* [Server] Users resource 이름 변경 (#34)

* style: usersController 네이밍에 컨벤션 맞게 변경

* style: usersService 컨벤션에 따른 네이밍 변경

* style: UsersModel -> UserModel 컨벤션에 따른 네이밍 변경

* feature: usersService 테스트 코드 작성 (#39)

* [Server] Folder entity 생성 및 crud 구현 (#42)

* feat: folders crud 구현

* chore: TestModel 삭제 및 관련된 종속성 제거

* feat: folders.controller.spec.ts 삭제, folders.service.spec.ts 구현

* feature: docker파일 수정 (#57)

* feat: private checklist entity 생성 및 crud 구현 (#61)

* chore: 개발용 postgres 포트변경 5432->5433, .env도 port 5433으로 변경필요

* feat: checklists res 생성

* feat: checklist, private-checklist, shared-checklisst 엔티티 생성, user모델과 folder모델과의 의존관계 주입

* feat: author->editor로 수정, 공유체크리스트와 사용자의 relation을 many to many로 업데이트

* feat: 개인, 공유 체크리스트에 대해 생성과 업데이트 시 dto 생성

* fix: class 이름 오타 수정

* refactor: rest api 방식에 따라 함수명 변경

* feat: CheckListModel에서 진행률 컬럼 삭제

* feat: folder와 user간의 manyToOne relation적용

* feat: private-checklist crud 작성

* feat: folder service 커버리지 100 달성

* test: private-checklist test code 작성, 커버리지 92퍼센트

* feat: checklist 폴더 분리 & dto 빈문자열 검증 추가 (#66)

* refactor: checklists를 private, shared폴더로 분리.

* refactor: private-checklists를 folders 하위로 이동

* fix: 빈문자열 검증 추가

* [Server] Winston으로 로그 관리 (#70)

* chore: nest-winston winston winston-daily-rotate-file 설치

* feat: winston logger 설정 파일 구현

* feat: winston logger middleware 구현

* feat: 요청 logger middleware 구현

* feat: 로그에 요청 처리 시간 추가되도록 개선

* chore: PR 템플릿 수정

* chore: PR 템플릿 수정

* feat: jwt access, refresh token 기반 인가 구현

* chore: auth resource 추가

* chore: jwt 모듈 추가

* feature: signToken 구현

* feature: 토큰 검증, 토큰 재발급 기능 구현

* feature: 로그인 기능 구현

* feature: 로그인 관련 서비스 구현

* feature: login 컨트롤러 구현

* style: loginDto -> loginUserDto로 변경

* feature: access 토큰 재발급 컨트롤러 구현

* refactor: access토큰 재발급 형식 변경

* feature: 유저 register 기능 구현

* feature: auth.service.ts 테스트 코드 작성

* fix: 이메일 중복시 에러 메시지 수정

---------

Co-authored-by: Minseong Park <52368015+pminsung12@users.noreply.github.com>

* [Server] shared-checklist 소켓 구현 (#78)

* [Server] apple oauth api 구현 (#86)

* chore: @nestjs/axios 설치

* chore: axios 설치

* chore: axios 설치

* feat: dto수정, userId 컬럼추가, providerId 수정, fullName 컬럼 추가

* feat: entity에 따라 dto 항목 수정

* feat: apple oauth 로그인 서비스 함수 추가

client secret 만들고, axios post로 user 정보 가지고옴.

* feat: apple oauth 로그인 엔드포인트 추가

* feat: apple 유저에대해 create, update 함수 구현

* feat: publicKey 발급받는 로직추가

* [Server] access 토큰 재발급시 유저 정보 없는 버그 수정 (#83)

* [Server] privateChecklist의 내용 저장 api 구현 (#88)

* [Server] apple oauth 로그인 로직 수정 (#118)

* feat: env 사용방식 변경 + idToken 검증로직 추가

* chore: jwk를 pem으로 변환하기 위한 jose 라이브러리 설치

* chore: jose 라이브러리 제거 @panva/jose 설치

* feat: request body로 들어오는 auth-user.dto.ts 수정

* feat: 애플 유저 등록 로직 수정

* docs: jsdoc return type 수정

* feat: apple login 로직 수정(appleToken, clientSecret 로직 삭제)

* feat: refreshAccessToken 함수에서 refreshToken도 함께 반환해주도록 로직 수정

* [Server] Clova Studio api  구현 (#126)

* feat:  checklist-ai 리소스 생성

* feat: create-checklist-items.dto.ts 요청 dto 생성

* feat: 문자열 및 각종 옵션 상수화

* feat: user-role const 파일 삭제 => 함수화

* feat: /checklist-ai POST 요청 api 생성

대,중,소 카테고리를 body로 받아오면 clova studio에서 체크리스트 항목 10개를 반환한다.

* feat: AccessTokenGuard 구현 및 적용 (#129)

* feat: access token guard 구현

* feat: access token guard 전역 적용

* style: access-token.guard.ts 주석 추가

* feat: userId decorator 구현

* feat: folders controller에 userId 데코레이터 추가

* feat: 폴더 서비스에 user 데코레이터 추가

* feat: 개인 체크리스트 컨트롤러에 유저 데코레이터 추가

* feat: private-checklists service에 user 데코레이터 추가

* fix: 테스트 코드 수정

* Server/feature/#128 (#139)

* feat: json 구조로 카테고리 데이터 정의

* feat: categories 의존성 주입

* feat: endpoint만들고, 실제 존재하는 id인지 검증하는 dto 생성

* fix: 오타수정 forder->folder

* feat: param에 dto 적용하지 못해 삭제

* feat: 카테고리 json 데이터 변수명 변경, 대문자로

* feat: 대,중,소 카테고리 반환 api 구현

* test: categories.service.spec.ts 테스트 코드 작성

* test: categories.service.spec.ts 테스트 코드 수정 커버리지 100

* feat: 공유 체크리스트 API 및 소켓 작업 구현 (#140)

* feat: shared checklist item entity 구현

* style: SharedChecklistItemModel 오타 수정

* feat: shared checklist id uuid로 변경

* feat: create shared checklist 디티오 수정

* feat: shared-checklists 생성 구현

* refactor: shared-checklists 저장하는 함수 분리

* feat: shared-checklists 1개, 전부 가져오는 기능 추가

* feat: 유저 초대 기능 추가

* feat: 공유 체크리스트 삭제 기능 구현

* style: shared-checklists service 주석 추가

* feature: 공유 체크리스트 소켓에 데이터 누적 기능 추가

* feat: shared-checklists 소켓 통신 시 데이터 데베에 저장 구현

* feat: 소켓 연결시 방의 데이터 히스토리를 전송하는 기능 추가

* style: 소켓 주석 추가

* 🔐feat: 개발용 임시로 액세스,리프레시 토큰들 만료기한 일주일로 설정 (#142)

* feat: 공유 체크리스트 아이템 권한 문제 및 uuid 문제 해결 (#146)

* fix: 공유 체크리스트 아이템 권한 없으면 접근 못하게 수정

* fix: 체크리스트 추가시 사용자가 있는지 검사

* fix: 공유 체크리스트 생성시 uuid가 아니면 서버가 죽는 현상 수정

* style: 불필요한 코드 제거

* feat: 소켓 다중 서버 지원  (#159)

* chore: docker-compose.yaml에 레디스 추가

* chore: redis 모듈 추가

* feature: nest 다중 포트 서버 구성

* feature: redis.module.ts 구현 및 적용

* feature: 소켓에 레디스 삽입

* feature: 소켓 pub/sub 구현

* feat: 소켓 레디스에 총 접속자수 증감 기능 추가

* feat: 소켓 히스토리 기능 레디스 적용

* refactor: shared-checklists.gateway.ts 리팩토링

* feat: 소켓 editing 이벤트 추가 (#164)

---------

Co-authored-by: Minseong Park <52368015+pminsung12@users.noreply.github.com>
yangdongsuk added a commit that referenced this pull request Dec 4, 2023
* [Server] 개발환경 세팅 (#4)

* build: open-list-server init

* chore: @nestjs/config class-validator class-transformer 설치

* chore: 루트 레벨에서 설치한 패키지 삭제

* chore: NestJs 개발 환경 세팅

* chore: @nestjs/config class-validator class-transformer 설치

* Server/feature/#13 (#25)

* chore: postgresql, nestjs docker 세팅

* chore: @nestjs/typeorm, typeorm, pg 설치

* chore: Typeorm 세팅 및 TestModel 테이블 생성

* 테스트용 유저 API 구현 (#30)

* chore: common resource 추가

* chore: users resource 추가

* feature: base entity 구현

* feature: usersEntity 구현

* feature: 모듈에 usersModel 추가

* style: entity,dto의 users -> user로 변경

* feature: CreateUserDto 구현

* feature: userEntity 이메일 필드 추가

* feature: createUserDto 이메일 필드 추가

* feature: user patch->put으로 변경

* feature: updateUserDto 구현

* feature : create user 구현

* feature: 모든 유저의 정보를 가져오는 API 구현

* feature: 특정 유저의 정보를 가져오는 API 구현

* feature: user 정보 수정 API 구현

* feature: user 삭제 API 구현

* feature: ValidationPipe 적용

* refactor: usersService 리팩토링

* [Server] 유닛 테스트 환경 세팅 (#32)

* chore: test 경로 설정

* feature: TestCommonModule 구현

* feature: users.service.spec.ts 의존성 주입

* feature: users.controller.spec.ts 의존성 주입

* [Server] Users resource 이름 변경 (#34)

* style: usersController 네이밍에 컨벤션 맞게 변경

* style: usersService 컨벤션에 따른 네이밍 변경

* style: UsersModel -> UserModel 컨벤션에 따른 네이밍 변경

* feature: usersService 테스트 코드 작성 (#39)

* [Server] Folder entity 생성 및 crud 구현 (#42)

* feat: folders crud 구현

* chore: TestModel 삭제 및 관련된 종속성 제거

* feat: folders.controller.spec.ts 삭제, folders.service.spec.ts 구현

* feature: docker파일 수정 (#57)

* feat: private checklist entity 생성 및 crud 구현 (#61)

* chore: 개발용 postgres 포트변경 5432->5433, .env도 port 5433으로 변경필요

* feat: checklists res 생성

* feat: checklist, private-checklist, shared-checklisst 엔티티 생성, user모델과 folder모델과의 의존관계 주입

* feat: author->editor로 수정, 공유체크리스트와 사용자의 relation을 many to many로 업데이트

* feat: 개인, 공유 체크리스트에 대해 생성과 업데이트 시 dto 생성

* fix: class 이름 오타 수정

* refactor: rest api 방식에 따라 함수명 변경

* feat: CheckListModel에서 진행률 컬럼 삭제

* feat: folder와 user간의 manyToOne relation적용

* feat: private-checklist crud 작성

* feat: folder service 커버리지 100 달성

* test: private-checklist test code 작성, 커버리지 92퍼센트

* feat: checklist 폴더 분리 & dto 빈문자열 검증 추가 (#66)

* refactor: checklists를 private, shared폴더로 분리.

* refactor: private-checklists를 folders 하위로 이동

* fix: 빈문자열 검증 추가

* [Server] Winston으로 로그 관리 (#70)

* chore: nest-winston winston winston-daily-rotate-file 설치

* feat: winston logger 설정 파일 구현

* feat: winston logger middleware 구현

* feat: 요청 logger middleware 구현

* feat: 로그에 요청 처리 시간 추가되도록 개선

* chore: PR 템플릿 수정

* chore: PR 템플릿 수정

* feat: jwt access, refresh token 기반 인가 구현

* chore: auth resource 추가

* chore: jwt 모듈 추가

* feature: signToken 구현

* feature: 토큰 검증, 토큰 재발급 기능 구현

* feature: 로그인 기능 구현

* feature: 로그인 관련 서비스 구현

* feature: login 컨트롤러 구현

* style: loginDto -> loginUserDto로 변경

* feature: access 토큰 재발급 컨트롤러 구현

* refactor: access토큰 재발급 형식 변경

* feature: 유저 register 기능 구현

* feature: auth.service.ts 테스트 코드 작성

* fix: 이메일 중복시 에러 메시지 수정

---------

Co-authored-by: Minseong Park <52368015+pminsung12@users.noreply.github.com>

* [Server] shared-checklist 소켓 구현 (#78)

* [Server] apple oauth api 구현 (#86)

* chore: @nestjs/axios 설치

* chore: axios 설치

* chore: axios 설치

* feat: dto수정, userId 컬럼추가, providerId 수정, fullName 컬럼 추가

* feat: entity에 따라 dto 항목 수정

* feat: apple oauth 로그인 서비스 함수 추가

client secret 만들고, axios post로 user 정보 가지고옴.

* feat: apple oauth 로그인 엔드포인트 추가

* feat: apple 유저에대해 create, update 함수 구현

* feat: publicKey 발급받는 로직추가

* [Server] access 토큰 재발급시 유저 정보 없는 버그 수정 (#83)

* [Server] privateChecklist의 내용 저장 api 구현 (#88)

* [Server] apple oauth 로그인 로직 수정 (#118)

* feat: env 사용방식 변경 + idToken 검증로직 추가

* chore: jwk를 pem으로 변환하기 위한 jose 라이브러리 설치

* chore: jose 라이브러리 제거 @panva/jose 설치

* feat: request body로 들어오는 auth-user.dto.ts 수정

* feat: 애플 유저 등록 로직 수정

* docs: jsdoc return type 수정

* feat: apple login 로직 수정(appleToken, clientSecret 로직 삭제)

* feat: refreshAccessToken 함수에서 refreshToken도 함께 반환해주도록 로직 수정

* [Server] Clova Studio api  구현 (#126)

* feat:  checklist-ai 리소스 생성

* feat: create-checklist-items.dto.ts 요청 dto 생성

* feat: 문자열 및 각종 옵션 상수화

* feat: user-role const 파일 삭제 => 함수화

* feat: /checklist-ai POST 요청 api 생성

대,중,소 카테고리를 body로 받아오면 clova studio에서 체크리스트 항목 10개를 반환한다.

* feat: AccessTokenGuard 구현 및 적용 (#129)

* feat: access token guard 구현

* feat: access token guard 전역 적용

* style: access-token.guard.ts 주석 추가

* feat: userId decorator 구현

* feat: folders controller에 userId 데코레이터 추가

* feat: 폴더 서비스에 user 데코레이터 추가

* feat: 개인 체크리스트 컨트롤러에 유저 데코레이터 추가

* feat: private-checklists service에 user 데코레이터 추가

* fix: 테스트 코드 수정

* Server/feature/#128 (#139)

* feat: json 구조로 카테고리 데이터 정의

* feat: categories 의존성 주입

* feat: endpoint만들고, 실제 존재하는 id인지 검증하는 dto 생성

* fix: 오타수정 forder->folder

* feat: param에 dto 적용하지 못해 삭제

* feat: 카테고리 json 데이터 변수명 변경, 대문자로

* feat: 대,중,소 카테고리 반환 api 구현

* test: categories.service.spec.ts 테스트 코드 작성

* test: categories.service.spec.ts 테스트 코드 수정 커버리지 100

* feat: 공유 체크리스트 API 및 소켓 작업 구현 (#140)

* feat: shared checklist item entity 구현

* style: SharedChecklistItemModel 오타 수정

* feat: shared checklist id uuid로 변경

* feat: create shared checklist 디티오 수정

* feat: shared-checklists 생성 구현

* refactor: shared-checklists 저장하는 함수 분리

* feat: shared-checklists 1개, 전부 가져오는 기능 추가

* feat: 유저 초대 기능 추가

* feat: 공유 체크리스트 삭제 기능 구현

* style: shared-checklists service 주석 추가

* feature: 공유 체크리스트 소켓에 데이터 누적 기능 추가

* feat: shared-checklists 소켓 통신 시 데이터 데베에 저장 구현

* feat: 소켓 연결시 방의 데이터 히스토리를 전송하는 기능 추가

* style: 소켓 주석 추가

* 🔐feat: 개발용 임시로 액세스,리프레시 토큰들 만료기한 일주일로 설정 (#142)

* feat: 공유 체크리스트 아이템 권한 문제 및 uuid 문제 해결 (#146)

* fix: 공유 체크리스트 아이템 권한 없으면 접근 못하게 수정

* fix: 체크리스트 추가시 사용자가 있는지 검사

* fix: 공유 체크리스트 생성시 uuid가 아니면 서버가 죽는 현상 수정

* style: 불필요한 코드 제거

* feat: 소켓 다중 서버 지원  (#159)

* chore: docker-compose.yaml에 레디스 추가

* chore: redis 모듈 추가

* feature: nest 다중 포트 서버 구성

* feature: redis.module.ts 구현 및 적용

* feature: 소켓에 레디스 삽입

* feature: 소켓 pub/sub 구현

* feat: 소켓 레디스에 총 접속자수 증감 기능 추가

* feat: 소켓 히스토리 기능 레디스 적용

* refactor: shared-checklists.gateway.ts 리팩토링

* feat: 소켓 editing 이벤트 추가 (#164)

---------

Co-authored-by: Minseong Park <52368015+pminsung12@users.noreply.github.com>
yangdongsuk added a commit that referenced this pull request Dec 4, 2023
* [Server] 개발환경 세팅 (#4)

* build: open-list-server init

* chore: @nestjs/config class-validator class-transformer 설치

* chore: 루트 레벨에서 설치한 패키지 삭제

* chore: NestJs 개발 환경 세팅

* chore: @nestjs/config class-validator class-transformer 설치

* Server/feature/#13 (#25)

* chore: postgresql, nestjs docker 세팅

* chore: @nestjs/typeorm, typeorm, pg 설치

* chore: Typeorm 세팅 및 TestModel 테이블 생성

* 테스트용 유저 API 구현 (#30)

* chore: common resource 추가

* chore: users resource 추가

* feature: base entity 구현

* feature: usersEntity 구현

* feature: 모듈에 usersModel 추가

* style: entity,dto의 users -> user로 변경

* feature: CreateUserDto 구현

* feature: userEntity 이메일 필드 추가

* feature: createUserDto 이메일 필드 추가

* feature: user patch->put으로 변경

* feature: updateUserDto 구현

* feature : create user 구현

* feature: 모든 유저의 정보를 가져오는 API 구현

* feature: 특정 유저의 정보를 가져오는 API 구현

* feature: user 정보 수정 API 구현

* feature: user 삭제 API 구현

* feature: ValidationPipe 적용

* refactor: usersService 리팩토링

* [Server] 유닛 테스트 환경 세팅 (#32)

* chore: test 경로 설정

* feature: TestCommonModule 구현

* feature: users.service.spec.ts 의존성 주입

* feature: users.controller.spec.ts 의존성 주입

* [Server] Users resource 이름 변경 (#34)

* style: usersController 네이밍에 컨벤션 맞게 변경

* style: usersService 컨벤션에 따른 네이밍 변경

* style: UsersModel -> UserModel 컨벤션에 따른 네이밍 변경

* feature: usersService 테스트 코드 작성 (#39)

* [Server] Folder entity 생성 및 crud 구현 (#42)

* feat: folders crud 구현

* chore: TestModel 삭제 및 관련된 종속성 제거

* feat: folders.controller.spec.ts 삭제, folders.service.spec.ts 구현

* feature: docker파일 수정 (#57)

* feat: private checklist entity 생성 및 crud 구현 (#61)

* chore: 개발용 postgres 포트변경 5432->5433, .env도 port 5433으로 변경필요

* feat: checklists res 생성

* feat: checklist, private-checklist, shared-checklisst 엔티티 생성, user모델과 folder모델과의 의존관계 주입

* feat: author->editor로 수정, 공유체크리스트와 사용자의 relation을 many to many로 업데이트

* feat: 개인, 공유 체크리스트에 대해 생성과 업데이트 시 dto 생성

* fix: class 이름 오타 수정

* refactor: rest api 방식에 따라 함수명 변경

* feat: CheckListModel에서 진행률 컬럼 삭제

* feat: folder와 user간의 manyToOne relation적용

* feat: private-checklist crud 작성

* feat: folder service 커버리지 100 달성

* test: private-checklist test code 작성, 커버리지 92퍼센트

* feat: checklist 폴더 분리 & dto 빈문자열 검증 추가 (#66)

* refactor: checklists를 private, shared폴더로 분리.

* refactor: private-checklists를 folders 하위로 이동

* fix: 빈문자열 검증 추가

* [Server] Winston으로 로그 관리 (#70)

* chore: nest-winston winston winston-daily-rotate-file 설치

* feat: winston logger 설정 파일 구현

* feat: winston logger middleware 구현

* feat: 요청 logger middleware 구현

* feat: 로그에 요청 처리 시간 추가되도록 개선

* chore: PR 템플릿 수정

* chore: PR 템플릿 수정

* feat: jwt access, refresh token 기반 인가 구현

* chore: auth resource 추가

* chore: jwt 모듈 추가

* feature: signToken 구현

* feature: 토큰 검증, 토큰 재발급 기능 구현

* feature: 로그인 기능 구현

* feature: 로그인 관련 서비스 구현

* feature: login 컨트롤러 구현

* style: loginDto -> loginUserDto로 변경

* feature: access 토큰 재발급 컨트롤러 구현

* refactor: access토큰 재발급 형식 변경

* feature: 유저 register 기능 구현

* feature: auth.service.ts 테스트 코드 작성

* fix: 이메일 중복시 에러 메시지 수정

---------

Co-authored-by: Minseong Park <52368015+pminsung12@users.noreply.github.com>

* [Server] shared-checklist 소켓 구현 (#78)

* [Server] apple oauth api 구현 (#86)

* chore: @nestjs/axios 설치

* chore: axios 설치

* chore: axios 설치

* feat: dto수정, userId 컬럼추가, providerId 수정, fullName 컬럼 추가

* feat: entity에 따라 dto 항목 수정

* feat: apple oauth 로그인 서비스 함수 추가

client secret 만들고, axios post로 user 정보 가지고옴.

* feat: apple oauth 로그인 엔드포인트 추가

* feat: apple 유저에대해 create, update 함수 구현

* feat: publicKey 발급받는 로직추가

* [Server] access 토큰 재발급시 유저 정보 없는 버그 수정 (#83)

* [Server] privateChecklist의 내용 저장 api 구현 (#88)

* [Server] apple oauth 로그인 로직 수정 (#118)

* feat: env 사용방식 변경 + idToken 검증로직 추가

* chore: jwk를 pem으로 변환하기 위한 jose 라이브러리 설치

* chore: jose 라이브러리 제거 @panva/jose 설치

* feat: request body로 들어오는 auth-user.dto.ts 수정

* feat: 애플 유저 등록 로직 수정

* docs: jsdoc return type 수정

* feat: apple login 로직 수정(appleToken, clientSecret 로직 삭제)

* feat: refreshAccessToken 함수에서 refreshToken도 함께 반환해주도록 로직 수정

* [Server] Clova Studio api  구현 (#126)

* feat:  checklist-ai 리소스 생성

* feat: create-checklist-items.dto.ts 요청 dto 생성

* feat: 문자열 및 각종 옵션 상수화

* feat: user-role const 파일 삭제 => 함수화

* feat: /checklist-ai POST 요청 api 생성

대,중,소 카테고리를 body로 받아오면 clova studio에서 체크리스트 항목 10개를 반환한다.

* feat: AccessTokenGuard 구현 및 적용 (#129)

* feat: access token guard 구현

* feat: access token guard 전역 적용

* style: access-token.guard.ts 주석 추가

* feat: userId decorator 구현

* feat: folders controller에 userId 데코레이터 추가

* feat: 폴더 서비스에 user 데코레이터 추가

* feat: 개인 체크리스트 컨트롤러에 유저 데코레이터 추가

* feat: private-checklists service에 user 데코레이터 추가

* fix: 테스트 코드 수정

* Server/feature/#128 (#139)

* feat: json 구조로 카테고리 데이터 정의

* feat: categories 의존성 주입

* feat: endpoint만들고, 실제 존재하는 id인지 검증하는 dto 생성

* fix: 오타수정 forder->folder

* feat: param에 dto 적용하지 못해 삭제

* feat: 카테고리 json 데이터 변수명 변경, 대문자로

* feat: 대,중,소 카테고리 반환 api 구현

* test: categories.service.spec.ts 테스트 코드 작성

* test: categories.service.spec.ts 테스트 코드 수정 커버리지 100

* feat: 공유 체크리스트 API 및 소켓 작업 구현 (#140)

* feat: shared checklist item entity 구현

* style: SharedChecklistItemModel 오타 수정

* feat: shared checklist id uuid로 변경

* feat: create shared checklist 디티오 수정

* feat: shared-checklists 생성 구현

* refactor: shared-checklists 저장하는 함수 분리

* feat: shared-checklists 1개, 전부 가져오는 기능 추가

* feat: 유저 초대 기능 추가

* feat: 공유 체크리스트 삭제 기능 구현

* style: shared-checklists service 주석 추가

* feature: 공유 체크리스트 소켓에 데이터 누적 기능 추가

* feat: shared-checklists 소켓 통신 시 데이터 데베에 저장 구현

* feat: 소켓 연결시 방의 데이터 히스토리를 전송하는 기능 추가

* style: 소켓 주석 추가

* 🔐feat: 개발용 임시로 액세스,리프레시 토큰들 만료기한 일주일로 설정 (#142)

* feat: 공유 체크리스트 아이템 권한 문제 및 uuid 문제 해결 (#146)

* fix: 공유 체크리스트 아이템 권한 없으면 접근 못하게 수정

* fix: 체크리스트 추가시 사용자가 있는지 검사

* fix: 공유 체크리스트 생성시 uuid가 아니면 서버가 죽는 현상 수정

* style: 불필요한 코드 제거

* feat: 소켓 다중 서버 지원  (#159)

* chore: docker-compose.yaml에 레디스 추가

* chore: redis 모듈 추가

* feature: nest 다중 포트 서버 구성

* feature: redis.module.ts 구현 및 적용

* feature: 소켓에 레디스 삽입

* feature: 소켓 pub/sub 구현

* feat: 소켓 레디스에 총 접속자수 증감 기능 추가

* feat: 소켓 히스토리 기능 레디스 적용

* refactor: shared-checklists.gateway.ts 리팩토링

* feat: 소켓 editing 이벤트 추가 (#164)

* fix: 레디스 연결 수정 (#168)

---------

Co-authored-by: Minseong Park <52368015+pminsung12@users.noreply.github.com>
yangdongsuk added a commit that referenced this pull request Dec 4, 2023
* [Server] 개발환경 세팅 (#4)

* build: open-list-server init

* chore: @nestjs/config class-validator class-transformer 설치

* chore: 루트 레벨에서 설치한 패키지 삭제

* chore: NestJs 개발 환경 세팅

* chore: @nestjs/config class-validator class-transformer 설치

* Server/feature/#13 (#25)

* chore: postgresql, nestjs docker 세팅

* chore: @nestjs/typeorm, typeorm, pg 설치

* chore: Typeorm 세팅 및 TestModel 테이블 생성

* 테스트용 유저 API 구현 (#30)

* chore: common resource 추가

* chore: users resource 추가

* feature: base entity 구현

* feature: usersEntity 구현

* feature: 모듈에 usersModel 추가

* style: entity,dto의 users -> user로 변경

* feature: CreateUserDto 구현

* feature: userEntity 이메일 필드 추가

* feature: createUserDto 이메일 필드 추가

* feature: user patch->put으로 변경

* feature: updateUserDto 구현

* feature : create user 구현

* feature: 모든 유저의 정보를 가져오는 API 구현

* feature: 특정 유저의 정보를 가져오는 API 구현

* feature: user 정보 수정 API 구현

* feature: user 삭제 API 구현

* feature: ValidationPipe 적용

* refactor: usersService 리팩토링

* [Server] 유닛 테스트 환경 세팅 (#32)

* chore: test 경로 설정

* feature: TestCommonModule 구현

* feature: users.service.spec.ts 의존성 주입

* feature: users.controller.spec.ts 의존성 주입

* [Server] Users resource 이름 변경 (#34)

* style: usersController 네이밍에 컨벤션 맞게 변경

* style: usersService 컨벤션에 따른 네이밍 변경

* style: UsersModel -> UserModel 컨벤션에 따른 네이밍 변경

* feature: usersService 테스트 코드 작성 (#39)

* [Server] Folder entity 생성 및 crud 구현 (#42)

* feat: folders crud 구현

* chore: TestModel 삭제 및 관련된 종속성 제거

* feat: folders.controller.spec.ts 삭제, folders.service.spec.ts 구현

* feature: docker파일 수정 (#57)

* feat: private checklist entity 생성 및 crud 구현 (#61)

* chore: 개발용 postgres 포트변경 5432->5433, .env도 port 5433으로 변경필요

* feat: checklists res 생성

* feat: checklist, private-checklist, shared-checklisst 엔티티 생성, user모델과 folder모델과의 의존관계 주입

* feat: author->editor로 수정, 공유체크리스트와 사용자의 relation을 many to many로 업데이트

* feat: 개인, 공유 체크리스트에 대해 생성과 업데이트 시 dto 생성

* fix: class 이름 오타 수정

* refactor: rest api 방식에 따라 함수명 변경

* feat: CheckListModel에서 진행률 컬럼 삭제

* feat: folder와 user간의 manyToOne relation적용

* feat: private-checklist crud 작성

* feat: folder service 커버리지 100 달성

* test: private-checklist test code 작성, 커버리지 92퍼센트

* feat: checklist 폴더 분리 & dto 빈문자열 검증 추가 (#66)

* refactor: checklists를 private, shared폴더로 분리.

* refactor: private-checklists를 folders 하위로 이동

* fix: 빈문자열 검증 추가

* [Server] Winston으로 로그 관리 (#70)

* chore: nest-winston winston winston-daily-rotate-file 설치

* feat: winston logger 설정 파일 구현

* feat: winston logger middleware 구현

* feat: 요청 logger middleware 구현

* feat: 로그에 요청 처리 시간 추가되도록 개선

* chore: PR 템플릿 수정

* chore: PR 템플릿 수정

* feat: jwt access, refresh token 기반 인가 구현

* chore: auth resource 추가

* chore: jwt 모듈 추가

* feature: signToken 구현

* feature: 토큰 검증, 토큰 재발급 기능 구현

* feature: 로그인 기능 구현

* feature: 로그인 관련 서비스 구현

* feature: login 컨트롤러 구현

* style: loginDto -> loginUserDto로 변경

* feature: access 토큰 재발급 컨트롤러 구현

* refactor: access토큰 재발급 형식 변경

* feature: 유저 register 기능 구현

* feature: auth.service.ts 테스트 코드 작성

* fix: 이메일 중복시 에러 메시지 수정

---------

Co-authored-by: Minseong Park <52368015+pminsung12@users.noreply.github.com>

* [Server] shared-checklist 소켓 구현 (#78)

* [Server] apple oauth api 구현 (#86)

* chore: @nestjs/axios 설치

* chore: axios 설치

* chore: axios 설치

* feat: dto수정, userId 컬럼추가, providerId 수정, fullName 컬럼 추가

* feat: entity에 따라 dto 항목 수정

* feat: apple oauth 로그인 서비스 함수 추가

client secret 만들고, axios post로 user 정보 가지고옴.

* feat: apple oauth 로그인 엔드포인트 추가

* feat: apple 유저에대해 create, update 함수 구현

* feat: publicKey 발급받는 로직추가

* [Server] access 토큰 재발급시 유저 정보 없는 버그 수정 (#83)

* [Server] privateChecklist의 내용 저장 api 구현 (#88)

* [Server] apple oauth 로그인 로직 수정 (#118)

* feat: env 사용방식 변경 + idToken 검증로직 추가

* chore: jwk를 pem으로 변환하기 위한 jose 라이브러리 설치

* chore: jose 라이브러리 제거 @panva/jose 설치

* feat: request body로 들어오는 auth-user.dto.ts 수정

* feat: 애플 유저 등록 로직 수정

* docs: jsdoc return type 수정

* feat: apple login 로직 수정(appleToken, clientSecret 로직 삭제)

* feat: refreshAccessToken 함수에서 refreshToken도 함께 반환해주도록 로직 수정

* [Server] Clova Studio api  구현 (#126)

* feat:  checklist-ai 리소스 생성

* feat: create-checklist-items.dto.ts 요청 dto 생성

* feat: 문자열 및 각종 옵션 상수화

* feat: user-role const 파일 삭제 => 함수화

* feat: /checklist-ai POST 요청 api 생성

대,중,소 카테고리를 body로 받아오면 clova studio에서 체크리스트 항목 10개를 반환한다.

* feat: AccessTokenGuard 구현 및 적용 (#129)

* feat: access token guard 구현

* feat: access token guard 전역 적용

* style: access-token.guard.ts 주석 추가

* feat: userId decorator 구현

* feat: folders controller에 userId 데코레이터 추가

* feat: 폴더 서비스에 user 데코레이터 추가

* feat: 개인 체크리스트 컨트롤러에 유저 데코레이터 추가

* feat: private-checklists service에 user 데코레이터 추가

* fix: 테스트 코드 수정

* Server/feature/#128 (#139)

* feat: json 구조로 카테고리 데이터 정의

* feat: categories 의존성 주입

* feat: endpoint만들고, 실제 존재하는 id인지 검증하는 dto 생성

* fix: 오타수정 forder->folder

* feat: param에 dto 적용하지 못해 삭제

* feat: 카테고리 json 데이터 변수명 변경, 대문자로

* feat: 대,중,소 카테고리 반환 api 구현

* test: categories.service.spec.ts 테스트 코드 작성

* test: categories.service.spec.ts 테스트 코드 수정 커버리지 100

* feat: 공유 체크리스트 API 및 소켓 작업 구현 (#140)

* feat: shared checklist item entity 구현

* style: SharedChecklistItemModel 오타 수정

* feat: shared checklist id uuid로 변경

* feat: create shared checklist 디티오 수정

* feat: shared-checklists 생성 구현

* refactor: shared-checklists 저장하는 함수 분리

* feat: shared-checklists 1개, 전부 가져오는 기능 추가

* feat: 유저 초대 기능 추가

* feat: 공유 체크리스트 삭제 기능 구현

* style: shared-checklists service 주석 추가

* feature: 공유 체크리스트 소켓에 데이터 누적 기능 추가

* feat: shared-checklists 소켓 통신 시 데이터 데베에 저장 구현

* feat: 소켓 연결시 방의 데이터 히스토리를 전송하는 기능 추가

* style: 소켓 주석 추가

* 🔐feat: 개발용 임시로 액세스,리프레시 토큰들 만료기한 일주일로 설정 (#142)

* feat: 공유 체크리스트 아이템 권한 문제 및 uuid 문제 해결 (#146)

* fix: 공유 체크리스트 아이템 권한 없으면 접근 못하게 수정

* fix: 체크리스트 추가시 사용자가 있는지 검사

* fix: 공유 체크리스트 생성시 uuid가 아니면 서버가 죽는 현상 수정

* style: 불필요한 코드 제거

* feat: 소켓 다중 서버 지원  (#159)

* chore: docker-compose.yaml에 레디스 추가

* chore: redis 모듈 추가

* feature: nest 다중 포트 서버 구성

* feature: redis.module.ts 구현 및 적용

* feature: 소켓에 레디스 삽입

* feature: 소켓 pub/sub 구현

* feat: 소켓 레디스에 총 접속자수 증감 기능 추가

* feat: 소켓 히스토리 기능 레디스 적용

* refactor: shared-checklists.gateway.ts 리팩토링

* feat: 소켓 editing 이벤트 추가 (#164)

* fix: 레디스 연결 수정 (#168)

* [Server] object 형태가 들어오면 redis에 저장 안되는 문제 수정 (#171)

* 🐛fix: 웹소켓 data를 json으로 변경 후 emit

* 🐛fix: history []제거

* 🐛fix: data[0] -> data

---------

Co-authored-by: Minseong Park <52368015+pminsung12@users.noreply.github.com>
yangdongsuk added a commit that referenced this pull request Dec 4, 2023
* [Server] 개발환경 세팅 (#4)

* build: open-list-server init

* chore: @nestjs/config class-validator class-transformer 설치

* chore: 루트 레벨에서 설치한 패키지 삭제

* chore: NestJs 개발 환경 세팅

* chore: @nestjs/config class-validator class-transformer 설치

* Server/feature/#13 (#25)

* chore: postgresql, nestjs docker 세팅

* chore: @nestjs/typeorm, typeorm, pg 설치

* chore: Typeorm 세팅 및 TestModel 테이블 생성

* 테스트용 유저 API 구현 (#30)

* chore: common resource 추가

* chore: users resource 추가

* feature: base entity 구현

* feature: usersEntity 구현

* feature: 모듈에 usersModel 추가

* style: entity,dto의 users -> user로 변경

* feature: CreateUserDto 구현

* feature: userEntity 이메일 필드 추가

* feature: createUserDto 이메일 필드 추가

* feature: user patch->put으로 변경

* feature: updateUserDto 구현

* feature : create user 구현

* feature: 모든 유저의 정보를 가져오는 API 구현

* feature: 특정 유저의 정보를 가져오는 API 구현

* feature: user 정보 수정 API 구현

* feature: user 삭제 API 구현

* feature: ValidationPipe 적용

* refactor: usersService 리팩토링

* [Server] 유닛 테스트 환경 세팅 (#32)

* chore: test 경로 설정

* feature: TestCommonModule 구현

* feature: users.service.spec.ts 의존성 주입

* feature: users.controller.spec.ts 의존성 주입

* [Server] Users resource 이름 변경 (#34)

* style: usersController 네이밍에 컨벤션 맞게 변경

* style: usersService 컨벤션에 따른 네이밍 변경

* style: UsersModel -> UserModel 컨벤션에 따른 네이밍 변경

* feature: usersService 테스트 코드 작성 (#39)

* [Server] Folder entity 생성 및 crud 구현 (#42)

* feat: folders crud 구현

* chore: TestModel 삭제 및 관련된 종속성 제거

* feat: folders.controller.spec.ts 삭제, folders.service.spec.ts 구현

* feature: docker파일 수정 (#57)

* feat: private checklist entity 생성 및 crud 구현 (#61)

* chore: 개발용 postgres 포트변경 5432->5433, .env도 port 5433으로 변경필요

* feat: checklists res 생성

* feat: checklist, private-checklist, shared-checklisst 엔티티 생성, user모델과 folder모델과의 의존관계 주입

* feat: author->editor로 수정, 공유체크리스트와 사용자의 relation을 many to many로 업데이트

* feat: 개인, 공유 체크리스트에 대해 생성과 업데이트 시 dto 생성

* fix: class 이름 오타 수정

* refactor: rest api 방식에 따라 함수명 변경

* feat: CheckListModel에서 진행률 컬럼 삭제

* feat: folder와 user간의 manyToOne relation적용

* feat: private-checklist crud 작성

* feat: folder service 커버리지 100 달성

* test: private-checklist test code 작성, 커버리지 92퍼센트

* feat: checklist 폴더 분리 & dto 빈문자열 검증 추가 (#66)

* refactor: checklists를 private, shared폴더로 분리.

* refactor: private-checklists를 folders 하위로 이동

* fix: 빈문자열 검증 추가

* [Server] Winston으로 로그 관리 (#70)

* chore: nest-winston winston winston-daily-rotate-file 설치

* feat: winston logger 설정 파일 구현

* feat: winston logger middleware 구현

* feat: 요청 logger middleware 구현

* feat: 로그에 요청 처리 시간 추가되도록 개선

* chore: PR 템플릿 수정

* chore: PR 템플릿 수정

* feat: jwt access, refresh token 기반 인가 구현

* chore: auth resource 추가

* chore: jwt 모듈 추가

* feature: signToken 구현

* feature: 토큰 검증, 토큰 재발급 기능 구현

* feature: 로그인 기능 구현

* feature: 로그인 관련 서비스 구현

* feature: login 컨트롤러 구현

* style: loginDto -> loginUserDto로 변경

* feature: access 토큰 재발급 컨트롤러 구현

* refactor: access토큰 재발급 형식 변경

* feature: 유저 register 기능 구현

* feature: auth.service.ts 테스트 코드 작성

* fix: 이메일 중복시 에러 메시지 수정

---------

Co-authored-by: Minseong Park <52368015+pminsung12@users.noreply.github.com>

* [Server] shared-checklist 소켓 구현 (#78)

* [Server] apple oauth api 구현 (#86)

* chore: @nestjs/axios 설치

* chore: axios 설치

* chore: axios 설치

* feat: dto수정, userId 컬럼추가, providerId 수정, fullName 컬럼 추가

* feat: entity에 따라 dto 항목 수정

* feat: apple oauth 로그인 서비스 함수 추가

client secret 만들고, axios post로 user 정보 가지고옴.

* feat: apple oauth 로그인 엔드포인트 추가

* feat: apple 유저에대해 create, update 함수 구현

* feat: publicKey 발급받는 로직추가

* [Server] access 토큰 재발급시 유저 정보 없는 버그 수정 (#83)

* [Server] privateChecklist의 내용 저장 api 구현 (#88)

* [Server] apple oauth 로그인 로직 수정 (#118)

* feat: env 사용방식 변경 + idToken 검증로직 추가

* chore: jwk를 pem으로 변환하기 위한 jose 라이브러리 설치

* chore: jose 라이브러리 제거 @panva/jose 설치

* feat: request body로 들어오는 auth-user.dto.ts 수정

* feat: 애플 유저 등록 로직 수정

* docs: jsdoc return type 수정

* feat: apple login 로직 수정(appleToken, clientSecret 로직 삭제)

* feat: refreshAccessToken 함수에서 refreshToken도 함께 반환해주도록 로직 수정

* [Server] Clova Studio api  구현 (#126)

* feat:  checklist-ai 리소스 생성

* feat: create-checklist-items.dto.ts 요청 dto 생성

* feat: 문자열 및 각종 옵션 상수화

* feat: user-role const 파일 삭제 => 함수화

* feat: /checklist-ai POST 요청 api 생성

대,중,소 카테고리를 body로 받아오면 clova studio에서 체크리스트 항목 10개를 반환한다.

* feat: AccessTokenGuard 구현 및 적용 (#129)

* feat: access token guard 구현

* feat: access token guard 전역 적용

* style: access-token.guard.ts 주석 추가

* feat: userId decorator 구현

* feat: folders controller에 userId 데코레이터 추가

* feat: 폴더 서비스에 user 데코레이터 추가

* feat: 개인 체크리스트 컨트롤러에 유저 데코레이터 추가

* feat: private-checklists service에 user 데코레이터 추가

* fix: 테스트 코드 수정

* Server/feature/#128 (#139)

* feat: json 구조로 카테고리 데이터 정의

* feat: categories 의존성 주입

* feat: endpoint만들고, 실제 존재하는 id인지 검증하는 dto 생성

* fix: 오타수정 forder->folder

* feat: param에 dto 적용하지 못해 삭제

* feat: 카테고리 json 데이터 변수명 변경, 대문자로

* feat: 대,중,소 카테고리 반환 api 구현

* test: categories.service.spec.ts 테스트 코드 작성

* test: categories.service.spec.ts 테스트 코드 수정 커버리지 100

* feat: 공유 체크리스트 API 및 소켓 작업 구현 (#140)

* feat: shared checklist item entity 구현

* style: SharedChecklistItemModel 오타 수정

* feat: shared checklist id uuid로 변경

* feat: create shared checklist 디티오 수정

* feat: shared-checklists 생성 구현

* refactor: shared-checklists 저장하는 함수 분리

* feat: shared-checklists 1개, 전부 가져오는 기능 추가

* feat: 유저 초대 기능 추가

* feat: 공유 체크리스트 삭제 기능 구현

* style: shared-checklists service 주석 추가

* feature: 공유 체크리스트 소켓에 데이터 누적 기능 추가

* feat: shared-checklists 소켓 통신 시 데이터 데베에 저장 구현

* feat: 소켓 연결시 방의 데이터 히스토리를 전송하는 기능 추가

* style: 소켓 주석 추가

* 🔐feat: 개발용 임시로 액세스,리프레시 토큰들 만료기한 일주일로 설정 (#142)

* feat: 공유 체크리스트 아이템 권한 문제 및 uuid 문제 해결 (#146)

* fix: 공유 체크리스트 아이템 권한 없으면 접근 못하게 수정

* fix: 체크리스트 추가시 사용자가 있는지 검사

* fix: 공유 체크리스트 생성시 uuid가 아니면 서버가 죽는 현상 수정

* style: 불필요한 코드 제거

* feat: 소켓 다중 서버 지원  (#159)

* chore: docker-compose.yaml에 레디스 추가

* chore: redis 모듈 추가

* feature: nest 다중 포트 서버 구성

* feature: redis.module.ts 구현 및 적용

* feature: 소켓에 레디스 삽입

* feature: 소켓 pub/sub 구현

* feat: 소켓 레디스에 총 접속자수 증감 기능 추가

* feat: 소켓 히스토리 기능 레디스 적용

* refactor: shared-checklists.gateway.ts 리팩토링

* feat: 소켓 editing 이벤트 추가 (#164)

* fix: 레디스 연결 수정 (#168)

* [Server] object 형태가 들어오면 redis에 저장 안되는 문제 수정 (#171)

* 🐛fix: 웹소켓 data를 json으로 변경 후 emit

* 🐛fix: history []제거

* 🐛fix: data[0] -> data

* feat: 웹소켓 히스토리 버그 수정 및 콘솔 로그 추가 (#175)

* fix: docker-compose 레디스 설정 오류 해결

* feat: 소켓 console.log 추가

* fix: 소켓 히스토리 저장시 형식 오류 수정

* [Server] 로거 기능 확대 (#176)

* feat: no auth 버그 -> password 주석 해제

* feat: 로그에 한국 시간대 추가

* feat: 로그파일이 dist 내부에 존재해 한 단계 위로 옮겨줌.

* feat: 응답로그는 interceptor에서 처리하도록 로직 수정

* feat: 로그 인터셉터 app.module.ts 프로바이더에 추가

---------

Co-authored-by: Minseong Park <52368015+pminsung12@users.noreply.github.com>
yangdongsuk added a commit that referenced this pull request Dec 4, 2023
* [Server] 개발환경 세팅 (#4)

* build: open-list-server init

* chore: @nestjs/config class-validator class-transformer 설치

* chore: 루트 레벨에서 설치한 패키지 삭제

* chore: NestJs 개발 환경 세팅

* chore: @nestjs/config class-validator class-transformer 설치

* Server/feature/#13 (#25)

* chore: postgresql, nestjs docker 세팅

* chore: @nestjs/typeorm, typeorm, pg 설치

* chore: Typeorm 세팅 및 TestModel 테이블 생성

* 테스트용 유저 API 구현 (#30)

* chore: common resource 추가

* chore: users resource 추가

* feature: base entity 구현

* feature: usersEntity 구현

* feature: 모듈에 usersModel 추가

* style: entity,dto의 users -> user로 변경

* feature: CreateUserDto 구현

* feature: userEntity 이메일 필드 추가

* feature: createUserDto 이메일 필드 추가

* feature: user patch->put으로 변경

* feature: updateUserDto 구현

* feature : create user 구현

* feature: 모든 유저의 정보를 가져오는 API 구현

* feature: 특정 유저의 정보를 가져오는 API 구현

* feature: user 정보 수정 API 구현

* feature: user 삭제 API 구현

* feature: ValidationPipe 적용

* refactor: usersService 리팩토링

* [Server] 유닛 테스트 환경 세팅 (#32)

* chore: test 경로 설정

* feature: TestCommonModule 구현

* feature: users.service.spec.ts 의존성 주입

* feature: users.controller.spec.ts 의존성 주입

* [Server] Users resource 이름 변경 (#34)

* style: usersController 네이밍에 컨벤션 맞게 변경

* style: usersService 컨벤션에 따른 네이밍 변경

* style: UsersModel -> UserModel 컨벤션에 따른 네이밍 변경

* feature: usersService 테스트 코드 작성 (#39)

* [Server] Folder entity 생성 및 crud 구현 (#42)

* feat: folders crud 구현

* chore: TestModel 삭제 및 관련된 종속성 제거

* feat: folders.controller.spec.ts 삭제, folders.service.spec.ts 구현

* feature: docker파일 수정 (#57)

* feat: private checklist entity 생성 및 crud 구현 (#61)

* chore: 개발용 postgres 포트변경 5432->5433, .env도 port 5433으로 변경필요

* feat: checklists res 생성

* feat: checklist, private-checklist, shared-checklisst 엔티티 생성, user모델과 folder모델과의 의존관계 주입

* feat: author->editor로 수정, 공유체크리스트와 사용자의 relation을 many to many로 업데이트

* feat: 개인, 공유 체크리스트에 대해 생성과 업데이트 시 dto 생성

* fix: class 이름 오타 수정

* refactor: rest api 방식에 따라 함수명 변경

* feat: CheckListModel에서 진행률 컬럼 삭제

* feat: folder와 user간의 manyToOne relation적용

* feat: private-checklist crud 작성

* feat: folder service 커버리지 100 달성

* test: private-checklist test code 작성, 커버리지 92퍼센트

* feat: checklist 폴더 분리 & dto 빈문자열 검증 추가 (#66)

* refactor: checklists를 private, shared폴더로 분리.

* refactor: private-checklists를 folders 하위로 이동

* fix: 빈문자열 검증 추가

* [Server] Winston으로 로그 관리 (#70)

* chore: nest-winston winston winston-daily-rotate-file 설치

* feat: winston logger 설정 파일 구현

* feat: winston logger middleware 구현

* feat: 요청 logger middleware 구현

* feat: 로그에 요청 처리 시간 추가되도록 개선

* chore: PR 템플릿 수정

* chore: PR 템플릿 수정

* feat: jwt access, refresh token 기반 인가 구현

* chore: auth resource 추가

* chore: jwt 모듈 추가

* feature: signToken 구현

* feature: 토큰 검증, 토큰 재발급 기능 구현

* feature: 로그인 기능 구현

* feature: 로그인 관련 서비스 구현

* feature: login 컨트롤러 구현

* style: loginDto -> loginUserDto로 변경

* feature: access 토큰 재발급 컨트롤러 구현

* refactor: access토큰 재발급 형식 변경

* feature: 유저 register 기능 구현

* feature: auth.service.ts 테스트 코드 작성

* fix: 이메일 중복시 에러 메시지 수정

---------

Co-authored-by: Minseong Park <52368015+pminsung12@users.noreply.github.com>

* [Server] shared-checklist 소켓 구현 (#78)

* [Server] apple oauth api 구현 (#86)

* chore: @nestjs/axios 설치

* chore: axios 설치

* chore: axios 설치

* feat: dto수정, userId 컬럼추가, providerId 수정, fullName 컬럼 추가

* feat: entity에 따라 dto 항목 수정

* feat: apple oauth 로그인 서비스 함수 추가

client secret 만들고, axios post로 user 정보 가지고옴.

* feat: apple oauth 로그인 엔드포인트 추가

* feat: apple 유저에대해 create, update 함수 구현

* feat: publicKey 발급받는 로직추가

* [Server] access 토큰 재발급시 유저 정보 없는 버그 수정 (#83)

* [Server] privateChecklist의 내용 저장 api 구현 (#88)

* [Server] apple oauth 로그인 로직 수정 (#118)

* feat: env 사용방식 변경 + idToken 검증로직 추가

* chore: jwk를 pem으로 변환하기 위한 jose 라이브러리 설치

* chore: jose 라이브러리 제거 @panva/jose 설치

* feat: request body로 들어오는 auth-user.dto.ts 수정

* feat: 애플 유저 등록 로직 수정

* docs: jsdoc return type 수정

* feat: apple login 로직 수정(appleToken, clientSecret 로직 삭제)

* feat: refreshAccessToken 함수에서 refreshToken도 함께 반환해주도록 로직 수정

* [Server] Clova Studio api  구현 (#126)

* feat:  checklist-ai 리소스 생성

* feat: create-checklist-items.dto.ts 요청 dto 생성

* feat: 문자열 및 각종 옵션 상수화

* feat: user-role const 파일 삭제 => 함수화

* feat: /checklist-ai POST 요청 api 생성

대,중,소 카테고리를 body로 받아오면 clova studio에서 체크리스트 항목 10개를 반환한다.

* feat: AccessTokenGuard 구현 및 적용 (#129)

* feat: access token guard 구현

* feat: access token guard 전역 적용

* style: access-token.guard.ts 주석 추가

* feat: userId decorator 구현

* feat: folders controller에 userId 데코레이터 추가

* feat: 폴더 서비스에 user 데코레이터 추가

* feat: 개인 체크리스트 컨트롤러에 유저 데코레이터 추가

* feat: private-checklists service에 user 데코레이터 추가

* fix: 테스트 코드 수정

* Server/feature/#128 (#139)

* feat: json 구조로 카테고리 데이터 정의

* feat: categories 의존성 주입

* feat: endpoint만들고, 실제 존재하는 id인지 검증하는 dto 생성

* fix: 오타수정 forder->folder

* feat: param에 dto 적용하지 못해 삭제

* feat: 카테고리 json 데이터 변수명 변경, 대문자로

* feat: 대,중,소 카테고리 반환 api 구현

* test: categories.service.spec.ts 테스트 코드 작성

* test: categories.service.spec.ts 테스트 코드 수정 커버리지 100

* feat: 공유 체크리스트 API 및 소켓 작업 구현 (#140)

* feat: shared checklist item entity 구현

* style: SharedChecklistItemModel 오타 수정

* feat: shared checklist id uuid로 변경

* feat: create shared checklist 디티오 수정

* feat: shared-checklists 생성 구현

* refactor: shared-checklists 저장하는 함수 분리

* feat: shared-checklists 1개, 전부 가져오는 기능 추가

* feat: 유저 초대 기능 추가

* feat: 공유 체크리스트 삭제 기능 구현

* style: shared-checklists service 주석 추가

* feature: 공유 체크리스트 소켓에 데이터 누적 기능 추가

* feat: shared-checklists 소켓 통신 시 데이터 데베에 저장 구현

* feat: 소켓 연결시 방의 데이터 히스토리를 전송하는 기능 추가

* style: 소켓 주석 추가

* 🔐feat: 개발용 임시로 액세스,리프레시 토큰들 만료기한 일주일로 설정 (#142)

* feat: 공유 체크리스트 아이템 권한 문제 및 uuid 문제 해결 (#146)

* fix: 공유 체크리스트 아이템 권한 없으면 접근 못하게 수정

* fix: 체크리스트 추가시 사용자가 있는지 검사

* fix: 공유 체크리스트 생성시 uuid가 아니면 서버가 죽는 현상 수정

* style: 불필요한 코드 제거

* feat: 소켓 다중 서버 지원  (#159)

* chore: docker-compose.yaml에 레디스 추가

* chore: redis 모듈 추가

* feature: nest 다중 포트 서버 구성

* feature: redis.module.ts 구현 및 적용

* feature: 소켓에 레디스 삽입

* feature: 소켓 pub/sub 구현

* feat: 소켓 레디스에 총 접속자수 증감 기능 추가

* feat: 소켓 히스토리 기능 레디스 적용

* refactor: shared-checklists.gateway.ts 리팩토링

* feat: 소켓 editing 이벤트 추가 (#164)

* fix: 레디스 연결 수정 (#168)

* [Server] object 형태가 들어오면 redis에 저장 안되는 문제 수정 (#171)

* 🐛fix: 웹소켓 data를 json으로 변경 후 emit

* 🐛fix: history []제거

* 🐛fix: data[0] -> data

* feat: 웹소켓 히스토리 버그 수정 및 콘솔 로그 추가 (#175)

* fix: docker-compose 레디스 설정 오류 해결

* feat: 소켓 console.log 추가

* fix: 소켓 히스토리 저장시 형식 오류 수정

* [Server] 로거 기능 확대 (#176)

* feat: no auth 버그 -> password 주석 해제

* feat: 로그에 한국 시간대 추가

* feat: 로그파일이 dist 내부에 존재해 한 단계 위로 옮겨줌.

* feat: 응답로그는 interceptor에서 처리하도록 로직 수정

* feat: 로그 인터셉터 app.module.ts 프로바이더에 추가

* 🐛fix: redis module password 부분 주석처리 (#180)

---------

Co-authored-by: Minseong Park <52368015+pminsung12@users.noreply.github.com>
yangdongsuk added a commit that referenced this pull request Dec 7, 2023
* [Server] 개발환경 세팅 (#4)

* build: open-list-server init

* chore: @nestjs/config class-validator class-transformer 설치

* chore: 루트 레벨에서 설치한 패키지 삭제

* chore: NestJs 개발 환경 세팅

* chore: @nestjs/config class-validator class-transformer 설치

* Server/feature/#13 (#25)

* chore: postgresql, nestjs docker 세팅

* chore: @nestjs/typeorm, typeorm, pg 설치

* chore: Typeorm 세팅 및 TestModel 테이블 생성

* 테스트용 유저 API 구현 (#30)

* chore: common resource 추가

* chore: users resource 추가

* feature: base entity 구현

* feature: usersEntity 구현

* feature: 모듈에 usersModel 추가

* style: entity,dto의 users -> user로 변경

* feature: CreateUserDto 구현

* feature: userEntity 이메일 필드 추가

* feature: createUserDto 이메일 필드 추가

* feature: user patch->put으로 변경

* feature: updateUserDto 구현

* feature : create user 구현

* feature: 모든 유저의 정보를 가져오는 API 구현

* feature: 특정 유저의 정보를 가져오는 API 구현

* feature: user 정보 수정 API 구현

* feature: user 삭제 API 구현

* feature: ValidationPipe 적용

* refactor: usersService 리팩토링

* [Server] 유닛 테스트 환경 세팅 (#32)

* chore: test 경로 설정

* feature: TestCommonModule 구현

* feature: users.service.spec.ts 의존성 주입

* feature: users.controller.spec.ts 의존성 주입

* [Server] Users resource 이름 변경 (#34)

* style: usersController 네이밍에 컨벤션 맞게 변경

* style: usersService 컨벤션에 따른 네이밍 변경

* style: UsersModel -> UserModel 컨벤션에 따른 네이밍 변경

* feature: usersService 테스트 코드 작성 (#39)

* [Server] Folder entity 생성 및 crud 구현 (#42)

* feat: folders crud 구현

* chore: TestModel 삭제 및 관련된 종속성 제거

* feat: folders.controller.spec.ts 삭제, folders.service.spec.ts 구현

* feature: docker파일 수정 (#57)

* feat: private checklist entity 생성 및 crud 구현 (#61)

* chore: 개발용 postgres 포트변경 5432->5433, .env도 port 5433으로 변경필요

* feat: checklists res 생성

* feat: checklist, private-checklist, shared-checklisst 엔티티 생성, user모델과 folder모델과의 의존관계 주입

* feat: author->editor로 수정, 공유체크리스트와 사용자의 relation을 many to many로 업데이트

* feat: 개인, 공유 체크리스트에 대해 생성과 업데이트 시 dto 생성

* fix: class 이름 오타 수정

* refactor: rest api 방식에 따라 함수명 변경

* feat: CheckListModel에서 진행률 컬럼 삭제

* feat: folder와 user간의 manyToOne relation적용

* feat: private-checklist crud 작성

* feat: folder service 커버리지 100 달성

* test: private-checklist test code 작성, 커버리지 92퍼센트

* feat: checklist 폴더 분리 & dto 빈문자열 검증 추가 (#66)

* refactor: checklists를 private, shared폴더로 분리.

* refactor: private-checklists를 folders 하위로 이동

* fix: 빈문자열 검증 추가

* [Server] Winston으로 로그 관리 (#70)

* chore: nest-winston winston winston-daily-rotate-file 설치

* feat: winston logger 설정 파일 구현

* feat: winston logger middleware 구현

* feat: 요청 logger middleware 구현

* feat: 로그에 요청 처리 시간 추가되도록 개선

* chore: PR 템플릿 수정

* chore: PR 템플릿 수정

* feat: jwt access, refresh token 기반 인가 구현

* chore: auth resource 추가

* chore: jwt 모듈 추가

* feature: signToken 구현

* feature: 토큰 검증, 토큰 재발급 기능 구현

* feature: 로그인 기능 구현

* feature: 로그인 관련 서비스 구현

* feature: login 컨트롤러 구현

* style: loginDto -> loginUserDto로 변경

* feature: access 토큰 재발급 컨트롤러 구현

* refactor: access토큰 재발급 형식 변경

* feature: 유저 register 기능 구현

* feature: auth.service.ts 테스트 코드 작성

* fix: 이메일 중복시 에러 메시지 수정

---------

Co-authored-by: Minseong Park <52368015+pminsung12@users.noreply.github.com>

* [Server] shared-checklist 소켓 구현 (#78)

* [Server] apple oauth api 구현 (#86)

* chore: @nestjs/axios 설치

* chore: axios 설치

* chore: axios 설치

* feat: dto수정, userId 컬럼추가, providerId 수정, fullName 컬럼 추가

* feat: entity에 따라 dto 항목 수정

* feat: apple oauth 로그인 서비스 함수 추가

client secret 만들고, axios post로 user 정보 가지고옴.

* feat: apple oauth 로그인 엔드포인트 추가

* feat: apple 유저에대해 create, update 함수 구현

* feat: publicKey 발급받는 로직추가

* [Server] access 토큰 재발급시 유저 정보 없는 버그 수정 (#83)

* [Server] privateChecklist의 내용 저장 api 구현 (#88)

* [Server] apple oauth 로그인 로직 수정 (#118)

* feat: env 사용방식 변경 + idToken 검증로직 추가

* chore: jwk를 pem으로 변환하기 위한 jose 라이브러리 설치

* chore: jose 라이브러리 제거 @panva/jose 설치

* feat: request body로 들어오는 auth-user.dto.ts 수정

* feat: 애플 유저 등록 로직 수정

* docs: jsdoc return type 수정

* feat: apple login 로직 수정(appleToken, clientSecret 로직 삭제)

* feat: refreshAccessToken 함수에서 refreshToken도 함께 반환해주도록 로직 수정

* [Server] Clova Studio api  구현 (#126)

* feat:  checklist-ai 리소스 생성

* feat: create-checklist-items.dto.ts 요청 dto 생성

* feat: 문자열 및 각종 옵션 상수화

* feat: user-role const 파일 삭제 => 함수화

* feat: /checklist-ai POST 요청 api 생성

대,중,소 카테고리를 body로 받아오면 clova studio에서 체크리스트 항목 10개를 반환한다.

* feat: AccessTokenGuard 구현 및 적용 (#129)

* feat: access token guard 구현

* feat: access token guard 전역 적용

* style: access-token.guard.ts 주석 추가

* feat: userId decorator 구현

* feat: folders controller에 userId 데코레이터 추가

* feat: 폴더 서비스에 user 데코레이터 추가

* feat: 개인 체크리스트 컨트롤러에 유저 데코레이터 추가

* feat: private-checklists service에 user 데코레이터 추가

* fix: 테스트 코드 수정

* Server/feature/#128 (#139)

* feat: json 구조로 카테고리 데이터 정의

* feat: categories 의존성 주입

* feat: endpoint만들고, 실제 존재하는 id인지 검증하는 dto 생성

* fix: 오타수정 forder->folder

* feat: param에 dto 적용하지 못해 삭제

* feat: 카테고리 json 데이터 변수명 변경, 대문자로

* feat: 대,중,소 카테고리 반환 api 구현

* test: categories.service.spec.ts 테스트 코드 작성

* test: categories.service.spec.ts 테스트 코드 수정 커버리지 100

* feat: 공유 체크리스트 API 및 소켓 작업 구현 (#140)

* feat: shared checklist item entity 구현

* style: SharedChecklistItemModel 오타 수정

* feat: shared checklist id uuid로 변경

* feat: create shared checklist 디티오 수정

* feat: shared-checklists 생성 구현

* refactor: shared-checklists 저장하는 함수 분리

* feat: shared-checklists 1개, 전부 가져오는 기능 추가

* feat: 유저 초대 기능 추가

* feat: 공유 체크리스트 삭제 기능 구현

* style: shared-checklists service 주석 추가

* feature: 공유 체크리스트 소켓에 데이터 누적 기능 추가

* feat: shared-checklists 소켓 통신 시 데이터 데베에 저장 구현

* feat: 소켓 연결시 방의 데이터 히스토리를 전송하는 기능 추가

* style: 소켓 주석 추가

* 🔐feat: 개발용 임시로 액세스,리프레시 토큰들 만료기한 일주일로 설정 (#142)

* feat: 공유 체크리스트 아이템 권한 문제 및 uuid 문제 해결 (#146)

* fix: 공유 체크리스트 아이템 권한 없으면 접근 못하게 수정

* fix: 체크리스트 추가시 사용자가 있는지 검사

* fix: 공유 체크리스트 생성시 uuid가 아니면 서버가 죽는 현상 수정

* style: 불필요한 코드 제거

* feat: 소켓 다중 서버 지원  (#159)

* chore: docker-compose.yaml에 레디스 추가

* chore: redis 모듈 추가

* feature: nest 다중 포트 서버 구성

* feature: redis.module.ts 구현 및 적용

* feature: 소켓에 레디스 삽입

* feature: 소켓 pub/sub 구현

* feat: 소켓 레디스에 총 접속자수 증감 기능 추가

* feat: 소켓 히스토리 기능 레디스 적용

* refactor: shared-checklists.gateway.ts 리팩토링

* feat: 소켓 editing 이벤트 추가 (#164)

* fix: 레디스 연결 수정 (#168)

* [Server] object 형태가 들어오면 redis에 저장 안되는 문제 수정 (#171)

* 🐛fix: 웹소켓 data를 json으로 변경 후 emit

* 🐛fix: history []제거

* 🐛fix: data[0] -> data

* feat: 웹소켓 히스토리 버그 수정 및 콘솔 로그 추가 (#175)

* fix: docker-compose 레디스 설정 오류 해결

* feat: 소켓 console.log 추가

* fix: 소켓 히스토리 저장시 형식 오류 수정

* [Server] 로거 기능 확대 (#176)

* feat: no auth 버그 -> password 주석 해제

* feat: 로그에 한국 시간대 추가

* feat: 로그파일이 dist 내부에 존재해 한 단계 위로 옮겨줌.

* feat: 응답로그는 interceptor에서 처리하도록 로직 수정

* feat: 로그 인터셉터 app.module.ts 프로바이더에 추가

* 🐛fix: redis module password 부분 주석처리 (#180)

* [Server] 피드화면 api 구현 (#196)

* chore: import 문 최적화

* feat: 피드 resource 생성

* feat: checklist entity에 카테고리 컬럼 추가

* feat: feedmodel 정의

private checklist model에서 likeCount와 downloadCount 컬럼 추가

* chore: 사용하지 않는 dto 파일 삭제

* chore: 카테고리 데이터 추가

* chore: 안쓰는 테스트 파일 삭제

* feat: 피드 화면 api 구현

* feat: feeds.service.spec.ts 테스트 코드 작성

* feat: api 에러 핸들링 로직 추가

* test: feeds.service.spec.ts 예외 케이스에 대한 테스트 코드 추가

* feat: 에러메시지 수정

* feat: 관리 페이지와 api 구현 (#197)

* feat: admin resource 구현

* feat: 관리자 페이지 추가

* feat: cors 설정 추가

* feat: 임시로 관리자 페이지 권한 제거

* feat: admin sse api 구현

* refactor: redis sub 서비스 구현

* feat: 어드민 페이지 api 기능 추가

* feat: redis pub 서비스 추가

* refactor: admin controller에 redis service로 교체

* feat: log interceptor에 redis pub 추가

* refactor: channels const로 분리

* style: 불필요한 주석 제거

* feat: ws 로그 redis pub 추가

* feat: admin page 박스 누르면 펼치기/접기 기능 추가

* feat: admin 페이지 색깔 변경

* feat: 관리자 페이지 로그인 기능 구현

---------

Co-authored-by: Minseong Park <52368015+pminsung12@users.noreply.github.com>
yangdongsuk added a commit that referenced this pull request Dec 7, 2023
* [Server] 개발환경 세팅 (#4)

* build: open-list-server init

* chore: @nestjs/config class-validator class-transformer 설치

* chore: 루트 레벨에서 설치한 패키지 삭제

* chore: NestJs 개발 환경 세팅

* chore: @nestjs/config class-validator class-transformer 설치

* Server/feature/#13 (#25)

* chore: postgresql, nestjs docker 세팅

* chore: @nestjs/typeorm, typeorm, pg 설치

* chore: Typeorm 세팅 및 TestModel 테이블 생성

* 테스트용 유저 API 구현 (#30)

* chore: common resource 추가

* chore: users resource 추가

* feature: base entity 구현

* feature: usersEntity 구현

* feature: 모듈에 usersModel 추가

* style: entity,dto의 users -> user로 변경

* feature: CreateUserDto 구현

* feature: userEntity 이메일 필드 추가

* feature: createUserDto 이메일 필드 추가

* feature: user patch->put으로 변경

* feature: updateUserDto 구현

* feature : create user 구현

* feature: 모든 유저의 정보를 가져오는 API 구현

* feature: 특정 유저의 정보를 가져오는 API 구현

* feature: user 정보 수정 API 구현

* feature: user 삭제 API 구현

* feature: ValidationPipe 적용

* refactor: usersService 리팩토링

* [Server] 유닛 테스트 환경 세팅 (#32)

* chore: test 경로 설정

* feature: TestCommonModule 구현

* feature: users.service.spec.ts 의존성 주입

* feature: users.controller.spec.ts 의존성 주입

* [Server] Users resource 이름 변경 (#34)

* style: usersController 네이밍에 컨벤션 맞게 변경

* style: usersService 컨벤션에 따른 네이밍 변경

* style: UsersModel -> UserModel 컨벤션에 따른 네이밍 변경

* feature: usersService 테스트 코드 작성 (#39)

* [Server] Folder entity 생성 및 crud 구현 (#42)

* feat: folders crud 구현

* chore: TestModel 삭제 및 관련된 종속성 제거

* feat: folders.controller.spec.ts 삭제, folders.service.spec.ts 구현

* feature: docker파일 수정 (#57)

* feat: private checklist entity 생성 및 crud 구현 (#61)

* chore: 개발용 postgres 포트변경 5432->5433, .env도 port 5433으로 변경필요

* feat: checklists res 생성

* feat: checklist, private-checklist, shared-checklisst 엔티티 생성, user모델과 folder모델과의 의존관계 주입

* feat: author->editor로 수정, 공유체크리스트와 사용자의 relation을 many to many로 업데이트

* feat: 개인, 공유 체크리스트에 대해 생성과 업데이트 시 dto 생성

* fix: class 이름 오타 수정

* refactor: rest api 방식에 따라 함수명 변경

* feat: CheckListModel에서 진행률 컬럼 삭제

* feat: folder와 user간의 manyToOne relation적용

* feat: private-checklist crud 작성

* feat: folder service 커버리지 100 달성

* test: private-checklist test code 작성, 커버리지 92퍼센트

* feat: checklist 폴더 분리 & dto 빈문자열 검증 추가 (#66)

* refactor: checklists를 private, shared폴더로 분리.

* refactor: private-checklists를 folders 하위로 이동

* fix: 빈문자열 검증 추가

* [Server] Winston으로 로그 관리 (#70)

* chore: nest-winston winston winston-daily-rotate-file 설치

* feat: winston logger 설정 파일 구현

* feat: winston logger middleware 구현

* feat: 요청 logger middleware 구현

* feat: 로그에 요청 처리 시간 추가되도록 개선

* chore: PR 템플릿 수정

* chore: PR 템플릿 수정

* feat: jwt access, refresh token 기반 인가 구현

* chore: auth resource 추가

* chore: jwt 모듈 추가

* feature: signToken 구현

* feature: 토큰 검증, 토큰 재발급 기능 구현

* feature: 로그인 기능 구현

* feature: 로그인 관련 서비스 구현

* feature: login 컨트롤러 구현

* style: loginDto -> loginUserDto로 변경

* feature: access 토큰 재발급 컨트롤러 구현

* refactor: access토큰 재발급 형식 변경

* feature: 유저 register 기능 구현

* feature: auth.service.ts 테스트 코드 작성

* fix: 이메일 중복시 에러 메시지 수정

---------

Co-authored-by: Minseong Park <52368015+pminsung12@users.noreply.github.com>

* [Server] shared-checklist 소켓 구현 (#78)

* [Server] apple oauth api 구현 (#86)

* chore: @nestjs/axios 설치

* chore: axios 설치

* chore: axios 설치

* feat: dto수정, userId 컬럼추가, providerId 수정, fullName 컬럼 추가

* feat: entity에 따라 dto 항목 수정

* feat: apple oauth 로그인 서비스 함수 추가

client secret 만들고, axios post로 user 정보 가지고옴.

* feat: apple oauth 로그인 엔드포인트 추가

* feat: apple 유저에대해 create, update 함수 구현

* feat: publicKey 발급받는 로직추가

* [Server] access 토큰 재발급시 유저 정보 없는 버그 수정 (#83)

* [Server] privateChecklist의 내용 저장 api 구현 (#88)

* [Server] apple oauth 로그인 로직 수정 (#118)

* feat: env 사용방식 변경 + idToken 검증로직 추가

* chore: jwk를 pem으로 변환하기 위한 jose 라이브러리 설치

* chore: jose 라이브러리 제거 @panva/jose 설치

* feat: request body로 들어오는 auth-user.dto.ts 수정

* feat: 애플 유저 등록 로직 수정

* docs: jsdoc return type 수정

* feat: apple login 로직 수정(appleToken, clientSecret 로직 삭제)

* feat: refreshAccessToken 함수에서 refreshToken도 함께 반환해주도록 로직 수정

* [Server] Clova Studio api  구현 (#126)

* feat:  checklist-ai 리소스 생성

* feat: create-checklist-items.dto.ts 요청 dto 생성

* feat: 문자열 및 각종 옵션 상수화

* feat: user-role const 파일 삭제 => 함수화

* feat: /checklist-ai POST 요청 api 생성

대,중,소 카테고리를 body로 받아오면 clova studio에서 체크리스트 항목 10개를 반환한다.

* feat: AccessTokenGuard 구현 및 적용 (#129)

* feat: access token guard 구현

* feat: access token guard 전역 적용

* style: access-token.guard.ts 주석 추가

* feat: userId decorator 구현

* feat: folders controller에 userId 데코레이터 추가

* feat: 폴더 서비스에 user 데코레이터 추가

* feat: 개인 체크리스트 컨트롤러에 유저 데코레이터 추가

* feat: private-checklists service에 user 데코레이터 추가

* fix: 테스트 코드 수정

* Server/feature/#128 (#139)

* feat: json 구조로 카테고리 데이터 정의

* feat: categories 의존성 주입

* feat: endpoint만들고, 실제 존재하는 id인지 검증하는 dto 생성

* fix: 오타수정 forder->folder

* feat: param에 dto 적용하지 못해 삭제

* feat: 카테고리 json 데이터 변수명 변경, 대문자로

* feat: 대,중,소 카테고리 반환 api 구현

* test: categories.service.spec.ts 테스트 코드 작성

* test: categories.service.spec.ts 테스트 코드 수정 커버리지 100

* feat: 공유 체크리스트 API 및 소켓 작업 구현 (#140)

* feat: shared checklist item entity 구현

* style: SharedChecklistItemModel 오타 수정

* feat: shared checklist id uuid로 변경

* feat: create shared checklist 디티오 수정

* feat: shared-checklists 생성 구현

* refactor: shared-checklists 저장하는 함수 분리

* feat: shared-checklists 1개, 전부 가져오는 기능 추가

* feat: 유저 초대 기능 추가

* feat: 공유 체크리스트 삭제 기능 구현

* style: shared-checklists service 주석 추가

* feature: 공유 체크리스트 소켓에 데이터 누적 기능 추가

* feat: shared-checklists 소켓 통신 시 데이터 데베에 저장 구현

* feat: 소켓 연결시 방의 데이터 히스토리를 전송하는 기능 추가

* style: 소켓 주석 추가

* 🔐feat: 개발용 임시로 액세스,리프레시 토큰들 만료기한 일주일로 설정 (#142)

* feat: 공유 체크리스트 아이템 권한 문제 및 uuid 문제 해결 (#146)

* fix: 공유 체크리스트 아이템 권한 없으면 접근 못하게 수정

* fix: 체크리스트 추가시 사용자가 있는지 검사

* fix: 공유 체크리스트 생성시 uuid가 아니면 서버가 죽는 현상 수정

* style: 불필요한 코드 제거

* feat: 소켓 다중 서버 지원  (#159)

* chore: docker-compose.yaml에 레디스 추가

* chore: redis 모듈 추가

* feature: nest 다중 포트 서버 구성

* feature: redis.module.ts 구현 및 적용

* feature: 소켓에 레디스 삽입

* feature: 소켓 pub/sub 구현

* feat: 소켓 레디스에 총 접속자수 증감 기능 추가

* feat: 소켓 히스토리 기능 레디스 적용

* refactor: shared-checklists.gateway.ts 리팩토링

* feat: 소켓 editing 이벤트 추가 (#164)

* fix: 레디스 연결 수정 (#168)

* [Server] object 형태가 들어오면 redis에 저장 안되는 문제 수정 (#171)

* 🐛fix: 웹소켓 data를 json으로 변경 후 emit

* 🐛fix: history []제거

* 🐛fix: data[0] -> data

* feat: 웹소켓 히스토리 버그 수정 및 콘솔 로그 추가 (#175)

* fix: docker-compose 레디스 설정 오류 해결

* feat: 소켓 console.log 추가

* fix: 소켓 히스토리 저장시 형식 오류 수정

* [Server] 로거 기능 확대 (#176)

* feat: no auth 버그 -> password 주석 해제

* feat: 로그에 한국 시간대 추가

* feat: 로그파일이 dist 내부에 존재해 한 단계 위로 옮겨줌.

* feat: 응답로그는 interceptor에서 처리하도록 로직 수정

* feat: 로그 인터셉터 app.module.ts 프로바이더에 추가

* 🐛fix: redis module password 부분 주석처리 (#180)

* [Server] 피드화면 api 구현 (#196)

* chore: import 문 최적화

* feat: 피드 resource 생성

* feat: checklist entity에 카테고리 컬럼 추가

* feat: feedmodel 정의

private checklist model에서 likeCount와 downloadCount 컬럼 추가

* chore: 사용하지 않는 dto 파일 삭제

* chore: 카테고리 데이터 추가

* chore: 안쓰는 테스트 파일 삭제

* feat: 피드 화면 api 구현

* feat: feeds.service.spec.ts 테스트 코드 작성

* feat: api 에러 핸들링 로직 추가

* test: feeds.service.spec.ts 예외 케이스에 대한 테스트 코드 추가

* feat: 에러메시지 수정

* feat: 관리 페이지와 api 구현 (#197)

* feat: admin resource 구현

* feat: 관리자 페이지 추가

* feat: cors 설정 추가

* feat: 임시로 관리자 페이지 권한 제거

* feat: admin sse api 구현

* refactor: redis sub 서비스 구현

* feat: 어드민 페이지 api 기능 추가

* feat: redis pub 서비스 추가

* refactor: admin controller에 redis service로 교체

* feat: log interceptor에 redis pub 추가

* refactor: channels const로 분리

* style: 불필요한 주석 제거

* feat: ws 로그 redis pub 추가

* feat: admin page 박스 누르면 펼치기/접기 기능 추가

* feat: admin 페이지 색깔 변경

* feat: 관리자 페이지 로그인 기능 구현

* [Server] 클라이언트와 api 연동 작업 (login, socket history)  (#209)

* feat: socket 빈 히스토리면 [] 보내기

* feat: 로그인시 유저 닉네임도 같이 보내주기

---------

Co-authored-by: Minseong Park <52368015+pminsung12@users.noreply.github.com>
yangdongsuk added a commit that referenced this pull request Dec 10, 2023
* [Server] 개발환경 세팅 (#4)

* build: open-list-server init

* chore: @nestjs/config class-validator class-transformer 설치

* chore: 루트 레벨에서 설치한 패키지 삭제

* chore: NestJs 개발 환경 세팅

* chore: @nestjs/config class-validator class-transformer 설치

* Server/feature/#13 (#25)

* chore: postgresql, nestjs docker 세팅

* chore: @nestjs/typeorm, typeorm, pg 설치

* chore: Typeorm 세팅 및 TestModel 테이블 생성

* 테스트용 유저 API 구현 (#30)

* chore: common resource 추가

* chore: users resource 추가

* feature: base entity 구현

* feature: usersEntity 구현

* feature: 모듈에 usersModel 추가

* style: entity,dto의 users -> user로 변경

* feature: CreateUserDto 구현

* feature: userEntity 이메일 필드 추가

* feature: createUserDto 이메일 필드 추가

* feature: user patch->put으로 변경

* feature: updateUserDto 구현

* feature : create user 구현

* feature: 모든 유저의 정보를 가져오는 API 구현

* feature: 특정 유저의 정보를 가져오는 API 구현

* feature: user 정보 수정 API 구현

* feature: user 삭제 API 구현

* feature: ValidationPipe 적용

* refactor: usersService 리팩토링

* [Server] 유닛 테스트 환경 세팅 (#32)

* chore: test 경로 설정

* feature: TestCommonModule 구현

* feature: users.service.spec.ts 의존성 주입

* feature: users.controller.spec.ts 의존성 주입

* [Server] Users resource 이름 변경 (#34)

* style: usersController 네이밍에 컨벤션 맞게 변경

* style: usersService 컨벤션에 따른 네이밍 변경

* style: UsersModel -> UserModel 컨벤션에 따른 네이밍 변경

* feature: usersService 테스트 코드 작성 (#39)

* [Server] Folder entity 생성 및 crud 구현 (#42)

* feat: folders crud 구현

* chore: TestModel 삭제 및 관련된 종속성 제거

* feat: folders.controller.spec.ts 삭제, folders.service.spec.ts 구현

* feature: docker파일 수정 (#57)

* feat: private checklist entity 생성 및 crud 구현 (#61)

* chore: 개발용 postgres 포트변경 5432->5433, .env도 port 5433으로 변경필요

* feat: checklists res 생성

* feat: checklist, private-checklist, shared-checklisst 엔티티 생성, user모델과 folder모델과의 의존관계 주입

* feat: author->editor로 수정, 공유체크리스트와 사용자의 relation을 many to many로 업데이트

* feat: 개인, 공유 체크리스트에 대해 생성과 업데이트 시 dto 생성

* fix: class 이름 오타 수정

* refactor: rest api 방식에 따라 함수명 변경

* feat: CheckListModel에서 진행률 컬럼 삭제

* feat: folder와 user간의 manyToOne relation적용

* feat: private-checklist crud 작성

* feat: folder service 커버리지 100 달성

* test: private-checklist test code 작성, 커버리지 92퍼센트

* feat: checklist 폴더 분리 & dto 빈문자열 검증 추가 (#66)

* refactor: checklists를 private, shared폴더로 분리.

* refactor: private-checklists를 folders 하위로 이동

* fix: 빈문자열 검증 추가

* [Server] Winston으로 로그 관리 (#70)

* chore: nest-winston winston winston-daily-rotate-file 설치

* feat: winston logger 설정 파일 구현

* feat: winston logger middleware 구현

* feat: 요청 logger middleware 구현

* feat: 로그에 요청 처리 시간 추가되도록 개선

* chore: PR 템플릿 수정

* chore: PR 템플릿 수정

* feat: jwt access, refresh token 기반 인가 구현

* chore: auth resource 추가

* chore: jwt 모듈 추가

* feature: signToken 구현

* feature: 토큰 검증, 토큰 재발급 기능 구현

* feature: 로그인 기능 구현

* feature: 로그인 관련 서비스 구현

* feature: login 컨트롤러 구현

* style: loginDto -> loginUserDto로 변경

* feature: access 토큰 재발급 컨트롤러 구현

* refactor: access토큰 재발급 형식 변경

* feature: 유저 register 기능 구현

* feature: auth.service.ts 테스트 코드 작성

* fix: 이메일 중복시 에러 메시지 수정

---------

Co-authored-by: Minseong Park <52368015+pminsung12@users.noreply.github.com>

* [Server] shared-checklist 소켓 구현 (#78)

* [Server] apple oauth api 구현 (#86)

* chore: @nestjs/axios 설치

* chore: axios 설치

* chore: axios 설치

* feat: dto수정, userId 컬럼추가, providerId 수정, fullName 컬럼 추가

* feat: entity에 따라 dto 항목 수정

* feat: apple oauth 로그인 서비스 함수 추가

client secret 만들고, axios post로 user 정보 가지고옴.

* feat: apple oauth 로그인 엔드포인트 추가

* feat: apple 유저에대해 create, update 함수 구현

* feat: publicKey 발급받는 로직추가

* [Server] access 토큰 재발급시 유저 정보 없는 버그 수정 (#83)

* [Server] privateChecklist의 내용 저장 api 구현 (#88)

* [Server] apple oauth 로그인 로직 수정 (#118)

* feat: env 사용방식 변경 + idToken 검증로직 추가

* chore: jwk를 pem으로 변환하기 위한 jose 라이브러리 설치

* chore: jose 라이브러리 제거 @panva/jose 설치

* feat: request body로 들어오는 auth-user.dto.ts 수정

* feat: 애플 유저 등록 로직 수정

* docs: jsdoc return type 수정

* feat: apple login 로직 수정(appleToken, clientSecret 로직 삭제)

* feat: refreshAccessToken 함수에서 refreshToken도 함께 반환해주도록 로직 수정

* [Server] Clova Studio api  구현 (#126)

* feat:  checklist-ai 리소스 생성

* feat: create-checklist-items.dto.ts 요청 dto 생성

* feat: 문자열 및 각종 옵션 상수화

* feat: user-role const 파일 삭제 => 함수화

* feat: /checklist-ai POST 요청 api 생성

대,중,소 카테고리를 body로 받아오면 clova studio에서 체크리스트 항목 10개를 반환한다.

* feat: AccessTokenGuard 구현 및 적용 (#129)

* feat: access token guard 구현

* feat: access token guard 전역 적용

* style: access-token.guard.ts 주석 추가

* feat: userId decorator 구현

* feat: folders controller에 userId 데코레이터 추가

* feat: 폴더 서비스에 user 데코레이터 추가

* feat: 개인 체크리스트 컨트롤러에 유저 데코레이터 추가

* feat: private-checklists service에 user 데코레이터 추가

* fix: 테스트 코드 수정

* Server/feature/#128 (#139)

* feat: json 구조로 카테고리 데이터 정의

* feat: categories 의존성 주입

* feat: endpoint만들고, 실제 존재하는 id인지 검증하는 dto 생성

* fix: 오타수정 forder->folder

* feat: param에 dto 적용하지 못해 삭제

* feat: 카테고리 json 데이터 변수명 변경, 대문자로

* feat: 대,중,소 카테고리 반환 api 구현

* test: categories.service.spec.ts 테스트 코드 작성

* test: categories.service.spec.ts 테스트 코드 수정 커버리지 100

* feat: 공유 체크리스트 API 및 소켓 작업 구현 (#140)

* feat: shared checklist item entity 구현

* style: SharedChecklistItemModel 오타 수정

* feat: shared checklist id uuid로 변경

* feat: create shared checklist 디티오 수정

* feat: shared-checklists 생성 구현

* refactor: shared-checklists 저장하는 함수 분리

* feat: shared-checklists 1개, 전부 가져오는 기능 추가

* feat: 유저 초대 기능 추가

* feat: 공유 체크리스트 삭제 기능 구현

* style: shared-checklists service 주석 추가

* feature: 공유 체크리스트 소켓에 데이터 누적 기능 추가

* feat: shared-checklists 소켓 통신 시 데이터 데베에 저장 구현

* feat: 소켓 연결시 방의 데이터 히스토리를 전송하는 기능 추가

* style: 소켓 주석 추가

* 🔐feat: 개발용 임시로 액세스,리프레시 토큰들 만료기한 일주일로 설정 (#142)

* feat: 공유 체크리스트 아이템 권한 문제 및 uuid 문제 해결 (#146)

* fix: 공유 체크리스트 아이템 권한 없으면 접근 못하게 수정

* fix: 체크리스트 추가시 사용자가 있는지 검사

* fix: 공유 체크리스트 생성시 uuid가 아니면 서버가 죽는 현상 수정

* style: 불필요한 코드 제거

* feat: 소켓 다중 서버 지원  (#159)

* chore: docker-compose.yaml에 레디스 추가

* chore: redis 모듈 추가

* feature: nest 다중 포트 서버 구성

* feature: redis.module.ts 구현 및 적용

* feature: 소켓에 레디스 삽입

* feature: 소켓 pub/sub 구현

* feat: 소켓 레디스에 총 접속자수 증감 기능 추가

* feat: 소켓 히스토리 기능 레디스 적용

* refactor: shared-checklists.gateway.ts 리팩토링

* feat: 소켓 editing 이벤트 추가 (#164)

* fix: 레디스 연결 수정 (#168)

* [Server] object 형태가 들어오면 redis에 저장 안되는 문제 수정 (#171)

* 🐛fix: 웹소켓 data를 json으로 변경 후 emit

* 🐛fix: history []제거

* 🐛fix: data[0] -> data

* feat: 웹소켓 히스토리 버그 수정 및 콘솔 로그 추가 (#175)

* fix: docker-compose 레디스 설정 오류 해결

* feat: 소켓 console.log 추가

* fix: 소켓 히스토리 저장시 형식 오류 수정

* [Server] 로거 기능 확대 (#176)

* feat: no auth 버그 -> password 주석 해제

* feat: 로그에 한국 시간대 추가

* feat: 로그파일이 dist 내부에 존재해 한 단계 위로 옮겨줌.

* feat: 응답로그는 interceptor에서 처리하도록 로직 수정

* feat: 로그 인터셉터 app.module.ts 프로바이더에 추가

* 🐛fix: redis module password 부분 주석처리 (#180)

* [Server] 피드화면 api 구현 (#196)

* chore: import 문 최적화

* feat: 피드 resource 생성

* feat: checklist entity에 카테고리 컬럼 추가

* feat: feedmodel 정의

private checklist model에서 likeCount와 downloadCount 컬럼 추가

* chore: 사용하지 않는 dto 파일 삭제

* chore: 카테고리 데이터 추가

* chore: 안쓰는 테스트 파일 삭제

* feat: 피드 화면 api 구현

* feat: feeds.service.spec.ts 테스트 코드 작성

* feat: api 에러 핸들링 로직 추가

* test: feeds.service.spec.ts 예외 케이스에 대한 테스트 코드 추가

* feat: 에러메시지 수정

* feat: 관리 페이지와 api 구현 (#197)

* feat: admin resource 구현

* feat: 관리자 페이지 추가

* feat: cors 설정 추가

* feat: 임시로 관리자 페이지 권한 제거

* feat: admin sse api 구현

* refactor: redis sub 서비스 구현

* feat: 어드민 페이지 api 기능 추가

* feat: redis pub 서비스 추가

* refactor: admin controller에 redis service로 교체

* feat: log interceptor에 redis pub 추가

* refactor: channels const로 분리

* style: 불필요한 주석 제거

* feat: ws 로그 redis pub 추가

* feat: admin page 박스 누르면 펼치기/접기 기능 추가

* feat: admin 페이지 색깔 변경

* feat: 관리자 페이지 로그인 기능 구현

* [Server] 클라이언트와 api 연동 작업 (login, socket history)  (#209)

* feat: socket 빈 히스토리면 [] 보내기

* feat: 로그인시 유저 닉네임도 같이 보내주기

* [Server] ai와 관련한 db 구조 개선 (#220)

* refactor: 경로 이름 수정 entity->entities

* feat: category 엔티티 생성

* feat: reason 모델 생성 및 각 테이블 relation 설정

* feat: 각 테이블 relation 수정 및 의존성 주입

* feat: relation 방식 변경으로 인한folders.service.ts 메서드 수정, 의존성 주입

* feat: admin 페이지 항목 자동 추가 , 시스템 상태 그래프 추가 (#223)

* feat: serverStatus 확인 기능 추가

* feat: serverStatus 확인 기능 추가

* feat: 모든 구독을 받아오는 기능 추가

* chore: 불필요한 상수 제거

* feat: admin page 서버 상태 확인 기능 추가

---------

Co-authored-by: Minseong Park <52368015+pminsung12@users.noreply.github.com>
yangdongsuk added a commit that referenced this pull request Dec 10, 2023
* [Server] 개발환경 세팅 (#4)

* build: open-list-server init

* chore: @nestjs/config class-validator class-transformer 설치

* chore: 루트 레벨에서 설치한 패키지 삭제

* chore: NestJs 개발 환경 세팅

* chore: @nestjs/config class-validator class-transformer 설치

* Server/feature/#13 (#25)

* chore: postgresql, nestjs docker 세팅

* chore: @nestjs/typeorm, typeorm, pg 설치

* chore: Typeorm 세팅 및 TestModel 테이블 생성

* 테스트용 유저 API 구현 (#30)

* chore: common resource 추가

* chore: users resource 추가

* feature: base entity 구현

* feature: usersEntity 구현

* feature: 모듈에 usersModel 추가

* style: entity,dto의 users -> user로 변경

* feature: CreateUserDto 구현

* feature: userEntity 이메일 필드 추가

* feature: createUserDto 이메일 필드 추가

* feature: user patch->put으로 변경

* feature: updateUserDto 구현

* feature : create user 구현

* feature: 모든 유저의 정보를 가져오는 API 구현

* feature: 특정 유저의 정보를 가져오는 API 구현

* feature: user 정보 수정 API 구현

* feature: user 삭제 API 구현

* feature: ValidationPipe 적용

* refactor: usersService 리팩토링

* [Server] 유닛 테스트 환경 세팅 (#32)

* chore: test 경로 설정

* feature: TestCommonModule 구현

* feature: users.service.spec.ts 의존성 주입

* feature: users.controller.spec.ts 의존성 주입

* [Server] Users resource 이름 변경 (#34)

* style: usersController 네이밍에 컨벤션 맞게 변경

* style: usersService 컨벤션에 따른 네이밍 변경

* style: UsersModel -> UserModel 컨벤션에 따른 네이밍 변경

* feature: usersService 테스트 코드 작성 (#39)

* [Server] Folder entity 생성 및 crud 구현 (#42)

* feat: folders crud 구현

* chore: TestModel 삭제 및 관련된 종속성 제거

* feat: folders.controller.spec.ts 삭제, folders.service.spec.ts 구현

* feature: docker파일 수정 (#57)

* feat: private checklist entity 생성 및 crud 구현 (#61)

* chore: 개발용 postgres 포트변경 5432->5433, .env도 port 5433으로 변경필요

* feat: checklists res 생성

* feat: checklist, private-checklist, shared-checklisst 엔티티 생성, user모델과 folder모델과의 의존관계 주입

* feat: author->editor로 수정, 공유체크리스트와 사용자의 relation을 many to many로 업데이트

* feat: 개인, 공유 체크리스트에 대해 생성과 업데이트 시 dto 생성

* fix: class 이름 오타 수정

* refactor: rest api 방식에 따라 함수명 변경

* feat: CheckListModel에서 진행률 컬럼 삭제

* feat: folder와 user간의 manyToOne relation적용

* feat: private-checklist crud 작성

* feat: folder service 커버리지 100 달성

* test: private-checklist test code 작성, 커버리지 92퍼센트

* feat: checklist 폴더 분리 & dto 빈문자열 검증 추가 (#66)

* refactor: checklists를 private, shared폴더로 분리.

* refactor: private-checklists를 folders 하위로 이동

* fix: 빈문자열 검증 추가

* [Server] Winston으로 로그 관리 (#70)

* chore: nest-winston winston winston-daily-rotate-file 설치

* feat: winston logger 설정 파일 구현

* feat: winston logger middleware 구현

* feat: 요청 logger middleware 구현

* feat: 로그에 요청 처리 시간 추가되도록 개선

* chore: PR 템플릿 수정

* chore: PR 템플릿 수정

* feat: jwt access, refresh token 기반 인가 구현

* chore: auth resource 추가

* chore: jwt 모듈 추가

* feature: signToken 구현

* feature: 토큰 검증, 토큰 재발급 기능 구현

* feature: 로그인 기능 구현

* feature: 로그인 관련 서비스 구현

* feature: login 컨트롤러 구현

* style: loginDto -> loginUserDto로 변경

* feature: access 토큰 재발급 컨트롤러 구현

* refactor: access토큰 재발급 형식 변경

* feature: 유저 register 기능 구현

* feature: auth.service.ts 테스트 코드 작성

* fix: 이메일 중복시 에러 메시지 수정

---------

Co-authored-by: Minseong Park <52368015+pminsung12@users.noreply.github.com>

* [Server] shared-checklist 소켓 구현 (#78)

* [Server] apple oauth api 구현 (#86)

* chore: @nestjs/axios 설치

* chore: axios 설치

* chore: axios 설치

* feat: dto수정, userId 컬럼추가, providerId 수정, fullName 컬럼 추가

* feat: entity에 따라 dto 항목 수정

* feat: apple oauth 로그인 서비스 함수 추가

client secret 만들고, axios post로 user 정보 가지고옴.

* feat: apple oauth 로그인 엔드포인트 추가

* feat: apple 유저에대해 create, update 함수 구현

* feat: publicKey 발급받는 로직추가

* [Server] access 토큰 재발급시 유저 정보 없는 버그 수정 (#83)

* [Server] privateChecklist의 내용 저장 api 구현 (#88)

* [Server] apple oauth 로그인 로직 수정 (#118)

* feat: env 사용방식 변경 + idToken 검증로직 추가

* chore: jwk를 pem으로 변환하기 위한 jose 라이브러리 설치

* chore: jose 라이브러리 제거 @panva/jose 설치

* feat: request body로 들어오는 auth-user.dto.ts 수정

* feat: 애플 유저 등록 로직 수정

* docs: jsdoc return type 수정

* feat: apple login 로직 수정(appleToken, clientSecret 로직 삭제)

* feat: refreshAccessToken 함수에서 refreshToken도 함께 반환해주도록 로직 수정

* [Server] Clova Studio api  구현 (#126)

* feat:  checklist-ai 리소스 생성

* feat: create-checklist-items.dto.ts 요청 dto 생성

* feat: 문자열 및 각종 옵션 상수화

* feat: user-role const 파일 삭제 => 함수화

* feat: /checklist-ai POST 요청 api 생성

대,중,소 카테고리를 body로 받아오면 clova studio에서 체크리스트 항목 10개를 반환한다.

* feat: AccessTokenGuard 구현 및 적용 (#129)

* feat: access token guard 구현

* feat: access token guard 전역 적용

* style: access-token.guard.ts 주석 추가

* feat: userId decorator 구현

* feat: folders controller에 userId 데코레이터 추가

* feat: 폴더 서비스에 user 데코레이터 추가

* feat: 개인 체크리스트 컨트롤러에 유저 데코레이터 추가

* feat: private-checklists service에 user 데코레이터 추가

* fix: 테스트 코드 수정

* Server/feature/#128 (#139)

* feat: json 구조로 카테고리 데이터 정의

* feat: categories 의존성 주입

* feat: endpoint만들고, 실제 존재하는 id인지 검증하는 dto 생성

* fix: 오타수정 forder->folder

* feat: param에 dto 적용하지 못해 삭제

* feat: 카테고리 json 데이터 변수명 변경, 대문자로

* feat: 대,중,소 카테고리 반환 api 구현

* test: categories.service.spec.ts 테스트 코드 작성

* test: categories.service.spec.ts 테스트 코드 수정 커버리지 100

* feat: 공유 체크리스트 API 및 소켓 작업 구현 (#140)

* feat: shared checklist item entity 구현

* style: SharedChecklistItemModel 오타 수정

* feat: shared checklist id uuid로 변경

* feat: create shared checklist 디티오 수정

* feat: shared-checklists 생성 구현

* refactor: shared-checklists 저장하는 함수 분리

* feat: shared-checklists 1개, 전부 가져오는 기능 추가

* feat: 유저 초대 기능 추가

* feat: 공유 체크리스트 삭제 기능 구현

* style: shared-checklists service 주석 추가

* feature: 공유 체크리스트 소켓에 데이터 누적 기능 추가

* feat: shared-checklists 소켓 통신 시 데이터 데베에 저장 구현

* feat: 소켓 연결시 방의 데이터 히스토리를 전송하는 기능 추가

* style: 소켓 주석 추가

* 🔐feat: 개발용 임시로 액세스,리프레시 토큰들 만료기한 일주일로 설정 (#142)

* feat: 공유 체크리스트 아이템 권한 문제 및 uuid 문제 해결 (#146)

* fix: 공유 체크리스트 아이템 권한 없으면 접근 못하게 수정

* fix: 체크리스트 추가시 사용자가 있는지 검사

* fix: 공유 체크리스트 생성시 uuid가 아니면 서버가 죽는 현상 수정

* style: 불필요한 코드 제거

* feat: 소켓 다중 서버 지원  (#159)

* chore: docker-compose.yaml에 레디스 추가

* chore: redis 모듈 추가

* feature: nest 다중 포트 서버 구성

* feature: redis.module.ts 구현 및 적용

* feature: 소켓에 레디스 삽입

* feature: 소켓 pub/sub 구현

* feat: 소켓 레디스에 총 접속자수 증감 기능 추가

* feat: 소켓 히스토리 기능 레디스 적용

* refactor: shared-checklists.gateway.ts 리팩토링

* feat: 소켓 editing 이벤트 추가 (#164)

* fix: 레디스 연결 수정 (#168)

* [Server] object 형태가 들어오면 redis에 저장 안되는 문제 수정 (#171)

* 🐛fix: 웹소켓 data를 json으로 변경 후 emit

* 🐛fix: history []제거

* 🐛fix: data[0] -> data

* feat: 웹소켓 히스토리 버그 수정 및 콘솔 로그 추가 (#175)

* fix: docker-compose 레디스 설정 오류 해결

* feat: 소켓 console.log 추가

* fix: 소켓 히스토리 저장시 형식 오류 수정

* [Server] 로거 기능 확대 (#176)

* feat: no auth 버그 -> password 주석 해제

* feat: 로그에 한국 시간대 추가

* feat: 로그파일이 dist 내부에 존재해 한 단계 위로 옮겨줌.

* feat: 응답로그는 interceptor에서 처리하도록 로직 수정

* feat: 로그 인터셉터 app.module.ts 프로바이더에 추가

* 🐛fix: redis module password 부분 주석처리 (#180)

* [Server] 피드화면 api 구현 (#196)

* chore: import 문 최적화

* feat: 피드 resource 생성

* feat: checklist entity에 카테고리 컬럼 추가

* feat: feedmodel 정의

private checklist model에서 likeCount와 downloadCount 컬럼 추가

* chore: 사용하지 않는 dto 파일 삭제

* chore: 카테고리 데이터 추가

* chore: 안쓰는 테스트 파일 삭제

* feat: 피드 화면 api 구현

* feat: feeds.service.spec.ts 테스트 코드 작성

* feat: api 에러 핸들링 로직 추가

* test: feeds.service.spec.ts 예외 케이스에 대한 테스트 코드 추가

* feat: 에러메시지 수정

* feat: 관리 페이지와 api 구현 (#197)

* feat: admin resource 구현

* feat: 관리자 페이지 추가

* feat: cors 설정 추가

* feat: 임시로 관리자 페이지 권한 제거

* feat: admin sse api 구현

* refactor: redis sub 서비스 구현

* feat: 어드민 페이지 api 기능 추가

* feat: redis pub 서비스 추가

* refactor: admin controller에 redis service로 교체

* feat: log interceptor에 redis pub 추가

* refactor: channels const로 분리

* style: 불필요한 주석 제거

* feat: ws 로그 redis pub 추가

* feat: admin page 박스 누르면 펼치기/접기 기능 추가

* feat: admin 페이지 색깔 변경

* feat: 관리자 페이지 로그인 기능 구현

* [Server] 클라이언트와 api 연동 작업 (login, socket history)  (#209)

* feat: socket 빈 히스토리면 [] 보내기

* feat: 로그인시 유저 닉네임도 같이 보내주기

* [Server] ai와 관련한 db 구조 개선 (#220)

* refactor: 경로 이름 수정 entity->entities

* feat: category 엔티티 생성

* feat: reason 모델 생성 및 각 테이블 relation 설정

* feat: 각 테이블 relation 수정 및 의존성 주입

* feat: relation 방식 변경으로 인한folders.service.ts 메서드 수정, 의존성 주입

* feat: admin 페이지 항목 자동 추가 , 시스템 상태 그래프 추가 (#223)

* feat: serverStatus 확인 기능 추가

* feat: serverStatus 확인 기능 추가

* feat: 모든 구독을 받아오는 기능 추가

* chore: 불필요한 상수 제거

* feat: admin page 서버 상태 확인 기능 추가

---------

Co-authored-by: Minseong Park <52368015+pminsung12@users.noreply.github.com>
yangdongsuk added a commit that referenced this pull request Dec 10, 2023
* [Server] 개발환경 세팅 (#4)

* build: open-list-server init

* chore: @nestjs/config class-validator class-transformer 설치

* chore: 루트 레벨에서 설치한 패키지 삭제

* chore: NestJs 개발 환경 세팅

* chore: @nestjs/config class-validator class-transformer 설치

* Server/feature/#13 (#25)

* chore: postgresql, nestjs docker 세팅

* chore: @nestjs/typeorm, typeorm, pg 설치

* chore: Typeorm 세팅 및 TestModel 테이블 생성

* 테스트용 유저 API 구현 (#30)

* chore: common resource 추가

* chore: users resource 추가

* feature: base entity 구현

* feature: usersEntity 구현

* feature: 모듈에 usersModel 추가

* style: entity,dto의 users -> user로 변경

* feature: CreateUserDto 구현

* feature: userEntity 이메일 필드 추가

* feature: createUserDto 이메일 필드 추가

* feature: user patch->put으로 변경

* feature: updateUserDto 구현

* feature : create user 구현

* feature: 모든 유저의 정보를 가져오는 API 구현

* feature: 특정 유저의 정보를 가져오는 API 구현

* feature: user 정보 수정 API 구현

* feature: user 삭제 API 구현

* feature: ValidationPipe 적용

* refactor: usersService 리팩토링

* [Server] 유닛 테스트 환경 세팅 (#32)

* chore: test 경로 설정

* feature: TestCommonModule 구현

* feature: users.service.spec.ts 의존성 주입

* feature: users.controller.spec.ts 의존성 주입

* [Server] Users resource 이름 변경 (#34)

* style: usersController 네이밍에 컨벤션 맞게 변경

* style: usersService 컨벤션에 따른 네이밍 변경

* style: UsersModel -> UserModel 컨벤션에 따른 네이밍 변경

* feature: usersService 테스트 코드 작성 (#39)

* [Server] Folder entity 생성 및 crud 구현 (#42)

* feat: folders crud 구현

* chore: TestModel 삭제 및 관련된 종속성 제거

* feat: folders.controller.spec.ts 삭제, folders.service.spec.ts 구현

* feature: docker파일 수정 (#57)

* feat: private checklist entity 생성 및 crud 구현 (#61)

* chore: 개발용 postgres 포트변경 5432->5433, .env도 port 5433으로 변경필요

* feat: checklists res 생성

* feat: checklist, private-checklist, shared-checklisst 엔티티 생성, user모델과 folder모델과의 의존관계 주입

* feat: author->editor로 수정, 공유체크리스트와 사용자의 relation을 many to many로 업데이트

* feat: 개인, 공유 체크리스트에 대해 생성과 업데이트 시 dto 생성

* fix: class 이름 오타 수정

* refactor: rest api 방식에 따라 함수명 변경

* feat: CheckListModel에서 진행률 컬럼 삭제

* feat: folder와 user간의 manyToOne relation적용

* feat: private-checklist crud 작성

* feat: folder service 커버리지 100 달성

* test: private-checklist test code 작성, 커버리지 92퍼센트

* feat: checklist 폴더 분리 & dto 빈문자열 검증 추가 (#66)

* refactor: checklists를 private, shared폴더로 분리.

* refactor: private-checklists를 folders 하위로 이동

* fix: 빈문자열 검증 추가

* [Server] Winston으로 로그 관리 (#70)

* chore: nest-winston winston winston-daily-rotate-file 설치

* feat: winston logger 설정 파일 구현

* feat: winston logger middleware 구현

* feat: 요청 logger middleware 구현

* feat: 로그에 요청 처리 시간 추가되도록 개선

* chore: PR 템플릿 수정

* chore: PR 템플릿 수정

* feat: jwt access, refresh token 기반 인가 구현

* chore: auth resource 추가

* chore: jwt 모듈 추가

* feature: signToken 구현

* feature: 토큰 검증, 토큰 재발급 기능 구현

* feature: 로그인 기능 구현

* feature: 로그인 관련 서비스 구현

* feature: login 컨트롤러 구현

* style: loginDto -> loginUserDto로 변경

* feature: access 토큰 재발급 컨트롤러 구현

* refactor: access토큰 재발급 형식 변경

* feature: 유저 register 기능 구현

* feature: auth.service.ts 테스트 코드 작성

* fix: 이메일 중복시 에러 메시지 수정

---------

Co-authored-by: Minseong Park <52368015+pminsung12@users.noreply.github.com>

* [Server] shared-checklist 소켓 구현 (#78)

* [Server] apple oauth api 구현 (#86)

* chore: @nestjs/axios 설치

* chore: axios 설치

* chore: axios 설치

* feat: dto수정, userId 컬럼추가, providerId 수정, fullName 컬럼 추가

* feat: entity에 따라 dto 항목 수정

* feat: apple oauth 로그인 서비스 함수 추가

client secret 만들고, axios post로 user 정보 가지고옴.

* feat: apple oauth 로그인 엔드포인트 추가

* feat: apple 유저에대해 create, update 함수 구현

* feat: publicKey 발급받는 로직추가

* [Server] access 토큰 재발급시 유저 정보 없는 버그 수정 (#83)

* [Server] privateChecklist의 내용 저장 api 구현 (#88)

* [Server] apple oauth 로그인 로직 수정 (#118)

* feat: env 사용방식 변경 + idToken 검증로직 추가

* chore: jwk를 pem으로 변환하기 위한 jose 라이브러리 설치

* chore: jose 라이브러리 제거 @panva/jose 설치

* feat: request body로 들어오는 auth-user.dto.ts 수정

* feat: 애플 유저 등록 로직 수정

* docs: jsdoc return type 수정

* feat: apple login 로직 수정(appleToken, clientSecret 로직 삭제)

* feat: refreshAccessToken 함수에서 refreshToken도 함께 반환해주도록 로직 수정

* [Server] Clova Studio api  구현 (#126)

* feat:  checklist-ai 리소스 생성

* feat: create-checklist-items.dto.ts 요청 dto 생성

* feat: 문자열 및 각종 옵션 상수화

* feat: user-role const 파일 삭제 => 함수화

* feat: /checklist-ai POST 요청 api 생성

대,중,소 카테고리를 body로 받아오면 clova studio에서 체크리스트 항목 10개를 반환한다.

* feat: AccessTokenGuard 구현 및 적용 (#129)

* feat: access token guard 구현

* feat: access token guard 전역 적용

* style: access-token.guard.ts 주석 추가

* feat: userId decorator 구현

* feat: folders controller에 userId 데코레이터 추가

* feat: 폴더 서비스에 user 데코레이터 추가

* feat: 개인 체크리스트 컨트롤러에 유저 데코레이터 추가

* feat: private-checklists service에 user 데코레이터 추가

* fix: 테스트 코드 수정

* Server/feature/#128 (#139)

* feat: json 구조로 카테고리 데이터 정의

* feat: categories 의존성 주입

* feat: endpoint만들고, 실제 존재하는 id인지 검증하는 dto 생성

* fix: 오타수정 forder->folder

* feat: param에 dto 적용하지 못해 삭제

* feat: 카테고리 json 데이터 변수명 변경, 대문자로

* feat: 대,중,소 카테고리 반환 api 구현

* test: categories.service.spec.ts 테스트 코드 작성

* test: categories.service.spec.ts 테스트 코드 수정 커버리지 100

* feat: 공유 체크리스트 API 및 소켓 작업 구현 (#140)

* feat: shared checklist item entity 구현

* style: SharedChecklistItemModel 오타 수정

* feat: shared checklist id uuid로 변경

* feat: create shared checklist 디티오 수정

* feat: shared-checklists 생성 구현

* refactor: shared-checklists 저장하는 함수 분리

* feat: shared-checklists 1개, 전부 가져오는 기능 추가

* feat: 유저 초대 기능 추가

* feat: 공유 체크리스트 삭제 기능 구현

* style: shared-checklists service 주석 추가

* feature: 공유 체크리스트 소켓에 데이터 누적 기능 추가

* feat: shared-checklists 소켓 통신 시 데이터 데베에 저장 구현

* feat: 소켓 연결시 방의 데이터 히스토리를 전송하는 기능 추가

* style: 소켓 주석 추가

* 🔐feat: 개발용 임시로 액세스,리프레시 토큰들 만료기한 일주일로 설정 (#142)

* feat: 공유 체크리스트 아이템 권한 문제 및 uuid 문제 해결 (#146)

* fix: 공유 체크리스트 아이템 권한 없으면 접근 못하게 수정

* fix: 체크리스트 추가시 사용자가 있는지 검사

* fix: 공유 체크리스트 생성시 uuid가 아니면 서버가 죽는 현상 수정

* style: 불필요한 코드 제거

* feat: 소켓 다중 서버 지원  (#159)

* chore: docker-compose.yaml에 레디스 추가

* chore: redis 모듈 추가

* feature: nest 다중 포트 서버 구성

* feature: redis.module.ts 구현 및 적용

* feature: 소켓에 레디스 삽입

* feature: 소켓 pub/sub 구현

* feat: 소켓 레디스에 총 접속자수 증감 기능 추가

* feat: 소켓 히스토리 기능 레디스 적용

* refactor: shared-checklists.gateway.ts 리팩토링

* feat: 소켓 editing 이벤트 추가 (#164)

* fix: 레디스 연결 수정 (#168)

* [Server] object 형태가 들어오면 redis에 저장 안되는 문제 수정 (#171)

* 🐛fix: 웹소켓 data를 json으로 변경 후 emit

* 🐛fix: history []제거

* 🐛fix: data[0] -> data

* feat: 웹소켓 히스토리 버그 수정 및 콘솔 로그 추가 (#175)

* fix: docker-compose 레디스 설정 오류 해결

* feat: 소켓 console.log 추가

* fix: 소켓 히스토리 저장시 형식 오류 수정

* [Server] 로거 기능 확대 (#176)

* feat: no auth 버그 -> password 주석 해제

* feat: 로그에 한국 시간대 추가

* feat: 로그파일이 dist 내부에 존재해 한 단계 위로 옮겨줌.

* feat: 응답로그는 interceptor에서 처리하도록 로직 수정

* feat: 로그 인터셉터 app.module.ts 프로바이더에 추가

* 🐛fix: redis module password 부분 주석처리 (#180)

* [Server] 피드화면 api 구현 (#196)

* chore: import 문 최적화

* feat: 피드 resource 생성

* feat: checklist entity에 카테고리 컬럼 추가

* feat: feedmodel 정의

private checklist model에서 likeCount와 downloadCount 컬럼 추가

* chore: 사용하지 않는 dto 파일 삭제

* chore: 카테고리 데이터 추가

* chore: 안쓰는 테스트 파일 삭제

* feat: 피드 화면 api 구현

* feat: feeds.service.spec.ts 테스트 코드 작성

* feat: api 에러 핸들링 로직 추가

* test: feeds.service.spec.ts 예외 케이스에 대한 테스트 코드 추가

* feat: 에러메시지 수정

* feat: 관리 페이지와 api 구현 (#197)

* feat: admin resource 구현

* feat: 관리자 페이지 추가

* feat: cors 설정 추가

* feat: 임시로 관리자 페이지 권한 제거

* feat: admin sse api 구현

* refactor: redis sub 서비스 구현

* feat: 어드민 페이지 api 기능 추가

* feat: redis pub 서비스 추가

* refactor: admin controller에 redis service로 교체

* feat: log interceptor에 redis pub 추가

* refactor: channels const로 분리

* style: 불필요한 주석 제거

* feat: ws 로그 redis pub 추가

* feat: admin page 박스 누르면 펼치기/접기 기능 추가

* feat: admin 페이지 색깔 변경

* feat: 관리자 페이지 로그인 기능 구현

* [Server] 클라이언트와 api 연동 작업 (login, socket history)  (#209)

* feat: socket 빈 히스토리면 [] 보내기

* feat: 로그인시 유저 닉네임도 같이 보내주기

* [Server] ai와 관련한 db 구조 개선 (#220)

* refactor: 경로 이름 수정 entity->entities

* feat: category 엔티티 생성

* feat: reason 모델 생성 및 각 테이블 relation 설정

* feat: 각 테이블 relation 수정 및 의존성 주입

* feat: relation 방식 변경으로 인한folders.service.ts 메서드 수정, 의존성 주입

* feat: admin 페이지 항목 자동 추가 , 시스템 상태 그래프 추가 (#223)

* feat: serverStatus 확인 기능 추가

* feat: serverStatus 확인 기능 추가

* feat: 모든 구독을 받아오는 기능 추가

* chore: 불필요한 상수 제거

* feat: admin page 서버 상태 확인 기능 추가

---------

Co-authored-by: Minseong Park <52368015+pminsung12@users.noreply.github.com>
yangdongsuk added a commit that referenced this pull request Dec 12, 2023
* [Server] 개발환경 세팅 (#4)

* build: open-list-server init

* chore: @nestjs/config class-validator class-transformer 설치

* chore: 루트 레벨에서 설치한 패키지 삭제

* chore: NestJs 개발 환경 세팅

* chore: @nestjs/config class-validator class-transformer 설치

* Server/feature/#13 (#25)

* chore: postgresql, nestjs docker 세팅

* chore: @nestjs/typeorm, typeorm, pg 설치

* chore: Typeorm 세팅 및 TestModel 테이블 생성

* 테스트용 유저 API 구현 (#30)

* chore: common resource 추가

* chore: users resource 추가

* feature: base entity 구현

* feature: usersEntity 구현

* feature: 모듈에 usersModel 추가

* style: entity,dto의 users -> user로 변경

* feature: CreateUserDto 구현

* feature: userEntity 이메일 필드 추가

* feature: createUserDto 이메일 필드 추가

* feature: user patch->put으로 변경

* feature: updateUserDto 구현

* feature : create user 구현

* feature: 모든 유저의 정보를 가져오는 API 구현

* feature: 특정 유저의 정보를 가져오는 API 구현

* feature: user 정보 수정 API 구현

* feature: user 삭제 API 구현

* feature: ValidationPipe 적용

* refactor: usersService 리팩토링

* [Server] 유닛 테스트 환경 세팅 (#32)

* chore: test 경로 설정

* feature: TestCommonModule 구현

* feature: users.service.spec.ts 의존성 주입

* feature: users.controller.spec.ts 의존성 주입

* [Server] Users resource 이름 변경 (#34)

* style: usersController 네이밍에 컨벤션 맞게 변경

* style: usersService 컨벤션에 따른 네이밍 변경

* style: UsersModel -> UserModel 컨벤션에 따른 네이밍 변경

* feature: usersService 테스트 코드 작성 (#39)

* [Server] Folder entity 생성 및 crud 구현 (#42)

* feat: folders crud 구현

* chore: TestModel 삭제 및 관련된 종속성 제거

* feat: folders.controller.spec.ts 삭제, folders.service.spec.ts 구현

* feature: docker파일 수정 (#57)

* feat: private checklist entity 생성 및 crud 구현 (#61)

* chore: 개발용 postgres 포트변경 5432->5433, .env도 port 5433으로 변경필요

* feat: checklists res 생성

* feat: checklist, private-checklist, shared-checklisst 엔티티 생성, user모델과 folder모델과의 의존관계 주입

* feat: author->editor로 수정, 공유체크리스트와 사용자의 relation을 many to many로 업데이트

* feat: 개인, 공유 체크리스트에 대해 생성과 업데이트 시 dto 생성

* fix: class 이름 오타 수정

* refactor: rest api 방식에 따라 함수명 변경

* feat: CheckListModel에서 진행률 컬럼 삭제

* feat: folder와 user간의 manyToOne relation적용

* feat: private-checklist crud 작성

* feat: folder service 커버리지 100 달성

* test: private-checklist test code 작성, 커버리지 92퍼센트

* feat: checklist 폴더 분리 & dto 빈문자열 검증 추가 (#66)

* refactor: checklists를 private, shared폴더로 분리.

* refactor: private-checklists를 folders 하위로 이동

* fix: 빈문자열 검증 추가

* [Server] Winston으로 로그 관리 (#70)

* chore: nest-winston winston winston-daily-rotate-file 설치

* feat: winston logger 설정 파일 구현

* feat: winston logger middleware 구현

* feat: 요청 logger middleware 구현

* feat: 로그에 요청 처리 시간 추가되도록 개선

* chore: PR 템플릿 수정

* chore: PR 템플릿 수정

* feat: jwt access, refresh token 기반 인가 구현

* chore: auth resource 추가

* chore: jwt 모듈 추가

* feature: signToken 구현

* feature: 토큰 검증, 토큰 재발급 기능 구현

* feature: 로그인 기능 구현

* feature: 로그인 관련 서비스 구현

* feature: login 컨트롤러 구현

* style: loginDto -> loginUserDto로 변경

* feature: access 토큰 재발급 컨트롤러 구현

* refactor: access토큰 재발급 형식 변경

* feature: 유저 register 기능 구현

* feature: auth.service.ts 테스트 코드 작성

* fix: 이메일 중복시 에러 메시지 수정

---------

Co-authored-by: Minseong Park <52368015+pminsung12@users.noreply.github.com>

* [Server] shared-checklist 소켓 구현 (#78)

* [Server] apple oauth api 구현 (#86)

* chore: @nestjs/axios 설치

* chore: axios 설치

* chore: axios 설치

* feat: dto수정, userId 컬럼추가, providerId 수정, fullName 컬럼 추가

* feat: entity에 따라 dto 항목 수정

* feat: apple oauth 로그인 서비스 함수 추가

client secret 만들고, axios post로 user 정보 가지고옴.

* feat: apple oauth 로그인 엔드포인트 추가

* feat: apple 유저에대해 create, update 함수 구현

* feat: publicKey 발급받는 로직추가

* [Server] access 토큰 재발급시 유저 정보 없는 버그 수정 (#83)

* [Server] privateChecklist의 내용 저장 api 구현 (#88)

* [Server] apple oauth 로그인 로직 수정 (#118)

* feat: env 사용방식 변경 + idToken 검증로직 추가

* chore: jwk를 pem으로 변환하기 위한 jose 라이브러리 설치

* chore: jose 라이브러리 제거 @panva/jose 설치

* feat: request body로 들어오는 auth-user.dto.ts 수정

* feat: 애플 유저 등록 로직 수정

* docs: jsdoc return type 수정

* feat: apple login 로직 수정(appleToken, clientSecret 로직 삭제)

* feat: refreshAccessToken 함수에서 refreshToken도 함께 반환해주도록 로직 수정

* [Server] Clova Studio api  구현 (#126)

* feat:  checklist-ai 리소스 생성

* feat: create-checklist-items.dto.ts 요청 dto 생성

* feat: 문자열 및 각종 옵션 상수화

* feat: user-role const 파일 삭제 => 함수화

* feat: /checklist-ai POST 요청 api 생성

대,중,소 카테고리를 body로 받아오면 clova studio에서 체크리스트 항목 10개를 반환한다.

* feat: AccessTokenGuard 구현 및 적용 (#129)

* feat: access token guard 구현

* feat: access token guard 전역 적용

* style: access-token.guard.ts 주석 추가

* feat: userId decorator 구현

* feat: folders controller에 userId 데코레이터 추가

* feat: 폴더 서비스에 user 데코레이터 추가

* feat: 개인 체크리스트 컨트롤러에 유저 데코레이터 추가

* feat: private-checklists service에 user 데코레이터 추가

* fix: 테스트 코드 수정

* Server/feature/#128 (#139)

* feat: json 구조로 카테고리 데이터 정의

* feat: categories 의존성 주입

* feat: endpoint만들고, 실제 존재하는 id인지 검증하는 dto 생성

* fix: 오타수정 forder->folder

* feat: param에 dto 적용하지 못해 삭제

* feat: 카테고리 json 데이터 변수명 변경, 대문자로

* feat: 대,중,소 카테고리 반환 api 구현

* test: categories.service.spec.ts 테스트 코드 작성

* test: categories.service.spec.ts 테스트 코드 수정 커버리지 100

* feat: 공유 체크리스트 API 및 소켓 작업 구현 (#140)

* feat: shared checklist item entity 구현

* style: SharedChecklistItemModel 오타 수정

* feat: shared checklist id uuid로 변경

* feat: create shared checklist 디티오 수정

* feat: shared-checklists 생성 구현

* refactor: shared-checklists 저장하는 함수 분리

* feat: shared-checklists 1개, 전부 가져오는 기능 추가

* feat: 유저 초대 기능 추가

* feat: 공유 체크리스트 삭제 기능 구현

* style: shared-checklists service 주석 추가

* feature: 공유 체크리스트 소켓에 데이터 누적 기능 추가

* feat: shared-checklists 소켓 통신 시 데이터 데베에 저장 구현

* feat: 소켓 연결시 방의 데이터 히스토리를 전송하는 기능 추가

* style: 소켓 주석 추가

* 🔐feat: 개발용 임시로 액세스,리프레시 토큰들 만료기한 일주일로 설정 (#142)

* feat: 공유 체크리스트 아이템 권한 문제 및 uuid 문제 해결 (#146)

* fix: 공유 체크리스트 아이템 권한 없으면 접근 못하게 수정

* fix: 체크리스트 추가시 사용자가 있는지 검사

* fix: 공유 체크리스트 생성시 uuid가 아니면 서버가 죽는 현상 수정

* style: 불필요한 코드 제거

* feat: 소켓 다중 서버 지원  (#159)

* chore: docker-compose.yaml에 레디스 추가

* chore: redis 모듈 추가

* feature: nest 다중 포트 서버 구성

* feature: redis.module.ts 구현 및 적용

* feature: 소켓에 레디스 삽입

* feature: 소켓 pub/sub 구현

* feat: 소켓 레디스에 총 접속자수 증감 기능 추가

* feat: 소켓 히스토리 기능 레디스 적용

* refactor: shared-checklists.gateway.ts 리팩토링

* feat: 소켓 editing 이벤트 추가 (#164)

* fix: 레디스 연결 수정 (#168)

* [Server] object 형태가 들어오면 redis에 저장 안되는 문제 수정 (#171)

* 🐛fix: 웹소켓 data를 json으로 변경 후 emit

* 🐛fix: history []제거

* 🐛fix: data[0] -> data

* feat: 웹소켓 히스토리 버그 수정 및 콘솔 로그 추가 (#175)

* fix: docker-compose 레디스 설정 오류 해결

* feat: 소켓 console.log 추가

* fix: 소켓 히스토리 저장시 형식 오류 수정

* [Server] 로거 기능 확대 (#176)

* feat: no auth 버그 -> password 주석 해제

* feat: 로그에 한국 시간대 추가

* feat: 로그파일이 dist 내부에 존재해 한 단계 위로 옮겨줌.

* feat: 응답로그는 interceptor에서 처리하도록 로직 수정

* feat: 로그 인터셉터 app.module.ts 프로바이더에 추가

* 🐛fix: redis module password 부분 주석처리 (#180)

* [Server] 피드화면 api 구현 (#196)

* chore: import 문 최적화

* feat: 피드 resource 생성

* feat: checklist entity에 카테고리 컬럼 추가

* feat: feedmodel 정의

private checklist model에서 likeCount와 downloadCount 컬럼 추가

* chore: 사용하지 않는 dto 파일 삭제

* chore: 카테고리 데이터 추가

* chore: 안쓰는 테스트 파일 삭제

* feat: 피드 화면 api 구현

* feat: feeds.service.spec.ts 테스트 코드 작성

* feat: api 에러 핸들링 로직 추가

* test: feeds.service.spec.ts 예외 케이스에 대한 테스트 코드 추가

* feat: 에러메시지 수정

* feat: 관리 페이지와 api 구현 (#197)

* feat: admin resource 구현

* feat: 관리자 페이지 추가

* feat: cors 설정 추가

* feat: 임시로 관리자 페이지 권한 제거

* feat: admin sse api 구현

* refactor: redis sub 서비스 구현

* feat: 어드민 페이지 api 기능 추가

* feat: redis pub 서비스 추가

* refactor: admin controller에 redis service로 교체

* feat: log interceptor에 redis pub 추가

* refactor: channels const로 분리

* style: 불필요한 주석 제거

* feat: ws 로그 redis pub 추가

* feat: admin page 박스 누르면 펼치기/접기 기능 추가

* feat: admin 페이지 색깔 변경

* feat: 관리자 페이지 로그인 기능 구현

* [Server] 클라이언트와 api 연동 작업 (login, socket history)  (#209)

* feat: socket 빈 히스토리면 [] 보내기

* feat: 로그인시 유저 닉네임도 같이 보내주기

* [Server] ai와 관련한 db 구조 개선 (#220)

* refactor: 경로 이름 수정 entity->entities

* feat: category 엔티티 생성

* feat: reason 모델 생성 및 각 테이블 relation 설정

* feat: 각 테이블 relation 수정 및 의존성 주입

* feat: relation 방식 변경으로 인한folders.service.ts 메서드 수정, 의존성 주입

* feat: admin 페이지 항목 자동 추가 , 시스템 상태 그래프 추가 (#223)

* feat: serverStatus 확인 기능 추가

* feat: serverStatus 확인 기능 추가

* feat: 모든 구독을 받아오는 기능 추가

* chore: 불필요한 상수 제거

* feat: admin page 서버 상태 확인 기능 추가

* [Server] 카테고리별 아이템 개수 확인 및 개수로 item 생성 로직 (#228)

* feat: 카테고리별 아이템 개수 반환해주는 api 생성

* feat: 카테고리별 아이템 개수 itemCount로 pub도 하고 응답도 반환하는 서비스 함수 구현

* feat: generate-item api에 대한 controller 함수 구현

* feat: generate-item api에 대한 service 함수 구현

* [Server] 카테고리 api db 방식으로 업데이트, 인공지능 응답 api db 캐싱 구조로 개선 (#240)

* feat: category service 함수 수정

* feat: category service 함수 요청 형태 변경

* feat: ai 체크리스트 항목 응답 api db 캐싱 구조로 변경

---------

Co-authored-by: Minseong Park <52368015+pminsung12@users.noreply.github.com>
yangdongsuk added a commit that referenced this pull request Dec 13, 2023
* [Server] 개발환경 세팅 (#4)

* build: open-list-server init

* chore: @nestjs/config class-validator class-transformer 설치

* chore: 루트 레벨에서 설치한 패키지 삭제

* chore: NestJs 개발 환경 세팅

* chore: @nestjs/config class-validator class-transformer 설치

* Server/feature/#13 (#25)

* chore: postgresql, nestjs docker 세팅

* chore: @nestjs/typeorm, typeorm, pg 설치

* chore: Typeorm 세팅 및 TestModel 테이블 생성

* 테스트용 유저 API 구현 (#30)

* chore: common resource 추가

* chore: users resource 추가

* feature: base entity 구현

* feature: usersEntity 구현

* feature: 모듈에 usersModel 추가

* style: entity,dto의 users -> user로 변경

* feature: CreateUserDto 구현

* feature: userEntity 이메일 필드 추가

* feature: createUserDto 이메일 필드 추가

* feature: user patch->put으로 변경

* feature: updateUserDto 구현

* feature : create user 구현

* feature: 모든 유저의 정보를 가져오는 API 구현

* feature: 특정 유저의 정보를 가져오는 API 구현

* feature: user 정보 수정 API 구현

* feature: user 삭제 API 구현

* feature: ValidationPipe 적용

* refactor: usersService 리팩토링

* [Server] 유닛 테스트 환경 세팅 (#32)

* chore: test 경로 설정

* feature: TestCommonModule 구현

* feature: users.service.spec.ts 의존성 주입

* feature: users.controller.spec.ts 의존성 주입

* [Server] Users resource 이름 변경 (#34)

* style: usersController 네이밍에 컨벤션 맞게 변경

* style: usersService 컨벤션에 따른 네이밍 변경

* style: UsersModel -> UserModel 컨벤션에 따른 네이밍 변경

* feature: usersService 테스트 코드 작성 (#39)

* [Server] Folder entity 생성 및 crud 구현 (#42)

* feat: folders crud 구현

* chore: TestModel 삭제 및 관련된 종속성 제거

* feat: folders.controller.spec.ts 삭제, folders.service.spec.ts 구현

* feature: docker파일 수정 (#57)

* feat: private checklist entity 생성 및 crud 구현 (#61)

* chore: 개발용 postgres 포트변경 5432->5433, .env도 port 5433으로 변경필요

* feat: checklists res 생성

* feat: checklist, private-checklist, shared-checklisst 엔티티 생성, user모델과 folder모델과의 의존관계 주입

* feat: author->editor로 수정, 공유체크리스트와 사용자의 relation을 many to many로 업데이트

* feat: 개인, 공유 체크리스트에 대해 생성과 업데이트 시 dto 생성

* fix: class 이름 오타 수정

* refactor: rest api 방식에 따라 함수명 변경

* feat: CheckListModel에서 진행률 컬럼 삭제

* feat: folder와 user간의 manyToOne relation적용

* feat: private-checklist crud 작성

* feat: folder service 커버리지 100 달성

* test: private-checklist test code 작성, 커버리지 92퍼센트

* feat: checklist 폴더 분리 & dto 빈문자열 검증 추가 (#66)

* refactor: checklists를 private, shared폴더로 분리.

* refactor: private-checklists를 folders 하위로 이동

* fix: 빈문자열 검증 추가

* [Server] Winston으로 로그 관리 (#70)

* chore: nest-winston winston winston-daily-rotate-file 설치

* feat: winston logger 설정 파일 구현

* feat: winston logger middleware 구현

* feat: 요청 logger middleware 구현

* feat: 로그에 요청 처리 시간 추가되도록 개선

* chore: PR 템플릿 수정

* chore: PR 템플릿 수정

* feat: jwt access, refresh token 기반 인가 구현

* chore: auth resource 추가

* chore: jwt 모듈 추가

* feature: signToken 구현

* feature: 토큰 검증, 토큰 재발급 기능 구현

* feature: 로그인 기능 구현

* feature: 로그인 관련 서비스 구현

* feature: login 컨트롤러 구현

* style: loginDto -> loginUserDto로 변경

* feature: access 토큰 재발급 컨트롤러 구현

* refactor: access토큰 재발급 형식 변경

* feature: 유저 register 기능 구현

* feature: auth.service.ts 테스트 코드 작성

* fix: 이메일 중복시 에러 메시지 수정

---------

Co-authored-by: Minseong Park <52368015+pminsung12@users.noreply.github.com>

* [Server] shared-checklist 소켓 구현 (#78)

* [Server] apple oauth api 구현 (#86)

* chore: @nestjs/axios 설치

* chore: axios 설치

* chore: axios 설치

* feat: dto수정, userId 컬럼추가, providerId 수정, fullName 컬럼 추가

* feat: entity에 따라 dto 항목 수정

* feat: apple oauth 로그인 서비스 함수 추가

client secret 만들고, axios post로 user 정보 가지고옴.

* feat: apple oauth 로그인 엔드포인트 추가

* feat: apple 유저에대해 create, update 함수 구현

* feat: publicKey 발급받는 로직추가

* [Server] access 토큰 재발급시 유저 정보 없는 버그 수정 (#83)

* [Server] privateChecklist의 내용 저장 api 구현 (#88)

* [Server] apple oauth 로그인 로직 수정 (#118)

* feat: env 사용방식 변경 + idToken 검증로직 추가

* chore: jwk를 pem으로 변환하기 위한 jose 라이브러리 설치

* chore: jose 라이브러리 제거 @panva/jose 설치

* feat: request body로 들어오는 auth-user.dto.ts 수정

* feat: 애플 유저 등록 로직 수정

* docs: jsdoc return type 수정

* feat: apple login 로직 수정(appleToken, clientSecret 로직 삭제)

* feat: refreshAccessToken 함수에서 refreshToken도 함께 반환해주도록 로직 수정

* [Server] Clova Studio api  구현 (#126)

* feat:  checklist-ai 리소스 생성

* feat: create-checklist-items.dto.ts 요청 dto 생성

* feat: 문자열 및 각종 옵션 상수화

* feat: user-role const 파일 삭제 => 함수화

* feat: /checklist-ai POST 요청 api 생성

대,중,소 카테고리를 body로 받아오면 clova studio에서 체크리스트 항목 10개를 반환한다.

* feat: AccessTokenGuard 구현 및 적용 (#129)

* feat: access token guard 구현

* feat: access token guard 전역 적용

* style: access-token.guard.ts 주석 추가

* feat: userId decorator 구현

* feat: folders controller에 userId 데코레이터 추가

* feat: 폴더 서비스에 user 데코레이터 추가

* feat: 개인 체크리스트 컨트롤러에 유저 데코레이터 추가

* feat: private-checklists service에 user 데코레이터 추가

* fix: 테스트 코드 수정

* Server/feature/#128 (#139)

* feat: json 구조로 카테고리 데이터 정의

* feat: categories 의존성 주입

* feat: endpoint만들고, 실제 존재하는 id인지 검증하는 dto 생성

* fix: 오타수정 forder->folder

* feat: param에 dto 적용하지 못해 삭제

* feat: 카테고리 json 데이터 변수명 변경, 대문자로

* feat: 대,중,소 카테고리 반환 api 구현

* test: categories.service.spec.ts 테스트 코드 작성

* test: categories.service.spec.ts 테스트 코드 수정 커버리지 100

* feat: 공유 체크리스트 API 및 소켓 작업 구현 (#140)

* feat: shared checklist item entity 구현

* style: SharedChecklistItemModel 오타 수정

* feat: shared checklist id uuid로 변경

* feat: create shared checklist 디티오 수정

* feat: shared-checklists 생성 구현

* refactor: shared-checklists 저장하는 함수 분리

* feat: shared-checklists 1개, 전부 가져오는 기능 추가

* feat: 유저 초대 기능 추가

* feat: 공유 체크리스트 삭제 기능 구현

* style: shared-checklists service 주석 추가

* feature: 공유 체크리스트 소켓에 데이터 누적 기능 추가

* feat: shared-checklists 소켓 통신 시 데이터 데베에 저장 구현

* feat: 소켓 연결시 방의 데이터 히스토리를 전송하는 기능 추가

* style: 소켓 주석 추가

* 🔐feat: 개발용 임시로 액세스,리프레시 토큰들 만료기한 일주일로 설정 (#142)

* feat: 공유 체크리스트 아이템 권한 문제 및 uuid 문제 해결 (#146)

* fix: 공유 체크리스트 아이템 권한 없으면 접근 못하게 수정

* fix: 체크리스트 추가시 사용자가 있는지 검사

* fix: 공유 체크리스트 생성시 uuid가 아니면 서버가 죽는 현상 수정

* style: 불필요한 코드 제거

* feat: 소켓 다중 서버 지원  (#159)

* chore: docker-compose.yaml에 레디스 추가

* chore: redis 모듈 추가

* feature: nest 다중 포트 서버 구성

* feature: redis.module.ts 구현 및 적용

* feature: 소켓에 레디스 삽입

* feature: 소켓 pub/sub 구현

* feat: 소켓 레디스에 총 접속자수 증감 기능 추가

* feat: 소켓 히스토리 기능 레디스 적용

* refactor: shared-checklists.gateway.ts 리팩토링

* feat: 소켓 editing 이벤트 추가 (#164)

* fix: 레디스 연결 수정 (#168)

* [Server] object 형태가 들어오면 redis에 저장 안되는 문제 수정 (#171)

* 🐛fix: 웹소켓 data를 json으로 변경 후 emit

* 🐛fix: history []제거

* 🐛fix: data[0] -> data

* feat: 웹소켓 히스토리 버그 수정 및 콘솔 로그 추가 (#175)

* fix: docker-compose 레디스 설정 오류 해결

* feat: 소켓 console.log 추가

* fix: 소켓 히스토리 저장시 형식 오류 수정

* [Server] 로거 기능 확대 (#176)

* feat: no auth 버그 -> password 주석 해제

* feat: 로그에 한국 시간대 추가

* feat: 로그파일이 dist 내부에 존재해 한 단계 위로 옮겨줌.

* feat: 응답로그는 interceptor에서 처리하도록 로직 수정

* feat: 로그 인터셉터 app.module.ts 프로바이더에 추가

* 🐛fix: redis module password 부분 주석처리 (#180)

* [Server] 피드화면 api 구현 (#196)

* chore: import 문 최적화

* feat: 피드 resource 생성

* feat: checklist entity에 카테고리 컬럼 추가

* feat: feedmodel 정의

private checklist model에서 likeCount와 downloadCount 컬럼 추가

* chore: 사용하지 않는 dto 파일 삭제

* chore: 카테고리 데이터 추가

* chore: 안쓰는 테스트 파일 삭제

* feat: 피드 화면 api 구현

* feat: feeds.service.spec.ts 테스트 코드 작성

* feat: api 에러 핸들링 로직 추가

* test: feeds.service.spec.ts 예외 케이스에 대한 테스트 코드 추가

* feat: 에러메시지 수정

* feat: 관리 페이지와 api 구현 (#197)

* feat: admin resource 구현

* feat: 관리자 페이지 추가

* feat: cors 설정 추가

* feat: 임시로 관리자 페이지 권한 제거

* feat: admin sse api 구현

* refactor: redis sub 서비스 구현

* feat: 어드민 페이지 api 기능 추가

* feat: redis pub 서비스 추가

* refactor: admin controller에 redis service로 교체

* feat: log interceptor에 redis pub 추가

* refactor: channels const로 분리

* style: 불필요한 주석 제거

* feat: ws 로그 redis pub 추가

* feat: admin page 박스 누르면 펼치기/접기 기능 추가

* feat: admin 페이지 색깔 변경

* feat: 관리자 페이지 로그인 기능 구현

* [Server] 클라이언트와 api 연동 작업 (login, socket history)  (#209)

* feat: socket 빈 히스토리면 [] 보내기

* feat: 로그인시 유저 닉네임도 같이 보내주기

* [Server] ai와 관련한 db 구조 개선 (#220)

* refactor: 경로 이름 수정 entity->entities

* feat: category 엔티티 생성

* feat: reason 모델 생성 및 각 테이블 relation 설정

* feat: 각 테이블 relation 수정 및 의존성 주입

* feat: relation 방식 변경으로 인한folders.service.ts 메서드 수정, 의존성 주입

* feat: admin 페이지 항목 자동 추가 , 시스템 상태 그래프 추가 (#223)

* feat: serverStatus 확인 기능 추가

* feat: serverStatus 확인 기능 추가

* feat: 모든 구독을 받아오는 기능 추가

* chore: 불필요한 상수 제거

* feat: admin page 서버 상태 확인 기능 추가

* [Server] 카테고리별 아이템 개수 확인 및 개수로 item 생성 로직 (#228)

* feat: 카테고리별 아이템 개수 반환해주는 api 생성

* feat: 카테고리별 아이템 개수 itemCount로 pub도 하고 응답도 반환하는 서비스 함수 구현

* feat: generate-item api에 대한 controller 함수 구현

* feat: generate-item api에 대한 service 함수 구현

* [Server] 카테고리 api db 방식으로 업데이트, 인공지능 응답 api db 캐싱 구조로 개선 (#240)

* feat: category service 함수 수정

* feat: category service 함수 요청 형태 변경

* feat: ai 체크리스트 항목 응답 api db 캐싱 구조로 변경

* refactor: jwt toekn 만료 시간 환경변수로 변경 (#250)

---------

Co-authored-by: Minseong Park <52368015+pminsung12@users.noreply.github.com>
yangdongsuk added a commit that referenced this pull request Dec 13, 2023
* [Server] 개발환경 세팅 (#4)

* build: open-list-server init

* chore: @nestjs/config class-validator class-transformer 설치

* chore: 루트 레벨에서 설치한 패키지 삭제

* chore: NestJs 개발 환경 세팅

* chore: @nestjs/config class-validator class-transformer 설치

* Server/feature/#13 (#25)

* chore: postgresql, nestjs docker 세팅

* chore: @nestjs/typeorm, typeorm, pg 설치

* chore: Typeorm 세팅 및 TestModel 테이블 생성

* 테스트용 유저 API 구현 (#30)

* chore: common resource 추가

* chore: users resource 추가

* feature: base entity 구현

* feature: usersEntity 구현

* feature: 모듈에 usersModel 추가

* style: entity,dto의 users -> user로 변경

* feature: CreateUserDto 구현

* feature: userEntity 이메일 필드 추가

* feature: createUserDto 이메일 필드 추가

* feature: user patch->put으로 변경

* feature: updateUserDto 구현

* feature : create user 구현

* feature: 모든 유저의 정보를 가져오는 API 구현

* feature: 특정 유저의 정보를 가져오는 API 구현

* feature: user 정보 수정 API 구현

* feature: user 삭제 API 구현

* feature: ValidationPipe 적용

* refactor: usersService 리팩토링

* [Server] 유닛 테스트 환경 세팅 (#32)

* chore: test 경로 설정

* feature: TestCommonModule 구현

* feature: users.service.spec.ts 의존성 주입

* feature: users.controller.spec.ts 의존성 주입

* [Server] Users resource 이름 변경 (#34)

* style: usersController 네이밍에 컨벤션 맞게 변경

* style: usersService 컨벤션에 따른 네이밍 변경

* style: UsersModel -> UserModel 컨벤션에 따른 네이밍 변경

* feature: usersService 테스트 코드 작성 (#39)

* [Server] Folder entity 생성 및 crud 구현 (#42)

* feat: folders crud 구현

* chore: TestModel 삭제 및 관련된 종속성 제거

* feat: folders.controller.spec.ts 삭제, folders.service.spec.ts 구현

* feature: docker파일 수정 (#57)

* feat: private checklist entity 생성 및 crud 구현 (#61)

* chore: 개발용 postgres 포트변경 5432->5433, .env도 port 5433으로 변경필요

* feat: checklists res 생성

* feat: checklist, private-checklist, shared-checklisst 엔티티 생성, user모델과 folder모델과의 의존관계 주입

* feat: author->editor로 수정, 공유체크리스트와 사용자의 relation을 many to many로 업데이트

* feat: 개인, 공유 체크리스트에 대해 생성과 업데이트 시 dto 생성

* fix: class 이름 오타 수정

* refactor: rest api 방식에 따라 함수명 변경

* feat: CheckListModel에서 진행률 컬럼 삭제

* feat: folder와 user간의 manyToOne relation적용

* feat: private-checklist crud 작성

* feat: folder service 커버리지 100 달성

* test: private-checklist test code 작성, 커버리지 92퍼센트

* feat: checklist 폴더 분리 & dto 빈문자열 검증 추가 (#66)

* refactor: checklists를 private, shared폴더로 분리.

* refactor: private-checklists를 folders 하위로 이동

* fix: 빈문자열 검증 추가

* [Server] Winston으로 로그 관리 (#70)

* chore: nest-winston winston winston-daily-rotate-file 설치

* feat: winston logger 설정 파일 구현

* feat: winston logger middleware 구현

* feat: 요청 logger middleware 구현

* feat: 로그에 요청 처리 시간 추가되도록 개선

* chore: PR 템플릿 수정

* chore: PR 템플릿 수정

* feat: jwt access, refresh token 기반 인가 구현

* chore: auth resource 추가

* chore: jwt 모듈 추가

* feature: signToken 구현

* feature: 토큰 검증, 토큰 재발급 기능 구현

* feature: 로그인 기능 구현

* feature: 로그인 관련 서비스 구현

* feature: login 컨트롤러 구현

* style: loginDto -> loginUserDto로 변경

* feature: access 토큰 재발급 컨트롤러 구현

* refactor: access토큰 재발급 형식 변경

* feature: 유저 register 기능 구현

* feature: auth.service.ts 테스트 코드 작성

* fix: 이메일 중복시 에러 메시지 수정

---------

Co-authored-by: Minseong Park <52368015+pminsung12@users.noreply.github.com>

* [Server] shared-checklist 소켓 구현 (#78)

* [Server] apple oauth api 구현 (#86)

* chore: @nestjs/axios 설치

* chore: axios 설치

* chore: axios 설치

* feat: dto수정, userId 컬럼추가, providerId 수정, fullName 컬럼 추가

* feat: entity에 따라 dto 항목 수정

* feat: apple oauth 로그인 서비스 함수 추가

client secret 만들고, axios post로 user 정보 가지고옴.

* feat: apple oauth 로그인 엔드포인트 추가

* feat: apple 유저에대해 create, update 함수 구현

* feat: publicKey 발급받는 로직추가

* [Server] access 토큰 재발급시 유저 정보 없는 버그 수정 (#83)

* [Server] privateChecklist의 내용 저장 api 구현 (#88)

* [Server] apple oauth 로그인 로직 수정 (#118)

* feat: env 사용방식 변경 + idToken 검증로직 추가

* chore: jwk를 pem으로 변환하기 위한 jose 라이브러리 설치

* chore: jose 라이브러리 제거 @panva/jose 설치

* feat: request body로 들어오는 auth-user.dto.ts 수정

* feat: 애플 유저 등록 로직 수정

* docs: jsdoc return type 수정

* feat: apple login 로직 수정(appleToken, clientSecret 로직 삭제)

* feat: refreshAccessToken 함수에서 refreshToken도 함께 반환해주도록 로직 수정

* [Server] Clova Studio api  구현 (#126)

* feat:  checklist-ai 리소스 생성

* feat: create-checklist-items.dto.ts 요청 dto 생성

* feat: 문자열 및 각종 옵션 상수화

* feat: user-role const 파일 삭제 => 함수화

* feat: /checklist-ai POST 요청 api 생성

대,중,소 카테고리를 body로 받아오면 clova studio에서 체크리스트 항목 10개를 반환한다.

* feat: AccessTokenGuard 구현 및 적용 (#129)

* feat: access token guard 구현

* feat: access token guard 전역 적용

* style: access-token.guard.ts 주석 추가

* feat: userId decorator 구현

* feat: folders controller에 userId 데코레이터 추가

* feat: 폴더 서비스에 user 데코레이터 추가

* feat: 개인 체크리스트 컨트롤러에 유저 데코레이터 추가

* feat: private-checklists service에 user 데코레이터 추가

* fix: 테스트 코드 수정

* Server/feature/#128 (#139)

* feat: json 구조로 카테고리 데이터 정의

* feat: categories 의존성 주입

* feat: endpoint만들고, 실제 존재하는 id인지 검증하는 dto 생성

* fix: 오타수정 forder->folder

* feat: param에 dto 적용하지 못해 삭제

* feat: 카테고리 json 데이터 변수명 변경, 대문자로

* feat: 대,중,소 카테고리 반환 api 구현

* test: categories.service.spec.ts 테스트 코드 작성

* test: categories.service.spec.ts 테스트 코드 수정 커버리지 100

* feat: 공유 체크리스트 API 및 소켓 작업 구현 (#140)

* feat: shared checklist item entity 구현

* style: SharedChecklistItemModel 오타 수정

* feat: shared checklist id uuid로 변경

* feat: create shared checklist 디티오 수정

* feat: shared-checklists 생성 구현

* refactor: shared-checklists 저장하는 함수 분리

* feat: shared-checklists 1개, 전부 가져오는 기능 추가

* feat: 유저 초대 기능 추가

* feat: 공유 체크리스트 삭제 기능 구현

* style: shared-checklists service 주석 추가

* feature: 공유 체크리스트 소켓에 데이터 누적 기능 추가

* feat: shared-checklists 소켓 통신 시 데이터 데베에 저장 구현

* feat: 소켓 연결시 방의 데이터 히스토리를 전송하는 기능 추가

* style: 소켓 주석 추가

* 🔐feat: 개발용 임시로 액세스,리프레시 토큰들 만료기한 일주일로 설정 (#142)

* feat: 공유 체크리스트 아이템 권한 문제 및 uuid 문제 해결 (#146)

* fix: 공유 체크리스트 아이템 권한 없으면 접근 못하게 수정

* fix: 체크리스트 추가시 사용자가 있는지 검사

* fix: 공유 체크리스트 생성시 uuid가 아니면 서버가 죽는 현상 수정

* style: 불필요한 코드 제거

* feat: 소켓 다중 서버 지원  (#159)

* chore: docker-compose.yaml에 레디스 추가

* chore: redis 모듈 추가

* feature: nest 다중 포트 서버 구성

* feature: redis.module.ts 구현 및 적용

* feature: 소켓에 레디스 삽입

* feature: 소켓 pub/sub 구현

* feat: 소켓 레디스에 총 접속자수 증감 기능 추가

* feat: 소켓 히스토리 기능 레디스 적용

* refactor: shared-checklists.gateway.ts 리팩토링

* feat: 소켓 editing 이벤트 추가 (#164)

* fix: 레디스 연결 수정 (#168)

* [Server] object 형태가 들어오면 redis에 저장 안되는 문제 수정 (#171)

* 🐛fix: 웹소켓 data를 json으로 변경 후 emit

* 🐛fix: history []제거

* 🐛fix: data[0] -> data

* feat: 웹소켓 히스토리 버그 수정 및 콘솔 로그 추가 (#175)

* fix: docker-compose 레디스 설정 오류 해결

* feat: 소켓 console.log 추가

* fix: 소켓 히스토리 저장시 형식 오류 수정

* [Server] 로거 기능 확대 (#176)

* feat: no auth 버그 -> password 주석 해제

* feat: 로그에 한국 시간대 추가

* feat: 로그파일이 dist 내부에 존재해 한 단계 위로 옮겨줌.

* feat: 응답로그는 interceptor에서 처리하도록 로직 수정

* feat: 로그 인터셉터 app.module.ts 프로바이더에 추가

* 🐛fix: redis module password 부분 주석처리 (#180)

* [Server] 피드화면 api 구현 (#196)

* chore: import 문 최적화

* feat: 피드 resource 생성

* feat: checklist entity에 카테고리 컬럼 추가

* feat: feedmodel 정의

private checklist model에서 likeCount와 downloadCount 컬럼 추가

* chore: 사용하지 않는 dto 파일 삭제

* chore: 카테고리 데이터 추가

* chore: 안쓰는 테스트 파일 삭제

* feat: 피드 화면 api 구현

* feat: feeds.service.spec.ts 테스트 코드 작성

* feat: api 에러 핸들링 로직 추가

* test: feeds.service.spec.ts 예외 케이스에 대한 테스트 코드 추가

* feat: 에러메시지 수정

* feat: 관리 페이지와 api 구현 (#197)

* feat: admin resource 구현

* feat: 관리자 페이지 추가

* feat: cors 설정 추가

* feat: 임시로 관리자 페이지 권한 제거

* feat: admin sse api 구현

* refactor: redis sub 서비스 구현

* feat: 어드민 페이지 api 기능 추가

* feat: redis pub 서비스 추가

* refactor: admin controller에 redis service로 교체

* feat: log interceptor에 redis pub 추가

* refactor: channels const로 분리

* style: 불필요한 주석 제거

* feat: ws 로그 redis pub 추가

* feat: admin page 박스 누르면 펼치기/접기 기능 추가

* feat: admin 페이지 색깔 변경

* feat: 관리자 페이지 로그인 기능 구현

* [Server] 클라이언트와 api 연동 작업 (login, socket history)  (#209)

* feat: socket 빈 히스토리면 [] 보내기

* feat: 로그인시 유저 닉네임도 같이 보내주기

* [Server] ai와 관련한 db 구조 개선 (#220)

* refactor: 경로 이름 수정 entity->entities

* feat: category 엔티티 생성

* feat: reason 모델 생성 및 각 테이블 relation 설정

* feat: 각 테이블 relation 수정 및 의존성 주입

* feat: relation 방식 변경으로 인한folders.service.ts 메서드 수정, 의존성 주입

* feat: admin 페이지 항목 자동 추가 , 시스템 상태 그래프 추가 (#223)

* feat: serverStatus 확인 기능 추가

* feat: serverStatus 확인 기능 추가

* feat: 모든 구독을 받아오는 기능 추가

* chore: 불필요한 상수 제거

* feat: admin page 서버 상태 확인 기능 추가

* [Server] 카테고리별 아이템 개수 확인 및 개수로 item 생성 로직 (#228)

* feat: 카테고리별 아이템 개수 반환해주는 api 생성

* feat: 카테고리별 아이템 개수 itemCount로 pub도 하고 응답도 반환하는 서비스 함수 구현

* feat: generate-item api에 대한 controller 함수 구현

* feat: generate-item api에 대한 service 함수 구현

* [Server] 카테고리 api db 방식으로 업데이트, 인공지능 응답 api db 캐싱 구조로 개선 (#240)

* feat: category service 함수 수정

* feat: category service 함수 요청 형태 변경

* feat: ai 체크리스트 항목 응답 api db 캐싱 구조로 변경

* refactor: jwt toekn 만료 시간 환경변수로 변경 (#250)

---------

Co-authored-by: Minseong Park <52368015+pminsung12@users.noreply.github.com>
wi-seong-cheol pushed a commit that referenced this pull request Dec 14, 2023
* [Server] 개발환경 세팅 (#4)

* build: open-list-server init

* chore: @nestjs/config class-validator class-transformer 설치

* chore: 루트 레벨에서 설치한 패키지 삭제

* chore: NestJs 개발 환경 세팅

* chore: @nestjs/config class-validator class-transformer 설치

* Server/feature/#13 (#25)

* chore: postgresql, nestjs docker 세팅

* chore: @nestjs/typeorm, typeorm, pg 설치

* chore: Typeorm 세팅 및 TestModel 테이블 생성

* 테스트용 유저 API 구현 (#30)

* chore: common resource 추가

* chore: users resource 추가

* feature: base entity 구현

* feature: usersEntity 구현

* feature: 모듈에 usersModel 추가

* style: entity,dto의 users -> user로 변경

* feature: CreateUserDto 구현

* feature: userEntity 이메일 필드 추가

* feature: createUserDto 이메일 필드 추가

* feature: user patch->put으로 변경

* feature: updateUserDto 구현

* feature : create user 구현

* feature: 모든 유저의 정보를 가져오는 API 구현

* feature: 특정 유저의 정보를 가져오는 API 구현

* feature: user 정보 수정 API 구현

* feature: user 삭제 API 구현

* feature: ValidationPipe 적용

* refactor: usersService 리팩토링

* [Server] 유닛 테스트 환경 세팅 (#32)

* chore: test 경로 설정

* feature: TestCommonModule 구현

* feature: users.service.spec.ts 의존성 주입

* feature: users.controller.spec.ts 의존성 주입

* [Server] Users resource 이름 변경 (#34)

* style: usersController 네이밍에 컨벤션 맞게 변경

* style: usersService 컨벤션에 따른 네이밍 변경

* style: UsersModel -> UserModel 컨벤션에 따른 네이밍 변경

* feature: usersService 테스트 코드 작성 (#39)

* [Server] Folder entity 생성 및 crud 구현 (#42)

* feat: folders crud 구현

* chore: TestModel 삭제 및 관련된 종속성 제거

* feat: folders.controller.spec.ts 삭제, folders.service.spec.ts 구현

* feature: docker파일 수정 (#57)

* feat: private checklist entity 생성 및 crud 구현 (#61)

* chore: 개발용 postgres 포트변경 5432->5433, .env도 port 5433으로 변경필요

* feat: checklists res 생성

* feat: checklist, private-checklist, shared-checklisst 엔티티 생성, user모델과 folder모델과의 의존관계 주입

* feat: author->editor로 수정, 공유체크리스트와 사용자의 relation을 many to many로 업데이트

* feat: 개인, 공유 체크리스트에 대해 생성과 업데이트 시 dto 생성

* fix: class 이름 오타 수정

* refactor: rest api 방식에 따라 함수명 변경

* feat: CheckListModel에서 진행률 컬럼 삭제

* feat: folder와 user간의 manyToOne relation적용

* feat: private-checklist crud 작성

* feat: folder service 커버리지 100 달성

* test: private-checklist test code 작성, 커버리지 92퍼센트

* feat: checklist 폴더 분리 & dto 빈문자열 검증 추가 (#66)

* refactor: checklists를 private, shared폴더로 분리.

* refactor: private-checklists를 folders 하위로 이동

* fix: 빈문자열 검증 추가

* [Server] Winston으로 로그 관리 (#70)

* chore: nest-winston winston winston-daily-rotate-file 설치

* feat: winston logger 설정 파일 구현

* feat: winston logger middleware 구현

* feat: 요청 logger middleware 구현

* feat: 로그에 요청 처리 시간 추가되도록 개선

* chore: PR 템플릿 수정

* chore: PR 템플릿 수정

* feat: jwt access, refresh token 기반 인가 구현

* chore: auth resource 추가

* chore: jwt 모듈 추가

* feature: signToken 구현

* feature: 토큰 검증, 토큰 재발급 기능 구현

* feature: 로그인 기능 구현

* feature: 로그인 관련 서비스 구현

* feature: login 컨트롤러 구현

* style: loginDto -> loginUserDto로 변경

* feature: access 토큰 재발급 컨트롤러 구현

* refactor: access토큰 재발급 형식 변경

* feature: 유저 register 기능 구현

* feature: auth.service.ts 테스트 코드 작성

* fix: 이메일 중복시 에러 메시지 수정

---------

Co-authored-by: Minseong Park <52368015+pminsung12@users.noreply.github.com>

* [Server] shared-checklist 소켓 구현 (#78)

* [Server] apple oauth api 구현 (#86)

* chore: @nestjs/axios 설치

* chore: axios 설치

* chore: axios 설치

* feat: dto수정, userId 컬럼추가, providerId 수정, fullName 컬럼 추가

* feat: entity에 따라 dto 항목 수정

* feat: apple oauth 로그인 서비스 함수 추가

client secret 만들고, axios post로 user 정보 가지고옴.

* feat: apple oauth 로그인 엔드포인트 추가

* feat: apple 유저에대해 create, update 함수 구현

* feat: publicKey 발급받는 로직추가

* [Server] access 토큰 재발급시 유저 정보 없는 버그 수정 (#83)

* [Server] privateChecklist의 내용 저장 api 구현 (#88)

* [Server] apple oauth 로그인 로직 수정 (#118)

* feat: env 사용방식 변경 + idToken 검증로직 추가

* chore: jwk를 pem으로 변환하기 위한 jose 라이브러리 설치

* chore: jose 라이브러리 제거 @panva/jose 설치

* feat: request body로 들어오는 auth-user.dto.ts 수정

* feat: 애플 유저 등록 로직 수정

* docs: jsdoc return type 수정

* feat: apple login 로직 수정(appleToken, clientSecret 로직 삭제)

* feat: refreshAccessToken 함수에서 refreshToken도 함께 반환해주도록 로직 수정

* [Server] Clova Studio api  구현 (#126)

* feat:  checklist-ai 리소스 생성

* feat: create-checklist-items.dto.ts 요청 dto 생성

* feat: 문자열 및 각종 옵션 상수화

* feat: user-role const 파일 삭제 => 함수화

* feat: /checklist-ai POST 요청 api 생성

대,중,소 카테고리를 body로 받아오면 clova studio에서 체크리스트 항목 10개를 반환한다.

* feat: AccessTokenGuard 구현 및 적용 (#129)

* feat: access token guard 구현

* feat: access token guard 전역 적용

* style: access-token.guard.ts 주석 추가

* feat: userId decorator 구현

* feat: folders controller에 userId 데코레이터 추가

* feat: 폴더 서비스에 user 데코레이터 추가

* feat: 개인 체크리스트 컨트롤러에 유저 데코레이터 추가

* feat: private-checklists service에 user 데코레이터 추가

* fix: 테스트 코드 수정

* Server/feature/#128 (#139)

* feat: json 구조로 카테고리 데이터 정의

* feat: categories 의존성 주입

* feat: endpoint만들고, 실제 존재하는 id인지 검증하는 dto 생성

* fix: 오타수정 forder->folder

* feat: param에 dto 적용하지 못해 삭제

* feat: 카테고리 json 데이터 변수명 변경, 대문자로

* feat: 대,중,소 카테고리 반환 api 구현

* test: categories.service.spec.ts 테스트 코드 작성

* test: categories.service.spec.ts 테스트 코드 수정 커버리지 100

* feat: 공유 체크리스트 API 및 소켓 작업 구현 (#140)

* feat: shared checklist item entity 구현

* style: SharedChecklistItemModel 오타 수정

* feat: shared checklist id uuid로 변경

* feat: create shared checklist 디티오 수정

* feat: shared-checklists 생성 구현

* refactor: shared-checklists 저장하는 함수 분리

* feat: shared-checklists 1개, 전부 가져오는 기능 추가

* feat: 유저 초대 기능 추가

* feat: 공유 체크리스트 삭제 기능 구현

* style: shared-checklists service 주석 추가

* feature: 공유 체크리스트 소켓에 데이터 누적 기능 추가

* feat: shared-checklists 소켓 통신 시 데이터 데베에 저장 구현

* feat: 소켓 연결시 방의 데이터 히스토리를 전송하는 기능 추가

* style: 소켓 주석 추가

* 🔐feat: 개발용 임시로 액세스,리프레시 토큰들 만료기한 일주일로 설정 (#142)

* feat: 공유 체크리스트 아이템 권한 문제 및 uuid 문제 해결 (#146)

* fix: 공유 체크리스트 아이템 권한 없으면 접근 못하게 수정

* fix: 체크리스트 추가시 사용자가 있는지 검사

* fix: 공유 체크리스트 생성시 uuid가 아니면 서버가 죽는 현상 수정

* style: 불필요한 코드 제거

* feat: 소켓 다중 서버 지원  (#159)

* chore: docker-compose.yaml에 레디스 추가

* chore: redis 모듈 추가

* feature: nest 다중 포트 서버 구성

* feature: redis.module.ts 구현 및 적용

* feature: 소켓에 레디스 삽입

* feature: 소켓 pub/sub 구현

* feat: 소켓 레디스에 총 접속자수 증감 기능 추가

* feat: 소켓 히스토리 기능 레디스 적용

* refactor: shared-checklists.gateway.ts 리팩토링

* feat: 소켓 editing 이벤트 추가 (#164)

* fix: 레디스 연결 수정 (#168)

* [Server] object 형태가 들어오면 redis에 저장 안되는 문제 수정 (#171)

* 🐛fix: 웹소켓 data를 json으로 변경 후 emit

* 🐛fix: history []제거

* 🐛fix: data[0] -> data

* feat: 웹소켓 히스토리 버그 수정 및 콘솔 로그 추가 (#175)

* fix: docker-compose 레디스 설정 오류 해결

* feat: 소켓 console.log 추가

* fix: 소켓 히스토리 저장시 형식 오류 수정

* [Server] 로거 기능 확대 (#176)

* feat: no auth 버그 -> password 주석 해제

* feat: 로그에 한국 시간대 추가

* feat: 로그파일이 dist 내부에 존재해 한 단계 위로 옮겨줌.

* feat: 응답로그는 interceptor에서 처리하도록 로직 수정

* feat: 로그 인터셉터 app.module.ts 프로바이더에 추가

* 🐛fix: redis module password 부분 주석처리 (#180)

* [Server] 피드화면 api 구현 (#196)

* chore: import 문 최적화

* feat: 피드 resource 생성

* feat: checklist entity에 카테고리 컬럼 추가

* feat: feedmodel 정의

private checklist model에서 likeCount와 downloadCount 컬럼 추가

* chore: 사용하지 않는 dto 파일 삭제

* chore: 카테고리 데이터 추가

* chore: 안쓰는 테스트 파일 삭제

* feat: 피드 화면 api 구현

* feat: feeds.service.spec.ts 테스트 코드 작성

* feat: api 에러 핸들링 로직 추가

* test: feeds.service.spec.ts 예외 케이스에 대한 테스트 코드 추가

* feat: 에러메시지 수정

* feat: 관리 페이지와 api 구현 (#197)

* feat: admin resource 구현

* feat: 관리자 페이지 추가

* feat: cors 설정 추가

* feat: 임시로 관리자 페이지 권한 제거

* feat: admin sse api 구현

* refactor: redis sub 서비스 구현

* feat: 어드민 페이지 api 기능 추가

* feat: redis pub 서비스 추가

* refactor: admin controller에 redis service로 교체

* feat: log interceptor에 redis pub 추가

* refactor: channels const로 분리

* style: 불필요한 주석 제거

* feat: ws 로그 redis pub 추가

* feat: admin page 박스 누르면 펼치기/접기 기능 추가

* feat: admin 페이지 색깔 변경

* feat: 관리자 페이지 로그인 기능 구현

* [Server] 클라이언트와 api 연동 작업 (login, socket history)  (#209)

* feat: socket 빈 히스토리면 [] 보내기

* feat: 로그인시 유저 닉네임도 같이 보내주기

* [Server] ai와 관련한 db 구조 개선 (#220)

* refactor: 경로 이름 수정 entity->entities

* feat: category 엔티티 생성

* feat: reason 모델 생성 및 각 테이블 relation 설정

* feat: 각 테이블 relation 수정 및 의존성 주입

* feat: relation 방식 변경으로 인한folders.service.ts 메서드 수정, 의존성 주입

* feat: admin 페이지 항목 자동 추가 , 시스템 상태 그래프 추가 (#223)

* feat: serverStatus 확인 기능 추가

* feat: serverStatus 확인 기능 추가

* feat: 모든 구독을 받아오는 기능 추가

* chore: 불필요한 상수 제거

* feat: admin page 서버 상태 확인 기능 추가

* [Server] 카테고리별 아이템 개수 확인 및 개수로 item 생성 로직 (#228)

* feat: 카테고리별 아이템 개수 반환해주는 api 생성

* feat: 카테고리별 아이템 개수 itemCount로 pub도 하고 응답도 반환하는 서비스 함수 구현

* feat: generate-item api에 대한 controller 함수 구현

* feat: generate-item api에 대한 service 함수 구현

* [Server] 카테고리 api db 방식으로 업데이트, 인공지능 응답 api db 캐싱 구조로 개선 (#240)

* feat: category service 함수 수정

* feat: category service 함수 요청 형태 변경

* feat: ai 체크리스트 항목 응답 api db 캐싱 구조로 변경

* refactor: jwt toekn 만료 시간 환경변수로 변경 (#250)

* feat: 어드민 페이지 ai관련 뷰 추가 및 관련 api 추가 (#260)

* feat: admin페이지 cpu 사용량 통합해서 보여주기

* refactor: serverStatus 네트워크 관련 제거

* fix: 체크리스트 ai 생성 관리자만 가능하도록 수정

* feat: admin 페이지 ai 연동

---------

Co-authored-by: Minseong Park <52368015+pminsung12@users.noreply.github.com>
yangdongsuk added a commit that referenced this pull request Dec 14, 2023
* [Server] 개발환경 세팅 (#4)

* build: open-list-server init

* chore: @nestjs/config class-validator class-transformer 설치

* chore: 루트 레벨에서 설치한 패키지 삭제

* chore: NestJs 개발 환경 세팅

* chore: @nestjs/config class-validator class-transformer 설치

* Server/feature/#13 (#25)

* chore: postgresql, nestjs docker 세팅

* chore: @nestjs/typeorm, typeorm, pg 설치

* chore: Typeorm 세팅 및 TestModel 테이블 생성

* 테스트용 유저 API 구현 (#30)

* chore: common resource 추가

* chore: users resource 추가

* feature: base entity 구현

* feature: usersEntity 구현

* feature: 모듈에 usersModel 추가

* style: entity,dto의 users -> user로 변경

* feature: CreateUserDto 구현

* feature: userEntity 이메일 필드 추가

* feature: createUserDto 이메일 필드 추가

* feature: user patch->put으로 변경

* feature: updateUserDto 구현

* feature : create user 구현

* feature: 모든 유저의 정보를 가져오는 API 구현

* feature: 특정 유저의 정보를 가져오는 API 구현

* feature: user 정보 수정 API 구현

* feature: user 삭제 API 구현

* feature: ValidationPipe 적용

* refactor: usersService 리팩토링

* [Server] 유닛 테스트 환경 세팅 (#32)

* chore: test 경로 설정

* feature: TestCommonModule 구현

* feature: users.service.spec.ts 의존성 주입

* feature: users.controller.spec.ts 의존성 주입

* [Server] Users resource 이름 변경 (#34)

* style: usersController 네이밍에 컨벤션 맞게 변경

* style: usersService 컨벤션에 따른 네이밍 변경

* style: UsersModel -> UserModel 컨벤션에 따른 네이밍 변경

* feature: usersService 테스트 코드 작성 (#39)

* [Server] Folder entity 생성 및 crud 구현 (#42)

* feat: folders crud 구현

* chore: TestModel 삭제 및 관련된 종속성 제거

* feat: folders.controller.spec.ts 삭제, folders.service.spec.ts 구현

* feature: docker파일 수정 (#57)

* feat: private checklist entity 생성 및 crud 구현 (#61)

* chore: 개발용 postgres 포트변경 5432->5433, .env도 port 5433으로 변경필요

* feat: checklists res 생성

* feat: checklist, private-checklist, shared-checklisst 엔티티 생성, user모델과 folder모델과의 의존관계 주입

* feat: author->editor로 수정, 공유체크리스트와 사용자의 relation을 many to many로 업데이트

* feat: 개인, 공유 체크리스트에 대해 생성과 업데이트 시 dto 생성

* fix: class 이름 오타 수정

* refactor: rest api 방식에 따라 함수명 변경

* feat: CheckListModel에서 진행률 컬럼 삭제

* feat: folder와 user간의 manyToOne relation적용

* feat: private-checklist crud 작성

* feat: folder service 커버리지 100 달성

* test: private-checklist test code 작성, 커버리지 92퍼센트

* feat: checklist 폴더 분리 & dto 빈문자열 검증 추가 (#66)

* refactor: checklists를 private, shared폴더로 분리.

* refactor: private-checklists를 folders 하위로 이동

* fix: 빈문자열 검증 추가

* [Server] Winston으로 로그 관리 (#70)

* chore: nest-winston winston winston-daily-rotate-file 설치

* feat: winston logger 설정 파일 구현

* feat: winston logger middleware 구현

* feat: 요청 logger middleware 구현

* feat: 로그에 요청 처리 시간 추가되도록 개선

* chore: PR 템플릿 수정

* chore: PR 템플릿 수정

* feat: jwt access, refresh token 기반 인가 구현

* chore: auth resource 추가

* chore: jwt 모듈 추가

* feature: signToken 구현

* feature: 토큰 검증, 토큰 재발급 기능 구현

* feature: 로그인 기능 구현

* feature: 로그인 관련 서비스 구현

* feature: login 컨트롤러 구현

* style: loginDto -> loginUserDto로 변경

* feature: access 토큰 재발급 컨트롤러 구현

* refactor: access토큰 재발급 형식 변경

* feature: 유저 register 기능 구현

* feature: auth.service.ts 테스트 코드 작성

* fix: 이메일 중복시 에러 메시지 수정

---------



* [Server] shared-checklist 소켓 구현 (#78)

* [Server] apple oauth api 구현 (#86)

* chore: @nestjs/axios 설치

* chore: axios 설치

* chore: axios 설치

* feat: dto수정, userId 컬럼추가, providerId 수정, fullName 컬럼 추가

* feat: entity에 따라 dto 항목 수정

* feat: apple oauth 로그인 서비스 함수 추가

client secret 만들고, axios post로 user 정보 가지고옴.

* feat: apple oauth 로그인 엔드포인트 추가

* feat: apple 유저에대해 create, update 함수 구현

* feat: publicKey 발급받는 로직추가

* [Server] access 토큰 재발급시 유저 정보 없는 버그 수정 (#83)

* [Server] privateChecklist의 내용 저장 api 구현 (#88)

* [Server] apple oauth 로그인 로직 수정 (#118)

* feat: env 사용방식 변경 + idToken 검증로직 추가

* chore: jwk를 pem으로 변환하기 위한 jose 라이브러리 설치

* chore: jose 라이브러리 제거 @panva/jose 설치

* feat: request body로 들어오는 auth-user.dto.ts 수정

* feat: 애플 유저 등록 로직 수정

* docs: jsdoc return type 수정

* feat: apple login 로직 수정(appleToken, clientSecret 로직 삭제)

* feat: refreshAccessToken 함수에서 refreshToken도 함께 반환해주도록 로직 수정

* [Server] Clova Studio api  구현 (#126)

* feat:  checklist-ai 리소스 생성

* feat: create-checklist-items.dto.ts 요청 dto 생성

* feat: 문자열 및 각종 옵션 상수화

* feat: user-role const 파일 삭제 => 함수화

* feat: /checklist-ai POST 요청 api 생성

대,중,소 카테고리를 body로 받아오면 clova studio에서 체크리스트 항목 10개를 반환한다.

* feat: AccessTokenGuard 구현 및 적용 (#129)

* feat: access token guard 구현

* feat: access token guard 전역 적용

* style: access-token.guard.ts 주석 추가

* feat: userId decorator 구현

* feat: folders controller에 userId 데코레이터 추가

* feat: 폴더 서비스에 user 데코레이터 추가

* feat: 개인 체크리스트 컨트롤러에 유저 데코레이터 추가

* feat: private-checklists service에 user 데코레이터 추가

* fix: 테스트 코드 수정

* Server/feature/#128 (#139)

* feat: json 구조로 카테고리 데이터 정의

* feat: categories 의존성 주입

* feat: endpoint만들고, 실제 존재하는 id인지 검증하는 dto 생성

* fix: 오타수정 forder->folder

* feat: param에 dto 적용하지 못해 삭제

* feat: 카테고리 json 데이터 변수명 변경, 대문자로

* feat: 대,중,소 카테고리 반환 api 구현

* test: categories.service.spec.ts 테스트 코드 작성

* test: categories.service.spec.ts 테스트 코드 수정 커버리지 100

* feat: 공유 체크리스트 API 및 소켓 작업 구현 (#140)

* feat: shared checklist item entity 구현

* style: SharedChecklistItemModel 오타 수정

* feat: shared checklist id uuid로 변경

* feat: create shared checklist 디티오 수정

* feat: shared-checklists 생성 구현

* refactor: shared-checklists 저장하는 함수 분리

* feat: shared-checklists 1개, 전부 가져오는 기능 추가

* feat: 유저 초대 기능 추가

* feat: 공유 체크리스트 삭제 기능 구현

* style: shared-checklists service 주석 추가

* feature: 공유 체크리스트 소켓에 데이터 누적 기능 추가

* feat: shared-checklists 소켓 통신 시 데이터 데베에 저장 구현

* feat: 소켓 연결시 방의 데이터 히스토리를 전송하는 기능 추가

* style: 소켓 주석 추가

* 🔐feat: 개발용 임시로 액세스,리프레시 토큰들 만료기한 일주일로 설정 (#142)

---------

Co-authored-by: yangdongsuk <51476641+yangdongsuk@users.noreply.github.com>
yangdongsuk added a commit that referenced this pull request Dec 14, 2023
* [Server] 개발환경 세팅 (#4)

* build: open-list-server init

* chore: @nestjs/config class-validator class-transformer 설치

* chore: 루트 레벨에서 설치한 패키지 삭제

* chore: NestJs 개발 환경 세팅

* chore: @nestjs/config class-validator class-transformer 설치

* Server/feature/#13 (#25)

* chore: postgresql, nestjs docker 세팅

* chore: @nestjs/typeorm, typeorm, pg 설치

* chore: Typeorm 세팅 및 TestModel 테이블 생성

* 테스트용 유저 API 구현 (#30)

* chore: common resource 추가

* chore: users resource 추가

* feature: base entity 구현

* feature: usersEntity 구현

* feature: 모듈에 usersModel 추가

* style: entity,dto의 users -> user로 변경

* feature: CreateUserDto 구현

* feature: userEntity 이메일 필드 추가

* feature: createUserDto 이메일 필드 추가

* feature: user patch->put으로 변경

* feature: updateUserDto 구현

* feature : create user 구현

* feature: 모든 유저의 정보를 가져오는 API 구현

* feature: 특정 유저의 정보를 가져오는 API 구현

* feature: user 정보 수정 API 구현

* feature: user 삭제 API 구현

* feature: ValidationPipe 적용

* refactor: usersService 리팩토링

* [Server] 유닛 테스트 환경 세팅 (#32)

* chore: test 경로 설정

* feature: TestCommonModule 구현

* feature: users.service.spec.ts 의존성 주입

* feature: users.controller.spec.ts 의존성 주입

* [Server] Users resource 이름 변경 (#34)

* style: usersController 네이밍에 컨벤션 맞게 변경

* style: usersService 컨벤션에 따른 네이밍 변경

* style: UsersModel -> UserModel 컨벤션에 따른 네이밍 변경

* feature: usersService 테스트 코드 작성 (#39)

* [Server] Folder entity 생성 및 crud 구현 (#42)

* feat: folders crud 구현

* chore: TestModel 삭제 및 관련된 종속성 제거

* feat: folders.controller.spec.ts 삭제, folders.service.spec.ts 구현

* feature: docker파일 수정 (#57)

* feat: private checklist entity 생성 및 crud 구현 (#61)

* chore: 개발용 postgres 포트변경 5432->5433, .env도 port 5433으로 변경필요

* feat: checklists res 생성

* feat: checklist, private-checklist, shared-checklisst 엔티티 생성, user모델과 folder모델과의 의존관계 주입

* feat: author->editor로 수정, 공유체크리스트와 사용자의 relation을 many to many로 업데이트

* feat: 개인, 공유 체크리스트에 대해 생성과 업데이트 시 dto 생성

* fix: class 이름 오타 수정

* refactor: rest api 방식에 따라 함수명 변경

* feat: CheckListModel에서 진행률 컬럼 삭제

* feat: folder와 user간의 manyToOne relation적용

* feat: private-checklist crud 작성

* feat: folder service 커버리지 100 달성

* test: private-checklist test code 작성, 커버리지 92퍼센트

* feat: checklist 폴더 분리 & dto 빈문자열 검증 추가 (#66)

* refactor: checklists를 private, shared폴더로 분리.

* refactor: private-checklists를 folders 하위로 이동

* fix: 빈문자열 검증 추가

* [Server] Winston으로 로그 관리 (#70)

* chore: nest-winston winston winston-daily-rotate-file 설치

* feat: winston logger 설정 파일 구현

* feat: winston logger middleware 구현

* feat: 요청 logger middleware 구현

* feat: 로그에 요청 처리 시간 추가되도록 개선

* chore: PR 템플릿 수정

* chore: PR 템플릿 수정

* feat: jwt access, refresh token 기반 인가 구현

* chore: auth resource 추가

* chore: jwt 모듈 추가

* feature: signToken 구현

* feature: 토큰 검증, 토큰 재발급 기능 구현

* feature: 로그인 기능 구현

* feature: 로그인 관련 서비스 구현

* feature: login 컨트롤러 구현

* style: loginDto -> loginUserDto로 변경

* feature: access 토큰 재발급 컨트롤러 구현

* refactor: access토큰 재발급 형식 변경

* feature: 유저 register 기능 구현

* feature: auth.service.ts 테스트 코드 작성

* fix: 이메일 중복시 에러 메시지 수정

---------

Co-authored-by: Minseong Park <52368015+pminsung12@users.noreply.github.com>

* [Server] shared-checklist 소켓 구현 (#78)

* [Server] apple oauth api 구현 (#86)

* chore: @nestjs/axios 설치

* chore: axios 설치

* chore: axios 설치

* feat: dto수정, userId 컬럼추가, providerId 수정, fullName 컬럼 추가

* feat: entity에 따라 dto 항목 수정

* feat: apple oauth 로그인 서비스 함수 추가

client secret 만들고, axios post로 user 정보 가지고옴.

* feat: apple oauth 로그인 엔드포인트 추가

* feat: apple 유저에대해 create, update 함수 구현

* feat: publicKey 발급받는 로직추가

* [Server] access 토큰 재발급시 유저 정보 없는 버그 수정 (#83)

* [Server] privateChecklist의 내용 저장 api 구현 (#88)

* [Server] apple oauth 로그인 로직 수정 (#118)

* feat: env 사용방식 변경 + idToken 검증로직 추가

* chore: jwk를 pem으로 변환하기 위한 jose 라이브러리 설치

* chore: jose 라이브러리 제거 @panva/jose 설치

* feat: request body로 들어오는 auth-user.dto.ts 수정

* feat: 애플 유저 등록 로직 수정

* docs: jsdoc return type 수정

* feat: apple login 로직 수정(appleToken, clientSecret 로직 삭제)

* feat: refreshAccessToken 함수에서 refreshToken도 함께 반환해주도록 로직 수정

* [Server] Clova Studio api  구현 (#126)

* feat:  checklist-ai 리소스 생성

* feat: create-checklist-items.dto.ts 요청 dto 생성

* feat: 문자열 및 각종 옵션 상수화

* feat: user-role const 파일 삭제 => 함수화

* feat: /checklist-ai POST 요청 api 생성

대,중,소 카테고리를 body로 받아오면 clova studio에서 체크리스트 항목 10개를 반환한다.

* feat: AccessTokenGuard 구현 및 적용 (#129)

* feat: access token guard 구현

* feat: access token guard 전역 적용

* style: access-token.guard.ts 주석 추가

* feat: userId decorator 구현

* feat: folders controller에 userId 데코레이터 추가

* feat: 폴더 서비스에 user 데코레이터 추가

* feat: 개인 체크리스트 컨트롤러에 유저 데코레이터 추가

* feat: private-checklists service에 user 데코레이터 추가

* fix: 테스트 코드 수정

* Server/feature/#128 (#139)

* feat: json 구조로 카테고리 데이터 정의

* feat: categories 의존성 주입

* feat: endpoint만들고, 실제 존재하는 id인지 검증하는 dto 생성

* fix: 오타수정 forder->folder

* feat: param에 dto 적용하지 못해 삭제

* feat: 카테고리 json 데이터 변수명 변경, 대문자로

* feat: 대,중,소 카테고리 반환 api 구현

* test: categories.service.spec.ts 테스트 코드 작성

* test: categories.service.spec.ts 테스트 코드 수정 커버리지 100

* feat: 공유 체크리스트 API 및 소켓 작업 구현 (#140)

* feat: shared checklist item entity 구현

* style: SharedChecklistItemModel 오타 수정

* feat: shared checklist id uuid로 변경

* feat: create shared checklist 디티오 수정

* feat: shared-checklists 생성 구현

* refactor: shared-checklists 저장하는 함수 분리

* feat: shared-checklists 1개, 전부 가져오는 기능 추가

* feat: 유저 초대 기능 추가

* feat: 공유 체크리스트 삭제 기능 구현

* style: shared-checklists service 주석 추가

* feature: 공유 체크리스트 소켓에 데이터 누적 기능 추가

* feat: shared-checklists 소켓 통신 시 데이터 데베에 저장 구현

* feat: 소켓 연결시 방의 데이터 히스토리를 전송하는 기능 추가

* style: 소켓 주석 추가

* 🔐feat: 개발용 임시로 액세스,리프레시 토큰들 만료기한 일주일로 설정 (#142)

* feat: 공유 체크리스트 아이템 권한 문제 및 uuid 문제 해결 (#146)

* fix: 공유 체크리스트 아이템 권한 없으면 접근 못하게 수정

* fix: 체크리스트 추가시 사용자가 있는지 검사

* fix: 공유 체크리스트 생성시 uuid가 아니면 서버가 죽는 현상 수정

* style: 불필요한 코드 제거

* feat: 소켓 다중 서버 지원  (#159)

* chore: docker-compose.yaml에 레디스 추가

* chore: redis 모듈 추가

* feature: nest 다중 포트 서버 구성

* feature: redis.module.ts 구현 및 적용

* feature: 소켓에 레디스 삽입

* feature: 소켓 pub/sub 구현

* feat: 소켓 레디스에 총 접속자수 증감 기능 추가

* feat: 소켓 히스토리 기능 레디스 적용

* refactor: shared-checklists.gateway.ts 리팩토링

* feat: 소켓 editing 이벤트 추가 (#164)

* fix: 레디스 연결 수정 (#168)

* [Server] object 형태가 들어오면 redis에 저장 안되는 문제 수정 (#171)

* 🐛fix: 웹소켓 data를 json으로 변경 후 emit

* 🐛fix: history []제거

* 🐛fix: data[0] -> data

* feat: 웹소켓 히스토리 버그 수정 및 콘솔 로그 추가 (#175)

* fix: docker-compose 레디스 설정 오류 해결

* feat: 소켓 console.log 추가

* fix: 소켓 히스토리 저장시 형식 오류 수정

* [Server] 로거 기능 확대 (#176)

* feat: no auth 버그 -> password 주석 해제

* feat: 로그에 한국 시간대 추가

* feat: 로그파일이 dist 내부에 존재해 한 단계 위로 옮겨줌.

* feat: 응답로그는 interceptor에서 처리하도록 로직 수정

* feat: 로그 인터셉터 app.module.ts 프로바이더에 추가

* 🐛fix: redis module password 부분 주석처리 (#180)

* [Server] 피드화면 api 구현 (#196)

* chore: import 문 최적화

* feat: 피드 resource 생성

* feat: checklist entity에 카테고리 컬럼 추가

* feat: feedmodel 정의

private checklist model에서 likeCount와 downloadCount 컬럼 추가

* chore: 사용하지 않는 dto 파일 삭제

* chore: 카테고리 데이터 추가

* chore: 안쓰는 테스트 파일 삭제

* feat: 피드 화면 api 구현

* feat: feeds.service.spec.ts 테스트 코드 작성

* feat: api 에러 핸들링 로직 추가

* test: feeds.service.spec.ts 예외 케이스에 대한 테스트 코드 추가

* feat: 에러메시지 수정

* feat: 관리 페이지와 api 구현 (#197)

* feat: admin resource 구현

* feat: 관리자 페이지 추가

* feat: cors 설정 추가

* feat: 임시로 관리자 페이지 권한 제거

* feat: admin sse api 구현

* refactor: redis sub 서비스 구현

* feat: 어드민 페이지 api 기능 추가

* feat: redis pub 서비스 추가

* refactor: admin controller에 redis service로 교체

* feat: log interceptor에 redis pub 추가

* refactor: channels const로 분리

* style: 불필요한 주석 제거

* feat: ws 로그 redis pub 추가

* feat: admin page 박스 누르면 펼치기/접기 기능 추가

* feat: admin 페이지 색깔 변경

* feat: 관리자 페이지 로그인 기능 구현

* [Server] 클라이언트와 api 연동 작업 (login, socket history)  (#209)

* feat: socket 빈 히스토리면 [] 보내기

* feat: 로그인시 유저 닉네임도 같이 보내주기

* [Server] ai와 관련한 db 구조 개선 (#220)

* refactor: 경로 이름 수정 entity->entities

* feat: category 엔티티 생성

* feat: reason 모델 생성 및 각 테이블 relation 설정

* feat: 각 테이블 relation 수정 및 의존성 주입

* feat: relation 방식 변경으로 인한folders.service.ts 메서드 수정, 의존성 주입

* feat: admin 페이지 항목 자동 추가 , 시스템 상태 그래프 추가 (#223)

* feat: serverStatus 확인 기능 추가

* feat: serverStatus 확인 기능 추가

* feat: 모든 구독을 받아오는 기능 추가

* chore: 불필요한 상수 제거

* feat: admin page 서버 상태 확인 기능 추가

* [Server] 카테고리별 아이템 개수 확인 및 개수로 item 생성 로직 (#228)

* feat: 카테고리별 아이템 개수 반환해주는 api 생성

* feat: 카테고리별 아이템 개수 itemCount로 pub도 하고 응답도 반환하는 서비스 함수 구현

* feat: generate-item api에 대한 controller 함수 구현

* feat: generate-item api에 대한 service 함수 구현

* [Server] 카테고리 api db 방식으로 업데이트, 인공지능 응답 api db 캐싱 구조로 개선 (#240)

* feat: category service 함수 수정

* feat: category service 함수 요청 형태 변경

* feat: ai 체크리스트 항목 응답 api db 캐싱 구조로 변경

* refactor: jwt toekn 만료 시간 환경변수로 변경 (#250)

* feat: 어드민 페이지 ai관련 뷰 추가 및 관련 api 추가 (#260)

* feat: admin페이지 cpu 사용량 통합해서 보여주기

* refactor: serverStatus 네트워크 관련 제거

* fix: 체크리스트 ai 생성 관리자만 가능하도록 수정

* feat: admin 페이지 ai 연동

---------

Co-authored-by: YangDongsuk <51476641+YangDongsuk@users.noreply.github.com>
yangdongsuk added a commit that referenced this pull request Dec 14, 2023
* [Server] 개발환경 세팅 (#4)

* build: open-list-server init

* chore: @nestjs/config class-validator class-transformer 설치

* chore: 루트 레벨에서 설치한 패키지 삭제

* chore: NestJs 개발 환경 세팅

* chore: @nestjs/config class-validator class-transformer 설치

* Server/feature/#13 (#25)

* chore: postgresql, nestjs docker 세팅

* chore: @nestjs/typeorm, typeorm, pg 설치

* chore: Typeorm 세팅 및 TestModel 테이블 생성

* 테스트용 유저 API 구현 (#30)

* chore: common resource 추가

* chore: users resource 추가

* feature: base entity 구현

* feature: usersEntity 구현

* feature: 모듈에 usersModel 추가

* style: entity,dto의 users -> user로 변경

* feature: CreateUserDto 구현

* feature: userEntity 이메일 필드 추가

* feature: createUserDto 이메일 필드 추가

* feature: user patch->put으로 변경

* feature: updateUserDto 구현

* feature : create user 구현

* feature: 모든 유저의 정보를 가져오는 API 구현

* feature: 특정 유저의 정보를 가져오는 API 구현

* feature: user 정보 수정 API 구현

* feature: user 삭제 API 구현

* feature: ValidationPipe 적용

* refactor: usersService 리팩토링

* [Server] 유닛 테스트 환경 세팅 (#32)

* chore: test 경로 설정

* feature: TestCommonModule 구현

* feature: users.service.spec.ts 의존성 주입

* feature: users.controller.spec.ts 의존성 주입

* [Server] Users resource 이름 변경 (#34)

* style: usersController 네이밍에 컨벤션 맞게 변경

* style: usersService 컨벤션에 따른 네이밍 변경

* style: UsersModel -> UserModel 컨벤션에 따른 네이밍 변경

* feature: usersService 테스트 코드 작성 (#39)

* [Server] Folder entity 생성 및 crud 구현 (#42)

* feat: folders crud 구현

* chore: TestModel 삭제 및 관련된 종속성 제거

* feat: folders.controller.spec.ts 삭제, folders.service.spec.ts 구현

* feature: docker파일 수정 (#57)

* feat: private checklist entity 생성 및 crud 구현 (#61)

* chore: 개발용 postgres 포트변경 5432->5433, .env도 port 5433으로 변경필요

* feat: checklists res 생성

* feat: checklist, private-checklist, shared-checklisst 엔티티 생성, user모델과 folder모델과의 의존관계 주입

* feat: author->editor로 수정, 공유체크리스트와 사용자의 relation을 many to many로 업데이트

* feat: 개인, 공유 체크리스트에 대해 생성과 업데이트 시 dto 생성

* fix: class 이름 오타 수정

* refactor: rest api 방식에 따라 함수명 변경

* feat: CheckListModel에서 진행률 컬럼 삭제

* feat: folder와 user간의 manyToOne relation적용

* feat: private-checklist crud 작성

* feat: folder service 커버리지 100 달성

* test: private-checklist test code 작성, 커버리지 92퍼센트

* feat: checklist 폴더 분리 & dto 빈문자열 검증 추가 (#66)

* refactor: checklists를 private, shared폴더로 분리.

* refactor: private-checklists를 folders 하위로 이동

* fix: 빈문자열 검증 추가

* [Server] Winston으로 로그 관리 (#70)

* chore: nest-winston winston winston-daily-rotate-file 설치

* feat: winston logger 설정 파일 구현

* feat: winston logger middleware 구현

* feat: 요청 logger middleware 구현

* feat: 로그에 요청 처리 시간 추가되도록 개선

* chore: PR 템플릿 수정

* chore: PR 템플릿 수정

* feat: jwt access, refresh token 기반 인가 구현

* chore: auth resource 추가

* chore: jwt 모듈 추가

* feature: signToken 구현

* feature: 토큰 검증, 토큰 재발급 기능 구현

* feature: 로그인 기능 구현

* feature: 로그인 관련 서비스 구현

* feature: login 컨트롤러 구현

* style: loginDto -> loginUserDto로 변경

* feature: access 토큰 재발급 컨트롤러 구현

* refactor: access토큰 재발급 형식 변경

* feature: 유저 register 기능 구현

* feature: auth.service.ts 테스트 코드 작성

* fix: 이메일 중복시 에러 메시지 수정

---------

Co-authored-by: Minseong Park <52368015+pminsung12@users.noreply.github.com>

* [Server] shared-checklist 소켓 구현 (#78)

* [Server] apple oauth api 구현 (#86)

* chore: @nestjs/axios 설치

* chore: axios 설치

* chore: axios 설치

* feat: dto수정, userId 컬럼추가, providerId 수정, fullName 컬럼 추가

* feat: entity에 따라 dto 항목 수정

* feat: apple oauth 로그인 서비스 함수 추가

client secret 만들고, axios post로 user 정보 가지고옴.

* feat: apple oauth 로그인 엔드포인트 추가

* feat: apple 유저에대해 create, update 함수 구현

* feat: publicKey 발급받는 로직추가

* [Server] access 토큰 재발급시 유저 정보 없는 버그 수정 (#83)

* [Server] privateChecklist의 내용 저장 api 구현 (#88)

* [Server] apple oauth 로그인 로직 수정 (#118)

* feat: env 사용방식 변경 + idToken 검증로직 추가

* chore: jwk를 pem으로 변환하기 위한 jose 라이브러리 설치

* chore: jose 라이브러리 제거 @panva/jose 설치

* feat: request body로 들어오는 auth-user.dto.ts 수정

* feat: 애플 유저 등록 로직 수정

* docs: jsdoc return type 수정

* feat: apple login 로직 수정(appleToken, clientSecret 로직 삭제)

* feat: refreshAccessToken 함수에서 refreshToken도 함께 반환해주도록 로직 수정

* [Server] Clova Studio api  구현 (#126)

* feat:  checklist-ai 리소스 생성

* feat: create-checklist-items.dto.ts 요청 dto 생성

* feat: 문자열 및 각종 옵션 상수화

* feat: user-role const 파일 삭제 => 함수화

* feat: /checklist-ai POST 요청 api 생성

대,중,소 카테고리를 body로 받아오면 clova studio에서 체크리스트 항목 10개를 반환한다.

* feat: AccessTokenGuard 구현 및 적용 (#129)

* feat: access token guard 구현

* feat: access token guard 전역 적용

* style: access-token.guard.ts 주석 추가

* feat: userId decorator 구현

* feat: folders controller에 userId 데코레이터 추가

* feat: 폴더 서비스에 user 데코레이터 추가

* feat: 개인 체크리스트 컨트롤러에 유저 데코레이터 추가

* feat: private-checklists service에 user 데코레이터 추가

* fix: 테스트 코드 수정

* Server/feature/#128 (#139)

* feat: json 구조로 카테고리 데이터 정의

* feat: categories 의존성 주입

* feat: endpoint만들고, 실제 존재하는 id인지 검증하는 dto 생성

* fix: 오타수정 forder->folder

* feat: param에 dto 적용하지 못해 삭제

* feat: 카테고리 json 데이터 변수명 변경, 대문자로

* feat: 대,중,소 카테고리 반환 api 구현

* test: categories.service.spec.ts 테스트 코드 작성

* test: categories.service.spec.ts 테스트 코드 수정 커버리지 100

* feat: 공유 체크리스트 API 및 소켓 작업 구현 (#140)

* feat: shared checklist item entity 구현

* style: SharedChecklistItemModel 오타 수정

* feat: shared checklist id uuid로 변경

* feat: create shared checklist 디티오 수정

* feat: shared-checklists 생성 구현

* refactor: shared-checklists 저장하는 함수 분리

* feat: shared-checklists 1개, 전부 가져오는 기능 추가

* feat: 유저 초대 기능 추가

* feat: 공유 체크리스트 삭제 기능 구현

* style: shared-checklists service 주석 추가

* feature: 공유 체크리스트 소켓에 데이터 누적 기능 추가

* feat: shared-checklists 소켓 통신 시 데이터 데베에 저장 구현

* feat: 소켓 연결시 방의 데이터 히스토리를 전송하는 기능 추가

* style: 소켓 주석 추가

* 🔐feat: 개발용 임시로 액세스,리프레시 토큰들 만료기한 일주일로 설정 (#142)

* feat: 공유 체크리스트 아이템 권한 문제 및 uuid 문제 해결 (#146)

* fix: 공유 체크리스트 아이템 권한 없으면 접근 못하게 수정

* fix: 체크리스트 추가시 사용자가 있는지 검사

* fix: 공유 체크리스트 생성시 uuid가 아니면 서버가 죽는 현상 수정

* style: 불필요한 코드 제거

* feat: 소켓 다중 서버 지원  (#159)

* chore: docker-compose.yaml에 레디스 추가

* chore: redis 모듈 추가

* feature: nest 다중 포트 서버 구성

* feature: redis.module.ts 구현 및 적용

* feature: 소켓에 레디스 삽입

* feature: 소켓 pub/sub 구현

* feat: 소켓 레디스에 총 접속자수 증감 기능 추가

* feat: 소켓 히스토리 기능 레디스 적용

* refactor: shared-checklists.gateway.ts 리팩토링

* feat: 소켓 editing 이벤트 추가 (#164)

* fix: 레디스 연결 수정 (#168)

* [Server] object 형태가 들어오면 redis에 저장 안되는 문제 수정 (#171)

* 🐛fix: 웹소켓 data를 json으로 변경 후 emit

* 🐛fix: history []제거

* 🐛fix: data[0] -> data

* feat: 웹소켓 히스토리 버그 수정 및 콘솔 로그 추가 (#175)

* fix: docker-compose 레디스 설정 오류 해결

* feat: 소켓 console.log 추가

* fix: 소켓 히스토리 저장시 형식 오류 수정

* [Server] 로거 기능 확대 (#176)

* feat: no auth 버그 -> password 주석 해제

* feat: 로그에 한국 시간대 추가

* feat: 로그파일이 dist 내부에 존재해 한 단계 위로 옮겨줌.

* feat: 응답로그는 interceptor에서 처리하도록 로직 수정

* feat: 로그 인터셉터 app.module.ts 프로바이더에 추가

* 🐛fix: redis module password 부분 주석처리 (#180)

* [Server] 피드화면 api 구현 (#196)

* chore: import 문 최적화

* feat: 피드 resource 생성

* feat: checklist entity에 카테고리 컬럼 추가

* feat: feedmodel 정의

private checklist model에서 likeCount와 downloadCount 컬럼 추가

* chore: 사용하지 않는 dto 파일 삭제

* chore: 카테고리 데이터 추가

* chore: 안쓰는 테스트 파일 삭제

* feat: 피드 화면 api 구현

* feat: feeds.service.spec.ts 테스트 코드 작성

* feat: api 에러 핸들링 로직 추가

* test: feeds.service.spec.ts 예외 케이스에 대한 테스트 코드 추가

* feat: 에러메시지 수정

* feat: 관리 페이지와 api 구현 (#197)

* feat: admin resource 구현

* feat: 관리자 페이지 추가

* feat: cors 설정 추가

* feat: 임시로 관리자 페이지 권한 제거

* feat: admin sse api 구현

* refactor: redis sub 서비스 구현

* feat: 어드민 페이지 api 기능 추가

* feat: redis pub 서비스 추가

* refactor: admin controller에 redis service로 교체

* feat: log interceptor에 redis pub 추가

* refactor: channels const로 분리

* style: 불필요한 주석 제거

* feat: ws 로그 redis pub 추가

* feat: admin page 박스 누르면 펼치기/접기 기능 추가

* feat: admin 페이지 색깔 변경

* feat: 관리자 페이지 로그인 기능 구현

* [Server] 클라이언트와 api 연동 작업 (login, socket history)  (#209)

* feat: socket 빈 히스토리면 [] 보내기

* feat: 로그인시 유저 닉네임도 같이 보내주기

* [Server] ai와 관련한 db 구조 개선 (#220)

* refactor: 경로 이름 수정 entity->entities

* feat: category 엔티티 생성

* feat: reason 모델 생성 및 각 테이블 relation 설정

* feat: 각 테이블 relation 수정 및 의존성 주입

* feat: relation 방식 변경으로 인한folders.service.ts 메서드 수정, 의존성 주입

* feat: admin 페이지 항목 자동 추가 , 시스템 상태 그래프 추가 (#223)

* feat: serverStatus 확인 기능 추가

* feat: serverStatus 확인 기능 추가

* feat: 모든 구독을 받아오는 기능 추가

* chore: 불필요한 상수 제거

* feat: admin page 서버 상태 확인 기능 추가

* [Server] 카테고리별 아이템 개수 확인 및 개수로 item 생성 로직 (#228)

* feat: 카테고리별 아이템 개수 반환해주는 api 생성

* feat: 카테고리별 아이템 개수 itemCount로 pub도 하고 응답도 반환하는 서비스 함수 구현

* feat: generate-item api에 대한 controller 함수 구현

* feat: generate-item api에 대한 service 함수 구현

* [Server] 카테고리 api db 방식으로 업데이트, 인공지능 응답 api db 캐싱 구조로 개선 (#240)

* feat: category service 함수 수정

* feat: category service 함수 요청 형태 변경

* feat: ai 체크리스트 항목 응답 api db 캐싱 구조로 변경

* refactor: jwt toekn 만료 시간 환경변수로 변경 (#250)

* feat: 어드민 페이지 ai관련 뷰 추가 및 관련 api 추가 (#260)

* feat: admin페이지 cpu 사용량 통합해서 보여주기

* refactor: serverStatus 네트워크 관련 제거

* fix: 체크리스트 ai 생성 관리자만 가능하도록 수정

* feat: admin 페이지 ai 연동

---------

Co-authored-by: Minseong Park <52368015+pminsung12@users.noreply.github.com>
yangdongsuk added a commit that referenced this pull request Dec 14, 2023
* [Server] 개발환경 세팅 (#4)

* build: open-list-server init

* chore: @nestjs/config class-validator class-transformer 설치

* chore: 루트 레벨에서 설치한 패키지 삭제

* chore: NestJs 개발 환경 세팅

* chore: @nestjs/config class-validator class-transformer 설치

* Server/feature/#13 (#25)

* chore: postgresql, nestjs docker 세팅

* chore: @nestjs/typeorm, typeorm, pg 설치

* chore: Typeorm 세팅 및 TestModel 테이블 생성

* 테스트용 유저 API 구현 (#30)

* chore: common resource 추가

* chore: users resource 추가

* feature: base entity 구현

* feature: usersEntity 구현

* feature: 모듈에 usersModel 추가

* style: entity,dto의 users -> user로 변경

* feature: CreateUserDto 구현

* feature: userEntity 이메일 필드 추가

* feature: createUserDto 이메일 필드 추가

* feature: user patch->put으로 변경

* feature: updateUserDto 구현

* feature : create user 구현

* feature: 모든 유저의 정보를 가져오는 API 구현

* feature: 특정 유저의 정보를 가져오는 API 구현

* feature: user 정보 수정 API 구현

* feature: user 삭제 API 구현

* feature: ValidationPipe 적용

* refactor: usersService 리팩토링

* [Server] 유닛 테스트 환경 세팅 (#32)

* chore: test 경로 설정

* feature: TestCommonModule 구현

* feature: users.service.spec.ts 의존성 주입

* feature: users.controller.spec.ts 의존성 주입

* [Server] Users resource 이름 변경 (#34)

* style: usersController 네이밍에 컨벤션 맞게 변경

* style: usersService 컨벤션에 따른 네이밍 변경

* style: UsersModel -> UserModel 컨벤션에 따른 네이밍 변경

* feature: usersService 테스트 코드 작성 (#39)

* [Server] Folder entity 생성 및 crud 구현 (#42)

* feat: folders crud 구현

* chore: TestModel 삭제 및 관련된 종속성 제거

* feat: folders.controller.spec.ts 삭제, folders.service.spec.ts 구현

* feature: docker파일 수정 (#57)

* feat: private checklist entity 생성 및 crud 구현 (#61)

* chore: 개발용 postgres 포트변경 5432->5433, .env도 port 5433으로 변경필요

* feat: checklists res 생성

* feat: checklist, private-checklist, shared-checklisst 엔티티 생성, user모델과 folder모델과의 의존관계 주입

* feat: author->editor로 수정, 공유체크리스트와 사용자의 relation을 many to many로 업데이트

* feat: 개인, 공유 체크리스트에 대해 생성과 업데이트 시 dto 생성

* fix: class 이름 오타 수정

* refactor: rest api 방식에 따라 함수명 변경

* feat: CheckListModel에서 진행률 컬럼 삭제

* feat: folder와 user간의 manyToOne relation적용

* feat: private-checklist crud 작성

* feat: folder service 커버리지 100 달성

* test: private-checklist test code 작성, 커버리지 92퍼센트

* feat: checklist 폴더 분리 & dto 빈문자열 검증 추가 (#66)

* refactor: checklists를 private, shared폴더로 분리.

* refactor: private-checklists를 folders 하위로 이동

* fix: 빈문자열 검증 추가

* [Server] Winston으로 로그 관리 (#70)

* chore: nest-winston winston winston-daily-rotate-file 설치

* feat: winston logger 설정 파일 구현

* feat: winston logger middleware 구현

* feat: 요청 logger middleware 구현

* feat: 로그에 요청 처리 시간 추가되도록 개선

* chore: PR 템플릿 수정

* chore: PR 템플릿 수정

* feat: jwt access, refresh token 기반 인가 구현

* chore: auth resource 추가

* chore: jwt 모듈 추가

* feature: signToken 구현

* feature: 토큰 검증, 토큰 재발급 기능 구현

* feature: 로그인 기능 구현

* feature: 로그인 관련 서비스 구현

* feature: login 컨트롤러 구현

* style: loginDto -> loginUserDto로 변경

* feature: access 토큰 재발급 컨트롤러 구현

* refactor: access토큰 재발급 형식 변경

* feature: 유저 register 기능 구현

* feature: auth.service.ts 테스트 코드 작성

* fix: 이메일 중복시 에러 메시지 수정

---------



* [Server] shared-checklist 소켓 구현 (#78)

* [Server] apple oauth api 구현 (#86)

* chore: @nestjs/axios 설치

* chore: axios 설치

* chore: axios 설치

* feat: dto수정, userId 컬럼추가, providerId 수정, fullName 컬럼 추가

* feat: entity에 따라 dto 항목 수정

* feat: apple oauth 로그인 서비스 함수 추가

client secret 만들고, axios post로 user 정보 가지고옴.

* feat: apple oauth 로그인 엔드포인트 추가

* feat: apple 유저에대해 create, update 함수 구현

* feat: publicKey 발급받는 로직추가

* [Server] access 토큰 재발급시 유저 정보 없는 버그 수정 (#83)

* [Server] privateChecklist의 내용 저장 api 구현 (#88)

* [Server] apple oauth 로그인 로직 수정 (#118)

* feat: env 사용방식 변경 + idToken 검증로직 추가

* chore: jwk를 pem으로 변환하기 위한 jose 라이브러리 설치

* chore: jose 라이브러리 제거 @panva/jose 설치

* feat: request body로 들어오는 auth-user.dto.ts 수정

* feat: 애플 유저 등록 로직 수정

* docs: jsdoc return type 수정

* feat: apple login 로직 수정(appleToken, clientSecret 로직 삭제)

* feat: refreshAccessToken 함수에서 refreshToken도 함께 반환해주도록 로직 수정

* [Server] Clova Studio api  구현 (#126)

* feat:  checklist-ai 리소스 생성

* feat: create-checklist-items.dto.ts 요청 dto 생성

* feat: 문자열 및 각종 옵션 상수화

* feat: user-role const 파일 삭제 => 함수화

* feat: /checklist-ai POST 요청 api 생성

대,중,소 카테고리를 body로 받아오면 clova studio에서 체크리스트 항목 10개를 반환한다.

* feat: AccessTokenGuard 구현 및 적용 (#129)

* feat: access token guard 구현

* feat: access token guard 전역 적용

* style: access-token.guard.ts 주석 추가

* feat: userId decorator 구현

* feat: folders controller에 userId 데코레이터 추가

* feat: 폴더 서비스에 user 데코레이터 추가

* feat: 개인 체크리스트 컨트롤러에 유저 데코레이터 추가

* feat: private-checklists service에 user 데코레이터 추가

* fix: 테스트 코드 수정

* Server/feature/#128 (#139)

* feat: json 구조로 카테고리 데이터 정의

* feat: categories 의존성 주입

* feat: endpoint만들고, 실제 존재하는 id인지 검증하는 dto 생성

* fix: 오타수정 forder->folder

* feat: param에 dto 적용하지 못해 삭제

* feat: 카테고리 json 데이터 변수명 변경, 대문자로

* feat: 대,중,소 카테고리 반환 api 구현

* test: categories.service.spec.ts 테스트 코드 작성

* test: categories.service.spec.ts 테스트 코드 수정 커버리지 100

* feat: 공유 체크리스트 API 및 소켓 작업 구현 (#140)

* feat: shared checklist item entity 구현

* style: SharedChecklistItemModel 오타 수정

* feat: shared checklist id uuid로 변경

* feat: create shared checklist 디티오 수정

* feat: shared-checklists 생성 구현

* refactor: shared-checklists 저장하는 함수 분리

* feat: shared-checklists 1개, 전부 가져오는 기능 추가

* feat: 유저 초대 기능 추가

* feat: 공유 체크리스트 삭제 기능 구현

* style: shared-checklists service 주석 추가

* feature: 공유 체크리스트 소켓에 데이터 누적 기능 추가

* feat: shared-checklists 소켓 통신 시 데이터 데베에 저장 구현

* feat: 소켓 연결시 방의 데이터 히스토리를 전송하는 기능 추가

* style: 소켓 주석 추가

* 🔐feat: 개발용 임시로 액세스,리프레시 토큰들 만료기한 일주일로 설정 (#142)

* feat: 공유 체크리스트 아이템 권한 문제 및 uuid 문제 해결 (#146)

* fix: 공유 체크리스트 아이템 권한 없으면 접근 못하게 수정

* fix: 체크리스트 추가시 사용자가 있는지 검사

* fix: 공유 체크리스트 생성시 uuid가 아니면 서버가 죽는 현상 수정

* style: 불필요한 코드 제거

* feat: 소켓 다중 서버 지원  (#159)

* chore: docker-compose.yaml에 레디스 추가

* chore: redis 모듈 추가

* feature: nest 다중 포트 서버 구성

* feature: redis.module.ts 구현 및 적용

* feature: 소켓에 레디스 삽입

* feature: 소켓 pub/sub 구현

* feat: 소켓 레디스에 총 접속자수 증감 기능 추가

* feat: 소켓 히스토리 기능 레디스 적용

* refactor: shared-checklists.gateway.ts 리팩토링

* feat: 소켓 editing 이벤트 추가 (#164)

* fix: 레디스 연결 수정 (#168)

* [Server] object 형태가 들어오면 redis에 저장 안되는 문제 수정 (#171)

* 🐛fix: 웹소켓 data를 json으로 변경 후 emit

* 🐛fix: history []제거

* 🐛fix: data[0] -> data

* feat: 웹소켓 히스토리 버그 수정 및 콘솔 로그 추가 (#175)

* fix: docker-compose 레디스 설정 오류 해결

* feat: 소켓 console.log 추가

* fix: 소켓 히스토리 저장시 형식 오류 수정

* [Server] 로거 기능 확대 (#176)

* feat: no auth 버그 -> password 주석 해제

* feat: 로그에 한국 시간대 추가

* feat: 로그파일이 dist 내부에 존재해 한 단계 위로 옮겨줌.

* feat: 응답로그는 interceptor에서 처리하도록 로직 수정

* feat: 로그 인터셉터 app.module.ts 프로바이더에 추가

* 🐛fix: redis module password 부분 주석처리 (#180)

* [Server] 피드화면 api 구현 (#196)

* chore: import 문 최적화

* feat: 피드 resource 생성

* feat: checklist entity에 카테고리 컬럼 추가

* feat: feedmodel 정의

private checklist model에서 likeCount와 downloadCount 컬럼 추가

* chore: 사용하지 않는 dto 파일 삭제

* chore: 카테고리 데이터 추가

* chore: 안쓰는 테스트 파일 삭제

* feat: 피드 화면 api 구현

* feat: feeds.service.spec.ts 테스트 코드 작성

* feat: api 에러 핸들링 로직 추가

* test: feeds.service.spec.ts 예외 케이스에 대한 테스트 코드 추가

* feat: 에러메시지 수정

* feat: 관리 페이지와 api 구현 (#197)

* feat: admin resource 구현

* feat: 관리자 페이지 추가

* feat: cors 설정 추가

* feat: 임시로 관리자 페이지 권한 제거

* feat: admin sse api 구현

* refactor: redis sub 서비스 구현

* feat: 어드민 페이지 api 기능 추가

* feat: redis pub 서비스 추가

* refactor: admin controller에 redis service로 교체

* feat: log interceptor에 redis pub 추가

* refactor: channels const로 분리

* style: 불필요한 주석 제거

* feat: ws 로그 redis pub 추가

* feat: admin page 박스 누르면 펼치기/접기 기능 추가

* feat: admin 페이지 색깔 변경

* feat: 관리자 페이지 로그인 기능 구현

* [Server] 클라이언트와 api 연동 작업 (login, socket history)  (#209)

* feat: socket 빈 히스토리면 [] 보내기

* feat: 로그인시 유저 닉네임도 같이 보내주기

* [Server] ai와 관련한 db 구조 개선 (#220)

* refactor: 경로 이름 수정 entity->entities

* feat: category 엔티티 생성

* feat: reason 모델 생성 및 각 테이블 relation 설정

* feat: 각 테이블 relation 수정 및 의존성 주입

* feat: relation 방식 변경으로 인한folders.service.ts 메서드 수정, 의존성 주입

* feat: admin 페이지 항목 자동 추가 , 시스템 상태 그래프 추가 (#223)

* feat: serverStatus 확인 기능 추가

* feat: serverStatus 확인 기능 추가

* feat: 모든 구독을 받아오는 기능 추가

* chore: 불필요한 상수 제거

* feat: admin page 서버 상태 확인 기능 추가

---------

Co-authored-by: yangdongsuk <51476641+yangdongsuk@users.noreply.github.com>
pminsung12 added a commit that referenced this pull request Dec 15, 2023
* chore: main.yml admin page 환경 변수 적용

* chore: main.yml 다중 서버 배포

* chore: main.yml 다중 서버 포트 변경

* fix: main.yml 환경 변수 누락 추가

* 프로젝트 소개 업데이트 (#234)

* docs: 프로젝트 소개 리드미 작성(#237)

* chore: main.yml jwt 환경 변수 추가

* fix: main.yml jwt 환경 변수 오타 수정

* 프로젝트 README 수정 (#254)

* docs: 프로젝트 README 수정

* <img src> width 값 제거

* docs: Update README (#259)

* docs: Update README (#261)

* �Main에 iOS 저장소 합치기 (#263)

* [Client] iOS 프로젝트 설계 (#6)

* feat: 프로젝트 생성

* feat: 의존성 프로토콜 및 뷰 추상화 프로토콜 추가

- 의존성 프로토콜 : `Dependency`, `Component`
- 뷰 객체 추상화 프로토콜 : `ViewControllable`
- 뷰 생성 로직 추상화 프로토콜 : `Factoryable`

* feat: 바텀 탭 및 탭에 속한 뷰 컨트롤러 구현

* feat: 뷰모델, 유즈케이스, 레포지토리 연결 예제 구현

* feat: 네트워크, 소켓 라이브러리 및 workspace 생성

* chore: `OpenList` 프로젝트 폴더 이동

* chore: `pbxproj` 파일 추가

* feat: 라우터에 뷰 의존성 주입

* style: 변수 오타 수정(`AddTap `-> `AddTab`)

* feat: factory 부모 클래스 생성

* feat: 바텀 탭에 속하는 뷰 컨트롤러 순서 변경

* feat: 애플리케이션에 공통적으로 사용되는 유틸 파일 추가

- `ViewBindable`
- `ViewModelable`

* iOS 프로젝트 추가 설정 (#26)

* feat: 스위프트 린트 설정 추가

* chore: 스위프트 템플릿 추가

* feat: `*.pbxproj` 병합 조건 추가

* 사용자는 생성한 체크리스트를 리스트형태로 볼수 있다. (#27)

* feat: 체크리스트 Table 형태로 보여주는 기능 구현

* feat: 달성률 UI 구성

* style: Lint 적용

* feat: 길게 누를 때 action sheet menu 보여주기

* feat: 성공률 퍼센트 추가

* feat: CheckListTableItem 추가

* style: Code 컨벤션 준수

* 네트워크 모듈 구성 (#37)

* feat: 체크리스트 Table 형태로 보여주는 기능 구현

* style: Lint 적용

* feat: 성공률 퍼센트 추가

* feat: CheckListTableItem 추가

* feat: Network 모듈 구성 및 테스트

* fix: pbxfile 오류 해결

* feat: 디자인 시스템 구성요소 추가 (#40)

* 사용자는 체크리스트의 항목을 볼 수 있다. (#44)

* style: 디자인 리소스 추가 (`circle.png`)

- 체크리스트 서클 아이콘 추가

* feat: 상세 체크리스트 뷰 버터플라이 파일 생성

* feat: 테이블 뷰 익스텐션 추가

* feat: 상세 체크리스트 UI 구현

* feat: 상세 체크리스트 제목 UI 구현

* review: 코드 리뷰 반영

* 체크리스트 제목 생성 (#43)

* feat: Title 작성 View, ViewModel, UseCase, Repository로직

* feat: KeyBoard처리, OpenListTextField 구현

* style: DesignSystem 적용

* style: SwiftLint 적용

* review: 코드리뷰 반영- 애니메이션 코드

---------

Co-authored-by: 김영균 <48887389+klmyoungyun@users.noreply.github.com>

* fix: `addTabViewController`가 메모리에서 해제 안 되는 버그 수정 (#46)

* 코어데이터 생성 및 체크리스트 제목 저장 기능 구현 (#73)

* feat: CoreDataStorage 추가

* fix: AppRouter Duplicate 문제 해결

* feat: 로컬 스토리지 구현

* feat: Core CRUD / Data Binding

* feat: TabBar 이미지 추가

* feat: detailView 화면 전환 구현

* feat: 체크리스트 디테일 화면 이동 구현

* fix: DetailCheckListViewController 메모리 릭 수정

* fix: placeholder가 계속 생기던 버그 수정

* feat: 체크리스트 삭제 구현

* feat: 체크리스트 생성하면 코어데이터에 저장하도록 변경

---------

Co-authored-by: wi-seong-cheol <tjd9248@naver.com>

* CRDT 프레임워크 구현 (#74)

* feat: CRDT 라이브러리화

* style: SwiftLint 적용

* refactor: 강제 언랩핑 제거

* feat: CRDT 라이브러리화

* style: SwiftLint 적용

* refactor: 강제 언랩핑 제거

---------

Co-authored-by: klmyoungyun <kyoungyun98@naver.com>

* [Client] 수정 - 제목 생성화면 tap 제스처 관련 오류 수정 (#85)

* fix: tap.cancelsTouchInView 속성 변경

* fix: keyboard Constraint 오류 해결

---------

Co-authored-by: wi-seong-cheol <tjd9248@naver.com>

* 스킴 방식의 딥링크 구현 (#80)

* feat: 앱 스킴 방식 딥링크 구현

* fix: project 파일 충돌 해결

---------

Co-authored-by: wi-seong-cheol <tjd9248@naver.com>

* 디테일 화면 CRDT 연결 (#112)

* feat: 개인/함께 체크리스트 분리

* feat: WebSocket 구현

* feat: CRDT, WebSocket Repository 구현

* feat:  임시 device id 부여

* feat: Repository 프로토콜 구현

* feat: UseCase 구현

* feat: Scene 관련 기능 구현

* feat: 서버의 Socket Request 반영

* feat: 밸런싱 작업 보류

* refactor: UseCase 통합

* feat: WebSocket 싱글톤 변경

* feat: 데이터 전달 모델 정의

* feat: 단일 CRDT 구현

* feat: DTO 정의를 위한 public 변경

* feat: CRDT DTO 정의

* feat: 엔티티 정의

* feat: CheckListItem 속성 변경

* feat: 단방향 링크드 리스트 정의

양방향으로 하면 Decode 할 때 순환참조로 인한 오류 발생

* fix: item 중복 제거

* fix: Delete 리팩토링 오류 수정

* feat: 동시편집 로직 구현

* feat: 개인/함께 체크리스트 분리

* feat: WebSocket 구현

* feat: CRDT, WebSocket Repository 구현

* feat:  임시 device id 부여

* feat: Repository 프로토콜 구현

* feat: UseCase 구현

* feat: Scene 관련 기능 구현

* feat: 서버의 Socket Request 반영

* feat: 밸런싱 작업 보류

* refactor: UseCase 통합

* feat: WebSocket 싱글톤 변경

* feat: 데이터 전달 모델 정의

* feat: 단일 CRDT 구현

* feat: DTO 정의를 위한 public 변경

* feat: CRDT DTO 정의

* feat: 엔티티 정의

* feat: CheckListItem 속성 변경

* feat: 단방향 링크드 리스트 정의

양방향으로 하면 Decode 할 때 순환참조로 인한 오류 발생

* fix: item 중복 제거

* fix: Delete 리팩토링 오류 수정

* feat: 동시편집 로직 구현

* 체크리스트 동시편집자 초대 구현 (#115)

* feat: Navigation 메뉴 추가

* feat: 딥링크 타이틀에서 체크리스트 ID로 변경

* fix: 강제 언랩핑 제거

* 커스텀 네비게이션 바 구현 (#116)

* feat: 커스텀 네비게이션 바 구현

* feat: 뒤로가기 버튼 레이아웃 수정

* 체크리스트 동시편집자 초대 구현 (#115)

* feat: Navigation 메뉴 추가

* feat: 딥링크 타이틀에서 체크리스트 ID로 변경

* fix: 강제 언랩핑 제거

* feat: 커스텀 네비게이션 바 구현

* feat: 뒤로가기 버튼 레이아웃 수정

---------

Co-authored-by: wi-seong-cheol <53855302+wi-seong-cheol@users.noreply.github.com>
Co-authored-by: wi-seong-cheol <tjd9248@naver.com>

* fix: 빌드 오류 수정 (#121)

* 애플로그인 구현 (#117)

* chore: framework 적용

* feat: Login 기본 설정

* feat: App 진입시 로그인 뷰 구현

* feat: 로그인 이후 화면 전환 구현

* feat: 로그인 이후 usecase -> respository 구현

* refactor: return 값 Bool -> DTO

* feat: KeyChain 설정

* refactor: ViewModel 이후 로직 수정

* fix: API parameter 수정 및 구현

* style: Constant 변수화

* style: 파일명 변경 및 코드 팀 스타일 적용

* style: Optional 제거

* fix: Server 요청에 따른 param 수정

* fix: review 반영

* fix: 빌드 오류 수정 (#130)

* CoreData CRUD 기능 구현 (#125)

* refactor: Entity Rename

* feat: 개인 체크리스트에서 체크리스트 항목 저장

* feat: CoreData CRUD 기능 구현

* feat: 달성률 표시

* 애플로그인 구현 (#117)

* chore: framework 적용

* feat: Login 기본 설정

* feat: App 진입시 로그인 뷰 구현

* feat: 로그인 이후 화면 전환 구현

* feat: 로그인 이후 usecase -> respository 구현

* refactor: return 값 Bool -> DTO

* feat: KeyChain 설정

* refactor: ViewModel 이후 로직 수정

* fix: API parameter 수정 및 구현

* style: Constant 변수화

* style: 파일명 변경 및 코드 팀 스타일 적용

* style: Optional 제거

* fix: Server 요청에 따른 param 수정

* fix: review 반영

* fix: 빌드 오류 수정 (#130)

* refactor: Entity Rename

* feat: 개인 체크리스트에서 체크리스트 항목 저장

* feat: CoreData CRUD 기능 구현

* feat: 달성률 표시

* fix: 진행률 오류 해결

* fix: pbx 오류 수정

* refactor: 불필요한 코드 제거

---------

Co-authored-by: 김성훈 <42074365+SeongHunTed@users.noreply.github.com>
Co-authored-by: 김영균 <48887389+klmyoungyun@users.noreply.github.com>

* [FD1 - 1] 사용자가 만든 폴더들을 격자 형태로 보여준다. (#124)

* feat: 콜렉션 뷰 익스텐션 추가

* feat: 메인 페이징 뷰 컨트롤러 구현 및 상단 탭 바 구현

* feat: 그림자 레이어에 추가하는 메서드 구현 및 그림자 색 리소스 추가

* feat: 체크리스트 폴더 뷰 컨트롤러 구현

* feat: 체크리스트 테이블 뷰 컨트롤러 레이아웃 수정

* feat: 체크리스트 공유 뷰 컨트롤러 구현

* fix: build 오류 수정

* feat: 네비게이션 아이템 크기 조절

* chore: 컨플릭 처리

* fix: 체크리스트 진행률 오류 수정 (#132)

* 빈 체크리스트 화면 구현 (#138)

* 네트워크 모듈 수정 (#136)

* refactor:  코드 리팩토링

* fix: 오타 수정

* [AI1 - 1] 사용자는 대 > 중 > 소 카테고리를 선택하며 AI 추천을 받을 수 있다 (#144)

* chore: 폴더링, 파일명 변경 AddTab -> AddCheckListTitle

* feat: checklist 제목입력 후 category 화면 전환

* feat: category cell 생성

* feat: category headerView title 구현

* style: HeaderView에서 그라데이션뷰 분리

* feat: Gradient Progress Circle 구현

* feat: Gradient Progress Stick 구현

* feat: Progress View 구현

* feat: navigationBar, skipButton 구현

* feat: Routing 로직 구현

* style: Cell Color 방식 변경

* feat: navigation back routing 로직, layout 재설정

* style: ConfirmButton intrinsicContentSize 설정 및 변경

* style: Layout 임시수정 및 ViewWillAppear 부분 삭제

* style: Layout literal 관리 및 convention

* feat: MediumCategoryVC Routing

* chore: conflict 해결

* style: cell 선택 output 패턴으로 변경

* chore: Category명 Server와 동기화

* feat: SubCategory View 구현

* feat: MinorCategory 구현

* feat: Category Data Stream 구현

* feat: UseCase, Repository 구현 및 Main, Sub, Minor Category 연결

* feat: Checklist Title Stream

* feat: Skipbutton 제목 stream

* style: Dependency 수정

* feat: AccessTokenInterceptor 추가

* chore: Network 변경사항 반영

* style: 사용하지 않는 Router 변수제거

* style: Review 반영

* [AI1 - 2] 사용자는 AI 추천을 더 받을 수 있고, 내 체크리스트로 선택해서 넣는다 (#148)

* feat: 체크리스트 항목 추가

* feat: Section별 체크리스트 추가 삭제 구현

* feat: AddTitle -> AddCheckListItem Routing 적용

* feat: AI 체크리스트 화면 적용

* feat: LoadingIndicator 구현

* feat: AccessTokenInterceptor 추가

* chore: Optional Unwrapping 처리

---------

Co-authored-by: wi-seong-cheol <tjd9248@naver.com>

* 사용자는 동시편집 화면에서 체크리스트를 수정 및 추가 할 수 있다.  (#149)

* feat: 개인에서 함께로 변경 흐름 구현

* feat: crdt 링크드 리스트 방식 수정

* feat: 네비게이션 추가

* feat: 개인에서 함께로 변경 흐름 구현

* feat: crdt 링크드 리스트 방식 수정

* feat: 네비게이션 추가

* style: 오타 수정

* 체크리스트 개인 > 함께 전환 (#147)

* feat: 딥링크로 초대되었을 때 방 초대 기능 구현

* feat: 함께 체크리스트 테이블을 개인 체크리스트 테이블로 변경

* feat: 함께 체크리스트 테이블 구현

* feat: 체크리스트 삭제 구현

* feat: 체크리스트 함께 작성하기 구현

* faet: 함께 체크리스트 API 연결

* feat: Socket 연결

* feat: 데이터 합치기

---------

Co-authored-by: klmyoungyun <kyoungyun98@naver.com>

* feat: 개인 체크리스트 길게 눌러 삭제 구현

* feat: 체크리스트 상세 화면에서 체크리스트 삭제하는 로직 구현

* feat: 체크리스트 생성 후 리로드 구현

---------

Co-authored-by: wi-seong-cheol <tjd9248@naver.com>
Co-authored-by: wi-seong-cheol <53855302+wi-seong-cheol@users.noreply.github.com>

* feat: 생성된 체크리스트 로컬에 저장하는 기능 구현 (#151)

* AI 추천 체크리스트 화면 구현 (#156)

* feat: Header 구현 및 기존 로직 수정

* feat: Header Button 로직 구현 & viewDidLoad 로직 분리

* chore: Dark Mode 작성

* style: Review 반영

* CRDT 한글화 (#160)

* feat: CRDT 한글화 및 밸런싱 문제 해결

* feat: CRDT 한글화

* refactor: 함수명 수정

* 설정 화면 구현 (#181)

* feat: Setting UI 구성

* feat: 로그아웃, 회원탈퇴 기능 구현

* feat: 스와이프로 뒤로가기 기능 구현 (#187)

* 프로필 화면 구현 (#188)

* refactor: 불필요한 코드 제거

* feat: 화면 흐름 구성

* feat: profile UI 구성

* feat: profile 닉네임 변경 구현

* feat: profile 닉네임 변경 구현

* fix: 강제 언랩핑 제거

* Textfield에서 TextView로 변경 (#189)

* feat: Textfield를 TextView로 변경

* fix: 셀 삭제 오류 수정

* fix: 불필요한 코드 제거

* [FE1 - 1] 사용자는 카테고리별 추천 체크리스트를 받고 위아래, 좌우 스크롤하며 볼 수 있다. (#192)

* feat: 추천 탭 UI 구현

* feat: 추천 탭 유즈케이스, 레포지토리 구현

* fix: 컬렉션 뷰 안에 데이터소스가 있을 때 발생하는 오류 수정

* feat: 추천탭 기본 이미지 추가

* 추천 피드 API 연결 (#204)

* feat: 피드 API 연결

* feat: 빈 체크리스트 화면 타입 열거형 변경


ㅇ

ㅇ

* 동시편집시에 사용자의 위치와 체크리스트 체크 여부를 확인할 수 있다 (#193)

* feat: Item 제거

* feat: 연산 하나로 합치는 기능 구현

* feat: socket 이름 추가

* feat: 사용자 이름 Cell 표기

* feat: ListItem 추상화 및 사용자 표시

* feat: AppendDocument 사용자 자리 이동

* feat: 사용자위치 표시

* style: delete 수정

* feat: CheckList Toggle Socket Send

* feat: CheckList 체크박스 동시편집

* feat: 체크박스 상태 저장

* feat: Any Type Decoding

* feat: CRDT decode

* chore: Conflict 해결

* fix: Loading Indicator 호출 시점 변경

* chore: Code 수정 및 레이아웃 변경

* chore: 토큰 삭제 처리

* chore: review 반영

* fix: CheckList 삭제 안되는 오류 fix

* fix: CheckList 타 사용자 편집시 체크박스 상태 변경 반영

* fix: 삭제안되는 오류 해결

* chore: UserDefaults 통일

* chore: conflict 해결

---------

Co-authored-by: wi-seong-cheol <tjd9248@naver.com>
Co-authored-by: klmyoungyun <kyoungyun98@naver.com>

* fix: 빈 체크리스트가 삭제되도록 수정 (#206)

* 체크리스트 삭제 API 연동 (#207)

* feat: 체크리스트 삭제

* feat: 함께 디테일 화면에서 삭제

* feat: History 반영, 제목 반영 (#212)

* feat: History 반영, 제목 반영

* chore: Review 반영

* feat: 피드 뷰 네비게이션 바 추가 (#211)

* 동시편집 긴급 오류 수정 (#214)

* fix: indexPath 업데이트 오류 수정

* fix: 체크 오류 수정

* fix: 이모지 오류 수정

* 함께 체크리스트 Subject 호출 부 변경 및 인원수 표시 (#235)

* fix: viewWillAppear -> ViewDidLoad 변경

* style: 사람 인원 표시 변경

* Custom Network 쿼리 파라미터 기능 추가, API 수정 반영 (#243)

* feat: Network Layer Query 기능추가, 카테고리API 수정

* chore: Query 기존 코드 수정 및 주석제거

* style: 매개변수 이름 수정

* CRDT 메모리 누수 해결 (#244)

* fix: 트리<->노드 순환참조로 인한 메모리 누수 해결

* fix: 인터셉터 구조체로 변경

* fix: CRDT 셀 삭제 오류 수정 (#248)

* �Token 갱신 로직 구현 (#253)

* feat: Access Token 갱신

* feat: Refresh Token 만료 확인

* fix: 불필요한 import 제거

* feat: 함께 셀 그림자 디자인 수정 (#256)

* 다크모드 지원 (#257)

* feat: 다크모드 지원

* fix: 서로 다른 session으로 인한 API 콜 오류 해결

session을 여러 군데에서 넣어주면서 다른 session을 넣어줘서 생기는 문제를 해결

* refactor: Delete .DS_Store (#262)

---------

Co-authored-by: 김영균 <48887389+klmyoungyun@users.noreply.github.com>
Co-authored-by: 김성훈 <42074365+SeongHunTed@users.noreply.github.com>
Co-authored-by: klmyoungyun <kyoungyun98@naver.com>

* Main에 Server 저장소 합치기 (#265)

* [Server] 개발환경 세팅 (#4)

* build: open-list-server init

* chore: @nestjs/config class-validator class-transformer 설치

* chore: 루트 레벨에서 설치한 패키지 삭제

* chore: NestJs 개발 환경 세팅

* chore: @nestjs/config class-validator class-transformer 설치

* Server/feature/#13 (#25)

* chore: postgresql, nestjs docker 세팅

* chore: @nestjs/typeorm, typeorm, pg 설치

* chore: Typeorm 세팅 및 TestModel 테이블 생성

* 테스트용 유저 API 구현 (#30)

* chore: common resource 추가

* chore: users resource 추가

* feature: base entity 구현

* feature: usersEntity 구현

* feature: 모듈에 usersModel 추가

* style: entity,dto의 users -> user로 변경

* feature: CreateUserDto 구현

* feature: userEntity 이메일 필드 추가

* feature: createUserDto 이메일 필드 추가

* feature: user patch->put으로 변경

* feature: updateUserDto 구현

* feature : create user 구현

* feature: 모든 유저의 정보를 가져오는 API 구현

* feature: 특정 유저의 정보를 가져오는 API 구현

* feature: user 정보 수정 API 구현

* feature: user 삭제 API 구현

* feature: ValidationPipe 적용

* refactor: usersService 리팩토링

* [Server] 유닛 테스트 환경 세팅 (#32)

* chore: test 경로 설정

* feature: TestCommonModule 구현

* feature: users.service.spec.ts 의존성 주입

* feature: users.controller.spec.ts 의존성 주입

* [Server] Users resource 이름 변경 (#34)

* style: usersController 네이밍에 컨벤션 맞게 변경

* style: usersService 컨벤션에 따른 네이밍 변경

* style: UsersModel -> UserModel 컨벤션에 따른 네이밍 변경

* feature: usersService 테스트 코드 작성 (#39)

* [Server] Folder entity 생성 및 crud 구현 (#42)

* feat: folders crud 구현

* chore: TestModel 삭제 및 관련된 종속성 제거

* feat: folders.controller.spec.ts 삭제, folders.service.spec.ts 구현

* feature: docker파일 수정 (#57)

* feat: private checklist entity 생성 및 crud 구현 (#61)

* chore: 개발용 postgres 포트변경 5432->5433, .env도 port 5433으로 변경필요

* feat: checklists res 생성

* feat: checklist, private-checklist, shared-checklisst 엔티티 생성, user모델과 folder모델과의 의존관계 주입

* feat: author->editor로 수정, 공유체크리스트와 사용자의 relation을 many to many로 업데이트

* feat: 개인, 공유 체크리스트에 대해 생성과 업데이트 시 dto 생성

* fix: class 이름 오타 수정

* refactor: rest api 방식에 따라 함수명 변경

* feat: CheckListModel에서 진행률 컬럼 삭제

* feat: folder와 user간의 manyToOne relation적용

* feat: private-checklist crud 작성

* feat: folder service 커버리지 100 달성

* test: private-checklist test code 작성, 커버리지 92퍼센트

* feat: checklist 폴더 분리 & dto 빈문자열 검증 추가 (#66)

* refactor: checklists를 private, shared폴더로 분리.

* refactor: private-checklists를 folders 하위로 이동

* fix: 빈문자열 검증 추가

* [Server] Winston으로 로그 관리 (#70)

* chore: nest-winston winston winston-daily-rotate-file 설치

* feat: winston logger 설정 파일 구현

* feat: winston logger middleware 구현

* feat: 요청 logger middleware 구현

* feat: 로그에 요청 처리 시간 추가되도록 개선

* chore: PR 템플릿 수정

* chore: PR 템플릿 수정

* feat: jwt access, refresh token 기반 인가 구현

* chore: auth resource 추가

* chore: jwt 모듈 추가

* feature: signToken 구현

* feature: 토큰 검증, 토큰 재발급 기능 구현

* feature: 로그인 기능 구현

* feature: 로그인 관련 서비스 구현

* feature: login 컨트롤러 구현

* style: loginDto -> loginUserDto로 변경

* feature: access 토큰 재발급 컨트롤러 구현

* refactor: access토큰 재발급 형식 변경

* feature: 유저 register 기능 구현

* feature: auth.service.ts 테스트 코드 작성

* fix: 이메일 중복시 에러 메시지 수정

---------

Co-authored-by: Minseong Park <52368015+pminsung12@users.noreply.github.com>

* [Server] shared-checklist 소켓 구현 (#78)

* [Server] apple oauth api 구현 (#86)

* chore: @nestjs/axios 설치

* chore: axios 설치

* chore: axios 설치

* feat: dto수정, userId 컬럼추가, providerId 수정, fullName 컬럼 추가

* feat: entity에 따라 dto 항목 수정

* feat: apple oauth 로그인 서비스 함수 추가

client secret 만들고, axios post로 user 정보 가지고옴.

* feat: apple oauth 로그인 엔드포인트 추가

* feat: apple 유저에대해 create, update 함수 구현

* feat: publicKey 발급받는 로직추가

* [Server] access 토큰 재발급시 유저 정보 없는 버그 수정 (#83)

* [Server] privateChecklist의 내용 저장 api 구현 (#88)

* [Server] apple oauth 로그인 로직 수정 (#118)

* feat: env 사용방식 변경 + idToken 검증로직 추가

* chore: jwk를 pem으로 변환하기 위한 jose 라이브러리 설치

* chore: jose 라이브러리 제거 @panva/jose 설치

* feat: request body로 들어오는 auth-user.dto.ts 수정

* feat: 애플 유저 등록 로직 수정

* docs: jsdoc return type 수정

* feat: apple login 로직 수정(appleToken, clientSecret 로직 삭제)

* feat: refreshAccessToken 함수에서 refreshToken도 함께 반환해주도록 로직 수정

* [Server] Clova Studio api  구현 (#126)

* feat:  checklist-ai 리소스 생성

* feat: create-checklist-items.dto.ts 요청 dto 생성

* feat: 문자열 및 각종 옵션 상수화

* feat: user-role const 파일 삭제 => 함수화

* feat: /checklist-ai POST 요청 api 생성

대,중,소 카테고리를 body로 받아오면 clova studio에서 체크리스트 항목 10개를 반환한다.

* feat: AccessTokenGuard 구현 및 적용 (#129)

* feat: access token guard 구현

* feat: access token guard 전역 적용

* style: access-token.guard.ts 주석 추가

* feat: userId decorator 구현

* feat: folders controller에 userId 데코레이터 추가

* feat: 폴더 서비스에 user 데코레이터 추가

* feat: 개인 체크리스트 컨트롤러에 유저 데코레이터 추가

* feat: private-checklists service에 user 데코레이터 추가

* fix: 테스트 코드 수정

* Server/feature/#128 (#139)

* feat: json 구조로 카테고리 데이터 정의

* feat: categories 의존성 주입

* feat: endpoint만들고, 실제 존재하는 id인지 검증하는 dto 생성

* fix: 오타수정 forder->folder

* feat: param에 dto 적용하지 못해 삭제

* feat: 카테고리 json 데이터 변수명 변경, 대문자로

* feat: 대,중,소 카테고리 반환 api 구현

* test: categories.service.spec.ts 테스트 코드 작성

* test: categories.service.spec.ts 테스트 코드 수정 커버리지 100

* feat: 공유 체크리스트 API 및 소켓 작업 구현 (#140)

* feat: shared checklist item entity 구현

* style: SharedChecklistItemModel 오타 수정

* feat: shared checklist id uuid로 변경

* feat: create shared checklist 디티오 수정

* feat: shared-checklists 생성 구현

* refactor: shared-checklists 저장하는 함수 분리

* feat: shared-checklists 1개, 전부 가져오는 기능 추가

* feat: 유저 초대 기능 추가

* feat: 공유 체크리스트 삭제 기능 구현

* style: shared-checklists service 주석 추가

* feature: 공유 체크리스트 소켓에 데이터 누적 기능 추가

* feat: shared-checklists 소켓 통신 시 데이터 데베에 저장 구현

* feat: 소켓 연결시 방의 데이터 히스토리를 전송하는 기능 추가

* style: 소켓 주석 추가

* 🔐feat: 개발용 임시로 액세스,리프레시 토큰들 만료기한 일주일로 설정 (#142)

* feat: 공유 체크리스트 아이템 권한 문제 및 uuid 문제 해결 (#146)

* fix: 공유 체크리스트 아이템 권한 없으면 접근 못하게 수정

* fix: 체크리스트 추가시 사용자가 있는지 검사

* fix: 공유 체크리스트 생성시 uuid가 아니면 서버가 죽는 현상 수정

* style: 불필요한 코드 제거

* feat: 소켓 다중 서버 지원  (#159)

* chore: docker-compose.yaml에 레디스 추가

* chore: redis 모듈 추가

* feature: nest 다중 포트 서버 구성

* feature: redis.module.ts 구현 및 적용

* feature: 소켓에 레디스 삽입

* feature: 소켓 pub/sub 구현

* feat: 소켓 레디스에 총 접속자수 증감 기능 추가

* feat: 소켓 히스토리 기능 레디스 적용

* refactor: shared-checklists.gateway.ts 리팩토링

* feat: 소켓 editing 이벤트 추가 (#164)

* fix: 레디스 연결 수정 (#168)

* [Server] object 형태가 들어오면 redis에 저장 안되는 문제 수정 (#171)

* 🐛fix: 웹소켓 data를 json으로 변경 후 emit

* 🐛fix: history []제거

* 🐛fix: data[0] -> data

* feat: 웹소켓 히스토리 버그 수정 및 콘솔 로그 추가 (#175)

* fix: docker-compose 레디스 설정 오류 해결

* feat: 소켓 console.log 추가

* fix: 소켓 히스토리 저장시 형식 오류 수정

* [Server] 로거 기능 확대 (#176)

* feat: no auth 버그 -> password 주석 해제

* feat: 로그에 한국 시간대 추가

* feat: 로그파일이 dist 내부에 존재해 한 단계 위로 옮겨줌.

* feat: 응답로그는 interceptor에서 처리하도록 로직 수정

* feat: 로그 인터셉터 app.module.ts 프로바이더에 추가

* 🐛fix: redis module password 부분 주석처리 (#180)

* [Server] 피드화면 api 구현 (#196)

* chore: import 문 최적화

* feat: 피드 resource 생성

* feat: checklist entity에 카테고리 컬럼 추가

* feat: feedmodel 정의

private checklist model에서 likeCount와 downloadCount 컬럼 추가

* chore: 사용하지 않는 dto 파일 삭제

* chore: 카테고리 데이터 추가

* chore: 안쓰는 테스트 파일 삭제

* feat: 피드 화면 api 구현

* feat: feeds.service.spec.ts 테스트 코드 작성

* feat: api 에러 핸들링 로직 추가

* test: feeds.service.spec.ts 예외 케이스에 대한 테스트 코드 추가

* feat: 에러메시지 수정

* feat: 관리 페이지와 api 구현 (#197)

* feat: admin resource 구현

* feat: 관리자 페이지 추가

* feat: cors 설정 추가

* feat: 임시로 관리자 페이지 권한 제거

* feat: admin sse api 구현

* refactor: redis sub 서비스 구현

* feat: 어드민 페이지 api 기능 추가

* feat: redis pub 서비스 추가

* refactor: admin controller에 redis service로 교체

* feat: log interceptor에 redis pub 추가

* refactor: channels const로 분리

* style: 불필요한 주석 제거

* feat: ws 로그 redis pub 추가

* feat: admin page 박스 누르면 펼치기/접기 기능 추가

* feat: admin 페이지 색깔 변경

* feat: 관리자 페이지 로그인 기능 구현

* [Server] 클라이언트와 api 연동 작업 (login, socket history)  (#209)

* feat: socket 빈 히스토리면 [] 보내기

* feat: 로그인시 유저 닉네임도 같이 보내주기

* [Server] ai와 관련한 db 구조 개선 (#220)

* refactor: 경로 이름 수정 entity->entities

* feat: category 엔티티 생성

* feat: reason 모델 생성 및 각 테이블 relation 설정

* feat: 각 테이블 relation 수정 및 의존성 주입

* feat: relation 방식 변경으로 인한folders.service.ts 메서드 수정, 의존성 주입

* feat: admin 페이지 항목 자동 추가 , 시스템 상태 그래프 추가 (#223)

* feat: serverStatus 확인 기능 추가

* feat: serverStatus 확인 기능 추가

* feat: 모든 구독을 받아오는 기능 추가

* chore: 불필요한 상수 제거

* feat: admin page 서버 상태 확인 기능 추가

* [Server] 카테고리별 아이템 개수 확인 및 개수로 item 생성 로직 (#228)

* feat: 카테고리별 아이템 개수 반환해주는 api 생성

* feat: 카테고리별 아이템 개수 itemCount로 pub도 하고 응답도 반환하는 서비스 함수 구현

* feat: generate-item api에 대한 controller 함수 구현

* feat: generate-item api에 대한 service 함수 구현

* [Server] 카테고리 api db 방식으로 업데이트, 인공지능 응답 api db 캐싱 구조로 개선 (#240)

* feat: category service 함수 수정

* feat: category service 함수 요청 형태 변경

* feat: ai 체크리스트 항목 응답 api db 캐싱 구조로 변경

* refactor: jwt toekn 만료 시간 환경변수로 변경 (#250)

* feat: 어드민 페이지 ai관련 뷰 추가 및 관련 api 추가 (#260)

* feat: admin페이지 cpu 사용량 통합해서 보여주기

* refactor: serverStatus 네트워크 관련 제거

* fix: 체크리스트 ai 생성 관리자만 가능하도록 수정

* feat: admin 페이지 ai 연동

---------

Co-authored-by: Minseong Park <52368015+pminsung12@users.noreply.github.com>

* Main에 ai 저장소 합치기 (#268)

* [Server] ai generate-server 생성 (#190)

* feat: gitignore 파일 추가

first commit

* feat: yarn init

* feat: app.js 기본 서버 생성

* chore: openai 패키지 설치

* chore: prettier, pg 설치

* feat:  generateGptData 함수 구현

* feat: postgresql에 항목들 저장 로직 추가

* feat: gpt-4-1106-preview 모델로 변경, 파싱 로직 추가

* feat: gpt에서 item 불러와서 db에 저장하는 로직 구현

* chore: redis 라이브러리 추가

* feat: redis publisher 설정

* feat: 대량 데이터 생성을 위한 카테고리 데이터

* feat: 랜덤성을 높일 수 있는 temperature 옵션 설정

* feat: 대량 데이터 생성 옵션 주석처리

* feat: temperature 옵션 주석처리, 항목개수 10개로 제한

* feat: pr 템플릿 수정

* feat: gpt 모델 gpt-4-1106-preview 로 변경 (#217)

* [Server] 카테고리 데이터 배열 입력 처리, promise pool 방식 도입, env 방식으로 변경 (#221)

* feat: subscribe할 때 카테고리 배열의 원소 당 생성과 저장을 for문으로 구현

* feat: 카테고리 데이터의 배열을 넣었을 때 순차적으로 로직을 수행하도록 개선

* chore: @supercharge/promise-pool 설치

* chore: sub 모듈 env 방식으로 변경

* feat: 변경된 db 스키마 구조에 따라 sql문 수정 및 에러에 대한 retry 구조 구현

* feat: 채널명 category-> ai_generate로 변경

* feat: log 출력을 위한 과정에서의 publish 이벤트 추가

* feat: ai evaluate server 생성 (#239)

* chore: gitignore 세팅

* feat: evaluate api 구현

* feat: ai 답변이 형식과 다를 경우 최대 3번까지 재시도 로직 구현

* chore: typeorm, posgres 설치

* feat: postgres 디비 연결

* feat: array to object 함수 추가

* chore: redis 라이브러리 추가

* feat: 레디스 pub/sub 구현

* feat: pub하면 인공지능 평가 실행 구현

* feat: redis pub 클래스화

* feat: 디비 기능 추가

* feat: redis 연결

* feat: 쿼리 및 결과물 파싱 함수 추가

* feature: api,main 연결

* feat: 평가 후 결과를 DB에 저장하는 기능 추가

* feat: ai 자동화 api 구현

* feat: 평가 api redis sub 연결

* refactor : 불필요한 파일/코드 제거

* style: 주석 추가

* refactor: postgres 쿼리 변수화

* feat: 최종 점수 매기는 기능 추가

---------

Co-authored-by: Minseong Park <52368015+pminsung12@users.noreply.github.com>
Co-authored-by: Minseong Park <pminsung12@gmail.com>

* Update README.md (#275)

---------

Co-authored-by: yangdongsuk <51476641+yangdongsuk@users.noreply.github.com>
Co-authored-by: 김영균 <48887389+klmyoungyun@users.noreply.github.com>
Co-authored-by: wi-seong-cheol <53855302+wi-seong-cheol@users.noreply.github.com>
Co-authored-by: 김성훈 <42074365+SeongHunTed@users.noreply.github.com>
Co-authored-by: klmyoungyun <kyoungyun98@naver.com>
yangdongsuk added a commit that referenced this pull request Mar 10, 2024
* [Server] 개발환경 세팅 (#4)

* build: open-list-server init

* chore: @nestjs/config class-validator class-transformer 설치

* chore: 루트 레벨에서 설치한 패키지 삭제

* chore: NestJs 개발 환경 세팅

* chore: @nestjs/config class-validator class-transformer 설치

* Server/feature/#13 (#25)

* chore: postgresql, nestjs docker 세팅

* chore: @nestjs/typeorm, typeorm, pg 설치

* chore: Typeorm 세팅 및 TestModel 테이블 생성

* 테스트용 유저 API 구현 (#30)

* chore: common resource 추가

* chore: users resource 추가

* feature: base entity 구현

* feature: usersEntity 구현

* feature: 모듈에 usersModel 추가

* style: entity,dto의 users -> user로 변경

* feature: CreateUserDto 구현

* feature: userEntity 이메일 필드 추가

* feature: createUserDto 이메일 필드 추가

* feature: user patch->put으로 변경

* feature: updateUserDto 구현

* feature : create user 구현

* feature: 모든 유저의 정보를 가져오는 API 구현

* feature: 특정 유저의 정보를 가져오는 API 구현

* feature: user 정보 수정 API 구현

* feature: user 삭제 API 구현

* feature: ValidationPipe 적용

* refactor: usersService 리팩토링

* [Server] 유닛 테스트 환경 세팅 (#32)

* chore: test 경로 설정

* feature: TestCommonModule 구현

* feature: users.service.spec.ts 의존성 주입

* feature: users.controller.spec.ts 의존성 주입

* [Server] Users resource 이름 변경 (#34)

* style: usersController 네이밍에 컨벤션 맞게 변경

* style: usersService 컨벤션에 따른 네이밍 변경

* style: UsersModel -> UserModel 컨벤션에 따른 네이밍 변경

* feature: usersService 테스트 코드 작성 (#39)

* [Server] Folder entity 생성 및 crud 구현 (#42)

* feat: folders crud 구현

* chore: TestModel 삭제 및 관련된 종속성 제거

* feat: folders.controller.spec.ts 삭제, folders.service.spec.ts 구현

* feature: docker파일 수정 (#57)

* feat: private checklist entity 생성 및 crud 구현 (#61)

* chore: 개발용 postgres 포트변경 5432->5433, .env도 port 5433으로 변경필요

* feat: checklists res 생성

* feat: checklist, private-checklist, shared-checklisst 엔티티 생성, user모델과 folder모델과의 의존관계 주입

* feat: author->editor로 수정, 공유체크리스트와 사용자의 relation을 many to many로 업데이트

* feat: 개인, 공유 체크리스트에 대해 생성과 업데이트 시 dto 생성

* fix: class 이름 오타 수정

* refactor: rest api 방식에 따라 함수명 변경

* feat: CheckListModel에서 진행률 컬럼 삭제

* feat: folder와 user간의 manyToOne relation적용

* feat: private-checklist crud 작성

* feat: folder service 커버리지 100 달성

* test: private-checklist test code 작성, 커버리지 92퍼센트

* feat: checklist 폴더 분리 & dto 빈문자열 검증 추가 (#66)

* refactor: checklists를 private, shared폴더로 분리.

* refactor: private-checklists를 folders 하위로 이동

* fix: 빈문자열 검증 추가

* [Server] Winston으로 로그 관리 (#70)

* chore: nest-winston winston winston-daily-rotate-file 설치

* feat: winston logger 설정 파일 구현

* feat: winston logger middleware 구현

* feat: 요청 logger middleware 구현

* feat: 로그에 요청 처리 시간 추가되도록 개선

* chore: PR 템플릿 수정

* chore: PR 템플릿 수정

* feat: jwt access, refresh token 기반 인가 구현

* chore: auth resource 추가

* chore: jwt 모듈 추가

* feature: signToken 구현

* feature: 토큰 검증, 토큰 재발급 기능 구현

* feature: 로그인 기능 구현

* feature: 로그인 관련 서비스 구현

* feature: login 컨트롤러 구현

* style: loginDto -> loginUserDto로 변경

* feature: access 토큰 재발급 컨트롤러 구현

* refactor: access토큰 재발급 형식 변경

* feature: 유저 register 기능 구현

* feature: auth.service.ts 테스트 코드 작성

* fix: 이메일 중복시 에러 메시지 수정

---------

Co-authored-by: Minseong Park <52368015+pminsung12@users.noreply.github.com>

* [Server] shared-checklist 소켓 구현 (#78)

* [Server] apple oauth api 구현 (#86)

* chore: @nestjs/axios 설치

* chore: axios 설치

* chore: axios 설치

* feat: dto수정, userId 컬럼추가, providerId 수정, fullName 컬럼 추가

* feat: entity에 따라 dto 항목 수정

* feat: apple oauth 로그인 서비스 함수 추가

client secret 만들고, axios post로 user 정보 가지고옴.

* feat: apple oauth 로그인 엔드포인트 추가

* feat: apple 유저에대해 create, update 함수 구현

* feat: publicKey 발급받는 로직추가

* [Server] access 토큰 재발급시 유저 정보 없는 버그 수정 (#83)

* [Server] privateChecklist의 내용 저장 api 구현 (#88)

* [Server] apple oauth 로그인 로직 수정 (#118)

* feat: env 사용방식 변경 + idToken 검증로직 추가

* chore: jwk를 pem으로 변환하기 위한 jose 라이브러리 설치

* chore: jose 라이브러리 제거 @panva/jose 설치

* feat: request body로 들어오는 auth-user.dto.ts 수정

* feat: 애플 유저 등록 로직 수정

* docs: jsdoc return type 수정

* feat: apple login 로직 수정(appleToken, clientSecret 로직 삭제)

* feat: refreshAccessToken 함수에서 refreshToken도 함께 반환해주도록 로직 수정

* [Server] Clova Studio api  구현 (#126)

* feat:  checklist-ai 리소스 생성

* feat: create-checklist-items.dto.ts 요청 dto 생성

* feat: 문자열 및 각종 옵션 상수화

* feat: user-role const 파일 삭제 => 함수화

* feat: /checklist-ai POST 요청 api 생성

대,중,소 카테고리를 body로 받아오면 clova studio에서 체크리스트 항목 10개를 반환한다.

* feat: AccessTokenGuard 구현 및 적용 (#129)

* feat: access token guard 구현

* feat: access token guard 전역 적용

* style: access-token.guard.ts 주석 추가

* feat: userId decorator 구현

* feat: folders controller에 userId 데코레이터 추가

* feat: 폴더 서비스에 user 데코레이터 추가

* feat: 개인 체크리스트 컨트롤러에 유저 데코레이터 추가

* feat: private-checklists service에 user 데코레이터 추가

* fix: 테스트 코드 수정

* Server/feature/#128 (#139)

* feat: json 구조로 카테고리 데이터 정의

* feat: categories 의존성 주입

* feat: endpoint만들고, 실제 존재하는 id인지 검증하는 dto 생성

* fix: 오타수정 forder->folder

* feat: param에 dto 적용하지 못해 삭제

* feat: 카테고리 json 데이터 변수명 변경, 대문자로

* feat: 대,중,소 카테고리 반환 api 구현

* test: categories.service.spec.ts 테스트 코드 작성

* test: categories.service.spec.ts 테스트 코드 수정 커버리지 100

* feat: 공유 체크리스트 API 및 소켓 작업 구현 (#140)

* feat: shared checklist item entity 구현

* style: SharedChecklistItemModel 오타 수정

* feat: shared checklist id uuid로 변경

* feat: create shared checklist 디티오 수정

* feat: shared-checklists 생성 구현

* refactor: shared-checklists 저장하는 함수 분리

* feat: shared-checklists 1개, 전부 가져오는 기능 추가

* feat: 유저 초대 기능 추가

* feat: 공유 체크리스트 삭제 기능 구현

* style: shared-checklists service 주석 추가

* feature: 공유 체크리스트 소켓에 데이터 누적 기능 추가

* feat: shared-checklists 소켓 통신 시 데이터 데베에 저장 구현

* feat: 소켓 연결시 방의 데이터 히스토리를 전송하는 기능 추가

* style: 소켓 주석 추가

* 🔐feat: 개발용 임시로 액세스,리프레시 토큰들 만료기한 일주일로 설정 (#142)

* feat: 공유 체크리스트 아이템 권한 문제 및 uuid 문제 해결 (#146)

* fix: 공유 체크리스트 아이템 권한 없으면 접근 못하게 수정

* fix: 체크리스트 추가시 사용자가 있는지 검사

* fix: 공유 체크리스트 생성시 uuid가 아니면 서버가 죽는 현상 수정

* style: 불필요한 코드 제거

* feat: 소켓 다중 서버 지원  (#159)

* chore: docker-compose.yaml에 레디스 추가

* chore: redis 모듈 추가

* feature: nest 다중 포트 서버 구성

* feature: redis.module.ts 구현 및 적용

* feature: 소켓에 레디스 삽입

* feature: 소켓 pub/sub 구현

* feat: 소켓 레디스에 총 접속자수 증감 기능 추가

* feat: 소켓 히스토리 기능 레디스 적용

* refactor: shared-checklists.gateway.ts 리팩토링

* feat: 소켓 editing 이벤트 추가 (#164)

* fix: 레디스 연결 수정 (#168)

* [Server] object 형태가 들어오면 redis에 저장 안되는 문제 수정 (#171)

* 🐛fix: 웹소켓 data를 json으로 변경 후 emit

* 🐛fix: history []제거

* 🐛fix: data[0] -> data

* feat: 웹소켓 히스토리 버그 수정 및 콘솔 로그 추가 (#175)

* fix: docker-compose 레디스 설정 오류 해결

* feat: 소켓 console.log 추가

* fix: 소켓 히스토리 저장시 형식 오류 수정

* [Server] 로거 기능 확대 (#176)

* feat: no auth 버그 -> password 주석 해제

* feat: 로그에 한국 시간대 추가

* feat: 로그파일이 dist 내부에 존재해 한 단계 위로 옮겨줌.

* feat: 응답로그는 interceptor에서 처리하도록 로직 수정

* feat: 로그 인터셉터 app.module.ts 프로바이더에 추가

* 🐛fix: redis module password 부분 주석처리 (#180)

* [Server] 피드화면 api 구현 (#196)

* chore: import 문 최적화

* feat: 피드 resource 생성

* feat: checklist entity에 카테고리 컬럼 추가

* feat: feedmodel 정의

private checklist model에서 likeCount와 downloadCount 컬럼 추가

* chore: 사용하지 않는 dto 파일 삭제

* chore: 카테고리 데이터 추가

* chore: 안쓰는 테스트 파일 삭제

* feat: 피드 화면 api 구현

* feat: feeds.service.spec.ts 테스트 코드 작성

* feat: api 에러 핸들링 로직 추가

* test: feeds.service.spec.ts 예외 케이스에 대한 테스트 코드 추가

* feat: 에러메시지 수정

* feat: 관리 페이지와 api 구현 (#197)

* feat: admin resource 구현

* feat: 관리자 페이지 추가

* feat: cors 설정 추가

* feat: 임시로 관리자 페이지 권한 제거

* feat: admin sse api 구현

* refactor: redis sub 서비스 구현

* feat: 어드민 페이지 api 기능 추가

* feat: redis pub 서비스 추가

* refactor: admin controller에 redis service로 교체

* feat: log interceptor에 redis pub 추가

* refactor: channels const로 분리

* style: 불필요한 주석 제거

* feat: ws 로그 redis pub 추가

* feat: admin page 박스 누르면 펼치기/접기 기능 추가

* feat: admin 페이지 색깔 변경

* feat: 관리자 페이지 로그인 기능 구현

* [Server] 클라이언트와 api 연동 작업 (login, socket history)  (#209)

* feat: socket 빈 히스토리면 [] 보내기

* feat: 로그인시 유저 닉네임도 같이 보내주기

* [Server] ai와 관련한 db 구조 개선 (#220)

* refactor: 경로 이름 수정 entity->entities

* feat: category 엔티티 생성

* feat: reason 모델 생성 및 각 테이블 relation 설정

* feat: 각 테이블 relation 수정 및 의존성 주입

* feat: relation 방식 변경으로 인한folders.service.ts 메서드 수정, 의존성 주입

* feat: admin 페이지 항목 자동 추가 , 시스템 상태 그래프 추가 (#223)

* feat: serverStatus 확인 기능 추가

* feat: serverStatus 확인 기능 추가

* feat: 모든 구독을 받아오는 기능 추가

* chore: 불필요한 상수 제거

* feat: admin page 서버 상태 확인 기능 추가

* [Server] 카테고리별 아이템 개수 확인 및 개수로 item 생성 로직 (#228)

* feat: 카테고리별 아이템 개수 반환해주는 api 생성

* feat: 카테고리별 아이템 개수 itemCount로 pub도 하고 응답도 반환하는 서비스 함수 구현

* feat: generate-item api에 대한 controller 함수 구현

* feat: generate-item api에 대한 service 함수 구현

* [Server] 카테고리 api db 방식으로 업데이트, 인공지능 응답 api db 캐싱 구조로 개선 (#240)

* feat: category service 함수 수정

* feat: category service 함수 요청 형태 변경

* feat: ai 체크리스트 항목 응답 api db 캐싱 구조로 변경

* refactor: jwt toekn 만료 시간 환경변수로 변경 (#250)

* feat: 어드민 페이지 ai관련 뷰 추가 및 관련 api 추가 (#260)

* feat: admin페이지 cpu 사용량 통합해서 보여주기

* refactor: serverStatus 네트워크 관련 제거

* fix: 체크리스트 ai 생성 관리자만 가능하도록 수정

* feat: admin 페이지 ai 연동

---------

Co-authored-by: YangDongsuk <51476641+YangDongsuk@users.noreply.github.com>
pminsung12 added a commit that referenced this pull request Mar 10, 2024
* [Server] 개발환경 세팅 (#4)

* build: open-list-server init

* chore: @nestjs/config class-validator class-transformer 설치

* chore: 루트 레벨에서 설치한 패키지 삭제

* chore: NestJs 개발 환경 세팅

* chore: @nestjs/config class-validator class-transformer 설치

* Server/feature/#13 (#25)

* chore: postgresql, nestjs docker 세팅

* chore: @nestjs/typeorm, typeorm, pg 설치

* chore: Typeorm 세팅 및 TestModel 테이블 생성

* 테스트용 유저 API 구현 (#30)

* chore: common resource 추가

* chore: users resource 추가

* feature: base entity 구현

* feature: usersEntity 구현

* feature: 모듈에 usersModel 추가

* style: entity,dto의 users -> user로 변경

* feature: CreateUserDto 구현

* feature: userEntity 이메일 필드 추가

* feature: createUserDto 이메일 필드 추가

* feature: user patch->put으로 변경

* feature: updateUserDto 구현

* feature : create user 구현

* feature: 모든 유저의 정보를 가져오는 API 구현

* feature: 특정 유저의 정보를 가져오는 API 구현

* feature: user 정보 수정 API 구현

* feature: user 삭제 API 구현

* feature: ValidationPipe 적용

* refactor: usersService 리팩토링

* [Server] 유닛 테스트 환경 세팅 (#32)

* chore: test 경로 설정

* feature: TestCommonModule 구현

* feature: users.service.spec.ts 의존성 주입

* feature: users.controller.spec.ts 의존성 주입

* [Server] Users resource 이름 변경 (#34)

* style: usersController 네이밍에 컨벤션 맞게 변경

* style: usersService 컨벤션에 따른 네이밍 변경

* style: UsersModel -> UserModel 컨벤션에 따른 네이밍 변경

* feature: usersService 테스트 코드 작성 (#39)

* [Server] Folder entity 생성 및 crud 구현 (#42)

* feat: folders crud 구현

* chore: TestModel 삭제 및 관련된 종속성 제거

* feat: folders.controller.spec.ts 삭제, folders.service.spec.ts 구현

* feature: docker파일 수정 (#57)

* feat: private checklist entity 생성 및 crud 구현 (#61)

* chore: 개발용 postgres 포트변경 5432->5433, .env도 port 5433으로 변경필요

* feat: checklists res 생성

* feat: checklist, private-checklist, shared-checklisst 엔티티 생성, user모델과 folder모델과의 의존관계 주입

* feat: author->editor로 수정, 공유체크리스트와 사용자의 relation을 many to many로 업데이트

* feat: 개인, 공유 체크리스트에 대해 생성과 업데이트 시 dto 생성

* fix: class 이름 오타 수정

* refactor: rest api 방식에 따라 함수명 변경

* feat: CheckListModel에서 진행률 컬럼 삭제

* feat: folder와 user간의 manyToOne relation적용

* feat: private-checklist crud 작성

* feat: folder service 커버리지 100 달성

* test: private-checklist test code 작성, 커버리지 92퍼센트

* feat: checklist 폴더 분리 & dto 빈문자열 검증 추가 (#66)

* refactor: checklists를 private, shared폴더로 분리.

* refactor: private-checklists를 folders 하위로 이동

* fix: 빈문자열 검증 추가

* [Server] Winston으로 로그 관리 (#70)

* chore: nest-winston winston winston-daily-rotate-file 설치

* feat: winston logger 설정 파일 구현

* feat: winston logger middleware 구현

* feat: 요청 logger middleware 구현

* feat: 로그에 요청 처리 시간 추가되도록 개선

* chore: PR 템플릿 수정

* chore: PR 템플릿 수정

* feat: jwt access, refresh token 기반 인가 구현

* chore: auth resource 추가

* chore: jwt 모듈 추가

* feature: signToken 구현

* feature: 토큰 검증, 토큰 재발급 기능 구현

* feature: 로그인 기능 구현

* feature: 로그인 관련 서비스 구현

* feature: login 컨트롤러 구현

* style: loginDto -> loginUserDto로 변경

* feature: access 토큰 재발급 컨트롤러 구현

* refactor: access토큰 재발급 형식 변경

* feature: 유저 register 기능 구현

* feature: auth.service.ts 테스트 코드 작성

* fix: 이메일 중복시 에러 메시지 수정

---------

Co-authored-by: Minseong Park <52368015+pminsung12@users.noreply.github.com>

* [Server] shared-checklist 소켓 구현 (#78)

* [Server] apple oauth api 구현 (#86)

* chore: @nestjs/axios 설치

* chore: axios 설치

* chore: axios 설치

* feat: dto수정, userId 컬럼추가, providerId 수정, fullName 컬럼 추가

* feat: entity에 따라 dto 항목 수정

* feat: apple oauth 로그인 서비스 함수 추가

client secret 만들고, axios post로 user 정보 가지고옴.

* feat: apple oauth 로그인 엔드포인트 추가

* feat: apple 유저에대해 create, update 함수 구현

* feat: publicKey 발급받는 로직추가

* [Server] access 토큰 재발급시 유저 정보 없는 버그 수정 (#83)

* [Server] privateChecklist의 내용 저장 api 구현 (#88)

* [Server] apple oauth 로그인 로직 수정 (#118)

* feat: env 사용방식 변경 + idToken 검증로직 추가

* chore: jwk를 pem으로 변환하기 위한 jose 라이브러리 설치

* chore: jose 라이브러리 제거 @panva/jose 설치

* feat: request body로 들어오는 auth-user.dto.ts 수정

* feat: 애플 유저 등록 로직 수정

* docs: jsdoc return type 수정

* feat: apple login 로직 수정(appleToken, clientSecret 로직 삭제)

* feat: refreshAccessToken 함수에서 refreshToken도 함께 반환해주도록 로직 수정

* [Server] Clova Studio api  구현 (#126)

* feat:  checklist-ai 리소스 생성

* feat: create-checklist-items.dto.ts 요청 dto 생성

* feat: 문자열 및 각종 옵션 상수화

* feat: user-role const 파일 삭제 => 함수화

* feat: /checklist-ai POST 요청 api 생성

대,중,소 카테고리를 body로 받아오면 clova studio에서 체크리스트 항목 10개를 반환한다.

* feat: AccessTokenGuard 구현 및 적용 (#129)

* feat: access token guard 구현

* feat: access token guard 전역 적용

* style: access-token.guard.ts 주석 추가

* feat: userId decorator 구현

* feat: folders controller에 userId 데코레이터 추가

* feat: 폴더 서비스에 user 데코레이터 추가

* feat: 개인 체크리스트 컨트롤러에 유저 데코레이터 추가

* feat: private-checklists service에 user 데코레이터 추가

* fix: 테스트 코드 수정

* Server/feature/#128 (#139)

* feat: json 구조로 카테고리 데이터 정의

* feat: categories 의존성 주입

* feat: endpoint만들고, 실제 존재하는 id인지 검증하는 dto 생성

* fix: 오타수정 forder->folder

* feat: param에 dto 적용하지 못해 삭제

* feat: 카테고리 json 데이터 변수명 변경, 대문자로

* feat: 대,중,소 카테고리 반환 api 구현

* test: categories.service.spec.ts 테스트 코드 작성

* test: categories.service.spec.ts 테스트 코드 수정 커버리지 100

* feat: 공유 체크리스트 API 및 소켓 작업 구현 (#140)

* feat: shared checklist item entity 구현

* style: SharedChecklistItemModel 오타 수정

* feat: shared checklist id uuid로 변경

* feat: create shared checklist 디티오 수정

* feat: shared-checklists 생성 구현

* refactor: shared-checklists 저장하는 함수 분리

* feat: shared-checklists 1개, 전부 가져오는 기능 추가

* feat: 유저 초대 기능 추가

* feat: 공유 체크리스트 삭제 기능 구현

* style: shared-checklists service 주석 추가

* feature: 공유 체크리스트 소켓에 데이터 누적 기능 추가

* feat: shared-checklists 소켓 통신 시 데이터 데베에 저장 구현

* feat: 소켓 연결시 방의 데이터 히스토리를 전송하는 기능 추가

* style: 소켓 주석 추가

* 🔐feat: 개발용 임시로 액세스,리프레시 토큰들 만료기한 일주일로 설정 (#142)

* feat: 공유 체크리스트 아이템 권한 문제 및 uuid 문제 해결 (#146)

* fix: 공유 체크리스트 아이템 권한 없으면 접근 못하게 수정

* fix: 체크리스트 추가시 사용자가 있는지 검사

* fix: 공유 체크리스트 생성시 uuid가 아니면 서버가 죽는 현상 수정

* style: 불필요한 코드 제거

* feat: 소켓 다중 서버 지원  (#159)

* chore: docker-compose.yaml에 레디스 추가

* chore: redis 모듈 추가

* feature: nest 다중 포트 서버 구성

* feature: redis.module.ts 구현 및 적용

* feature: 소켓에 레디스 삽입

* feature: 소켓 pub/sub 구현

* feat: 소켓 레디스에 총 접속자수 증감 기능 추가

* feat: 소켓 히스토리 기능 레디스 적용

* refactor: shared-checklists.gateway.ts 리팩토링

* feat: 소켓 editing 이벤트 추가 (#164)

* fix: 레디스 연결 수정 (#168)

* [Server] object 형태가 들어오면 redis에 저장 안되는 문제 수정 (#171)

* 🐛fix: 웹소켓 data를 json으로 변경 후 emit

* 🐛fix: history []제거

* 🐛fix: data[0] -> data

* feat: 웹소켓 히스토리 버그 수정 및 콘솔 로그 추가 (#175)

* fix: docker-compose 레디스 설정 오류 해결

* feat: 소켓 console.log 추가

* fix: 소켓 히스토리 저장시 형식 오류 수정

* [Server] 로거 기능 확대 (#176)

* feat: no auth 버그 -> password 주석 해제

* feat: 로그에 한국 시간대 추가

* feat: 로그파일이 dist 내부에 존재해 한 단계 위로 옮겨줌.

* feat: 응답로그는 interceptor에서 처리하도록 로직 수정

* feat: 로그 인터셉터 app.module.ts 프로바이더에 추가

* 🐛fix: redis module password 부분 주석처리 (#180)

* [Server] 피드화면 api 구현 (#196)

* chore: import 문 최적화

* feat: 피드 resource 생성

* feat: checklist entity에 카테고리 컬럼 추가

* feat: feedmodel 정의

private checklist model에서 likeCount와 downloadCount 컬럼 추가

* chore: 사용하지 않는 dto 파일 삭제

* chore: 카테고리 데이터 추가

* chore: 안쓰는 테스트 파일 삭제

* feat: 피드 화면 api 구현

* feat: feeds.service.spec.ts 테스트 코드 작성

* feat: api 에러 핸들링 로직 추가

* test: feeds.service.spec.ts 예외 케이스에 대한 테스트 코드 추가

* feat: 에러메시지 수정

* feat: 관리 페이지와 api 구현 (#197)

* feat: admin resource 구현

* feat: 관리자 페이지 추가

* feat: cors 설정 추가

* feat: 임시로 관리자 페이지 권한 제거

* feat: admin sse api 구현

* refactor: redis sub 서비스 구현

* feat: 어드민 페이지 api 기능 추가

* feat: redis pub 서비스 추가

* refactor: admin controller에 redis service로 교체

* feat: log interceptor에 redis pub 추가

* refactor: channels const로 분리

* style: 불필요한 주석 제거

* feat: ws 로그 redis pub 추가

* feat: admin page 박스 누르면 펼치기/접기 기능 추가

* feat: admin 페이지 색깔 변경

* feat: 관리자 페이지 로그인 기능 구현

* [Server] 클라이언트와 api 연동 작업 (login, socket history)  (#209)

* feat: socket 빈 히스토리면 [] 보내기

* feat: 로그인시 유저 닉네임도 같이 보내주기

* [Server] ai와 관련한 db 구조 개선 (#220)

* refactor: 경로 이름 수정 entity->entities

* feat: category 엔티티 생성

* feat: reason 모델 생성 및 각 테이블 relation 설정

* feat: 각 테이블 relation 수정 및 의존성 주입

* feat: relation 방식 변경으로 인한folders.service.ts 메서드 수정, 의존성 주입

* feat: admin 페이지 항목 자동 추가 , 시스템 상태 그래프 추가 (#223)

* feat: serverStatus 확인 기능 추가

* feat: serverStatus 확인 기능 추가

* feat: 모든 구독을 받아오는 기능 추가

* chore: 불필요한 상수 제거

* feat: admin page 서버 상태 확인 기능 추가

* [Server] 카테고리별 아이템 개수 확인 및 개수로 item 생성 로직 (#228)

* feat: 카테고리별 아이템 개수 반환해주는 api 생성

* feat: 카테고리별 아이템 개수 itemCount로 pub도 하고 응답도 반환하는 서비스 함수 구현

* feat: generate-item api에 대한 controller 함수 구현

* feat: generate-item api에 대한 service 함수 구현

* [Server] 카테고리 api db 방식으로 업데이트, 인공지능 응답 api db 캐싱 구조로 개선 (#240)

* feat: category service 함수 수정

* feat: category service 함수 요청 형태 변경

* feat: ai 체크리스트 항목 응답 api db 캐싱 구조로 변경

* refactor: jwt toekn 만료 시간 환경변수로 변경 (#250)

* feat: 어드민 페이지 ai관련 뷰 추가 및 관련 api 추가 (#260)

* feat: admin페이지 cpu 사용량 통합해서 보여주기

* refactor: serverStatus 네트워크 관련 제거

* fix: 체크리스트 ai 생성 관리자만 가능하도록 수정

* feat: admin 페이지 ai 연동

---------

Co-authored-by: YangDongsuk <51476641+YangDongsuk@users.noreply.github.com>
pminsung12 added a commit that referenced this pull request Mar 10, 2024
* [Server] 개발환경 세팅 (#4)

* build: open-list-server init

* chore: @nestjs/config class-validator class-transformer 설치

* chore: 루트 레벨에서 설치한 패키지 삭제

* chore: NestJs 개발 환경 세팅

* chore: @nestjs/config class-validator class-transformer 설치

* Server/feature/#13 (#25)

* chore: postgresql, nestjs docker 세팅

* chore: @nestjs/typeorm, typeorm, pg 설치

* chore: Typeorm 세팅 및 TestModel 테이블 생성

* 테스트용 유저 API 구현 (#30)

* chore: common resource 추가

* chore: users resource 추가

* feature: base entity 구현

* feature: usersEntity 구현

* feature: 모듈에 usersModel 추가

* style: entity,dto의 users -> user로 변경

* feature: CreateUserDto 구현

* feature: userEntity 이메일 필드 추가

* feature: createUserDto 이메일 필드 추가

* feature: user patch->put으로 변경

* feature: updateUserDto 구현

* feature : create user 구현

* feature: 모든 유저의 정보를 가져오는 API 구현

* feature: 특정 유저의 정보를 가져오는 API 구현

* feature: user 정보 수정 API 구현

* feature: user 삭제 API 구현

* feature: ValidationPipe 적용

* refactor: usersService 리팩토링

* [Server] 유닛 테스트 환경 세팅 (#32)

* chore: test 경로 설정

* feature: TestCommonModule 구현

* feature: users.service.spec.ts 의존성 주입

* feature: users.controller.spec.ts 의존성 주입

* [Server] Users resource 이름 변경 (#34)

* style: usersController 네이밍에 컨벤션 맞게 변경

* style: usersService 컨벤션에 따른 네이밍 변경

* style: UsersModel -> UserModel 컨벤션에 따른 네이밍 변경

* feature: usersService 테스트 코드 작성 (#39)

* [Server] Folder entity 생성 및 crud 구현 (#42)

* feat: folders crud 구현

* chore: TestModel 삭제 및 관련된 종속성 제거

* feat: folders.controller.spec.ts 삭제, folders.service.spec.ts 구현

* feature: docker파일 수정 (#57)

* feat: private checklist entity 생성 및 crud 구현 (#61)

* chore: 개발용 postgres 포트변경 5432->5433, .env도 port 5433으로 변경필요

* feat: checklists res 생성

* feat: checklist, private-checklist, shared-checklisst 엔티티 생성, user모델과 folder모델과의 의존관계 주입

* feat: author->editor로 수정, 공유체크리스트와 사용자의 relation을 many to many로 업데이트

* feat: 개인, 공유 체크리스트에 대해 생성과 업데이트 시 dto 생성

* fix: class 이름 오타 수정

* refactor: rest api 방식에 따라 함수명 변경

* feat: CheckListModel에서 진행률 컬럼 삭제

* feat: folder와 user간의 manyToOne relation적용

* feat: private-checklist crud 작성

* feat: folder service 커버리지 100 달성

* test: private-checklist test code 작성, 커버리지 92퍼센트

* feat: checklist 폴더 분리 & dto 빈문자열 검증 추가 (#66)

* refactor: checklists를 private, shared폴더로 분리.

* refactor: private-checklists를 folders 하위로 이동

* fix: 빈문자열 검증 추가

* [Server] Winston으로 로그 관리 (#70)

* chore: nest-winston winston winston-daily-rotate-file 설치

* feat: winston logger 설정 파일 구현

* feat: winston logger middleware 구현

* feat: 요청 logger middleware 구현

* feat: 로그에 요청 처리 시간 추가되도록 개선

* chore: PR 템플릿 수정

* chore: PR 템플릿 수정

* feat: jwt access, refresh token 기반 인가 구현

* chore: auth resource 추가

* chore: jwt 모듈 추가

* feature: signToken 구현

* feature: 토큰 검증, 토큰 재발급 기능 구현

* feature: 로그인 기능 구현

* feature: 로그인 관련 서비스 구현

* feature: login 컨트롤러 구현

* style: loginDto -> loginUserDto로 변경

* feature: access 토큰 재발급 컨트롤러 구현

* refactor: access토큰 재발급 형식 변경

* feature: 유저 register 기능 구현

* feature: auth.service.ts 테스트 코드 작성

* fix: 이메일 중복시 에러 메시지 수정

---------

Co-authored-by: Minseong Park <52368015+pminsung12@users.noreply.github.com>

* [Server] shared-checklist 소켓 구현 (#78)

* [Server] apple oauth api 구현 (#86)

* chore: @nestjs/axios 설치

* chore: axios 설치

* chore: axios 설치

* feat: dto수정, userId 컬럼추가, providerId 수정, fullName 컬럼 추가

* feat: entity에 따라 dto 항목 수정

* feat: apple oauth 로그인 서비스 함수 추가

client secret 만들고, axios post로 user 정보 가지고옴.

* feat: apple oauth 로그인 엔드포인트 추가

* feat: apple 유저에대해 create, update 함수 구현

* feat: publicKey 발급받는 로직추가

* [Server] access 토큰 재발급시 유저 정보 없는 버그 수정 (#83)

* [Server] privateChecklist의 내용 저장 api 구현 (#88)

* [Server] apple oauth 로그인 로직 수정 (#118)

* feat: env 사용방식 변경 + idToken 검증로직 추가

* chore: jwk를 pem으로 변환하기 위한 jose 라이브러리 설치

* chore: jose 라이브러리 제거 @panva/jose 설치

* feat: request body로 들어오는 auth-user.dto.ts 수정

* feat: 애플 유저 등록 로직 수정

* docs: jsdoc return type 수정

* feat: apple login 로직 수정(appleToken, clientSecret 로직 삭제)

* feat: refreshAccessToken 함수에서 refreshToken도 함께 반환해주도록 로직 수정

* [Server] Clova Studio api  구현 (#126)

* feat:  checklist-ai 리소스 생성

* feat: create-checklist-items.dto.ts 요청 dto 생성

* feat: 문자열 및 각종 옵션 상수화

* feat: user-role const 파일 삭제 => 함수화

* feat: /checklist-ai POST 요청 api 생성

대,중,소 카테고리를 body로 받아오면 clova studio에서 체크리스트 항목 10개를 반환한다.

* feat: AccessTokenGuard 구현 및 적용 (#129)

* feat: access token guard 구현

* feat: access token guard 전역 적용

* style: access-token.guard.ts 주석 추가

* feat: userId decorator 구현

* feat: folders controller에 userId 데코레이터 추가

* feat: 폴더 서비스에 user 데코레이터 추가

* feat: 개인 체크리스트 컨트롤러에 유저 데코레이터 추가

* feat: private-checklists service에 user 데코레이터 추가

* fix: 테스트 코드 수정

* Server/feature/#128 (#139)

* feat: json 구조로 카테고리 데이터 정의

* feat: categories 의존성 주입

* feat: endpoint만들고, 실제 존재하는 id인지 검증하는 dto 생성

* fix: 오타수정 forder->folder

* feat: param에 dto 적용하지 못해 삭제

* feat: 카테고리 json 데이터 변수명 변경, 대문자로

* feat: 대,중,소 카테고리 반환 api 구현

* test: categories.service.spec.ts 테스트 코드 작성

* test: categories.service.spec.ts 테스트 코드 수정 커버리지 100

* feat: 공유 체크리스트 API 및 소켓 작업 구현 (#140)

* feat: shared checklist item entity 구현

* style: SharedChecklistItemModel 오타 수정

* feat: shared checklist id uuid로 변경

* feat: create shared checklist 디티오 수정

* feat: shared-checklists 생성 구현

* refactor: shared-checklists 저장하는 함수 분리

* feat: shared-checklists 1개, 전부 가져오는 기능 추가

* feat: 유저 초대 기능 추가

* feat: 공유 체크리스트 삭제 기능 구현

* style: shared-checklists service 주석 추가

* feature: 공유 체크리스트 소켓에 데이터 누적 기능 추가

* feat: shared-checklists 소켓 통신 시 데이터 데베에 저장 구현

* feat: 소켓 연결시 방의 데이터 히스토리를 전송하는 기능 추가

* style: 소켓 주석 추가

* 🔐feat: 개발용 임시로 액세스,리프레시 토큰들 만료기한 일주일로 설정 (#142)

* feat: 공유 체크리스트 아이템 권한 문제 및 uuid 문제 해결 (#146)

* fix: 공유 체크리스트 아이템 권한 없으면 접근 못하게 수정

* fix: 체크리스트 추가시 사용자가 있는지 검사

* fix: 공유 체크리스트 생성시 uuid가 아니면 서버가 죽는 현상 수정

* style: 불필요한 코드 제거

* feat: 소켓 다중 서버 지원  (#159)

* chore: docker-compose.yaml에 레디스 추가

* chore: redis 모듈 추가

* feature: nest 다중 포트 서버 구성

* feature: redis.module.ts 구현 및 적용

* feature: 소켓에 레디스 삽입

* feature: 소켓 pub/sub 구현

* feat: 소켓 레디스에 총 접속자수 증감 기능 추가

* feat: 소켓 히스토리 기능 레디스 적용

* refactor: shared-checklists.gateway.ts 리팩토링

* feat: 소켓 editing 이벤트 추가 (#164)

* fix: 레디스 연결 수정 (#168)

* [Server] object 형태가 들어오면 redis에 저장 안되는 문제 수정 (#171)

* 🐛fix: 웹소켓 data를 json으로 변경 후 emit

* 🐛fix: history []제거

* 🐛fix: data[0] -> data

* feat: 웹소켓 히스토리 버그 수정 및 콘솔 로그 추가 (#175)

* fix: docker-compose 레디스 설정 오류 해결

* feat: 소켓 console.log 추가

* fix: 소켓 히스토리 저장시 형식 오류 수정

* [Server] 로거 기능 확대 (#176)

* feat: no auth 버그 -> password 주석 해제

* feat: 로그에 한국 시간대 추가

* feat: 로그파일이 dist 내부에 존재해 한 단계 위로 옮겨줌.

* feat: 응답로그는 interceptor에서 처리하도록 로직 수정

* feat: 로그 인터셉터 app.module.ts 프로바이더에 추가

* 🐛fix: redis module password 부분 주석처리 (#180)

* [Server] 피드화면 api 구현 (#196)

* chore: import 문 최적화

* feat: 피드 resource 생성

* feat: checklist entity에 카테고리 컬럼 추가

* feat: feedmodel 정의

private checklist model에서 likeCount와 downloadCount 컬럼 추가

* chore: 사용하지 않는 dto 파일 삭제

* chore: 카테고리 데이터 추가

* chore: 안쓰는 테스트 파일 삭제

* feat: 피드 화면 api 구현

* feat: feeds.service.spec.ts 테스트 코드 작성

* feat: api 에러 핸들링 로직 추가

* test: feeds.service.spec.ts 예외 케이스에 대한 테스트 코드 추가

* feat: 에러메시지 수정

* feat: 관리 페이지와 api 구현 (#197)

* feat: admin resource 구현

* feat: 관리자 페이지 추가

* feat: cors 설정 추가

* feat: 임시로 관리자 페이지 권한 제거

* feat: admin sse api 구현

* refactor: redis sub 서비스 구현

* feat: 어드민 페이지 api 기능 추가

* feat: redis pub 서비스 추가

* refactor: admin controller에 redis service로 교체

* feat: log interceptor에 redis pub 추가

* refactor: channels const로 분리

* style: 불필요한 주석 제거

* feat: ws 로그 redis pub 추가

* feat: admin page 박스 누르면 펼치기/접기 기능 추가

* feat: admin 페이지 색깔 변경

* feat: 관리자 페이지 로그인 기능 구현

* [Server] 클라이언트와 api 연동 작업 (login, socket history)  (#209)

* feat: socket 빈 히스토리면 [] 보내기

* feat: 로그인시 유저 닉네임도 같이 보내주기

* [Server] ai와 관련한 db 구조 개선 (#220)

* refactor: 경로 이름 수정 entity->entities

* feat: category 엔티티 생성

* feat: reason 모델 생성 및 각 테이블 relation 설정

* feat: 각 테이블 relation 수정 및 의존성 주입

* feat: relation 방식 변경으로 인한folders.service.ts 메서드 수정, 의존성 주입

* feat: admin 페이지 항목 자동 추가 , 시스템 상태 그래프 추가 (#223)

* feat: serverStatus 확인 기능 추가

* feat: serverStatus 확인 기능 추가

* feat: 모든 구독을 받아오는 기능 추가

* chore: 불필요한 상수 제거

* feat: admin page 서버 상태 확인 기능 추가

* [Server] 카테고리별 아이템 개수 확인 및 개수로 item 생성 로직 (#228)

* feat: 카테고리별 아이템 개수 반환해주는 api 생성

* feat: 카테고리별 아이템 개수 itemCount로 pub도 하고 응답도 반환하는 서비스 함수 구현

* feat: generate-item api에 대한 controller 함수 구현

* feat: generate-item api에 대한 service 함수 구현

* [Server] 카테고리 api db 방식으로 업데이트, 인공지능 응답 api db 캐싱 구조로 개선 (#240)

* feat: category service 함수 수정

* feat: category service 함수 요청 형태 변경

* feat: ai 체크리스트 항목 응답 api db 캐싱 구조로 변경

* refactor: jwt toekn 만료 시간 환경변수로 변경 (#250)

* feat: 어드민 페이지 ai관련 뷰 추가 및 관련 api 추가 (#260)

* feat: admin페이지 cpu 사용량 통합해서 보여주기

* refactor: serverStatus 네트워크 관련 제거

* fix: 체크리스트 ai 생성 관리자만 가능하도록 수정

* feat: admin 페이지 ai 연동

* feat: Update main.yml

---------

Co-authored-by: YangDongsuk <51476641+YangDongsuk@users.noreply.github.com>
pminsung12 added a commit that referenced this pull request Mar 10, 2024
* [Server] 개발환경 세팅 (#4)

* build: open-list-server init

* chore: @nestjs/config class-validator class-transformer 설치

* chore: 루트 레벨에서 설치한 패키지 삭제

* chore: NestJs 개발 환경 세팅

* chore: @nestjs/config class-validator class-transformer 설치

* Server/feature/#13 (#25)

* chore: postgresql, nestjs docker 세팅

* chore: @nestjs/typeorm, typeorm, pg 설치

* chore: Typeorm 세팅 및 TestModel 테이블 생성

* 테스트용 유저 API 구현 (#30)

* chore: common resource 추가

* chore: users resource 추가

* feature: base entity 구현

* feature: usersEntity 구현

* feature: 모듈에 usersModel 추가

* style: entity,dto의 users -> user로 변경

* feature: CreateUserDto 구현

* feature: userEntity 이메일 필드 추가

* feature: createUserDto 이메일 필드 추가

* feature: user patch->put으로 변경

* feature: updateUserDto 구현

* feature : create user 구현

* feature: 모든 유저의 정보를 가져오는 API 구현

* feature: 특정 유저의 정보를 가져오는 API 구현

* feature: user 정보 수정 API 구현

* feature: user 삭제 API 구현

* feature: ValidationPipe 적용

* refactor: usersService 리팩토링

* [Server] 유닛 테스트 환경 세팅 (#32)

* chore: test 경로 설정

* feature: TestCommonModule 구현

* feature: users.service.spec.ts 의존성 주입

* feature: users.controller.spec.ts 의존성 주입

* [Server] Users resource 이름 변경 (#34)

* style: usersController 네이밍에 컨벤션 맞게 변경

* style: usersService 컨벤션에 따른 네이밍 변경

* style: UsersModel -> UserModel 컨벤션에 따른 네이밍 변경

* feature: usersService 테스트 코드 작성 (#39)

* [Server] Folder entity 생성 및 crud 구현 (#42)

* feat: folders crud 구현

* chore: TestModel 삭제 및 관련된 종속성 제거

* feat: folders.controller.spec.ts 삭제, folders.service.spec.ts 구현

* feature: docker파일 수정 (#57)

* feat: private checklist entity 생성 및 crud 구현 (#61)

* chore: 개발용 postgres 포트변경 5432->5433, .env도 port 5433으로 변경필요

* feat: checklists res 생성

* feat: checklist, private-checklist, shared-checklisst 엔티티 생성, user모델과 folder모델과의 의존관계 주입

* feat: author->editor로 수정, 공유체크리스트와 사용자의 relation을 many to many로 업데이트

* feat: 개인, 공유 체크리스트에 대해 생성과 업데이트 시 dto 생성

* fix: class 이름 오타 수정

* refactor: rest api 방식에 따라 함수명 변경

* feat: CheckListModel에서 진행률 컬럼 삭제

* feat: folder와 user간의 manyToOne relation적용

* feat: private-checklist crud 작성

* feat: folder service 커버리지 100 달성

* test: private-checklist test code 작성, 커버리지 92퍼센트

* feat: checklist 폴더 분리 & dto 빈문자열 검증 추가 (#66)

* refactor: checklists를 private, shared폴더로 분리.

* refactor: private-checklists를 folders 하위로 이동

* fix: 빈문자열 검증 추가

* [Server] Winston으로 로그 관리 (#70)

* chore: nest-winston winston winston-daily-rotate-file 설치

* feat: winston logger 설정 파일 구현

* feat: winston logger middleware 구현

* feat: 요청 logger middleware 구현

* feat: 로그에 요청 처리 시간 추가되도록 개선

* chore: PR 템플릿 수정

* chore: PR 템플릿 수정

* feat: jwt access, refresh token 기반 인가 구현

* chore: auth resource 추가

* chore: jwt 모듈 추가

* feature: signToken 구현

* feature: 토큰 검증, 토큰 재발급 기능 구현

* feature: 로그인 기능 구현

* feature: 로그인 관련 서비스 구현

* feature: login 컨트롤러 구현

* style: loginDto -> loginUserDto로 변경

* feature: access 토큰 재발급 컨트롤러 구현

* refactor: access토큰 재발급 형식 변경

* feature: 유저 register 기능 구현

* feature: auth.service.ts 테스트 코드 작성

* fix: 이메일 중복시 에러 메시지 수정

---------

Co-authored-by: Minseong Park <52368015+pminsung12@users.noreply.github.com>

* [Server] shared-checklist 소켓 구현 (#78)

* [Server] apple oauth api 구현 (#86)

* chore: @nestjs/axios 설치

* chore: axios 설치

* chore: axios 설치

* feat: dto수정, userId 컬럼추가, providerId 수정, fullName 컬럼 추가

* feat: entity에 따라 dto 항목 수정

* feat: apple oauth 로그인 서비스 함수 추가

client secret 만들고, axios post로 user 정보 가지고옴.

* feat: apple oauth 로그인 엔드포인트 추가

* feat: apple 유저에대해 create, update 함수 구현

* feat: publicKey 발급받는 로직추가

* [Server] access 토큰 재발급시 유저 정보 없는 버그 수정 (#83)

* [Server] privateChecklist의 내용 저장 api 구현 (#88)

* [Server] apple oauth 로그인 로직 수정 (#118)

* feat: env 사용방식 변경 + idToken 검증로직 추가

* chore: jwk를 pem으로 변환하기 위한 jose 라이브러리 설치

* chore: jose 라이브러리 제거 @panva/jose 설치

* feat: request body로 들어오는 auth-user.dto.ts 수정

* feat: 애플 유저 등록 로직 수정

* docs: jsdoc return type 수정

* feat: apple login 로직 수정(appleToken, clientSecret 로직 삭제)

* feat: refreshAccessToken 함수에서 refreshToken도 함께 반환해주도록 로직 수정

* [Server] Clova Studio api  구현 (#126)

* feat:  checklist-ai 리소스 생성

* feat: create-checklist-items.dto.ts 요청 dto 생성

* feat: 문자열 및 각종 옵션 상수화

* feat: user-role const 파일 삭제 => 함수화

* feat: /checklist-ai POST 요청 api 생성

대,중,소 카테고리를 body로 받아오면 clova studio에서 체크리스트 항목 10개를 반환한다.

* feat: AccessTokenGuard 구현 및 적용 (#129)

* feat: access token guard 구현

* feat: access token guard 전역 적용

* style: access-token.guard.ts 주석 추가

* feat: userId decorator 구현

* feat: folders controller에 userId 데코레이터 추가

* feat: 폴더 서비스에 user 데코레이터 추가

* feat: 개인 체크리스트 컨트롤러에 유저 데코레이터 추가

* feat: private-checklists service에 user 데코레이터 추가

* fix: 테스트 코드 수정

* Server/feature/#128 (#139)

* feat: json 구조로 카테고리 데이터 정의

* feat: categories 의존성 주입

* feat: endpoint만들고, 실제 존재하는 id인지 검증하는 dto 생성

* fix: 오타수정 forder->folder

* feat: param에 dto 적용하지 못해 삭제

* feat: 카테고리 json 데이터 변수명 변경, 대문자로

* feat: 대,중,소 카테고리 반환 api 구현

* test: categories.service.spec.ts 테스트 코드 작성

* test: categories.service.spec.ts 테스트 코드 수정 커버리지 100

* feat: 공유 체크리스트 API 및 소켓 작업 구현 (#140)

* feat: shared checklist item entity 구현

* style: SharedChecklistItemModel 오타 수정

* feat: shared checklist id uuid로 변경

* feat: create shared checklist 디티오 수정

* feat: shared-checklists 생성 구현

* refactor: shared-checklists 저장하는 함수 분리

* feat: shared-checklists 1개, 전부 가져오는 기능 추가

* feat: 유저 초대 기능 추가

* feat: 공유 체크리스트 삭제 기능 구현

* style: shared-checklists service 주석 추가

* feature: 공유 체크리스트 소켓에 데이터 누적 기능 추가

* feat: shared-checklists 소켓 통신 시 데이터 데베에 저장 구현

* feat: 소켓 연결시 방의 데이터 히스토리를 전송하는 기능 추가

* style: 소켓 주석 추가

* 🔐feat: 개발용 임시로 액세스,리프레시 토큰들 만료기한 일주일로 설정 (#142)

* feat: 공유 체크리스트 아이템 권한 문제 및 uuid 문제 해결 (#146)

* fix: 공유 체크리스트 아이템 권한 없으면 접근 못하게 수정

* fix: 체크리스트 추가시 사용자가 있는지 검사

* fix: 공유 체크리스트 생성시 uuid가 아니면 서버가 죽는 현상 수정

* style: 불필요한 코드 제거

* feat: 소켓 다중 서버 지원  (#159)

* chore: docker-compose.yaml에 레디스 추가

* chore: redis 모듈 추가

* feature: nest 다중 포트 서버 구성

* feature: redis.module.ts 구현 및 적용

* feature: 소켓에 레디스 삽입

* feature: 소켓 pub/sub 구현

* feat: 소켓 레디스에 총 접속자수 증감 기능 추가

* feat: 소켓 히스토리 기능 레디스 적용

* refactor: shared-checklists.gateway.ts 리팩토링

* feat: 소켓 editing 이벤트 추가 (#164)

* fix: 레디스 연결 수정 (#168)

* [Server] object 형태가 들어오면 redis에 저장 안되는 문제 수정 (#171)

* 🐛fix: 웹소켓 data를 json으로 변경 후 emit

* 🐛fix: history []제거

* 🐛fix: data[0] -> data

* feat: 웹소켓 히스토리 버그 수정 및 콘솔 로그 추가 (#175)

* fix: docker-compose 레디스 설정 오류 해결

* feat: 소켓 console.log 추가

* fix: 소켓 히스토리 저장시 형식 오류 수정

* [Server] 로거 기능 확대 (#176)

* feat: no auth 버그 -> password 주석 해제

* feat: 로그에 한국 시간대 추가

* feat: 로그파일이 dist 내부에 존재해 한 단계 위로 옮겨줌.

* feat: 응답로그는 interceptor에서 처리하도록 로직 수정

* feat: 로그 인터셉터 app.module.ts 프로바이더에 추가

* 🐛fix: redis module password 부분 주석처리 (#180)

* [Server] 피드화면 api 구현 (#196)

* chore: import 문 최적화

* feat: 피드 resource 생성

* feat: checklist entity에 카테고리 컬럼 추가

* feat: feedmodel 정의

private checklist model에서 likeCount와 downloadCount 컬럼 추가

* chore: 사용하지 않는 dto 파일 삭제

* chore: 카테고리 데이터 추가

* chore: 안쓰는 테스트 파일 삭제

* feat: 피드 화면 api 구현

* feat: feeds.service.spec.ts 테스트 코드 작성

* feat: api 에러 핸들링 로직 추가

* test: feeds.service.spec.ts 예외 케이스에 대한 테스트 코드 추가

* feat: 에러메시지 수정

* feat: 관리 페이지와 api 구현 (#197)

* feat: admin resource 구현

* feat: 관리자 페이지 추가

* feat: cors 설정 추가

* feat: 임시로 관리자 페이지 권한 제거

* feat: admin sse api 구현

* refactor: redis sub 서비스 구현

* feat: 어드민 페이지 api 기능 추가

* feat: redis pub 서비스 추가

* refactor: admin controller에 redis service로 교체

* feat: log interceptor에 redis pub 추가

* refactor: channels const로 분리

* style: 불필요한 주석 제거

* feat: ws 로그 redis pub 추가

* feat: admin page 박스 누르면 펼치기/접기 기능 추가

* feat: admin 페이지 색깔 변경

* feat: 관리자 페이지 로그인 기능 구현

* [Server] 클라이언트와 api 연동 작업 (login, socket history)  (#209)

* feat: socket 빈 히스토리면 [] 보내기

* feat: 로그인시 유저 닉네임도 같이 보내주기

* [Server] ai와 관련한 db 구조 개선 (#220)

* refactor: 경로 이름 수정 entity->entities

* feat: category 엔티티 생성

* feat: reason 모델 생성 및 각 테이블 relation 설정

* feat: 각 테이블 relation 수정 및 의존성 주입

* feat: relation 방식 변경으로 인한folders.service.ts 메서드 수정, 의존성 주입

* feat: admin 페이지 항목 자동 추가 , 시스템 상태 그래프 추가 (#223)

* feat: serverStatus 확인 기능 추가

* feat: serverStatus 확인 기능 추가

* feat: 모든 구독을 받아오는 기능 추가

* chore: 불필요한 상수 제거

* feat: admin page 서버 상태 확인 기능 추가

* [Server] 카테고리별 아이템 개수 확인 및 개수로 item 생성 로직 (#228)

* feat: 카테고리별 아이템 개수 반환해주는 api 생성

* feat: 카테고리별 아이템 개수 itemCount로 pub도 하고 응답도 반환하는 서비스 함수 구현

* feat: generate-item api에 대한 controller 함수 구현

* feat: generate-item api에 대한 service 함수 구현

* [Server] 카테고리 api db 방식으로 업데이트, 인공지능 응답 api db 캐싱 구조로 개선 (#240)

* feat: category service 함수 수정

* feat: category service 함수 요청 형태 변경

* feat: ai 체크리스트 항목 응답 api db 캐싱 구조로 변경

* refactor: jwt toekn 만료 시간 환경변수로 변경 (#250)

* feat: 어드민 페이지 ai관련 뷰 추가 및 관련 api 추가 (#260)

* feat: admin페이지 cpu 사용량 통합해서 보여주기

* refactor: serverStatus 네트워크 관련 제거

* fix: 체크리스트 ai 생성 관리자만 가능하도록 수정

* feat: admin 페이지 ai 연동

* feat: Update main.yml

---------

Co-authored-by: YangDongsuk <51476641+YangDongsuk@users.noreply.github.com>
pminsung12 added a commit that referenced this pull request Mar 11, 2024
* [Server] 개발환경 세팅 (#4)

* build: open-list-server init

* chore: @nestjs/config class-validator class-transformer 설치

* chore: 루트 레벨에서 설치한 패키지 삭제

* chore: NestJs 개발 환경 세팅

* chore: @nestjs/config class-validator class-transformer 설치

* Server/feature/#13 (#25)

* chore: postgresql, nestjs docker 세팅

* chore: @nestjs/typeorm, typeorm, pg 설치

* chore: Typeorm 세팅 및 TestModel 테이블 생성

* 테스트용 유저 API 구현 (#30)

* chore: common resource 추가

* chore: users resource 추가

* feature: base entity 구현

* feature: usersEntity 구현

* feature: 모듈에 usersModel 추가

* style: entity,dto의 users -> user로 변경

* feature: CreateUserDto 구현

* feature: userEntity 이메일 필드 추가

* feature: createUserDto 이메일 필드 추가

* feature: user patch->put으로 변경

* feature: updateUserDto 구현

* feature : create user 구현

* feature: 모든 유저의 정보를 가져오는 API 구현

* feature: 특정 유저의 정보를 가져오는 API 구현

* feature: user 정보 수정 API 구현

* feature: user 삭제 API 구현

* feature: ValidationPipe 적용

* refactor: usersService 리팩토링

* [Server] 유닛 테스트 환경 세팅 (#32)

* chore: test 경로 설정

* feature: TestCommonModule 구현

* feature: users.service.spec.ts 의존성 주입

* feature: users.controller.spec.ts 의존성 주입

* [Server] Users resource 이름 변경 (#34)

* style: usersController 네이밍에 컨벤션 맞게 변경

* style: usersService 컨벤션에 따른 네이밍 변경

* style: UsersModel -> UserModel 컨벤션에 따른 네이밍 변경

* feature: usersService 테스트 코드 작성 (#39)

* [Server] Folder entity 생성 및 crud 구현 (#42)

* feat: folders crud 구현

* chore: TestModel 삭제 및 관련된 종속성 제거

* feat: folders.controller.spec.ts 삭제, folders.service.spec.ts 구현

* feature: docker파일 수정 (#57)

* feat: private checklist entity 생성 및 crud 구현 (#61)

* chore: 개발용 postgres 포트변경 5432->5433, .env도 port 5433으로 변경필요

* feat: checklists res 생성

* feat: checklist, private-checklist, shared-checklisst 엔티티 생성, user모델과 folder모델과의 의존관계 주입

* feat: author->editor로 수정, 공유체크리스트와 사용자의 relation을 many to many로 업데이트

* feat: 개인, 공유 체크리스트에 대해 생성과 업데이트 시 dto 생성

* fix: class 이름 오타 수정

* refactor: rest api 방식에 따라 함수명 변경

* feat: CheckListModel에서 진행률 컬럼 삭제

* feat: folder와 user간의 manyToOne relation적용

* feat: private-checklist crud 작성

* feat: folder service 커버리지 100 달성

* test: private-checklist test code 작성, 커버리지 92퍼센트

* feat: checklist 폴더 분리 & dto 빈문자열 검증 추가 (#66)

* refactor: checklists를 private, shared폴더로 분리.

* refactor: private-checklists를 folders 하위로 이동

* fix: 빈문자열 검증 추가

* [Server] Winston으로 로그 관리 (#70)

* chore: nest-winston winston winston-daily-rotate-file 설치

* feat: winston logger 설정 파일 구현

* feat: winston logger middleware 구현

* feat: 요청 logger middleware 구현

* feat: 로그에 요청 처리 시간 추가되도록 개선

* chore: PR 템플릿 수정

* chore: PR 템플릿 수정

* feat: jwt access, refresh token 기반 인가 구현

* chore: auth resource 추가

* chore: jwt 모듈 추가

* feature: signToken 구현

* feature: 토큰 검증, 토큰 재발급 기능 구현

* feature: 로그인 기능 구현

* feature: 로그인 관련 서비스 구현

* feature: login 컨트롤러 구현

* style: loginDto -> loginUserDto로 변경

* feature: access 토큰 재발급 컨트롤러 구현

* refactor: access토큰 재발급 형식 변경

* feature: 유저 register 기능 구현

* feature: auth.service.ts 테스트 코드 작성

* fix: 이메일 중복시 에러 메시지 수정

---------

Co-authored-by: Minseong Park <52368015+pminsung12@users.noreply.github.com>

* [Server] shared-checklist 소켓 구현 (#78)

* [Server] apple oauth api 구현 (#86)

* chore: @nestjs/axios 설치

* chore: axios 설치

* chore: axios 설치

* feat: dto수정, userId 컬럼추가, providerId 수정, fullName 컬럼 추가

* feat: entity에 따라 dto 항목 수정

* feat: apple oauth 로그인 서비스 함수 추가

client secret 만들고, axios post로 user 정보 가지고옴.

* feat: apple oauth 로그인 엔드포인트 추가

* feat: apple 유저에대해 create, update 함수 구현

* feat: publicKey 발급받는 로직추가

* [Server] access 토큰 재발급시 유저 정보 없는 버그 수정 (#83)

* [Server] privateChecklist의 내용 저장 api 구현 (#88)

* [Server] apple oauth 로그인 로직 수정 (#118)

* feat: env 사용방식 변경 + idToken 검증로직 추가

* chore: jwk를 pem으로 변환하기 위한 jose 라이브러리 설치

* chore: jose 라이브러리 제거 @panva/jose 설치

* feat: request body로 들어오는 auth-user.dto.ts 수정

* feat: 애플 유저 등록 로직 수정

* docs: jsdoc return type 수정

* feat: apple login 로직 수정(appleToken, clientSecret 로직 삭제)

* feat: refreshAccessToken 함수에서 refreshToken도 함께 반환해주도록 로직 수정

* [Server] Clova Studio api  구현 (#126)

* feat:  checklist-ai 리소스 생성

* feat: create-checklist-items.dto.ts 요청 dto 생성

* feat: 문자열 및 각종 옵션 상수화

* feat: user-role const 파일 삭제 => 함수화

* feat: /checklist-ai POST 요청 api 생성

대,중,소 카테고리를 body로 받아오면 clova studio에서 체크리스트 항목 10개를 반환한다.

* feat: AccessTokenGuard 구현 및 적용 (#129)

* feat: access token guard 구현

* feat: access token guard 전역 적용

* style: access-token.guard.ts 주석 추가

* feat: userId decorator 구현

* feat: folders controller에 userId 데코레이터 추가

* feat: 폴더 서비스에 user 데코레이터 추가

* feat: 개인 체크리스트 컨트롤러에 유저 데코레이터 추가

* feat: private-checklists service에 user 데코레이터 추가

* fix: 테스트 코드 수정

* Server/feature/#128 (#139)

* feat: json 구조로 카테고리 데이터 정의

* feat: categories 의존성 주입

* feat: endpoint만들고, 실제 존재하는 id인지 검증하는 dto 생성

* fix: 오타수정 forder->folder

* feat: param에 dto 적용하지 못해 삭제

* feat: 카테고리 json 데이터 변수명 변경, 대문자로

* feat: 대,중,소 카테고리 반환 api 구현

* test: categories.service.spec.ts 테스트 코드 작성

* test: categories.service.spec.ts 테스트 코드 수정 커버리지 100

* feat: 공유 체크리스트 API 및 소켓 작업 구현 (#140)

* feat: shared checklist item entity 구현

* style: SharedChecklistItemModel 오타 수정

* feat: shared checklist id uuid로 변경

* feat: create shared checklist 디티오 수정

* feat: shared-checklists 생성 구현

* refactor: shared-checklists 저장하는 함수 분리

* feat: shared-checklists 1개, 전부 가져오는 기능 추가

* feat: 유저 초대 기능 추가

* feat: 공유 체크리스트 삭제 기능 구현

* style: shared-checklists service 주석 추가

* feature: 공유 체크리스트 소켓에 데이터 누적 기능 추가

* feat: shared-checklists 소켓 통신 시 데이터 데베에 저장 구현

* feat: 소켓 연결시 방의 데이터 히스토리를 전송하는 기능 추가

* style: 소켓 주석 추가

* 🔐feat: 개발용 임시로 액세스,리프레시 토큰들 만료기한 일주일로 설정 (#142)

* feat: 공유 체크리스트 아이템 권한 문제 및 uuid 문제 해결 (#146)

* fix: 공유 체크리스트 아이템 권한 없으면 접근 못하게 수정

* fix: 체크리스트 추가시 사용자가 있는지 검사

* fix: 공유 체크리스트 생성시 uuid가 아니면 서버가 죽는 현상 수정

* style: 불필요한 코드 제거

* feat: 소켓 다중 서버 지원  (#159)

* chore: docker-compose.yaml에 레디스 추가

* chore: redis 모듈 추가

* feature: nest 다중 포트 서버 구성

* feature: redis.module.ts 구현 및 적용

* feature: 소켓에 레디스 삽입

* feature: 소켓 pub/sub 구현

* feat: 소켓 레디스에 총 접속자수 증감 기능 추가

* feat: 소켓 히스토리 기능 레디스 적용

* refactor: shared-checklists.gateway.ts 리팩토링

* feat: 소켓 editing 이벤트 추가 (#164)

* fix: 레디스 연결 수정 (#168)

* [Server] object 형태가 들어오면 redis에 저장 안되는 문제 수정 (#171)

* 🐛fix: 웹소켓 data를 json으로 변경 후 emit

* 🐛fix: history []제거

* 🐛fix: data[0] -> data

* feat: 웹소켓 히스토리 버그 수정 및 콘솔 로그 추가 (#175)

* fix: docker-compose 레디스 설정 오류 해결

* feat: 소켓 console.log 추가

* fix: 소켓 히스토리 저장시 형식 오류 수정

* [Server] 로거 기능 확대 (#176)

* feat: no auth 버그 -> password 주석 해제

* feat: 로그에 한국 시간대 추가

* feat: 로그파일이 dist 내부에 존재해 한 단계 위로 옮겨줌.

* feat: 응답로그는 interceptor에서 처리하도록 로직 수정

* feat: 로그 인터셉터 app.module.ts 프로바이더에 추가

* 🐛fix: redis module password 부분 주석처리 (#180)

* [Server] 피드화면 api 구현 (#196)

* chore: import 문 최적화

* feat: 피드 resource 생성

* feat: checklist entity에 카테고리 컬럼 추가

* feat: feedmodel 정의

private checklist model에서 likeCount와 downloadCount 컬럼 추가

* chore: 사용하지 않는 dto 파일 삭제

* chore: 카테고리 데이터 추가

* chore: 안쓰는 테스트 파일 삭제

* feat: 피드 화면 api 구현

* feat: feeds.service.spec.ts 테스트 코드 작성

* feat: api 에러 핸들링 로직 추가

* test: feeds.service.spec.ts 예외 케이스에 대한 테스트 코드 추가

* feat: 에러메시지 수정

* feat: 관리 페이지와 api 구현 (#197)

* feat: admin resource 구현

* feat: 관리자 페이지 추가

* feat: cors 설정 추가

* feat: 임시로 관리자 페이지 권한 제거

* feat: admin sse api 구현

* refactor: redis sub 서비스 구현

* feat: 어드민 페이지 api 기능 추가

* feat: redis pub 서비스 추가

* refactor: admin controller에 redis service로 교체

* feat: log interceptor에 redis pub 추가

* refactor: channels const로 분리

* style: 불필요한 주석 제거

* feat: ws 로그 redis pub 추가

* feat: admin page 박스 누르면 펼치기/접기 기능 추가

* feat: admin 페이지 색깔 변경

* feat: 관리자 페이지 로그인 기능 구현

* [Server] 클라이언트와 api 연동 작업 (login, socket history)  (#209)

* feat: socket 빈 히스토리면 [] 보내기

* feat: 로그인시 유저 닉네임도 같이 보내주기

* [Server] ai와 관련한 db 구조 개선 (#220)

* refactor: 경로 이름 수정 entity->entities

* feat: category 엔티티 생성

* feat: reason 모델 생성 및 각 테이블 relation 설정

* feat: 각 테이블 relation 수정 및 의존성 주입

* feat: relation 방식 변경으로 인한folders.service.ts 메서드 수정, 의존성 주입

* feat: admin 페이지 항목 자동 추가 , 시스템 상태 그래프 추가 (#223)

* feat: serverStatus 확인 기능 추가

* feat: serverStatus 확인 기능 추가

* feat: 모든 구독을 받아오는 기능 추가

* chore: 불필요한 상수 제거

* feat: admin page 서버 상태 확인 기능 추가

* [Server] 카테고리별 아이템 개수 확인 및 개수로 item 생성 로직 (#228)

* feat: 카테고리별 아이템 개수 반환해주는 api 생성

* feat: 카테고리별 아이템 개수 itemCount로 pub도 하고 응답도 반환하는 서비스 함수 구현

* feat: generate-item api에 대한 controller 함수 구현

* feat: generate-item api에 대한 service 함수 구현

* [Server] 카테고리 api db 방식으로 업데이트, 인공지능 응답 api db 캐싱 구조로 개선 (#240)

* feat: category service 함수 수정

* feat: category service 함수 요청 형태 변경

* feat: ai 체크리스트 항목 응답 api db 캐싱 구조로 변경

* refactor: jwt toekn 만료 시간 환경변수로 변경 (#250)

* feat: 어드민 페이지 ai관련 뷰 추가 및 관련 api 추가 (#260)

* feat: admin페이지 cpu 사용량 통합해서 보여주기

* refactor: serverStatus 네트워크 관련 제거

* fix: 체크리스트 ai 생성 관리자만 가능하도록 수정

* feat: admin 페이지 ai 연동

* feat: Update main.yml

---------

Co-authored-by: YangDongsuk <51476641+YangDongsuk@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug 버그 수정 feature 기능 개발 server 서버 쪽 이슈
Projects
Status: ✅ Done
Development

Successfully merging this pull request may close these issues.

2 participants