セット保存時の過去最大値比較とPaywall導線
新しいセット追加時に同種目の過去最大値と比較し、PR(Personal Record)かどうか判定。 PR達成時は祝賀演出 + POST-PR Paywall(v1.0.5)で課金転換を狙う。
struct PRDetector {
func detectPR(newSet: WorkoutSet, history: [WorkoutSet]) -> PRType?
func detectPRs(sessions: [WorkoutSession]) -> [PR]
}
enum PRType {
case maxWeight // 重量更新
case maxVolume // ボリューム更新
case maxReps(Double) // 同重量でレップ更新
}
struct OneRepMaxCalculator {
static func calculate(weight: Double, reps: Int) -> Double {
return weight * (1 + Double(reps) / 30)
}
}
PRDetector.detectPR() で比較| バージョン | 日付 | 変更内容 |
|---|---|---|
| 1.0 | 2026-05-09 | 初版作成 |