Commit Graph

524 Commits

Author SHA1 Message Date
MingxuanGame
fdb08fe31f fix(rate-limit): apply on router to avoid TypeError on ws endpoint 2025-08-28 16:41:33 +00:00
MingxuanGame
4324d7ed2b deploy(docker): use gu pp algorithm for osurx 2025-08-28 15:13:50 +00:00
MingxuanGame
e35e7ee0ef ci(docker): auto publish to Docker Hub 2025-08-28 15:05:59 +00:00
MingxuanGame
bc2f481323 chore(revert): revert "feat(score): use gu pp algorithm" due to pp algorithm will crash
This reverts commit dfe173b40f.
2025-08-28 14:32:36 +00:00
MingxuanGame
d5aaab480b docs(readme): update readme 2025-08-28 14:28:49 +00:00
MingxuanGame
aa239a81fa feat(api): add rate limiting for API requests 2025-08-28 13:51:44 +00:00
MingxuanGame
c7f6c76b0f refactor(api): standardizate API Router 2025-08-28 13:49:34 +00:00
陈晋瑭
3c5336ed61 添加谱面用户打分(评分)相关接口 (#24)
* feat(database): 添加 beatmap_ratings 表用于用户评分

- 新增 BeatmapRating 模型类,用于表示 beatmap_ratings 表
- 该表包含 id、beatmapset_id、user_id 字段
- 建立与 Beatmapset 和 User 表的关联关系

* feat(beatmapset_ratings): 添加判断用户是否可以对谱面集进行评分的接口

- 新增 /beatmapsets/{beatmapset_id}/can_rate 接口
- 判断用户是否能对谱面集进行过评分,返回True/False

* feat(ratings): 添加为谱面评分的接口

- 新增 POST /beatmapsets/{beatmapset_id} 路由,用于用户给谱面集评分
- 实现谱面集评分的添加和更新逻辑
- 在 BeatmapRating 模型中添加 rating 字段 (漏了最重要的,我真tm丢脸)

* chore(database): 添加alembic数据库迁移脚本

* fix(ratings): 更改上传谱面打分的api路径,防止冲突

* fix(ratings): add changes from pr review

* refactor(ratings): remove swears from code

* feat(ratings): 从beatmapset中移除ratings字段,并改由从beatmap_ratings表中直接计算评分

* chore(deps): 添加 git 包并更新依赖项

- 在 builder 阶段添加了 git 包的安装

* chore(database): 更新数据库连接地址并删除意外的迁移脚本

- 将 Alembic 配置文件中的数据库连接地址从本地地址改为 Docker Compose 中的 mysql 服务地址
- 删除了 migrations/versions 目录下的 dba1f8d9992e_add_beatmap_ratings_table.py 文件

* chore(database): generate alembic script for beatmap ratings

* fix(ratings): apply changes suggested in review

- revert changes to alembic.ini
- add name to apis
- modify migration scripts

* chore: format server.py using ruff

- who forgot to do this?

* fix(migrate): fix remove achievement index

* perf(rating): optimize SQL query

* fix(rating): ensure user can rate beatmapset

* fix(rating): add boundary check

* chore(project): remove submodule

---------

Co-authored-by: MingxuanGame <MingxuanGame@outlook.com>
2025-08-28 20:55:00 +08:00
MingxuanGame
80b102af2d feat(storage): support remove old files 2025-08-28 12:17:35 +00:00
MingxuanGame
cbc46d63b6 chore(dev): remove submodule & update contribution guide 2025-08-28 10:13:49 +00:00
MingxuanGame
d1fc10626b fix(team): modifying name or short name doesn't work 2025-08-28 09:54:02 +00:00
咕谷酱
7a0283086d Update server.py 2025-08-28 04:21:43 +08:00
MingxuanGame
1f53c66700 fix(recalculate): save pp to original score 2025-08-27 21:20:59 +08:00
MingxuanGame
dfe173b40f feat(score): use gu pp algorithm 2025-08-27 14:06:10 +08:00
MingxuanGame
7ec716d4de feat(user): support get the user's first scores 2025-08-26 16:42:57 +00:00
MingxuanGame
d2e3b86bd1 feat(user): only show activities of the last 30 days 2025-08-26 16:07:27 +00:00
MingxuanGame
bc12182770 fix(user): rank lost event uses the owner of the displaced score's username 2025-08-26 15:53:32 +00:00
MingxuanGame
60745c1269 feat(score): auto recalculate for banned beatmaps
Running every hour
2025-08-26 15:12:14 +00:00
MingxuanGame
f8535fdce4 feat(user): support login with any case of username & email 2025-08-26 11:39:55 +00:00
MingxuanGame
8d9f1d2750 feat(ranking): support team ranking 2025-08-26 10:51:31 +00:00
MingxuanGame
46b60e555f refactor(recalculate): optimize batch processing and use semaphore 2025-08-26 13:18:11 +08:00
MingxuanGame
900fa9b121 fix(score): fix incorrect best_id 2025-08-26 13:18:11 +08:00
MingxuanGame
9681aa68b4 feat(banchobot): show weighted pp in score commands 2025-08-26 13:18:11 +08:00
MingxuanGame
d11303b562 fix(score): return failed score which read from cache & remove legacy score error 2025-08-26 13:18:11 +08:00
MingxuanGame
81a07b5544 refactor(migration): remove empty migration 2025-08-26 13:18:11 +08:00
MingxuanGame
8810eabfd3 deploy(docker): fix spectator server connot connect to database 2025-08-26 13:18:11 +08:00
MingxuanGame
db30cb31dc fix(daily-challenge): fix don't clear the streak when it has been broken 2025-08-26 13:18:11 +08:00
MingxuanGame
d873c227c1 refactor(stats): remove stats manager 2025-08-26 13:18:11 +08:00
MingxuanGame
bab6f843a5 fix(user): fix online status 2025-08-26 13:18:11 +08:00
咕谷酱
d470ee1482 Update docker-compose-osurx.yml 2025-08-26 13:18:11 +08:00
MingxuanGame
29857506f2 refactor(lio): use REALTIME for multiplayer room 2025-08-26 13:18:11 +08:00
MingxuanGame
292e6b0eba chore(linter): make lint happy 2025-08-26 13:18:11 +08:00
MingxuanGame
debb4cb110 deploy(docker): update configuration 2025-08-26 13:18:11 +08:00
MingxuanGame
6ae64fd50c refactor(lio): remove unused hmac validation 2025-08-26 13:18:11 +08:00
MingxuanGame
d08b39d482 refactor(lio): remove unused hmac validation 2025-08-26 13:18:11 +08:00
MingxuanGame
9d92fa0a68 fix(score): fix score process 2025-08-26 13:18:11 +08:00
MingxuanGame
2f033f108a fix(playlist): cannot get playlist rooms 2025-08-26 13:18:11 +08:00
MingxuanGame
8d38f230cb refactor(room): remove duplicated multiplayer event model 2025-08-26 13:18:11 +08:00
MingxuanGame
6c04b15764 feat(lio): support upload replay 2025-08-26 13:18:11 +08:00
MingxuanGame
86c6c291e4 chore(dev): update dev environment 2025-08-26 13:18:11 +08:00
咕谷酱
7eea68aa9a Update notification.py 2025-08-26 13:18:11 +08:00
pre-commit-ci[bot]
282ae3895e chore(deps): auto fix by pre-commit hooks 2025-08-26 13:18:11 +08:00
咕谷酱
ccfafd9c5f Add fallback for user avatar URL in notifications
Ensures that a default avatar URL is used if the user object lacks an avatar_url attribute or if an exception occurs, improving robustness of notification cover images.
2025-08-26 13:18:11 +08:00
pre-commit-ci[bot]
7625cd99f5 chore(deps): auto fix by pre-commit hooks 2025-08-26 13:18:11 +08:00
咕谷酱
b4fd4e0256 Handle rate limit errors in BeatmapsetFetcher
Introduces RateLimitError to manage 429 responses from the API, updating request_api to raise this error and adding handling in prefetch and warmup logic to skip or log when rate limits are hit. Also improves error handling for authentication failures and token expiration.
2025-08-26 13:18:11 +08:00
咕谷酱
8adc88bf00 Remove retry logic from BaseFetcher API requests
Simplified the BaseFetcher class by removing the max_retries parameter and all related retry and reauthorization logic. API requests now fail immediately on authentication errors, and token clearing is handled by a new _clear_tokens method. This change streamlines error handling and reduces complexity.
2025-08-26 13:18:11 +08:00
咕谷酱
d13e5ba5cd Improve async DB handling in chat channel allocation
Replaced db.exec with db.execute for better async compatibility and improved error handling in chat channel queries and allocation. Added immediate commit after channel creation and a fallback mechanism for channel_id allocation in case of database errors.
2025-08-26 13:18:11 +08:00
咕谷酱
ea1a6cd007 Refactor chat channel join/leave logic in room API
Removed redundant safe join/leave channel functions and streamlined chat channel management for room creation, user addition, and removal. Channel operations now use direct server calls with improved error handling and logging, reducing complexity and ensuring main room flows are not interrupted by chat channel errors.
2025-08-26 13:18:11 +08:00
咕谷酱
eae3b44310 Update docker-compose-osurx.yml 2025-08-26 13:18:11 +08:00
咕谷酱
616656638d Improve JWT claims and chat channel reliability
Adds standard JWT claims (audience and issuer) to access tokens and updates config for these fields. Refactors multiplayer room chat channel logic to ensure reliable user join/leave with retry mechanisms, improves error handling and cleanup, and ensures host is correctly added as a participant. Updates Docker entrypoint for better compatibility and connection handling, modifies Docker Compose and Nginx config for improved deployment and proxy header forwarding.
2025-08-26 13:18:11 +08:00