profile.vue only rendered fan level digit, hiding the fact that fans level up via accumulated exhibition hours (6h/level, cap 20), not login/task experience. Users saw "LV X" without "X more hours to next level", so upgrades felt invisible. - backend: surface exhibition_hours / next_level_hours on CurrentIdentityDTO via a new loadLevelProgress helper in user_controller (read-only, no proto regen, no service surface change). Full-level responses set next_level_hours = exhibition_hours so the client can derive progress=1. - frontend: split level-box into base track + gold fill + text overlay; width bound to progressRatio with 0.4s transition. Adds "距 LV X+1 还差 N 小时" hint and MAX indicator for full-level users. |
||
|---|---|---|
| .. | ||
| activity_controller.go | ||
| ai_chat_controller.go | ||
| app_download_controller_test.go | ||
| app_download_controller.go | ||
| asset_controller_mint_test.go | ||
| asset_controller_test.go | ||
| asset_controller.go | ||
| auth_controller.go | ||
| castlove_config_controller.go | ||
| compositor_controller.go | ||
| gallery_controller.go | ||
| laser_generate_controller_test.go | ||
| laser_generate_controller.go | ||
| moderation_controller.go | ||
| notification_controller.go | ||
| peripheral_controller_test.go | ||
| peripheral_controller.go | ||
| ranking_controller.go | ||
| segment_controller.go | ||
| social_controller.go | ||
| starbook_controller_test.go | ||
| starbook_controller.go | ||
| statistic_controller.go | ||
| task_controller.go | ||
| user_controller.go | ||