Closed seungholee-dev closed 1 year ago
반환하는 "bestOpinions" 양식이 Notion에서 정의된 바와 다릅니다. Notion과 다르게 여기서는 "order", "publishTime", "dropTime", "status"도 있네요.
그리고 "newAds"도 "publishTime"과 "dropTime", "status"도 반환하는 내용에 추가했던데 이렇게 반환한 이유가 있나요?
추가적으로 테스트 결과 에러는 일어나지 않지만 결과가 이상한 것 같아요.
먼저 저는 Opinion Table을 아래와 같은 내용으로 삽입한 후 테스트를 진행했습니다.
Opinion_Table.csv
그리고 refresh 시간은 10초, refresh 횟수는 3회로 설정하고 테스트를 진행했습니다.
지금부터 아래에 적을 출력 내용은 일부 항목들만(order, likes) 작성했습니다. 실제 메세지를 받을 때는 모든 값들이 정상적으로 왔습니다.
"1"팀 참여자에게 돌아온 메세지는 다음과 같았습니다.
new_ads = [
{"order": 26, "likes": 9},
{"order": 36, "likes": 5},
{"order": 1, "likes": 3},
{"order": 31, "likes": 4},
{"order": 61, "likes": 0},
{"order": 6, "likes": 1},
{"order": 16, "likes": 4},
{"order": 76, "likes": 1},
{"order": 11, "likes": 5},
{"order": 56, "likes": 1},
{"order": 51, "likes": 1},
{"order": 21, "likes": 11}
]
bestOpinions = [
{"order": 21, "likes": 11},
{"order": 26, "likes": 9},
{"order": 36, "likes": 5}
]
new_ads = [
{"order": 21, "likes": 11},
{"order": 26, "likes": 9},
{"order": 36, "likes": 5},
{"order": 66, "likes": 3},
{"order": 46, "likes": 9},
{"order": 41, "likes": 5},
{"order": 71, "likes": 1}
]
bestOpinions = [
{"order": 11, "likes": 5},
{"order": 16, "likes": 4},
{"order": 31, "likes": 4}
],
new_ads = [
{"order": 21, "likes": 11},
{"order": 26, "likes": 9},
{"order": 36, "likes": 5}
]
위 과정에서의 문제점은 아래와 같습니다.
첫 번째 문제점은 Ads 중에서도 상위 3개는 좀 더 살아있게 하는 benefit을 주지만 얼만큼 살아있게 하는지 정확히 하지 못한 저의 문제인 것 같으니 이 점은 우리 팀에게 다시 물어보겠습니다.
두 번째 문제점을 느낀 이유는 다음과 같습니다.
두 번째 refresh 때의 Best3는 단위 시간 당 좋아요 수가 각각 0.9, 0.5, 1.1이다. >
새롭게 골라진 Ads의 좋아요는 3, 9, 5, 1로 설정되어있다. >
세 번째 refresh 때, 전의 Best3의 단위 시간 당 좋아요 수는 0.45, 0.25, 0.55로 줄어든다. >
전의 새로운 Ads의 단위 시간 당 좋아요는 0.3, 0.9, 0.5, 0.1이 된다. >
하지만 세 번째 refresh 때의 best3의 단위 시간 당 좋아요 수를 보면 각각 0.4, 0.4, 0.5이다. >
0.55와 0.9가 best3에 선정되지 못 했다??
그래서 best3 결과가 이상하다고 느꼈습니다. 혹시 함수 로직에 문제가 있는 건지, 아니면 제가 뭔가 잘 못 이해하고 있는건지 모르겠네요..
일단 동작은 확인했습니다. 하지만 역시나 재욱님이 만드신 preparationStart 액션의 첫 response는 Internal server error 더군요. 저도 재욱님의 문제상황을 보면서 단위 시간이라는 개념이 혼동되기 시작하는데 한번 다같이 모여서 확인해야 할 시간이 필요한 듯합니다.
자세한 리뷰 감사드려요 :)
반환하는 "bestOpinions" 양식이 Notion에서 정의된 바와 다릅니다. Notion과 다르게 여기서는 "order", "publishTime", "dropTime", "status"도 있네요. 그리고 "newAds"도 "publishTime"과 "dropTime", "status"도 반환하는 내용에 추가했던데 이렇게 반환한 이유가 있나요?
해당 부분 제가 개발을 하는 과정에서 삭제를 못했네요 ㅠㅠ 현재 삭제했어요! :)
best3의 함수 재욱님의 결과를 바탕으로 지금 확인 중이요! :100:
구현 과정에서 단위 시간당 계산 중에 PUBLISHED와 DROPPED이 다른데요, 아마 그 과정에서 나누는 시간의 크기가 달라서 아마 결과가 그렇게 나오지 않았나 싶은데 혹시 dropTime, publishTime, status를 같이 확인 부탁드려도 될까요?
PUBLISHED의 경우는 likes / (now - publishTime)으로 계산이 되고 DROPPED의 경우는 likes / (dropTime - publishTime)으로 계산이 되는데 아마도 PUBLISHED된 의견의 like의 숫자가 많아도 DROPPED된 의견의 생존 시간이 더 짧았으면 단위 시간 당 Likes가 더 크게 나와서 그런 것 같은 느낌입니다!
@Jaewook-Lee
@PricelessCode
column 값들을 다시 보면서 계산해보니까 승호 님이 의도한대로 출력되는게 맞았네요! 제가 계산 과정에서 약간 헷갈렸던게 있었던 것 같아요.
처음에 Ads에 살아남았던 3개의 ads가 계속 끝까지 살아남아서 헷갈렸던 것 같아요.
상위 Ads 3개는 한 번의 refresh cycle 동안만 더 살아남을 수 있도록 수정해야 하는데 제가 할까요?
진행해주시면 감사할 것 같아요! 현재 프론트엔드 팀에서 요청한 기능을 구현 중이어서요!
또... Opinion 테이블에 publishTime과 dropTime 시간대가 우리나라 시간대가 아니네요...
로직은 다시 확인한 결과 잘 동작합니다.
감사합니다! 해당 부분 수정햇어요!
기능
Opinion
테이블에dropTime
과publishTime
을 추가했습니다.dropTime
은 의견이 내려간 시간을 기록합니다. (status=DROPPED인 의견들 해당publishTime
은 의견이 Ads에 올라간 시간을 기록합니다. (status=PUBLISHED, DROPPED인 의견들 해당)의견 Drop, Publish시에 시간이 함께 DB에 기록되도록 UPDATE문을 일부 변경했습니다.
preparationStart 호출 시에, 팀별로 알맞은 best 의견들이 추가로 return 됩니다.
테스팅 방법
기대 결과
아래와 같이 받으면 성공입니다 :)
실시간으로 기준에 맞게 best_opinion 의견을 리턴하는지 확인해주세요! 기준은 아래와 같습니다.
3개 혹은 그 미만의 best_opinions의견 return DROPPED 의견: likes / (dropTime - publishTime) PUBLISHED 의견: likes / (now - publishTime) CANDIDATE 의견: 아직 전광판에 올라오지 않았으므로 best_opinions에 포함시키지 않습니다 :)