- Fix 'string(d)' int-to-rune conversion in rpg_test.go by using fmt.Sprintf - Fix ComputeDailyTotals dayStart logic: initial state should be StateWorking when dayStart > 0, correctly counting work from dayStart to first out event - Update README project structure to reflect new domain/handler/repo layout - Implement missing achievements: rpg_pioneer (on RPG enable) and salary_setter (on first rate set) - Add tryUnlockAchievement helper to Handler
25 lines
544 B
Go
25 lines
544 B
Go
package domain
|
|
|
|
import (
|
|
"fmt"
|
|
"math"
|
|
)
|
|
|
|
// ComputeTrendFromAvgs is a pure version of the trend computation for testing.
|
|
func ComputeTrendFromAvgs(recentAvg, olderAvg float64) (pts int, direction string) {
|
|
if olderAvg < 1 {
|
|
if recentAvg > 0 {
|
|
return 15, "new"
|
|
}
|
|
return 5, "stable"
|
|
}
|
|
changePct := math.Round((recentAvg - olderAvg) / olderAvg * 100)
|
|
if recentAvg > olderAvg*1.2 {
|
|
return 15, fmt.Sprintf("+%.0f%%", changePct)
|
|
}
|
|
if olderAvg > recentAvg*1.2 {
|
|
return 0, fmt.Sprintf("%.0f%%", changePct)
|
|
}
|
|
return 5, "stable"
|
|
}
|