예정된 다음 일정 분석 Flow Chart - Hot-stock/backend GitHub Wiki
시나리오
사용자가 화면에서 특정 종목을 검색하면, 해당 종목과 오늘 날짜를 기준으로 앞으로 예정된 일정이 포함된 뉴스를 불러옵니다. 요청 방법에는 날짜를 포함하여 요청하는 방식과 날짜를 포함하지 않고 요청하는 방식이 있습니다. 요청 방식에는 날짜를 포함한 요청과 날짜를 미포함한 방식을 사용합니다.
1. 날짜 없이 요청
주식 이름만 입력하여 다음과 같이 요청을 보냅니다. 그러면 당일을 기준으로 앞으로 남은 이벤트들을 반환하게 됩니다.
/api/v0/stock/next-schedule?q=진성티이씨
- 날짜 포함 요청 날짜를 지정하여 다음과 같이 요청을 보냅니다. 그러면 해당 일(2024-11-07)을 기준으로 앞으로 남은 이벤트들을 반환하게 됩니다.
/api/v0/stock/next-schedule?q=진성티이씨&date=2024-11-07
프로세스 다이어그램
flowchart LR
A[사용자 요청 - /next-schedule API 호출] -->|주식 이름과 날짜 전달| B[searchNextSchedule 메서드]
B --> C{날짜 유무 확인}
C -->|날짜 없음| D[오늘 날짜로 기본 설정]
C -->|날짜 있음| E[지정된 날짜 사용]
D --> F[findNextSchedule 메서드 호출]
E --> F
F --> G[주식과 차트 정보 검증 - validationStock, validationStockChart]
G -->|차트에 뉴스 없음| H[빈 리스트 반환]
G -->|차트에 뉴스 있음| I[getNextSchedule 호출 - 다음 일정 필터링]
I --> J[필터링된 일정 리스트 반환]
J --> K[QueryToFindRaiseReasonResponseDTO 생성]
K --> L[응답 반환]
에러 처리 및 예외 상황
주식 일정 조회 요청 단계
- 유효하지 않은 주식 이름: 사용자가 등록되지 않은 주식 이름을 입력하여 조회를 시도할 경우, 서버는 404 Not Found로 응답하며 "찾아진 주식이 없습니다. 주식명을 확인해주세요!"라는 메시지를 반환합니다. 프론트엔드는 이 메시지를 사용자에게 표시하고, 유효한 주식명을 입력하도록 안내합니다.
차트 데이터 조회 단계
- 차트 데이터 없음: 사용자가 유효한 주식을 입력했으나 차트 데이터가 없는 경우, 서버는 404 Not Found로 응답하며 "요청된 주식에 차트 데이터가 없습니다. 차트 데이터 요청 버튼을 클릭해주세요!"라는 메시지를 반환합니다. 프론트엔드는 해당 메시지를 사용자에게 보여주고, 차트 데이터 요청 버튼을 안내합니다.
OHLC 데이터 조회 단계
- OHLC 데이터 없음: 조회 시 특정 날짜의 OHLC 데이터가 존재하지 않을 경우, 서버는 로그에 해당 데이터가 없음을 기록하고, API를 호출하여 데이터를 로드하여 차트에 추가합니다. 프론트엔드에는 별도 오류가 발생하지 않도록 처리합니다.
뉴스 데이터 조회 단계
- 뉴스 데이터 없음: 특정 주식과 날짜에 대한 뉴스 데이터가 없는 경우, 서버는 빈 리스트를 반환하며 "No news found for [주식 이름] [날짜]"를 로그에 기록합니다. 프론트엔드는 사용자에게 “조회 가능한 뉴스 데이터가 없습니다”와 같은 안내 메시지를 표시합니다.
뉴스 데이터 변환 단계
- 유효하지 않은 뉴스 데이터: 서버로부터 수신한 뉴스 데이터에 유효한 게시일 또는 내용이 없을 경우, 해당 데이터는 필터링됩니다. 로그에 "유효하지 않은 뉴스 데이터"로 기록되며, 프론트엔드에는 이 데이터가 전달되지 않습니다.
JSON 변환 오류 처리
- 변환 실패: OHLC 데이터의 JSON 변환 중 오류가 발생하면, 서버는 로그에 오류를 기록하고 빈 리스트를 반환합니다. 프론트엔드에는 빈 데이터가 반환되며 오류 메시지는 표시되지 않습니다.
테스트 케이스
1. 주식 일정 조회 테스트
- 유효한 주식 이름과 날짜를 입력했을 때, 다음 일정이 정상적으로 반환되는지 테스트.
- 유효하지 않은 주식 이름을 입력했을 때, "찾아진 주식이 없습니다" 에러가 발생하는지 테스트.
2. 차트 데이터 조회 테스트
- 유효한 주식 이름으로 차트 데이터가 있는 경우, 정상적으로 차트 데이터를 반환하는지 테스트.
- 차트 데이터가 없는 주식 이름을 입력했을 때, "요청된 주식에 차트 데이터가 없습니다" 에러가 발생하는지 테스트.
3. OHLC 데이터 조회 테스트
- 지정된 날짜에 해당하는 OHLC 데이터가 있는 경우, 데이터를 정상적으로 반환하는지 테스트.
- 지정된 날짜에 OHLC 데이터가 없는 경우, API를 통해 데이터를 자동으로 불러와 추가하는지 테스트.
4. 뉴스 데이터 조회 테스트
- 유효한 주식 이름과 날짜로 조회했을 때, 관련 뉴스 데이터가 정상적으로 반환되는지 테스트.
- 주식 이름과 날짜에 대한 뉴스 데이터가 없을 때, 빈 리스트가 반환되는지 테스트.
5. 뉴스 데이터 변환 테스트
- 유효한 뉴스 데이터를 변환했을 때,
GTPNewsDomain
객체로 정상 변환되는지 테스트. - 유효하지 않은 뉴스 데이터 (게시일이나 내용이 없는 경우) 를 변환할 때, 해당 데이터가 필터링되는지 테스트.