Releases: chhs2131/dbsgAPI
Releases · chhs2131/dbsgAPI
0.5.4
요약
주요내용
- 외부 API 통신 라이브러리를 WebClient(WebFlux)로 변경
- IPO
- IPO 목록 조회시 이제
특정 기간
을 기준으로 조회합니다. - 이제 같은 날에 발생한 같은 종목에 Comment를 하나의 List로 묶어서 보여줍니다.
- IPO Comment가 날짜순으로 정렬되지 못하던 문제 수정
- IPO 목록 조회시 이제
- JWT 구현 리팩토링
- 카카오 로그인
- 카카오 AccessToken을 통해 정상적으로 로그인될 경우, dbsg server의 token을 발급해주는 기능 추가
- 이후 요청시에 있는 token을 filter에서 확인하여 관련 정보를 인증 contextHolder에 추가함
- 사용되지 않는 패키지 삭제
0.4.1
요약
주요내용
- 시장 및 주식형태에 대한 Enum 클래스 추가 및 관리
- ipo Service Layer에서 검증을 진행하고 예외를 발생시키도록 수정
- controller에서 customException으로 핸들링진행
- IPO Domain Logic 개선
- IpoPaging 객체를 통해 페이징 관련 내용을 전달하도록 함
- Comment Service 및 Mapper(with xml)를 별도로 생성하여 책임 분리 및 가독성 증대
- 신규상장 CommentJson이 정상적으로 처리되지 못하던 문제 수정
- 이제 ipo/schedule 없이 ipo api 호출시 옵션값을 설정하여 SCHEDULE을 조회할 수 있음
- REST 제약 조건을 따르지 않는 URI들을 개선
0.3.3
ipo list
#26 - Ipo List 조건 조회용 Parameter 추가
- client 요청 편의성 및 sql injection 방지 목적
/api/v1/ipo/
state
parameter를 추가해 진행상태에 맞는 종목만 확인 가능withCancelItem
parameter를 추가해 청약철회된 종목도 포함하여 조회 가능
#62 - 공모철회된 항목이 TODAY에 표시되던 문제 수정
- query문 수정하여 해결
#61 - schedule 및 ipo 통합 진행중
- 사용하지 않는
ipoScheduleDto
제거 /api/v1/ipo
에 일정구간 관련 parameter 추가 (사용하진 않음)
comment
#49 - 공모철회 관련 코멘트 표시하도록 수정
- 종목이 상장 철회될 때, 이에 대한 comment를 표시하도록 추가
#59 - comment list 반환 형태 수정
- comment의 각 항목에 대해 열거형 클래스 적용
- comment list 반환 형태 수정
- 기
comment
->title
- 기
commentList
는 단순 List 이였으나 현재 List<IpoCㅇmment> 로 변경- IpoComment는 아래와 같은 형태
- 기
public class IpoComment {
private CommentLevel type; // enum. json 반환시 String 형태임
private String comment;
private String detail;
}
comment list 반환 예시
- 기존 반환 예시
{
"commentIndex": 900,
"ipoIndex": 153,
"writer": "DB_TRIGGER",
"stockName": "와이오엠",
"stockKinds": "실권주",
"comment": "대금 환불일이 변경되었습니다. (2022-12-29) - 외 1건",
"commentList": [
"대금 환불일이 변경되었습니다. (2022-12-29)",
"구주주 청약일이 변경되었습니다. (2022-12-21 ~ 2022-12-22)"
],
"registDate": "2022-10-28"
},
- 변경된 반환 예시
{
"commentIndex": 900,
"ipoIndex": 153,
"writer": "DB_TRIGGER",
"stockName": "와이오엠",
"stockKinds": "실권주",
"title": "일정이 변경되었습니다.",
"commentList": [
{
"type": "SCHEDULE",
"comment": "대금 환불일이 변경되었습니다.",
"detail": "2022-12-29"
},
{
"type": "SCHEDULE",
"comment": "구주주 청약일이 변경되었습니다.",
"detail": "2022-12-21 ~ 2022-12-22"
}
],
"registDate": "2022-10-28"
},
0.3.1 (BUG)
해당 버전에 ipo list 조회 기능에서 버그가 발견되었습니다.
IPO 항목 조회시 RawQuery 대신 Parameter 사용
client 요청 단순화 및 sql injection 방지를 위하여 RawQuery 대신 Parameter를 통하여 입력을 받도록 수정
/api/v1/ipo
- ipo 목록 조회시 검색 변수로
state
,refDate
추가 - state 의 경우
IpoSequence
enum class 에 선언되어있는 항목만 입력으로 받을 수 있음
조회 가능 Case
- ALL, TODAY, BEFOREFORECAST, BEFOREIPO, BEFOREREFUND, BEFOREDEBUT, AFTER DEBUT
- 오늘의 일정, 수요예측 예정, 청약 예정, 환불 예정, 상장 예정, 상장 완료 탭
Exception
아직 구현되지않은 state 사용시 501 error 발생
기타
- Swagger-UI 설명 수정
- CustomException 대응을 위한 ErrorCode II002 추가
0.2.0
CustomResponse(공통반환) 적용완료
정상 반환시 및 사용자 정의 예외 반환시 모두 동일한 반환 Form 을 적용하도록 처리
- api pacakge 아래에 있는 모든 response가 정상반환 될 때 공통반환을 적용함
- 사용자 정의 예외(customException) 발생시 공통반환을 적용함
@RestContrllerAdvice
에서ResponseBodyAdvice
를 override 하여 공통반환 중 정상일 때를 처리함- api를 통한 반환 중 204(no content)가 있을 경우 header를 200으로 변경함
- 단, body 내에 기록되는 status는 204.
"status": "204"
- 단, body 내에 기록되는 status는 204.
공통반환 수정사항
- CustomError를 정의한 ErrorCode 열거형 클래스의 HttpStatus를 구체화함
- 현재 발생 가능한 HttpStatus는 204 또는 404
package 구조 수정
- 역할이 동일하다고 판단되어,
global/error
패키지를global/response
패키지와 합침
공통반환 적용 예시
- 정상 반환
HTTP HEADER 200 OK
{
"status": 200,
"code": "",
"message": "",
"body": [
{
"ipoIndex": 123,
"updateDate": "2022-09-14",
"underName": "NH투자증권",
"indTotalMax": 346423,
"indTotalMin": 288686,
"indCanMax": 0,
"indCanMin": 0,
"subMinQuan": -1,
"subDepositPercent": 50
}
],
"timestamp": "2022-10-07T15:15:14.654"
}
- 예외 반환
HTTP HEADER 200 OK
{
"status": 204,
"code": "IS000",
"message": "조건에 맞는 조회 결과가 없습니다.",
"body": [],
"timestamp": "2022-10-07T14:29:57.62"
}
HTTP HEADER 404 NOT FOUND
{
"status": 404,
"code": "IU000",
"message": "해당하는 결과가 없습니다.",
"body": [],
"timestamp": "2022-10-07T15:15:32.522"
}
버그 수정
ipo/v1/schedule
- 6주 기준 조회시 일부 결과가 나오지 않던 문제 수정
- 결과 수 제한이 30개로 되어있던 것을 100개로 수정
- 6주 기준으로 일정에 해당하는 종목이 약 50개 정도로 추정됨
0.1.1
해당 서버 업데이트는 기존 동작에 영향을 주지 않습니다.
추가 기능
#24 CustomException 환경 조성
- 오류 상황에 대한 RAW 정보를 Client에 노출 최소화 및 해석된 정보 전달을 통한 문제파악에 도움이 목적
- CustomException Class 를 통해 사용자가 지정한 ErrorCode 를 throw 할 수 있음
- 아래 #9 의 형태로 반환 적용
- ErrorCode Enum 예시
// ipo
IPO_LIST_NOT_FOUND_EXCEPTION(NOT_FOUND, "II000", "조건에 맞는 조회 결과가 없습니다."),
IPO_COMMENT_WRONG_PARAMETER_EXCEPTION(BAD_REQUEST, "IC100", "조회 대상이 올바르지 않습니다. (ipo index 오류)"),
// jwt
MALFRMED_JWT_EXCEPTION(NOT_FOUND, "J000", "잘못된 JWT 서명입니다."),
EXPIRED_JWT_EXCEPTION(NOT_FOUND, "J001", "만료된 JWT 토큰입니다.")
;
private final HttpStatus status;
private final String code;
private final String message;
#9 ResponseBody 수정 (공통반환 클래스 작성)
- 공통된 요청반환 형식 지정을 위한 데이터 클래스
- 현재는 사용자 정의 예외 반환 (CustomException Response) 시에만 사용됨
- 일반 API 반환시 ResponseEntity 와 동일하게 기존 DataClass(DTO)를 감싸는 형태이나, ResponseEntity 와는 다르게 Body에 영향을 주게되어 Swagger 반환 형식이 이상해져 확인이 필요한 상태
- CustomException Response Example
{
"status": 404,
"code": "II000",
"message": "조건에 맞는 조회 결과가 없습니다.",
"body": [],
"timestamp": "2022-09-22T15:44:07.6"
}
성능 향상을 위한 리팩토링
#16 JWT Filter 변경
- JWT 토큰 검사를 위한 필터 변경
- 기존 GenericFilter 에서 OncePerRequestFilter 로 변경
- 사용자 요청에 대해 1번만 토큰검사를 진행하여 성능 향상
#36 web mvc html 관련 기능 제거 (템플릿 엔진 등)
- 사용하지 않는 web mvc html 페이지 관련 파일 및 기능 제거
- html 페이지용 controller 제거
- html template engine lib.(dependency) 제거 -> thymeleaf, devtools
- 관련 설정 제거
- auto reload 에 따른 데이터베이스 강제 종료 문제 개선
단순 리팩토링
#40 RequestMapping 구문 대체
- 기존
@RequestMapping
어노테이션 내의 옵션(method)으로 HttpMethod를 지정해주었으나 이를 직관적으로 나타내기 위하여 각 메소드별 매핑을 사용함 @RequestMapping
->@GetMapping
,@PostMapping
,@PutMapping
,@DeleteMapping
...
0.1.0
API
/api/v1/ipo
/comment
조회 방식을 페이징에서 날짜 기준 조회로 변경
- 요청 파라미터 변경
- 기존 ipo_index, page, num
- 변경 ipo_index, startDate, endDate
Swagger
- 스웨거 웹페이지에서 JWT 설정 가능
- 계정 인증 정보를 포함하여 HTTP Request 전송 가능
Refactor
- 패키지 구조 변경
계층형 구조
→도메인형 구조
- 필드 주입 에서 객체 주입으로 변경
@autowired
→@RequiredArgsConstructor
- 설정 파일 분리
- property class 생성 및 secret.yml 파일을 통한 민감 정보 분리
- 테스트용 uri 패키지 제거 (test package)
0.0.13
요약: comment 관련 수정, udnerwriter 반환값 추가, ipo list 정렬 기준 변경
comment
- 이제 comment 리스트 반환시 내용이 없는 오브젝트는 제거되어 반환되지 않습니다.
- comment에서 map value 조회 로직을 수정했습니다. (KrWonFormat Class 신규생성)
- 이제 comment 반환 값 중 숫자관련 값에 지정형식을 적용합니다.
- 종목이 목록에 신규 추가된 날에는 comment가 '신규 상장되었습니다.' 하나만 표시되게 수정
ipo list (schedule)
- ipo list 및 schedule 조회 우선순위 수정 (청약 시작일도 기준점으로 추가)
- 종목 상세정보 조회시 주간사 값이 균일하지않게 나오던 문제 수정
- ipo list 조회 쿼리에 정렬(orderBy) 기준을 변경했습니다.
- underwriter(주간사)에 최소청약수량(subMinQuan), 증거금률(subDepositPercent)가 추가되었습니다.
버전별 변경사항
0.0.11
comment 관련 수정, udnerwriter 반환값 추가, ipo list 정렬 기준 변경
- 이제 comment 리스트 반환시 내용이 없는 오브젝트는 제거되어 반환되지 않습니다.
- comment에서 map value 조회 로직을 수정했습니다. (KrWonFormat Class 신규생성)
- 이제 comment 반환 값 중 숫자관련 값에 지정형식을 적용합니다.
- underwriter(주간사)에 최소청약수량(subMinQuan), 증거금률(subDepositPercent)가 추가되었습니다.
- ipo list 조회 쿼리에 정렬(orderBy) 기준을 변경했습니다.
0.0.12
- ipo list 및 schedule 조회 우선순위 수정 (청약 시작일도 기준점으로 추가)
- 종목 상세정보 조회시 주간사 값이 균일하지않게 나오던 문제 수정
0.0.13
- 종목이 목록에 신규 추가된 날에는 comment가 '신규 상장되었습니다.' 하나만 표시되게 수정
0.0.10
- ipo list
- 더 이상 ipo list(및 schedule)에서 최근 코멘트를 반환하지 않습니다.
- ipo list에서 주간사들을 정확하게 반환합니다. ( 각종 주 에 대한 처리로직 수정)
- '기업인수목적' 회사도 스팩주로 처리합니다.
- 일부 날짜 데이터(regist,update,terminate) 반환 형식이 0000-00-00 으로 수정됩니다.
- 코멘트
- 코멘트에서 영업이익, 매출액 변동값을 (n)원으로 표기하도록 수정됩니다.
- 코멘트 등록 로직에서 주간사(underwriter)도 mapVerify 함수를 사용하도록 수정
- 최소청약수량, 청약증거금비율 항목도 기록되도록 추가
0.0.9 + DB
ipo list 일부 수정 및 comment 기록항목 추가
- ipo list에서 검색조건문(queryString) parameter 추가
- query where 절을 동일하게 사용 (임시)
- ipo list의 최근 comment 조회 방식 수정
- 기존 commentIndex를 통한 db조회에서, 단일 쿼리문을 통한 조회로 수정
- comment에 기록되는 항목 추가
- 구주주 청약일, 자금의 사용목적
※ client측 반환에는 변동사항 x