Skip to content

Commit

Permalink
Merge pull request #131 from Quickchive/release/0.1.0
Browse files Browse the repository at this point in the history
Release/0.1.0
  • Loading branch information
hou27 authored Dec 16, 2022
2 parents 135cf52 + cf641d2 commit 3a43a6e
Show file tree
Hide file tree
Showing 20 changed files with 356 additions and 108 deletions.
41 changes: 41 additions & 0 deletions .github/workflows/ci-cd-for-test.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
name: Docker Image CI && Deploy to EC2 for Test Server

on:
push:
branches: ['release/**']

jobs:
job1:
name: Docker Image CI
runs-on: ubuntu-latest

steps:
- name: Checkout
uses: actions/checkout@v3

- name: Login to DockerHub
uses: docker/[email protected]
with:
username: ${{secrets.DOCKERHUB_USERNAME}}
password: ${{secrets.DOCKERHUB_TOKEN}}

- name: Build and push Docker images
uses: docker/[email protected]
with:
context: .
tags: hou27/test_quickchive_backend:latest
push: true
job2:
needs: job1
name: Deploy to EC2
runs-on: quickchive-server

steps:
- name: executing remote ssh commands using password
uses: appleboy/ssh-action@master
with:
host: ${{ secrets.HOST }}
username: ubuntu
key: ${{ secrets.KEY_PAIR }}
script: |
sh /home/ubuntu/actions-runner/deploy_test_server.sh
2 changes: 1 addition & 1 deletion .github/workflows/ci-cd.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ name: Docker Image CI && Deploy to EC2

on:
push:
branches: ['develop']
branches: ['master']
# pull_request:
# branches: ['develop']

Expand Down
6 changes: 6 additions & 0 deletions Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ FROM node:16.13.1-alpine3.15 AS builder
## make work directory and copy files
WORKDIR /app
COPY . .

## project dependency install
RUN rm -rf dist && npm install
RUN npm run build
Expand All @@ -11,5 +12,10 @@ FROM node:16.13.1-alpine3.15
WORKDIR /usr/src/app
COPY --from=builder /app ./

# Timezone setting

## install tzdata package for timezone setting
RUN apk add tzdata && ln -snf /usr/share/zoneinfo/Asia/Seoul /etc/localtime

EXPOSE 4000
CMD npm run start:prod
123 changes: 88 additions & 35 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,57 +1,110 @@
# Quickchive Backend

![GitHub release (latest by date)](https://img.shields.io/github/v/release/quickchive/quickchive-backend?style=flat-square)
![deploy](https://github.com/Quickchive/quickchive-backend/actions/workflows/ci-cd.yml/badge.svg)

## Description

> Quickchive ์„œ๋น„์Šค์˜ Backend Repository์ž…๋‹ˆ๋‹ค.
[Quickchive](https://quickchive.swygbro.com/)
[Quickchive Frontend](https://github.com/Quickchive/Quickchive-frontend)

# v0.1.0

> releated with quickchive version 1.0
<br/>

## :open_file_folder: ํ”„๋กœ์ ํŠธ ๊ฐœ์š”

- ์ฝ์–ด๋‘ฌ์•ผ ํ•  ์•„ํ‹ฐํด ๋งํฌ, ์ฐธ์„ํ•ด์•ผ ํ•˜๋Š” ์„ธ๋ฏธ๋‚˜ ๋งํฌ, ๋ด๋‘ฌ์•ผ ํ•  ์˜์ƒ๋งํฌ ๋“ฑ ์ž๊ธฐ๊ฐœ๋ฐœ์„ ์œ„ํ•ด ์ฝ์–ด๋‘๊ณ  ์•Œ์•„์•ผ ํ•  ๋งํฌ๋ฅผ ๋ถ„๋ฅ˜ํ•ด์„œ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋Š” ๋ถ๋งˆํฌ ์„œ๋น„์Šค์ž…๋‹ˆ๋‹ค.

<br/>

## :people_holding_hands: ๋Œ€์ƒ

- ์—ฌ๋Ÿฌ๊ฐ€์ง€ ์ด์œ ๋กœ ์—ฌ๋Ÿฌ ๊ณณ์—์„œ ๋‹ค์‹œ ๋ณผ ๋ชฉ์ ์œผ๋กœ ์ฝ˜ํ…์ธ ๋ฅผ ์ˆ˜์ง‘ํ•˜๋Š” ์‚ฌ๋žŒ๋“ค

<br/>

## :cloud: ๊ธฐํš ๋ฐฐ๊ฒฝ

### ๋งˆ์ฃผํ•œ ๋ฌธ์ œ

1. **์ €์žฅํ•ด๋‘” ๋ถ๋งˆํฌ๋ฅผ ๋‹ค์‹œ ์ฝ์ง€ ์•Š๋Š” ์‚ฌ๋žŒ๋“ค**: ๊นŒ๋จน๊ฑฐ๋‚˜, ๊ท€์ฐฎ์•„์„œ, ์—ฌ๋Ÿฌ ํ”Œ๋žซํผ์— ์ข‹์•„์š”/์ €์žฅ/์Šคํฌ๋žฉํ˜•ํƒœ๋กœ ์ฝ์„ ๊ฑฐ๋ฆฌ๋ฅผ ์—ฌ๊ธฐ์ €๊ธฐ ๋„๋ ค๋†จ๊ธฐ ๋•Œ๋ฌธ์— ๊ด€๋ฆฌ๊ฐ€ ํž˜๋“ค์–ด ๋‹ค์‹œ ๋ณด์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

2. **๊ธฐ์กด ๋ถ๋งˆํฌ ์„œ๋น„์Šค๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ์‚ฌ๋žŒ๋“ค**: ๊ธฐ๋ณธ ๋ฉ”๋ชจ์•ฑ์„ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜, ์Šคํฌ๋ฆฐ์ƒท ํ˜น์€ ์นด์นด์˜คํ†ก ๋‚˜์—๊ฒŒ ๋ณด๋‚ด๊ธฐ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. ์ด๋กœ ์ธํ•ด ์ €์žฅํ•ด๋‘” ๋ถ๋งˆํฌ๋ฅผ ๋‹ค์‹œ ์ฝ์ง€ ์•Š๋Š”๋‹ค๋Š” 1๋ฒˆ ๋ฌธ์ œ๊ฐ€ ๋‹ค์‹œ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

3. **๋ถ๋งˆํฌํ•ด๋’€๋˜ ์•„ํ‹ฐํด์„ ์ฝ์„ ๋•Œ ๋ถ€๋‹ด๋˜๋Š” ์‚ฌ๋žŒ๋“ค**: ์ฝ์„ ๊ฑฐ๋ฆฌ๊ฐ€ ๋งŽ์•„์„œ ๋ถ€๋‹ด๋œ๊ฑฐ๋‚˜, ์˜์–ด๋ผ์„œ ๋ถ€๋‹ด๋˜๋Š” ๋“ฑ์˜ ์ด์œ ๋กœ ์ฝ์ง€ ์•Š๋Š” ์‚ฌ๋žŒ๋“ค๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

<br>
<p align="center">
<a href="http://nestjs.com/" target="blank"><img src="https://nestjs.com/img/logo_text.svg" width="320" alt="Nest Logo" /></a>
</p>
์œ„์™€ ๊ฐ™์€ ๋ฌธ์ œ๋“ค ํƒ“์— ํ•ญ์ƒ ์ฝ์–ด์•ผ์ง€ ํ•˜๊ณ  ๋‹ค์ง๋งŒ ํ•˜๊ณ , ์ €์žฅํ•œ ์•„ํ‹ฐํด๋งŒ ์Œ“์—ฌ๊ฐ€๋Š” ๋ถ„๋“ค์„ ์œ„ํ•ด
๋ณด๋‹ค ํŽธ๋ฆฌํ•˜๊ณ  ๋น ๋ฅด๊ฒŒ ์•„ํ‹ฐํด๋“ค์„ ๊ด€๋ฆฌํ•˜๊ณ  ๋ณผ ์ˆ˜ ์žˆ๋„๋ก ๋•๊ณ ์ž ๊ธฐํšํ•˜๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

[circleci-image]: https://img.shields.io/circleci/build/github/nestjs/nest/master?token=abc123def456
[circleci-url]: https://circleci.com/gh/nestjs/nest
<br/>
<br/>

<p align="center">A progressive <a href="http://nodejs.org" target="_blank">Node.js</a> framework for building efficient and scalable server-side applications.</p>
<p align="center">
<a href="https://www.npmjs.com/~nestjscore" target="_blank"><img src="https://img.shields.io/npm/v/@nestjs/core.svg" alt="NPM Version" /></a>
<a href="https://www.npmjs.com/~nestjscore" target="_blank"><img src="https://img.shields.io/npm/l/@nestjs/core.svg" alt="Package License" /></a>
# :computer: API ๊ตฌ์กฐ

## Installation
### User API

```bash
$ npm install
```
| URL | method | Usage | Authorization Needed |
| --------------------------- | ------ | -------------------- | -------------------- |
| /api/users/edit | POST | ํ”„๋กœํ•„ ์ˆ˜์ • | O |
| /api/users/reset-password | POST | ๋น„๋ฐ€๋ฒˆํ˜ธ ์žฌ์ƒ์„ฑ | X |
| /api/users/me | GET | ํ”„๋กœํ•„ ์กฐํšŒ | O |
| /api/users/load-contents | GET | ์œ ์ €์˜ ์ฝ˜ํ…์ธ  ์กฐํšŒ | O |
| /api/users/load-favorites | GET | ์œ ์ €์˜ ์ฆ๊ฒจ์ฐพ๊ธฐ ์กฐํšŒ | O |
| /api/users/load-collections | GET | ์œ ์ €์˜ ์ฝœ๋ ‰์…˜ ์กฐํšŒ | O |
| /api/users/load-categories | GET | ์œ ์ €์˜ ์นดํ…Œ๊ณ ๋ฆฌ ์กฐํšŒ | O |

## Running the app
### Auth API

```bash
# development
$ npm run start
| URL | method | Usage | Authorization Needed |
| ------------------------------------------------- | ------ | -------------------------------- | -------------------- |
| /api/auth/register | POST | ํšŒ์›๊ฐ€์ž… | X |
| /api/auth/login | POST | ์ด๋ฉ”์ผ ๋กœ๊ทธ์ธ | X |
| /api/auth/logout | POST | ๋กœ๊ทธ์•„์›ƒ | O |
| /api/auth/reissue | POST | ํ† ํฐ ์žฌ๋ฐœํ–‰ | X |
| /api/auth/send-verify-email/\<str:email\> | GET | ์œ ์ € ์ธ์ฆ์„ ์œ„ํ•œ ๋ฉ”์ผ ์ „์†ก | X |
| /api/auth/send-password-reset-email/\<str:email\> | GET | ๋น„๋ฐ€๋ฒˆํ˜ธ ์žฌ์„ค์ •์„ ์œ„ํ•œ ๋ฉ”์ผ ์ „์†ก | X |
| /api/auth/verify-email | GET | ์ด๋ฉ”์ผ ์ธ์ฆ | X |

# watch mode
$ npm run start:dev
### OAuth API

# production mode
$ npm run start:prod
```
| URL | method | Usage | Authorization Needed |
| ----------------------- | ------ | ----------------------- | -------------------- |
| /api/oauth/kakao-auth | GET | ์นด์นด์˜ค ๊ณ„์ • ๋กœ๊ทธ์ธ ์š”์ฒญ | X |
| /api/oauth/kakao-login | GET | ์นด์นด์˜ค ๋กœ๊ทธ์ธ | X |
| /api/oauth/google-auth | GET | ๊ตฌ๊ธ€ ๊ณ„์ • ๋กœ๊ทธ์ธ ์š”์ฒญ | X |
| /api/oauth/google-login | GET | ๊ตฌ๊ธ€ ๋กœ๊ทธ์ธ | X |

## Test
### Content API

```bash
# unit tests
$ npm run test
| URL | method | Usage | Authorization Needed |
| ---------------------------------------- | ------ | --------------------- | -------------------- |
| /api/contents/add | POST | ์ฝ˜ํ…์ธ  ์ถ”๊ฐ€ | O |
| /api/contents/addMultiple | POST | ๋‹ค์ˆ˜์˜ ์ฝ˜ํ…์ธ  ์ถ”๊ฐ€ | O |
| /api/contents/update | POST | ์ฝ˜ํ…์ธ  ์ •๋ณด ์ˆ˜์ • | O |
| /api/contents/favorite/\<int:contentId> | PATCH | ์ฆ๊ฒจ์ฐพ๊ธฐ ๋“ฑ๋ก ๋ฐ ํ•ด์ œ | O |
| /api/contents/read/\<int:contentId> | PATCH | ์ฝ์—ˆ์Œ ํ‘œ์‹œ | O |
| /api/contents/delete/\<int:contentId> | DELETE | ์ฝ˜ํ…์ธ  ์‚ญ์ œ | O |
| /api/contents/summarize/\<int:contentId> | GET | ์ฝ˜ํ…์ธ  ๋ฌธ์„œ ์š”์•ฝ | O |

# e2e tests
$ npm run test:e2e
### Category API

# test coverage
$ npm run test:cov
```
| URL | method | Usage | Authorization Needed |
| -------------------------------------- | ------ | ------------- | -------------------- |
| /api/category/add | POST | ์นดํ…Œ๊ณ ๋ฆฌ ์ถ”๊ฐ€ | O |
| /api/category/update | POST | ์นดํ…Œ๊ณ ๋ฆฌ ์ˆ˜์ • | O |
| /api/category/delete/\<int:categoryId> | DELETE | ์นดํ…Œ๊ณ ๋ฆฌ ์‚ญ์ œ | O |

## Support
### Collection API

Nest is an MIT-licensed open source project. It can grow thanks to the sponsors and support by the amazing backers. If you'd like to join them, please [read more here](https://docs.nestjs.com/support).
| URL | method | Usage | Authorization Needed |
| --------------------------------------------- | ------ | --------------------- | -------------------- |
| /api/collections/add | POST | ์ฝœ๋ ‰์…˜ ์ถ”๊ฐ€ | O |
| /api/collections/update | POST | ์ฝœ๋ ‰์…˜ ์ˆ˜์ • | O |
| /api/collections/favorite/\<int:collectionId> | PATCH | ์ฆ๊ฒจ์ฐพ๊ธฐ ๋“ฑ๋ก ๋ฐ ํ•ด์ œ | O |
| /api/collections/delete/\<int:contentId> | DELETE | ์ฝœ๋ ‰์…˜ ์‚ญ์ œ | O |

## License

Expand Down
65 changes: 61 additions & 4 deletions Wiki/CI_CD.md
Original file line number Diff line number Diff line change
Expand Up @@ -59,16 +59,17 @@ steps:
> ec2 ์ธ์Šคํ„ด์Šค ๋‚ด์— ์Šคํฌ๋ฆฝํŠธ ํŒŒ์ผ ์ƒ์„ฑ
> ์ด์ „ ๋ฒ„์ „์˜ docker container์™€ docker image๋ฅผ ์‚ญ์ œํ•œ ํ›„ docker hub์— job1์„ ํ†ตํ•ด ์—…๋กœ๋“œํ•œ image๋ฅผ pullํ•˜์—ฌ
> ํ•ด๋‹น ์ด๋ฏธ์ง€๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋‹ค์‹œ ec2 ์ธ์Šคํ„ด์Šค์—์„œ docker compose ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹ค์„ฑ ๋ฐ ์‹คํ–‰ํ•œ๋‹ค.
> ํ•ด๋‹น ์ด๋ฏธ์ง€๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋‹ค์‹œ ec2 ์ธ์Šคํ„ด์Šค์—์„œ docker ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ƒ์„ฑ ๋ฐ ์‹คํ–‰ํ•œ๋‹ค.
```sh
# !/bin/bash
docker ps -a | grep quickchive_backend:latest | awk '{print$1}' | xargs -t -I % docker rm -f % && docker image ls | grep quickchive | awk '{print$3}' | xargs -I % docker rmi %
cd ~ubuntu && docker-compose up -d
docker ps -a | grep hou27/quickchive_backend | awk '{print$1}' | xargs -t -I % docker rm -f % && docker image ls | grep hou27/quickchive_backend | awk '{print$3}' | xargs -I % docker rmi %
docker pull hou27/quickchive_backend
cd ~ubuntu && docker run -d --name api-server -p 80:4000 --network ubuntu_shared-network -e NODE_ENV=prod --env-file .env.prod hou27/quickchive_backend
```

- ๊ธฐ์กด ์ปจํ…Œ์ด๋„ˆ ์‚ญ์ œ, ์ด๋ฏธ์ง€ ์‚ญ์ œ ํ›„
docker-compose up ์‹คํ–‰
docker container ์‹คํ–‰

# ์ „์ฒด github action workflow๋ฅผ ์ •์˜ํ•œ ํŒŒ์ผ

Expand Down Expand Up @@ -118,3 +119,59 @@ jobs:
script: |
sh /home/ubuntu/actions-runner/deploy.sh
```
## ci-cd-for-test.yml
```yaml
name: Docker Image CI && Deploy to EC2 for Test Server

on:
push:
branches: ['release/**']

jobs:
job1:
name: Docker Image CI
runs-on: ubuntu-latest

steps:
- name: Checkout
uses: actions/checkout@v3

- name: Login to DockerHub
uses: docker/[email protected]
with:
username: ${{secrets.DOCKERHUB_USERNAME}}
password: ${{secrets.DOCKERHUB_TOKEN}}

- name: Build and push Docker images
uses: docker/[email protected]
with:
context: .
tags: hou27/test_quickchive_backend:latest
push: true
job2:
needs: job1
name: Deploy to EC2
runs-on: quickchive-server

steps:
- name: executing remote ssh commands using password
uses: appleboy/ssh-action@master
with:
host: ${{ secrets.HOST }}
username: ubuntu
key: ${{ secrets.KEY_PAIR }}
script: |
sh /home/ubuntu/actions-runner/deploy_test_server.sh
```
> deploy.sh๋Š” ๋ฐฐํฌ ์„œ๋ฒ„์šฉ์ด์—ˆ๋‹ค๋ฉด,
> deploy_test_server.sh๋Š” ํ…Œ์ŠคํŠธ ์„œ๋ฒ„์šฉ.
```sh
# !/bin/bash
docker ps -a | grep test-api-server | awk '{print$1}' | xargs -t -I % docker rm -f % && docker image ls | grep test_quickchive | awk '{print$3}' | xargs -I % docker rmi %
docker pull hou27/test_quickchive_backend
cd ~ubuntu && docker run -d --name test-api-server -p 3000:4000 --network ubuntu_shared-network -e NODE_ENV=test --env-file .env.test hou27/test_quickchive_backend
```
42 changes: 42 additions & 0 deletions Wiki/Docker-Compose.md
Original file line number Diff line number Diff line change
Expand Up @@ -43,3 +43,45 @@ networks:
```
> api + redis + postgresql
<br>
### ๋ฐฐํฌ ์„œ๋ฒ„์™€ ํ…Œ์ŠคํŠธ ์„œ๋ฒ„๋ฅผ ํ•˜๋‚˜์˜ ec2 ๋‚ด์— ๊ตฌ์ถ•ํ•œ ํ›„์˜ docker-compose ํŒŒ์ผ
- api server๋ฅผ ์ œ์™ธํ•œ ๋‚˜๋จธ์ง€ ๋‘˜๋งŒ ์˜ฌ๋ฆฌ๋„๋ก ํ•จ.
```yaml
version: '2'

services:
redis: # Name of container
image: redis:latest
restart: always
ports:
- 6379:6379
networks:
- shared-network
postgres: # Name of container
image: postgres:alpine
restart: always
env_file:
- .env.prod
environment:
POSTGRES_HOST_AUTH_METHOD: 'trust'
ports:
- 5432:5432
networks:
- shared-network
networks:
shared-network:
driver: bridge
```
api server๋ฅผ ์ด docker compose ํŒŒ์ผ๋กœ ์˜ฌ๋ฆฐ redis, postgreSQL ์„œ๋ฒ„์™€ ์—ฐ๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด์„ 
์‹คํ–‰ ์‹œ network์— ์—ฐ๊ฒฐํ•ด์ฃผ์–ด์•ผ ํ•œ๋‹ค.
ex)
```sh
docker run -d --name test-api-server -p 3000:4000 --network [docker compose ํŒŒ์ผ๋กœ ์ƒ์„ฑ๋œ ๋„คํŠธ์›Œํฌ] --env-file .env.prod hou27/quickchive_backend
```
1 change: 1 addition & 0 deletions Wiki/ENV.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ DB_PORT=
POSTGRES_DB=
POSTGRES_USER=
POSTGRES_PASSWORD=
POSTGRES_DB_NAME=
KAKAO_REST_API_KEY=
KAKAO_REDIRECT_URI_LOGIN=
KAKAO_CLIENT_SECRET=
Expand Down
42 changes: 42 additions & 0 deletions Wiki/HISTORY.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
# HISTORY

# v0.1.0

## ๐Ÿš€ Added

> MVP
1. User

- ๋กœ๊ทธ์ธ: OAuth(๊ตฌ๊ธ€๋กœ๊ทธ์ธ, ์นด์นด์˜ค๋กœ๊ทธ์ธ), ์ด๋ฉ”์ผ ๋กœ๊ทธ์ธ(์ž์ฒด ๋กœ๊ทธ์ธ ๊ธฐ๋Šฅ)
- ์ž๋™๋กœ๊ทธ์ธ ์ •์ฑ…: ํ•œ๋‹ฌ ๋™์•ˆ ์ ‘์†ํ•˜์ง€ ์•Š์•„๋„ ๋กœ๊ทธ์ธ ์œ ์ง€ - refresh token ํ™œ์šฉ(๋งŒ๋ฃŒ ๊ธฐ๊ฐ„ ํ•œ๋‹ฌ)
- ํšŒ์›๊ฐ€์ž…(์ด๋ฉ”์ผ ์ธ์ฆ๋ฐฉ์‹)
- ํšŒ์›๊ฐ€์ž… ์‹œ ๋ฐ›๋Š” ์ •๋ณด: ์ด๋ฉ”์ผ(๋ฉ”์ผ๋กœ ์ธ์ฆํ•„์ˆ˜), ๋‹‰๋„ค์ž„, ๋น„๋ฐ€๋ฒˆํ˜ธ(8์ž ์ด์ƒ ๋ฌธ์ž, ์ˆซ์ž)
- ๋‹‰๋„ค์ž„ ์ˆ˜์ •
- ๋น„๋ฐ€๋ฒˆํ˜ธ ์žฌ์„ค์ •
- ๋กœ๊ทธ์•„์›ƒ
- ํšŒ์› ํƒˆํ‡ด

2. Content

- ์ €์žฅ: ์ฝ˜ํ…์ธ  ์ด๋ฆ„, \*URL, ๋ฉ”๋ชจ, ์นดํ…Œ๊ณ ๋ฆฌ, ์ฆ๊ฒจ์ฐพ๊ธฐ, ์ฝ์„ ๊ธฐํ•œ
- ์‚ญ์ œ
- ์ˆ˜์ •: ์ฝ˜ํ…์ธ  ์ด๋ฆ„, ๋ฉ”๋ชจ, ์นดํ…Œ๊ณ ๋ฆฌ, ์ฆ๊ฒจ์ฐพ๊ธฐ, ์ฝ์„ ๊ธฐํ•œ

3. Collection

- ์ €์žฅ: \*์ฝœ๋ ‰์…˜ ์ด๋ฆ„, ์ฝœ๋ ‰์…˜ ์„ค๋ช…, URL, ์นดํ…Œ๊ณ ๋ฆฌ, ์ฆ๊ฒจ์ฐพ๊ธฐ
- ์‚ญ์ œ
- ์ˆ˜์ •: ์ฝ˜ํ…์ธ  ์ด๋ฆ„, URL(์ถ”๊ฐ€, ์‚ญ์ œ, ์ˆœ์„œ ๋ณ€๊ฒฝ), ์นดํ…Œ๊ณ ๋ฆฌ, ์ฝ์„ ๊ธฐํ•œ

4. ์•Œ๋ฆผ

- ์ฝ์„ ๊ธฐํ•œ ์•Œ๋ฆผ: ๋งค์ผ 08:00 KST์— ์ฝ์„ ๊ธฐํ•œ ๋งŒ๋ฃŒ๋œ ์ฝ˜ํ…์ธ ์— ๋Œ€ํ•œ ๋ฉ”์ผ ์•Œ๋ฆผ ์ „์†ก

## ๐Ÿ“ Changed

None

## :no_entry_sign: Removed

None
Loading

0 comments on commit 3a43a6e

Please sign in to comment.