Skip to content

Commit

Permalink
merge
Browse files Browse the repository at this point in the history
  • Loading branch information
uuuo3o committed Dec 4, 2024
2 parents 967bb2f + aee7d39 commit c3cf551
Show file tree
Hide file tree
Showing 4 changed files with 33 additions and 24 deletions.
6 changes: 4 additions & 2 deletions BE/src/auth/auth.controller.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ import { Request, Response } from 'express';
import { ConfigService } from '@nestjs/config';
import { AuthService } from './auth.service';
import { AuthCredentialsDto } from './dto/auth-credentials.dto';
import { OptionalAuthGuard } from './optional-auth-guard';

@Controller('/api/auth')
export class AuthController {
Expand Down Expand Up @@ -83,13 +84,14 @@ export class AuthController {

@ApiOperation({ summary: '로그인 상태 확인 API' })
@Get('/check')
@UseGuards(AuthGuard('jwt'))
@UseGuards(OptionalAuthGuard)
@ApiResponse({
status: 200,
description: '로그인 상태 조회 성공',
example: { isLogin: true },
})
check() {
check(@Req() req: Request) {
if (!req.user) return { isLogin: false };
return { isLogin: true };
}

Expand Down
3 changes: 2 additions & 1 deletion BE/src/common/websocket/base-socket.domain-service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -47,11 +47,12 @@ export class BaseSocketDomainService implements OnModuleInit {

if (data.length < 2) {
const json = JSON.parse(data[0]);
if (json.body)
if (json.body) {
this.logger.log(
`한국투자증권 웹소켓 연결: ${json.body.msg1}`,
json.header.tr_id,
);
}
if (json.header.tr_id === 'PINGPONG')
this.socket.pong(JSON.stringify(json));
return;
Expand Down
9 changes: 7 additions & 2 deletions BE/src/stock/trade/history/stock-trade-history.service.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { Injectable } from '@nestjs/common';
import { Injectable, InternalServerErrorException } from '@nestjs/common';
import { KoreaInvestmentDomainService } from '../../../common/koreaInvestment/korea-investment.domain-service';
import { InquireCCNLApiResponse } from './interface/Inquire-ccnl.interface';
import { TodayStockTradeHistoryOutputDto } from './dto/today-stock-trade-history-output.dto';
Expand Down Expand Up @@ -35,7 +35,12 @@ export class StockTradeHistoryService {
queryParams,
);

await this.stockPriceSocketService.subscribeByCode(stockCode);
try {
await this.stockPriceSocketService.subscribeByCode(stockCode);
} catch (e) {
throw new InternalServerErrorException(e);
}

return this.formatTodayStockTradeHistoryData(response.output);
}

Expand Down
39 changes: 20 additions & 19 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
</div>

<div align="center">
<h4>실시간 주식 데이터를 활용해 모의 투자를 경험하고, 친구들과 함께 성장할 수 있는 게임 서비스</h4>
<h4>실시간 주식 데이터를 활용한 모의투자 경험을 통해 주식 투자에 대해 배울 수 있는 서비스</h4>
</div>

---
Expand All @@ -15,13 +15,10 @@
- 처음이라 시작하기가 두려워요.
- 자금이 부족해 다양한 시도를 못 해봤어요.
- 주식의 전반적인 시스템을 공부하고 싶어요.
- 친구와 함께 투자를 시작하고 싶어요.

### 🎯 Juga를 통해 이런 걸 경험하세요!
- 실제 주식 투자 전에 게임으로 먼저 경험해보세요.
- 리스크 없이 투자 감각을 키워보세요.
- 친구들과 함께 성장하는 재미를 느껴보세요.
- 경쟁하고 정보도 나누며 더 즐겁게 배워보세요.

### [🚀 시작하기](https://juga.kro.kr/)

Expand All @@ -35,36 +32,40 @@

### 주의사항

- 카카오 로그인 기능은 현재 심사 중으로 사용이 불가능합니다.
- 실제 금전적 거래는 이루어지지 않는 모의투자 서비스입니다.

## ⭐️ 프로젝트 기능 소개

### 주식 차트
![화면 기록 2024-11-28 오후 6 40 30](https://github.com/user-attachments/assets/6d36b0d9-2db2-4018-a7f3-2c12fb586fd0)

- 일, 별, 월, 년 단위로 주식 차트를 확인할 수 있습니다.
- 이동평균선 정보를 활용해 해당 주식의 추이를 더 자세히 확인할 수 있습니다.
- 라이브러리를 사용하지 않고 canvas를 활용해 직접 구현했습니다.

### 로그인
![image (14)](https://github.com/user-attachments/assets/9968ef08-cbf8-41fd-bfdc-8ca25dd8d80c)
### 메인 페이지
<img src="https://github.com/user-attachments/assets/abb04197-ae88-4877-be53-2ca71ad3e57b" width="800" />

- 로그인 모달창에서 로그인을 할 수 있습니다.
- 카카오 oAuth 로그인으로 간편하게 로그인할 수 있습니다.
- 메인 페이지에서 코스피, 코스닥 등 실시간 주가 지수를 확인할 수 있습니다.
- 상승률/하락률 TOP5 종목을 주가지수 별로 확인할 수 있습니다.
- 오늘 실시간 주요 뉴스를 확인할 수 있습니다.

### 주식 상세 페이지
<img src="https://github.com/user-attachments/assets/14ed36ae-085e-4899-a314-8ece85236a55" width="800" />

### 랭킹
![image (15)](https://github.com/user-attachments/assets/251821a9-63d9-4f23-9178-2f8f3d8c608d)
- 해당 주식에 대한 정보를 차트로 확인할 수 있습니다.
- 일별, 실시간 시세를 확인할 수 있습니다.
- 매수, 매도 요청을 할 수 있습니다.

- 하루 단위로 랭킹이 갱신됩니다.
- 수익률순, 자산순을 기준으로 랭킹을 확인할 수 있습니다.
- 자신의 오늘 랭킹을 확인할 수 있습니다.
### 주식 차트
<img src="https://github.com/user-attachments/assets/6d36b0d9-2db2-4018-a7f3-2c12fb586fd0" width="800" />

- 일, 주, 월, 년 단위로 주식 차트를 확인할 수 있습니다.
- 이동평균선 정보를 활용해 해당 주식의 추이를 더 자세히 확인할 수 있습니다.
- 라이브러리를 사용하지 않고 canvas를 활용해 직접 구현했습니다.
- [라이브러리 없이 구현한 이유](https://github.com/boostcampwm-2024/web16-JuGa/wiki/라이브러리-없이-차트를-직접-구현한-이유)

## 🏛️ 소프트웨어 아키텍처
<img width="2336" alt="소프트웨어 아키텍처 3 0" src="https://github.com/user-attachments/assets/3e4d5e3c-3fc5-44a5-8a8e-77bd704e22f2">

- 한국투자증권 웹소켓은 한 계좌 당 41개의 종목에 대한 구독만을 유지할 수 있기 때문에, 최대한 많은 구독을 가능하게 하기 위한 방법으로 `Load Balancing`을 선택했습니다.
- 서버의 각 컨테이너는 모두 다른 계좌로 연결되어 총 `41*3`개의 구독을 유지할 수 있습니다.
- 추가로, redis의 pub/sub을 활용하여 서로 다른 서버로 요청이 들어오더라도 같은 종목에 대한 구독은 하나의 서버에서만 관리하도록 구현해 구독 자원을 최대한 절약하도록 했습니다.

## 🧑🏻 팀원 소개
| 🖥️ Web FE | ⚙️ Web BE | ⚙️ Web BE | 🖥️ Web FE | ⚙️ Web BE |
Expand Down

0 comments on commit c3cf551

Please sign in to comment.