Closed hojunee closed 2 years ago
@handal95 위 API Protocol을 지키기 위해서는 모델 학습 과정에서 config 파일에 해당하는 기업의 정보(ticker)가 담겨야할 것 같은데, 현재는 그냥 open1 이런 형태로 되어있는 것 맞나요?
@beeetea
type TimeState = {
week: number;
day: number;
tick: number;
};
class ChartRequestDto {
gameId: string;
prevTime: TimeState;
nextTime: TimeState;
corps: {
[key: string]: {
increment: number;
buyQuantity: number;
sellQuantity: number;
};
}
([key: string] 에 해당하는 것이 해당 기업의 ID 입니다.)
PUT /model
에서 increment는 최종 변동. 어떤 아이템을 썼다. 이런건 제가 관심이 없어요.
(아이템 사용) -> 얼마나 바뀌나? (-INF, INF)의 범위로 주시면 됩니다.{
"gameId": str(6), # 게임 고유번호
"modelPath": str(*), # 모델 정보 경로 ("/<...>.pt")
"modelConfig": object, # 모델에서 사용되는 config
"companies": [ # 기업 정보를 담고있음
{
"corptId": str(6), # 기업 ticker(KOSPI 200)
"totalChart": list[int] # 주가 정보가 담겨있음
}
...
]
}
데이터 관리 및 모델과의 정확한 매칭은 Market에서 관리하는 것으로 통일합니다.
ML Core가 하나의 파일 및 class 형태로 내부적으로 처리되면서 ML을 별도의 서버에서 운용하지 않고, 각 함수들의 파라미터 및 입출력을 이용하여 관리합니다.
파라미터의 형태 및 가변 요소들에 대해서는 추가적으로 논의합니다.
@beeetea
- corpName 을 포함하지 않으면, app 서버 내부에서 랜덤으로 corpName 을 생성해야 하는건가요?
- PUT /model 에서 increment 가 어떤 것을 의미하는 건가요?
- PUT /model 에서 시간 정보가 포함되어야할 것 같습니다. 편의를 위해 날짜가 넘어갈 때 이전 시간 (prevTime) 과 이후 시간 (nextTime) 을 모두 넘겨드리려고 하는데 어떨까요? 아래와 같은 type 이 될 것 같아요
type TimeState = { week: number; day: number; tick: number; }; class ChartRequestDto { gameId: string; prevTime: TimeState; nextTime: TimeState; corps: { [key: string]: { increment: number; buyQuantity: number; sellQuantity: number; }; }
([key: string] 에 해당하는 것이 해당 기업의 ID 입니다.)
여기서 ChartRequestDto
에 가격변동을 위한 아이템(기관: 공매도, 찌라시)에 대응되는 param을 넣어야할 것 같아요.
10% 상승과 하락이 최종 가격 생성에 영향을 미칠 수 있도록 하는 로직을 만들고 있는데, 이를 눈치챌 수 있는 payload 속 정보가 없네용
/PUT model
의 res
{
"gameId": String(6),
"corps": {
`corpId`: {
"info": enum(1, 0)
}
...
}
}
해당 작업 끝! issue close합니다. 다들 조금만 더 힘냅시다. :>
기능 Issue
Contents
본 스프린트는 ML서버와 App서버 간의 결정된 JSON spec을 바탕으로 MongoDB와 연동을 통해 stateful한 connection을 유지하는 것을 기반으로 합니다.
핵심 작업사항
진행사항 체크리스트
Band 기반 데이터 추출 구현코드 작성 (
get_current_price()
function in #32)API Spec 정의
endpoint와 payload를 아래에 정리해두었습니다. 문제가 될 만한 부분이 있으면 comment 달아주세요!
내부 로직 구체화
Mock NoSQL Server(MongoDB Atlas)에 Mock Data를 바탕으로 통신 구현
NoSQL Server(dev-database)에 Real Data를 바탕으로 통신 구현
핵심 작업사항 마무리
API Spec
POST /model
Client Side : 게임이 시작될 때 호출
REQ body
RES body
NOTE
res에 corpName이 포함되어있지 않습니다. random generate를 통해서. 생성하는 로직을 권장합니다. (실제 기업명을 거론할 수 없으니...)
PUT /model
Client Side : ?? -> 새벽 시 호출
REQ body
RES body
NOTE
**req에
corpId
의 value가 Integer에서 Object로 변경되어야 할 것 같아요. (buyingVolume
: 매수량,sellingVolume
: 매도량 이 있어야 다음 값 추출의 간접영향에 반영을 할 수 있을 것 같습니다 😭)DELETE /model
Client Side : 게임이 종료될 때 호출
REQ body
RES body
TO-DO:
매수세/매도세 반영 -> 비율을 바탕으로 random sampling 과정에서 일정한 확률로 반영비 조정 예정
관련 링크