처음에 생존한 상위 3개의 Ads가 압도적인 경우, 끝까지 살아남는다. 한 번의 refresh 만큼만 살아남고 DROPPED 시켜야 한다.
최종 refresh에서 Ads에 PUBLISHED된 opinion들의 publishTime 값을 보면 최종 refresh 시간이 찍혀있다. 처음 이 의견이 올라온 시간이 찍혀야 한다.
상위 3개의 Ads가 한 번의 refresh 만큼만 더 살아남는 방법
# src/game/app.py > preparation_start_handler
for cnt in range(refresh_cnt):
# 전략
if cnt >= 2:
drop_orders.extend([str(ad["order"]) for ad in old_ads[idx][:3]])
old_ads[idx] = old_ads[idx][3:]
# 후략
cnt 값이 2 이상이 되는 때부터는 상위 3개의 Ads는 모두 DROPPED 시키는 것으로 매 refresh 마다 상위 3개의 Ads는 한 번의 refresh 만큼 더 생존할 수 있도록 수정했습니다.
Opinion들의 publishTime 값을 제대로 삽입하는 방법
# src/game/app.py > preparation_start_handler
# 전략
for ad in tmp[idx][3:] if refresh_cnt else tmp[idx]:
publish_orders.append(str(ad['order']))
# 후략
이전의 코드에서는 if문 없이 tmp[idx]에 대해 publishTime 값을 갱신했습니다. 따라서 이전에 생존한 상위 3개의 Ads는 다음 refresh 때 publishTime이 또 갱신되는 문제가 있었습니다. 따라서 if문 삽입을 통해 이 문제를 해결했습니다.
테스트 방법
이에 대한 테스트는 #64 PR에서 작성했던 과정을 그대로 따라가면 됩니다. 이번 PR을 체크할 때 확인해야 할 사항은 위에서 얘기한 2가지를 집중적으로 체크하시면 됩니다.
상위 3개의 Ads가 1번의 refresh 만큼 더 살아남고 DROPPED 됐는가?
각 opinion들의 publishTime 값이 제대로 삽입됐는가?
2가지 모두 제대로 적용되면서 에러 없이 핸들러가 동작한다면 테스트는 성공입니다.
전에 구현했던 preparationStart 핸들러에서 다음의 문제점들을 발견했습니다.
상위 3개의 Ads가 한 번의 refresh 만큼만 더 살아남는 방법
cnt 값이 2 이상이 되는 때부터는 상위 3개의 Ads는 모두 DROPPED 시키는 것으로 매 refresh 마다 상위 3개의 Ads는 한 번의 refresh 만큼 더 생존할 수 있도록 수정했습니다.
Opinion들의 publishTime 값을 제대로 삽입하는 방법
이전의 코드에서는 if문 없이 tmp[idx]에 대해 publishTime 값을 갱신했습니다. 따라서 이전에 생존한 상위 3개의 Ads는 다음 refresh 때 publishTime이 또 갱신되는 문제가 있었습니다. 따라서 if문 삽입을 통해 이 문제를 해결했습니다.
테스트 방법
이에 대한 테스트는 #64 PR에서 작성했던 과정을 그대로 따라가면 됩니다. 이번 PR을 체크할 때 확인해야 할 사항은 위에서 얘기한 2가지를 집중적으로 체크하시면 됩니다.