종목 리스트 PRD
배경 (Background)
목표가 알림·뉴스 시그널·종목 추천을 구현했으나, 앱 전체의 종목 데이터 레이어가 통일되어 있지 않다. 현재는 UI 컴포넌트별로 토스 API를 散발적으로 호출하고, 종목 마스터를 MySQL에 영속화하지 않아 검색·필터·커스텀 필드 추가가 불가능하다. 종목 리스트 기능은 앱 전반에서 종목 데이터를 공급하는 기반(Foundation) 기능이다.
문제 정의 (Define Problem)
AS-IS
- 종목 데이터를 MySQL에 영속화하지 않음 — 매 요청마다 토스 API 호출
- 종목명·코드로 검색하는 전용 UI 없음
- 관심종목 추가 경로가 시그널 탭에만 존재
- 현재가를 보여주는 종목 리스트 화면 없음
- 각 컴포넌트가 가격·종목 정보를 제각각 조회함
TO-BE
- 전체 주식 종목 마스터를 MySQL에 영속화, 토스 API 필드 전부 + 자체 필드 보관
- 종목명·코드 검색 API + 검색 UI
- 관심종목 추가를 리스트 화면에서 바로 가능
- 앱 전체 주식 조회에 동일 데이터 정책 적용 (단일 소스)
- 현재가는 BE 가격 캐시에서 공급 (실시간 처리 전략 → ADR-1 참조)
요구사항 (Requirements)
필수 (Must)
| ID | 요구사항 | 우선순위 |
|---|---|---|
| R-01 | 주식 종목 리스트를 조회할 수 있다. 토스 증권 실시간 차트 형태 참고 | Must |
| R-02 | 종목명 또는 종목 코드로 특정 주식을 검색할 수 있다 | Must |
| R-03 | 토스 API가 제공하는 종목 필드를 전부 MySQL에 영속화한다 | Must |
| R-04 | 자체적으로 개발한 항목(커스텀 필드)을 추가할 수 있는 구조를 갖춘다 | Must |
| R-05 | 종목 리스트에서 관심 항목으로 추가/제거할 수 있다 | Must |
| R-06 | 주식 종목 리스트는 MySQL에 영속화한다 | Must |
| R-07 | 앱에서 보이는 모든 주식 조회는 동일 데이터 정책을 적용한다 | Must |
선택 (Nice to have)
| ID | 요구사항 | 우선순위 |
|---|---|---|
| R-08 | 업종(sector)·거래소(market)별 필터 | Nice to have |
| R-09 | 시가총액 순·등락률 순 정렬 | Nice to have |
사용자 시나리오
시나리오 1 — 종목 리스트 조회 및 관심종목 추가
사용자가 앱의 종목 리스트 탭에 진입하면 종목명·현재가·등락률이 표시된다. 특정 종목(예: 삼성전자) 옆의 ☆ 버튼을 누르면 관심종목에 추가되고 아이콘이 ★로 변경된다. 이후 관심종목 탭에서도 해당 종목이 확인된다.
시나리오 2 — 종목 검색
사용자가 검색창에 “삼성”을 입력하면 삼성 관련 종목 목록이 실시간 필터링되어 표시된다. “005930”처럼 코드를 직접 입력하면 해당 종목이 상단에 노출된다. 검색 결과에서도 관심종목 추가/제거가 가능하다.
수락 기준 (Acceptance Criteria)
| # | 시나리오 | 기준 |
|---|---|---|
| AC-01 | 종목 리스트 화면 진입 | 종목명·현재가·등락률이 표시된다 |
| AC-02 | 검색창에 “삼성” 입력 | 삼성 관련 종목 목록이 실시간 필터된다 |
| AC-03 | 종목 코드 “005930” 입력 | 해당 종목이 상단에 표시된다 |
| AC-04 | 종목 옆 ☆ 버튼 클릭 | 관심종목에 추가되고 ★로 변경된다 |
| AC-05 | 목표가 알림 등록 화면 | 종목 리스트 종목 검색 컴포넌트를 재사용한다 |
| AC-06 | 현재가 갱신 | 최대 30초 지연으로 화면에 반영된다 |
| AC-07 | DB 영속화 | stocks 테이블에 토스 API 전체 필드 + 커스텀 필드가 저장된다 |
고민사항 — 현재가(실시간) 처리 전략
→ ADR-1 에서 결정. 요약: BE 가격 캐시 + 30초 스케줄 갱신 채택.
- 토스 API에 WebSocket·Push 미제공
- 30초 폴링 패턴 사용 중
- 개인 투자 도구 수준에서 최대 30초 지연 허용
범위 외
- 주식 주문·매매 기능
- 1초 미만 실시간 호가창
- 종목 상세 차트 (캔들·볼린저 등 — 별도 과제)
- 사용자 포트폴리오 관리
이해관계자
| 역할 | 이름 |
|---|---|
| 개발·기획 | biuea |
일정
| 단계 | 내용 |
|---|---|
| Wave 1 | DB 스키마 |
| Wave 2 | BE 도메인 + 가격 캐시 |
| Wave 3 | BE API |
| Wave 4 | FE 구현 |