Commit Graph

40 Commits

Author SHA1 Message Date
76bb126c4e fix(common): toReversed -> array.reverse() 2026-03-07 12:05:50 +09:00
bcfedd0009 feat(GameSelector): request only once 2026-03-07 11:37:11 +09:00
23888b31bc feat: integrate Logto for authentication
- Add @logto/react dependencies to package.json and lockfile.
- Replace custom App layout with LogtoProvider for authentication handling.
- Configure Logto settings (endpoint, appId) in frontend.tsx.
- Refactor FindUserPage search logic to trigger request on value change instead of manual search key refresh.
2026-03-07 02:24:01 +09:00
4d73ce5f2b Fix and enhance cache handling and logging in server utils
- Corrected the default value assignment for REDIS_CACHE_HOUR using logical OR instead of nullish coalescing.
- Added a debug log to output the cache hour value.
- Added error handling for redis.get calls to ensure they return a string or an empty string in case of failure.
2026-03-03 18:36:32 +09:00
0ac1d2e31d feat: add REDIS_CACHE_HOUR to environment variables and update timeout usage
- Added REDIS_CACHE_HOUR to .env.example and src/utils/server.ts.
- Updated TIMEOUT usage in src/services/uidScoreStore.ts and src/utils/server.ts to use REDIS_CACHE_HOUR.
2026-03-03 18:23:12 +09:00
58edba247d feat: Update cache expiration times for event list and match info
- Increased the cache expiration time for event lists from 30 minutes to 72 hours.
- Increased the cache expiration time for match info from 3 minutes to 72 hours.
2026-03-03 18:17:31 +09:00
ac3beb5d8f feat: Add isPassedGame logic and update GroupingPrediction component
- Added `dayjs` import for date manipulation in `GamePanel.tsx`.
- Introduced `isPassedGame` memoized value in `GamePanel.tsx` to determine if the game date has passed.
- Updated `GroupingPrediction` component to accept `isPassedGame` prop and adjust `nowScoreGroup` state accordingly.
2026-03-03 18:11:17 +09:00
da35e0f623 feat(uidScoreStore): increase redis timeout for uid-score keys from 3h to 24h 2026-03-03 17:50:42 +09:00
7b66b30309 fix(env): move validation to server.ts and add debug logging for missing
variables
2026-03-03 17:46:30 +09:00
e97444244a feat: Add REDIS environment variable and update environment checks
- Added REDIS environment variable to .env.example
- Updated src/index.tsx to check for multiple required environment variables
- Updated src/utils/server.ts to use REDIS environment variable for RedisClient
2026-03-03 14:16:29 +09:00
7f8196249b fix(grouping): guard nowScore with numeric check before fallback
Use nowScore only when it can be parsed as a number, otherwise keep original score.
Prevents invalid nowScore values from affecting grouping/sorting.
2026-03-03 01:04:29 +09:00
9e892f6ed1 refactor(api): switch nowScores endpoint from GET query to POST JSON body
- send uids as JSON payload in frontend event loader
- update /api/user/nowScores route to accept POST and parse req.json()
- keep score lookup behavior unchanged
2026-03-03 00:58:58 +09:00
1fae8206f2 refactor(redis): centralize Redis client and add HTML cache for event endpoints
- export shared redis client from utils/server
- reuse shared redis in uidScoreStore
- cache listEvent HTML for 30 minutes
- cache getMatchInfo HTML for 3 minutes
2026-02-26 20:42:18 +09:00
b7d2109f2e refactor(utils): split shared helpers and server scraping modules
- move event scraping/parsing and match lookup logic into src/utils/server.ts
- extract BASE_URL and grouping/round-table helpers into src/utils/common.ts
- update component/service entry imports to new module locations
- remove deprecated src/utils/utils.ts monolith
- clean up unused XCXFindUser type import
- update tests to new utils import path
2026-02-26 00:26:25 +09:00
79c839db00 feat: add current-score grouping flow with cached uid score API
- move shared parsing/grouping helpers into serverUtils and update imports
- add xcxApi singleton in serverUtils
- add Redis-backed uid score store and /api/user/nowScores endpoint
- preload uid scores in event loader and tags in profile loader
- allow grouping prediction to switch sort mode between current/yearly score
- update tags component to consume loader-provided tags
- remove unused zustand game store
- add redis test scaffold and scoreboard component scaffold
2026-02-26 00:13:37 +09:00
c26bb93ffa refactor(profile): replace Descriptions with Flex layout and show rank
- remove unused antd imports (Space, Descriptions)
- refactor equipment section to Flex-based rows
- refactor profile meta fields to structured Flex rows
- add rank display next to name and score
2026-02-18 00:45:12 +09:00
a4fc0d0031 refactor: move round table helper to utils and clean GroupMember
- extract getRoundTable into src/utils.ts as a reusable generic helper
- update GroupMember to import getRoundTable from utils
- remove round pairing debug log from GroupMember
2026-02-16 15:03:14 +09:00
a9b7113173 fix(GroupMember): check no name 2026-02-14 01:07:28 +09:00
aa5061f7ed feat(GroupMember): battle table 2026-02-14 00:58:19 +09:00
60a8bf68d1 fix(User): replace Link with useHref for external profile navigation
- Updated avatar image styling on FavePlayersPage
- Changed default sort type to '注册时间'
- Improved title rendering and structure on EventPage
- Added favUser logic and effect in ProfilePage
2026-02-12 01:12:50 +09:00
59cf101c26 fix(FavPlayersPage): img height 2026-02-11 16:08:26 +09:00
f5f68496c1 fix(FavePlayersPage): add objectFit: 'cover' to avatar image
Added `objectFit: 'cover'` to ensure avatars are displayed consistently.
2026-02-11 16:05:32 +09:00
3b87230173 feat: add favorite player functionality and improve navigation
- components: add FavButton for player favoriting
- store: create useFavPlayerStore for managing favorites
- pages: add FavePlayersPage for displaying favorites
- components: add MenuButtons for navigation controls
- ui: update App and ProfilePage for new features
- meta: update index.html title to "我的开球网"
2026-02-11 16:00:01 +09:00
789bbb6e03 feat: set pagination page size to 100 in PlayerList table
- Add pageSize configuration to table pagination
- Displays 100 items per page for better data visibility
2026-02-10 22:23:17 +09:00
b6b4dfa3b2 chore(docker): add restart policy for app service 2026-02-10 21:21:11 +09:00
b300d874d2 refact(app): FindUserPage 2026-02-10 18:14:55 +09:00
5d668b2078 feat(Profile): uid param 2026-02-10 16:00:54 +09:00
6fcd54ed34 fix(Profile): disable uid: 0 2026-02-10 15:15:08 +09:00
dada5c28a7 fix(FindUser): fix age 2026-02-10 14:34:18 +09:00
bbc6a592f4 feat(global): find user 2026-02-10 11:11:08 +09:00
4dd3daf909 feat(utils): html request header 2026-02-06 21:35:55 +09:00
73892a5f40 feat(GameTable): css
styled table
2026-02-04 00:16:53 +09:00
44e283852e fix(global): Empty default description 2026-01-30 12:19:35 +09:00
bc8a783edc fix(Profile): fix hasMore check 2026-01-30 12:03:09 +09:00
8831ac456b feat(Profile): GameTable 2026-01-30 11:55:44 +09:00
4c12b609a0 fix(loader): default members 2026-01-30 10:11:08 +09:00
f37be8aded feat(global): HydrateFallback 2026-01-30 09:34:10 +09:00
bf74e99a47 fix(global) .gitkeep 2026-01-29 22:14:39 +09:00
0407ee1929 refactor(utils) remove code 2026-01-29 22:11:05 +09:00
0fed35fb48 init 2026-01-29 22:00:49 +09:00