From 69e772fbd8d4a55181451946b650ec35fcb24792 Mon Sep 17 00:00:00 2001 From: Sadturtleman Date: Fri, 9 Oct 2026 19:08:20 +0900 Subject: [PATCH] =?UTF-8?q?docs(challenge):=20routineProgress=20=EC=A3=BC?= =?UTF-8?q?=EC=84=9D=EC=9D=84=20=EB=B0=B1=EC=97=94=EB=93=9C=20=EB=8B=B5?= =?UTF-8?q?=EB=B3=80=EC=97=90=20=EB=A7=9E=EC=B6=B0=20=EB=B0=94=EB=A1=9C?= =?UTF-8?q?=EC=9E=A1=EB=8A=94=EB=8B=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - roomAverageProgressRate 는 roomSuccessRate 와 같은 값이 아니라 다른 지표(멤버 진행률 평균)다 - 목표일 0 은 「첫 인증 전」이 아니라 목표일 계산 전(자동: 첫 sync, 수동: 첫 수동 인증 전)이다 - 솔로 방 줄 숨김의 근거로 적은 「방 평균 = 내 값」을 지운다(숨기는 줄은 방 성공률) Refs #616 Co-Authored-By: Claude Opus 5.5 (1M context) --- .../main/kotlin/com/ruleup/challenge/data/dto/RoomResponse.kt | 2 +- .../main/kotlin/com/ruleup/challenge/domain/entity/Room.kt | 4 ++-- .../challenge/presentation/detail/component/RoomInfoTab.kt | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/challenge/data/src/main/kotlin/com/ruleup/challenge/data/dto/RoomResponse.kt b/challenge/data/src/main/kotlin/com/ruleup/challenge/data/dto/RoomResponse.kt index 0105a112..482b1ad8 100644 --- a/challenge/data/src/main/kotlin/com/ruleup/challenge/data/dto/RoomResponse.kt +++ b/challenge/data/src/main/kotlin/com/ruleup/challenge/data/dto/RoomResponse.kt @@ -114,7 +114,7 @@ internal fun RoomResponse.toDomain(): ChallengeRoom = routineProgress = routineProgress?.toDomain(), ) -/** 루틴 진행률. 비율은 %(0~100) 로 온다. roomAverageProgressRate 는 summary.roomSuccessRate 와 같은 값이라 읽지 않는다. */ +/** 루틴 진행률. 비율은 %(0~100) 로 온다. roomAverageProgressRate(멤버 진행률 평균)는 화면에 없어 읽지 않는다 — summary.roomSuccessRate 와 다른 값이다. */ @Serializable data class RoomRoutineProgressResponse( @SerialName("myProgressRate") diff --git a/challenge/domain/src/main/kotlin/com/ruleup/challenge/domain/entity/Room.kt b/challenge/domain/src/main/kotlin/com/ruleup/challenge/domain/entity/Room.kt index 2bd23088..38a99bd5 100644 --- a/challenge/domain/src/main/kotlin/com/ruleup/challenge/domain/entity/Room.kt +++ b/challenge/domain/src/main/kotlin/com/ruleup/challenge/domain/entity/Room.kt @@ -67,12 +67,12 @@ data class ChallengeRoom( val routineProgress: RoutineProgress? = null, ) -/** 챌린지 전체 기간 기준 내 루틴 진행률. 방 평균은 [RoomSummary.roomSuccessRate] 와 같은 값이라 따로 두지 않는다. */ +/** 챌린지 전체 기간 기준 내 루틴 진행률(성공일 ÷ 목표일). 판정일 기준인 [RoomSummary.roomSuccessRate] 와는 다른 지표다. */ data class RoutineProgress( // 0~1 val myProgressRate: Double, val mySuccessDays: Int, - // 첫 인증 전에는 아직 계산 전이라 0 이다 + // 목표일 계산 전(자동 인증은 첫 sync, 수동 인증은 첫 수동 인증 전)이면 0, 이후로는 1 이상이다 val myTargetDays: Int, ) { val hasTargetDays: Boolean get() = myTargetDays > 0 diff --git a/challenge/presentation/src/main/kotlin/com/ruleup/challenge/presentation/detail/component/RoomInfoTab.kt b/challenge/presentation/src/main/kotlin/com/ruleup/challenge/presentation/detail/component/RoomInfoTab.kt index 769c3847..bc8a1530 100644 --- a/challenge/presentation/src/main/kotlin/com/ruleup/challenge/presentation/detail/component/RoomInfoTab.kt +++ b/challenge/presentation/src/main/kotlin/com/ruleup/challenge/presentation/detail/component/RoomInfoTab.kt @@ -478,7 +478,7 @@ internal fun ProgressInfoCard( }, ) } - // 솔로는 방 평균이 곧 내 값이라 내 진행률만 둔다 + // 솔로는 내 진행률만 둔다(#616) if (detail.mode.isGroup) { InfoLine( label = "방 성공률",