From 341334843f022f17ca2d4c27fc8348f4b76a4007 Mon Sep 17 00:00:00 2001
From: HKLeeeee <dlapdlf1739@gmail.com>
Date: Tue, 12 Dec 2023 19:24:19 +0900
Subject: [PATCH 1/7] =?UTF-8?q?fix:=20[BE]=20=ED=9A=8C=EC=9B=90=20?=
 =?UTF-8?q?=EA=B0=80=EC=9E=85=EC=8B=9C=20=ED=8A=B8=EB=9E=9C=EC=9E=AD?=
 =?UTF-8?q?=EC=85=98=20=EC=88=98=EC=A0=95?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 backEnd/api/src/auth/auth.controller.ts       |  6 ++--
 .../common/transaction/transaction.service.ts | 32 +++++++++++--------
 backEnd/api/src/users/users.service.ts        | 12 ++++++-
 3 files changed, 31 insertions(+), 19 deletions(-)

diff --git a/backEnd/api/src/auth/auth.controller.ts b/backEnd/api/src/auth/auth.controller.ts
index 758d7ce..3e05f52 100644
--- a/backEnd/api/src/auth/auth.controller.ts
+++ b/backEnd/api/src/auth/auth.controller.ts
@@ -52,8 +52,7 @@ export class AuthController {
     const user: UserDto = await this.googleService.getUserInfo(id_token);
     let findUser = await this.userService.findUser(user);
     if (findUser === null) {
-      await this.userService.addUser(user, 'google');
-      findUser = await this.userService.findUser(user);
+      findUser = await this.userService.getUserAfterAddUser(user, 'google');
     }
     const returnTo: string = await this.authService.login(findUser, res, req);
     return res.redirect(returnTo);
@@ -84,8 +83,7 @@ export class AuthController {
     const user: UserDto = await this.githubService.getUserInfo(accessToken);
     let findUser = await this.userService.findUser(user);
     if (findUser === null) {
-      await this.userService.addUser(user, 'github');
-      findUser = await this.userService.findUser(user);
+      findUser = await this.userService.getUserAfterAddUser(user, 'github');
     }
     const returnTo: string = await this.authService.login(findUser, res, req);
 
diff --git a/backEnd/api/src/common/transaction/transaction.service.ts b/backEnd/api/src/common/transaction/transaction.service.ts
index 1f40328..ee14f59 100644
--- a/backEnd/api/src/common/transaction/transaction.service.ts
+++ b/backEnd/api/src/common/transaction/transaction.service.ts
@@ -58,20 +58,24 @@ export class TransactionService implements OnModuleInit {
     return async function (...args: any[]) {
       const qr = await dataSource.createQueryRunner();
 
-      await queryRunnerLocalStorage.run({ qr }, async function () {
-        try {
-          await qr.startTransaction();
-          const result = await originalMethod.apply(instance, args);
-          await qr.commitTransaction();
-          return result;
-        } catch (e) {
-          await qr.rollbackTransaction();
-          this.logger.error(e);
-          throw new TransactionRollback();
-        } finally {
-          await qr.release();
-        }
-      });
+      const result = await queryRunnerLocalStorage.run(
+        { qr },
+        async function () {
+          try {
+            await qr.startTransaction();
+            const result = await originalMethod.apply(instance, args);
+            await qr.commitTransaction();
+            return result;
+          } catch (e) {
+            await qr.rollbackTransaction();
+            this.logger.error(e);
+            throw new TransactionRollback();
+          } finally {
+            await qr.release();
+          }
+        },
+      );
+      return result;
     };
   }
 
diff --git a/backEnd/api/src/users/users.service.ts b/backEnd/api/src/users/users.service.ts
index 1478318..db17606 100644
--- a/backEnd/api/src/users/users.service.ts
+++ b/backEnd/api/src/users/users.service.ts
@@ -15,13 +15,23 @@ export class UsersService {
     private usersRepository: Repository<UserEntity>,
   ) {}
   @Transactional('typeorm')
-  async addUser(userDTO: UserDto, oauth: OAUTH) {
+  async getUserAfterAddUser(
+    userDTO: UserDto,
+    oauth: OAUTH,
+  ): Promise<UserEntity> {
     const user = new UserEntity();
     user.name = userDTO.name;
     user.authServiceID = userDTO.authServiceID;
     user.oauth = oauth;
     const repository = getLocalStorageRepository(UserEntity);
     await repository.save<UserEntity>(user);
+
+    const find = await repository.findOne({
+      where: {
+        authServiceID: userDTO.authServiceID,
+      },
+    });
+    return find as UserEntity;
   }
 
   async findUser(userDTO: UserDto): Promise<UserEntity> {

From cd51668568ce5801b94849855cf010ddd573f704 Mon Sep 17 00:00:00 2001
From: HKLeeeee <dlapdlf1739@gmail.com>
Date: Tue, 12 Dec 2023 19:55:47 +0900
Subject: [PATCH 2/7] =?UTF-8?q?fix:=20[BE]=20=ED=8A=B8=EB=9E=9C=EC=9E=AD?=
 =?UTF-8?q?=EC=85=98=20=EB=A7=A4=EB=8B=88=EC=A0=80=20logger=20=EC=A0=9C?=
 =?UTF-8?q?=EA=B1=B0?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 backEnd/api/src/auth/auth.controller.ts                   | 6 ++++++
 backEnd/api/src/common/transaction/transaction.service.ts | 1 -
 2 files changed, 6 insertions(+), 1 deletion(-)

diff --git a/backEnd/api/src/auth/auth.controller.ts b/backEnd/api/src/auth/auth.controller.ts
index 3e05f52..735a892 100644
--- a/backEnd/api/src/auth/auth.controller.ts
+++ b/backEnd/api/src/auth/auth.controller.ts
@@ -51,9 +51,12 @@ export class AuthController {
     const id_token: string = await this.googleService.getIDToken(code);
     const user: UserDto = await this.googleService.getUserInfo(id_token);
     let findUser = await this.userService.findUser(user);
+    this.logger.error(JSON.stringify(findUser));
     if (findUser === null) {
       findUser = await this.userService.getUserAfterAddUser(user, 'google');
     }
+    this.logger.error(JSON.stringify(findUser));
+
     const returnTo: string = await this.authService.login(findUser, res, req);
     return res.redirect(returnTo);
   }
@@ -82,9 +85,12 @@ export class AuthController {
     const accessToken = await this.githubService.getGithubAccessToken(code);
     const user: UserDto = await this.githubService.getUserInfo(accessToken);
     let findUser = await this.userService.findUser(user);
+    this.logger.error(JSON.stringify(findUser));
     if (findUser === null) {
       findUser = await this.userService.getUserAfterAddUser(user, 'github');
     }
+    this.logger.error(JSON.stringify(findUser));
+
     const returnTo: string = await this.authService.login(findUser, res, req);
 
     return res.redirect(returnTo);
diff --git a/backEnd/api/src/common/transaction/transaction.service.ts b/backEnd/api/src/common/transaction/transaction.service.ts
index ee14f59..ea9c284 100644
--- a/backEnd/api/src/common/transaction/transaction.service.ts
+++ b/backEnd/api/src/common/transaction/transaction.service.ts
@@ -68,7 +68,6 @@ export class TransactionService implements OnModuleInit {
             return result;
           } catch (e) {
             await qr.rollbackTransaction();
-            this.logger.error(e);
             throw new TransactionRollback();
           } finally {
             await qr.release();

From 7cac05d4798850a65a9c583f16254793ebf6306f Mon Sep 17 00:00:00 2001
From: HKLeeeee <dlapdlf1739@gmail.com>
Date: Wed, 13 Dec 2023 13:29:43 +0900
Subject: [PATCH 3/7] =?UTF-8?q?chore:=20[BE]=20=EA=B8=B0=EC=88=A0=EC=A0=81?=
 =?UTF-8?q?=20=EB=8F=84=EC=A0=84=20=EB=B3=80=EA=B2=BD?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 README.md | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/README.md b/README.md
index 30b7633..b6d74fd 100644
--- a/README.md
+++ b/README.md
@@ -5,6 +5,8 @@
 <h3>동료들과 함께 소통하며 알고리즘 학습을 할 수 있는 플랫폼</h3>
 <h5>🗝️ KeyWords<h5>
 #WebRTC #Socket #CRDT 
+
+
 <br>
 <div align="center">
     <img src="https://img.shields.io/badge/node-339933?&logo=node.js&logoColor=white">
@@ -94,8 +96,6 @@ Pub/Sub을 활용해 다중 서버 환경에서도 채팅을 할 수 있습니
   - 429 Error 및 InMemory 용량부족 해결 과정 (16만건 처리에 걸리는 시간 64% 감소)
 - [도커 이미지 최적화](https://energetic-palm-634.notion.site/f35c15bc99a842a18ce095fa6bf1c806?v=efbb8ec67beb43b89792200fc1f3c9a1&pvs=4)
   - 도커 이미지 사이즈 85% 감소시킨 이야기
-- [서버에서 OAuth 처리하여 자원 보호하기](https://energetic-palm-634.notion.site/69f2e78273884a65b52c370debb83073?v=2b272ead31924af59732edbda24cef84&pvs=4)
-    - OAuth2.0을 도입하고 안전하게 자원을 관리하는 이야기
 
 # 🔎 개발기
 개발하면서 공부한 내용들과 고민 과정, 이유, 해결 방법을 기록했습니다.
@@ -112,8 +112,8 @@ Pub/Sub을 활용해 다중 서버 환경에서도 채팅을 할 수 있습니
 - [Transaction 관심사 분리하기](https://energetic-palm-634.notion.site/AsyncLocalStorage-Transaction-34f42523c0ec43f4b633eb7944c0b29d?pvs=4)
 - [SSL Termination을 통해 안전하게 HTTP 통신하기](https://energetic-palm-634.notion.site/SSL-Termination-HTTP-70c76949740f4452a2899fa1e617628a?pvs=4)
 - [Blue-Green으로 무중단 배포하기](https://energetic-palm-634.notion.site/57396ff1e3174251ba2c7487ab070a53?pvs=4)
-- [Clove X 도입하기](https://www.notion.so/Clova-Studio-d990f41d3e814b708906e64fd4707a24?pvs=4)
-
+- [Clove X 도입하기](https://energetic-palm-634.notion.site/Clova-Studio-d990f41d3e814b708906e64fd4707a24?pvs=4)
+- [서버에서 OAuth 처리하여 자원 보호하기](https://energetic-palm-634.notion.site/OAuth-2-0-2bc01496ac9c4ed6b0118642c887828d?pvs=4)
 
 [👉 더 많은 기술정리 보러가기](https://www.notion.so/f4562ec49e0245d2b6ef203588c031ea?v=fbfeb754b1a4471e8ffc174a45c64346&pvs=4)
 

From bb19a3ae3504e710dd5e21f3392598d5701fd39a Mon Sep 17 00:00:00 2001
From: HKLeeeee <dlapdlf1739@gmail.com>
Date: Thu, 14 Dec 2023 00:39:45 +0900
Subject: [PATCH 4/7] =?UTF-8?q?fix:=20[BE]=20Kill=20Code=20=EC=B6=94?=
 =?UTF-8?q?=EA=B0=80?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

SIGINT 시그널로 종료했을 때 코드(130)으로 응답하는 경우도 존재함
---
 backEnd/running/src/codes/codes.service.ts | 18 +++++++++++-------
 1 file changed, 11 insertions(+), 7 deletions(-)

diff --git a/backEnd/running/src/codes/codes.service.ts b/backEnd/running/src/codes/codes.service.ts
index b981028..a5cb7d1 100644
--- a/backEnd/running/src/codes/codes.service.ts
+++ b/backEnd/running/src/codes/codes.service.ts
@@ -25,7 +25,8 @@ export class CodesService {
     process.env.NODE_ENV === 'dev'
       ? path.join(__dirname, '..', 'tmp')
       : '/algoitni';
-  private killSignal: NodeJS.Signals = 'SIGINT';
+  private readonly killSignal: NodeJS.Signals = 'SIGINT';
+  private readonly killCode: number = 130;
   private readonly timeOut = 5000;
   constructor() {
     if (!fs.existsSync(this.tempDir)) {
@@ -40,7 +41,6 @@ export class CodesService {
     try {
       fs.writeFileSync(filePath, code);
       const { stdout, stderr } = await this.runCommand(filePaths, language);
-      this.logger.debug(`${stdout}, ${stderr}`);
       if (stderr) {
         throw new RunningException(stderr.trim());
       }
@@ -62,7 +62,6 @@ export class CodesService {
     language: supportLang,
   ): Promise<runCommandResult> {
     const commands = languageCommand(language, filePaths);
-    this.logger.debug(JSON.stringify(commands));
 
     let command;
     if (commands.length > 1) {
@@ -99,10 +98,11 @@ export class CodesService {
           this.logger.log(`child process exited with code ${code}, ${signal}`);
           clearTimeout(timer);
           const out = Buffer.concat(stdout).toString();
-          const err =
-            signal === this.killSignal
-              ? Messages.TIMEOUT
-              : Buffer.concat(stderr).toString();
+          let err = Buffer.concat(stderr).toString();
+          this.logger.log(this.isTimeout(code, signal));
+          if (this.isTimeout(code, signal)) {
+            err = Messages.TIMEOUT;
+          }
           resolve({ stdout: out, stderr: err });
         });
       } catch (e) {
@@ -164,4 +164,8 @@ export class CodesService {
       path.join(this.tempDir, `${uuid}${distExtension}`),
     ];
   }
+
+  isTimeout(code: number, signal: NodeJS.Signals) {
+    return code === this.killCode || signal === this.killSignal;
+  }
 }

From 10a41fc0dfc1bf628dfa6508f62a9e4f6ebf85f8 Mon Sep 17 00:00:00 2001
From: HKLeeeee <dlapdlf1739@gmail.com>
Date: Thu, 14 Dec 2023 12:30:50 +0900
Subject: [PATCH 5/7] =?UTF-8?q?chore:=20README.md=20=EC=88=98=EC=A0=95?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 README.md | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/README.md b/README.md
index b6d74fd..326c488 100644
--- a/README.md
+++ b/README.md
@@ -4,9 +4,7 @@
 
 <h3>동료들과 함께 소통하며 알고리즘 학습을 할 수 있는 플랫폼</h3>
 <h5>🗝️ KeyWords<h5>
-#WebRTC #Socket #CRDT 
-
-
+<p>#WebRTC #Socket #CRDT</p>
 <br>
 <div align="center">
     <img src="https://img.shields.io/badge/node-339933?&logo=node.js&logoColor=white">
@@ -126,8 +124,11 @@ Pub/Sub을 활용해 다중 서버 환경에서도 채팅을 할 수 있습니
 |                                 **Front-End**                                  |                                 **Front-End**                                  |                                 **Back-End**                                 |                                 **Back-End**                                 |
 |                       [@HBSPS](https://github.com/HBSPS)                        |                       [@d0422](https://github.com/d0422)                        |                   [@HKLeeeee](https://github.com/HKLeeeee)                    |                  [@Gseungmin](https://github.com/Gseungmin)                   |
 
+![AlgoITNi](https://github.com/boostcampwm2023/web05-AlgoITNi/assets/84272873/db73a539-bb3f-4cf0-af23-81e23adc6b17)
+
 
 ## 우리가 일하는 방식
+
 - [그라운드 룰](https://energetic-palm-634.notion.site/1f2cbea527e341c7ad1c8fd84ed5104d?pvs=4)
 - [깃 컨벤션](https://energetic-palm-634.notion.site/Git-Convention-8563596644404eb49148a940773d2be8?pvs=4)
 - [게더타운 규칙](https://energetic-palm-634.notion.site/b3b67313c1f748e7b58abf99466b000b?pvs=4)

From 8a8aea22355ad86f1882e3c0afa4f95f10b67ef3 Mon Sep 17 00:00:00 2001
From: HKLeeeee <dlapdlf1739@gmail.com>
Date: Thu, 14 Dec 2023 12:40:59 +0900
Subject: [PATCH 6/7] =?UTF-8?q?refactor:=20[BE]=20=EB=B6=88=ED=95=84?=
 =?UTF-8?q?=EC=9A=94=ED=95=9C=20=EB=A1=9C=EA=B7=B8=20=EC=82=AD=EC=A0=9C?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 backEnd/running/src/codes/codes.service.ts | 1 -
 1 file changed, 1 deletion(-)

diff --git a/backEnd/running/src/codes/codes.service.ts b/backEnd/running/src/codes/codes.service.ts
index a5cb7d1..5afa818 100644
--- a/backEnd/running/src/codes/codes.service.ts
+++ b/backEnd/running/src/codes/codes.service.ts
@@ -99,7 +99,6 @@ export class CodesService {
           clearTimeout(timer);
           const out = Buffer.concat(stdout).toString();
           let err = Buffer.concat(stderr).toString();
-          this.logger.log(this.isTimeout(code, signal));
           if (this.isTimeout(code, signal)) {
             err = Messages.TIMEOUT;
           }

From 37d3a4e13b035f9429a42efaa43db1f0a1d67fc0 Mon Sep 17 00:00:00 2001
From: Ji Seungmin <cswcsm02@gmail.com>
Date: Thu, 14 Dec 2023 14:58:20 +0900
Subject: [PATCH 7/7] =?UTF-8?q?fix:=20[BE]=20AI=20=EC=B1=84=ED=8C=85?=
 =?UTF-8?q?=EC=8B=9C=20room=EC=97=90=20=EB=8C=80=ED=95=9C=20=EC=A0=95?=
 =?UTF-8?q?=EB=B3=B4=EB=8F=84=20pub?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 backEnd/chat/src/chat/chat.gateway.ts | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/backEnd/chat/src/chat/chat.gateway.ts b/backEnd/chat/src/chat/chat.gateway.ts
index 31af41e..8553ad5 100644
--- a/backEnd/chat/src/chat/chat.gateway.ts
+++ b/backEnd/chat/src/chat/chat.gateway.ts
@@ -120,7 +120,7 @@ export class ChatGateway implements OnGatewayConnection, OnGatewayDisconnect {
       try {
         await this.publisherClient.publish(
           SOCKET.REDIS_CHAT_CHANEL,
-          JSON.stringify({ using: true }),
+          JSON.stringify({ room: room, using: true }),
         );
 
         const llmMessageDto: LLMMessageDto = await this.processAIResponse(