Project

모의 주식 대회 프로젝트에서 잘못된 상태 판단 로직을 수정한 과정

kinim329 2026. 4. 29. 23:17

테이블 구조

모의 주식 대회 서비스의 자산은 현재 아래 두 테이블을 기준으로 구성되어 있다.

Account (계좌)
- account_id
- user_id
- is_ended

Holdings (보유 주식)
- holding_id
- account_id
- stock_code
- quantity
- final_price

하나의 Account 아래에 여러 Holdings가 존재하는 구조

문제 상황

초기 설계에서는 대회 종료 여부(is_ended)를 나타내는 컬럼이 존재하지 않았다.

그래서 Holdings의 값을 기준으로 대회 종료 여부를 판단하려고 했다.

holdings.final_price != 0 → 대회 종료

문제 인식

이 구조의 흐름은 다음과 같다

대회 종료 → final_price 저장 → 조회 시 final_price로 종료 판단

즉 결과 데이터를 기반으로 상태를 역으로 추론하는 구조였다.

문제가 되는 이유

  • final_price는 상태가 아니라 결과값
  • 일부 종목만 업데이트되면 종료 여부 판단이 깨질 수 있음
  • Holdings는 종목 단위
  • 대회 종료는 계좌 단위

해결 방법

대회 종료 여부를 Account에서 직접 저장하도록 변경했다.

account.is_ended = false → 진행 중
account.is_ended = true  → 종료