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] 카테고리 api db 방식으로 업데이트, 인공지능 응답 api db 캐싱 구조로 개선 #240

Merged
merged 3 commits into from
Dec 12, 2023

Conversation

pminsung12
Copy link
Collaborator

@pminsung12 pminsung12 commented Dec 12, 2023

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

#238

  • category service 함수 요청 형태 변경
  • ai 체크리스트 항목 응답 api db 캐싱구조로 변경 -> final_score 로 세컨 인덱싱 해놓아서 50개씩 내림차순으로 정렬해 가지고오고, 그 중에 10개를 랜덤으로 뽑아 응답한다.

💡 고민과 해결 과정

배경

  • 예전에는 json구조로 카테고리 데이터를 저장했다가 응답했다.

고민

  • 기존 방식에서는 소카테고리 가져오려면, 대, 중 카테고리 id를 path variable로 url에 포함시켰는데, db 테이블에 카테고리를 저장하면서 모든 id값에 다 대,중,소 칼럼이 존재한다. 따라서 요청 방식이 바뀌어야 한다.

해결과정

  • 허락보다는 용서를 구하기로 했다.
  • 이제 대, 중 카테고리를 id말고 이름을 query param방식으로 포함시켜야 한다.
  • url은 아래와 같다.

image


📸 스크린샷

  • 동일한 요청을 연속 두번 돌려도 랜덤하게 같은 카테고리의 ai추천 항목이 날아온다~

image

image

@pminsung12 pminsung12 added enhancement 개선 또는 피드백 반영 server 서버 쪽 이슈 feature 기능 개발 labels Dec 12, 2023
@pminsung12 pminsung12 added this to the 0.5.0 milestone Dec 12, 2023
@pminsung12 pminsung12 self-assigned this Dec 12, 2023
@pminsung12 pminsung12 changed the title Server/feature/#238 [Server] 카테고리 api db 방식으로 업데이트, 인공지능 응답 api db 캐싱 구조로 개선선 Dec 12, 2023
@pminsung12 pminsung12 changed the title [Server] 카테고리 api db 방식으로 업데이트, 인공지능 응답 api db 캐싱 구조로 개선선 [Server] 카테고리 api db 방식으로 업데이트, 인공지능 응답 api db 캐싱 구조로 개선 Dec 12, 2023
@yangdongsuk yangdongsuk reopened this Dec 12, 2023
@yangdongsuk yangdongsuk merged commit db19afb into server/develop Dec 12, 2023
@yangdongsuk
Copy link
Collaborator

수고하셨습니다

@yangdongsuk yangdongsuk deleted the server/feature/#238 branch December 12, 2023 17:52
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: 이메일 중복시 에러 메시지 수정

---------

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>
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
enhancement 개선 또는 피드백 반영 feature 기능 개발 server 서버 쪽 이슈
Projects
Status: ✅ Done
Development

Successfully merging this pull request may close these issues.

[Server] category api service 함수 수정, 피드 모델 데이터 삽입
2 participants