Closed hojunee closed 2 years ago
매주 주말 혹은 매일 밤마다 아이템 사용을 위한 요청
게임 시작 → 주말 → 새벽 → 아침 → 점심 → 저녁 → 밤 → 새벽 → 아침 → ...
각 Client 가 새벽 이전의 밤 에 item 을 사용하며, 사용 시 gameId, time, item 을 payload 에 담아 요청 시 App Server 에서 client 마다 item 을 DB 에 저장
{
"gameId": "ABC123",
"playerId": "universally-unique-identifier-123"
"week": 0,
"day": 1,
"item": {
"id": "1034",
"type": "player",
"target": "universally-unique-identifier-456"
}
}
게임 시작 후 첫 주말 이후 매일 새벽 시작에 다음 날의 아침/점심/저녁의 주가 생성을 위한 요청 게임 시작 → 주말 → 새벽 → 아침 → 점심 → 저녁 → 밤 → 새벽 → 아침 → ...
새벽 시작 에 host (방장) 가 time request 을 보내면, DB 에 접근하여 해당 gameId 와 time 으로 새벽 이전의 각 client 가 밤 에 사용한 item list 를 fetch
host 는 이전의 time request 와 마찬가지로 gameId 와 time 만 payload 에 담아 요청
{
"gameId": "ABC123",
"week": 1,
"day": 1
}
ML 서버에서 요청된 time 에 해당하는 current price 를 생성하기 위해, DB 에 접근하여 해당 time 이전의 previous price 를 fetch 필요
마찬가지로 DB 에 접근하여 현재 time 에 직전 일자의 trade 를 fetch 하여, 직전 일자의 trading volume 을 합산 필요
host 가 요청 시 payload 에 담긴 gameId 와 time 을 바탕으로 DB 에 접근하여 item list 를 fetch 하고 App Server 의 아이템 처리 로직을 수행 item list 를 ML Server 에서 주가 생성 시 사용할 items 와 events 배열로 mapping
→ 요청해야시 필요한 데이터는 gameId, time 외에 items 와 events 뿐이며, previous price 와 trading volume 은 ML 서버에서 DB 로 fetch 하여 사용 (App Server 와 ML Server 간 payload 를 줄이기 위한 목적)
** items 도 DB 에서 fetch 할 수 있는데, 왜 previous price 와 trading volume 만 DB 에서 fetch 하고 items 는 App Server 로부터 요청 시 payload 로 받는지? → items 는 App Server 내의 아이템 처리 로직을 실행해야하기 때문
{
"gameId" : "X13B6F",
"week": 1,
"day": 1,
"items": ["1034"],
"events": {
"00504": 2000
}
}
gameId 와 time 을 바탕으로 DB 에 접근하여, 이전 날짜에 생성된 주가와 현재 날짜에 생성된 주가를 비교하여 기관에게 정보로 제공할 예정
{
"gameId": "ABC123",
"week": 1,
"day": 1
}
게임 시작 후 첫 주말 이후 매일 아침 시작에 다음 날의 아침/점심/저녁의 주가 생성을 위한 요청 게임 시작 → 주말 → 새벽 → 아침 → 점심 → 저녁 → 밤 → 새벽 → 아침 → ...
host 는 이전의 time request 와 마찬가지로 gameId 와 time 만 payload 에 담아 요청
{
"gameId": "ABC123",
"week": 1,
"day": 1
}
해당 일자의 stock 데이터 응답 필요
{
"00504": [100, 200, 300],
"05930": [300, 200, 100],
"05380": [100, 200, 300],
}
조금 더 구체화된 부분이 있어 좋네요. :) 위 내용을 보면서 정리한 질문 보내드립니다:
조금 더 구체화된 부분이 있어 좋네요. :) 위 내용을 보면서 정리한 질문 보내드립니다:
아이템 사용
* req body에 "누가" 썼는지는 표시 안해도 될까요? (emit 하는 과정에서 자동적으로 노출되는 부분인지?) * item은 복합데이터야할 것 같아요. 현재와 같이 고유번호 뿐만 아니라 대상이 누구인지 등도 함께 올 필요가 있을 것 같습니다.
주가 생성 요청 & 주가 가져오기
* req body spec이 동일한데 이는 w1d1인지 아닌지로 구분하는건가요? * res json에서 해당 정보를 반환하는 이유는 ACK로서의 의미인가요?
주가 가져오기
* res json에서 key는 여러개일 수 있는건가요? (복수임을 표시할 필요가 있을듯)
ML -> Server
AS-IS
{
"00504": [100, 200, 300],
"05930": [300, 200, 100],
...
}
TO-BE
{
"00504": {
"info": 1,
"price": [100, 200, 300]
},
...
}
info
: 다음 주가가 어떻게 될 지에 대한 정보(1: 긍정, 0: 부정)price
: 다음 3 ticks에 대한 최종 주가 정보Sprint IV가 마무리되었기에 이 Issue는 close합니다. :)
기능 Issue
Contents
본 스프린트는 ML서버와 App서버 간의 통신을 위해서 JSON spec 결정 및 더미데이터를 바탕으로 한 구현을 진행합니다.
핵심 작업사항
진행사항 체크리스트
핵심 작업사항에 대한 Git Issue 생성 후 첫 PR 게시 (-> #STRW-31)
Issue에 상황별 JSON spec을 정의합니다.
JSON spec를 리뷰받습니다.
MongoDB에 더미데이터를 바탕으로 interaction을 구현합니다.
핵심 작업사항 마무리
ML Server ↔ App Server Interaction
언제 데이터가 주고받아져야하는가?
(주말 → ) (아침 → 점심 → 저녁 → 밤) * 5
위에꺼 그림으로 그려서 넣자.
Usecase 정리
다음 tick의 가격이 온다 → 가격을 가공해서 front에 전달
주말에 아이템을 사용한다 → 사용한 형태를 ML서버에 전달해서 이를 반영한다.
밤/주말 -> 새벽
bool
type → backend에서 호재/악재 메시지 랜덤으로 뽑아서 주는 방식으로 해야할듯.Server → ML
새벽 -> 아침
ML → Server
str(6)
int
, "current_price":int
, "info":enum(0, 1)
}, ...}Proposal : Item Code
1034
Question:
각 상황에 맞게 오는 field, 즉 필요한 필드가 다른 상황
주말→아침 state를 구분해야하는가?
TO-DO:
매수세/매도세 반영
raw data에서도 없기에 이는 backlog로 두는 중
관련 링크