Skip to content

Commit 66c18f6

Browse files
committed
Merge branch 'develop' of https://github.com/ProjectVG/ProjectVG-API-Server into develop
2 parents 6ab1e84 + 09d0be5 commit 66c18f6

File tree

7 files changed

+40
-56
lines changed

7 files changed

+40
-56
lines changed

ProjectVG.Api/Middleware/WebSocketMiddleware.cs

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -123,16 +123,15 @@ await socket.SendAsync(
123123
new ArraySegment<byte>(welcomeMessage),
124124
WebSocketMessageType.Text,
125125
true,
126-
cancellationTokenSource.Token).ConfigureAwait(false);
126+
cancellationTokenSource.Token);
127127

128128
while (socket.State == WebSocketState.Open && !cancellationTokenSource.Token.IsCancellationRequested)
129129
{
130130
WebSocketReceiveResult result;
131131
using var ms = new MemoryStream();
132132
do
133133
{
134-
result = await socket.ReceiveAsync(new ArraySegment<byte>(buffer), cancellationTokenSource.Token)
135-
.ConfigureAwait(false);
134+
result = await socket.ReceiveAsync(new ArraySegment<byte>(buffer), cancellationTokenSource.Token);
136135
if (result.MessageType == WebSocketMessageType.Close)
137136
{
138137
_logger.LogInformation("연결 종료 요청: {UserId}", userId);
@@ -160,7 +159,7 @@ await socket.SendAsync(
160159
new ArraySegment<byte>(pongMessage),
161160
WebSocketMessageType.Text,
162161
true,
163-
cancellationTokenSource.Token).ConfigureAwait(false);
162+
cancellationTokenSource.Token);
164163
}
165164
}
166165
}
@@ -178,14 +177,14 @@ await socket.SendAsync(
178177
_logger.LogInformation("WebSocket 연결 해제: {UserId}", userId);
179178

180179
try {
181-
await _webSocketService.DisconnectAsync(userId).ConfigureAwait(false);
180+
await _webSocketService.DisconnectAsync(userId);
182181
_connectionRegistry.Unregister(userId);
183182

184183
if (socket.State == WebSocketState.Open || socket.State == WebSocketState.CloseReceived) {
185184
await socket.CloseAsync(
186185
WebSocketCloseStatus.NormalClosure,
187186
"Connection closed",
188-
CancellationToken.None).ConfigureAwait(false);
187+
CancellationToken.None);
189188
}
190189
}
191190
catch (Exception ex) {

ProjectVG.Api/Services/TestClientLauncher.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ public class TestClientLauncher
44
{
55
public void Launch()
66
{
7-
Task.Delay(1000).ContinueWith(_ => {
7+
_ = Task.Delay(1000).ContinueWith(_ => {
88
try
99
{
1010
var htmlPath = Path.Combine(Directory.GetCurrentDirectory(), "..", "test-clients", "test-client.html");

ProjectVG.Application/Services/Auth/AuthService.cs

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ public async Task<AuthResult> GuestLoginAsync(string guestId)
3030
throw new ValidationException(ErrorCode.GUEST_ID_INVALID);
3131
}
3232

33-
var user = await _userService.TryGetByProviderAsync("guest", guestId).ConfigureAwait(false);
33+
var user = await _userService.TryGetByProviderAsync("guest", guestId);
3434

3535
if (user == null) {
3636
string uuid = GenerateGuestUuid(guestId);
@@ -41,23 +41,23 @@ public async Task<AuthResult> GuestLoginAsync(string guestId)
4141
Provider: "guest"
4242
);
4343

44-
user = await _userService.CreateUserAsync(createCommand).ConfigureAwait(false);
44+
user = await _userService.CreateUserAsync(createCommand);
4545
_logger.LogInformation("새 게스트 사용자 생성됨: UserId={UserId}, GuestId={GuestId}", user.Id, guestId);
4646
}
4747

48-
return await FinalizeLoginAsync(user, "guest").ConfigureAwait(false);
48+
return await FinalizeLoginAsync(user, "guest");
4949
}
5050

5151
private async Task<AuthResult> FinalizeLoginAsync(UserDto user, string provider)
5252
{
5353
// 초기 크레딧 지급
54-
var tokenGranted = await _tokenManagementService.GrantInitialCreditsAsync(user.Id).ConfigureAwait(false);
54+
var tokenGranted = await _tokenManagementService.GrantInitialCreditsAsync(user.Id);
5555
if (tokenGranted) {
5656
_logger.LogInformation("사용자 {UserId}에게 최초 크레딧 지급 완료", user.Id);
5757
}
5858

5959
// 최종 JWT 토큰 발급
60-
var tokens = await _tokenService.GenerateTokensAsync(user.Id).ConfigureAwait(false);
60+
var tokens = await _tokenService.GenerateTokensAsync(user.Id);
6161

6262
return new AuthResult {
6363
Tokens = tokens,
@@ -71,13 +71,13 @@ public async Task<AuthResult> RefreshAccessTokenAsync(string? refreshToken)
7171
throw new ValidationException(ErrorCode.TOKEN_MISSING);
7272
}
7373

74-
var tokens = await _tokenService.RefreshAccessTokenAsync(refreshToken).ConfigureAwait(false);
74+
var tokens = await _tokenService.RefreshAccessTokenAsync(refreshToken);
7575
if (tokens == null) {
7676
throw new ValidationException(ErrorCode.TOKEN_REFRESH_FAILED);
7777
}
7878

79-
var userId = await _tokenService.GetUserIdFromTokenAsync(refreshToken).ConfigureAwait(false);
80-
var user = userId.HasValue ? await _userService.TryGetByIdAsync(userId.Value).ConfigureAwait(false) : null;
79+
var userId = await _tokenService.GetUserIdFromTokenAsync(refreshToken);
80+
var user = userId.HasValue ? await _userService.TryGetByIdAsync(userId.Value) : null;
8181

8282
return new AuthResult {
8383
Tokens = tokens,
@@ -91,9 +91,9 @@ public async Task<bool> LogoutAsync(string? refreshToken)
9191
throw new ValidationException(ErrorCode.TOKEN_MISSING);
9292
}
9393

94-
var revoked = await _tokenService.RevokeRefreshTokenAsync(refreshToken).ConfigureAwait(false);
94+
var revoked = await _tokenService.RevokeRefreshTokenAsync(refreshToken);
9595
if (revoked) {
96-
var userId = await _tokenService.GetUserIdFromTokenAsync(refreshToken).ConfigureAwait(false);
96+
var userId = await _tokenService.GetUserIdFromTokenAsync(refreshToken);
9797
}
9898
return revoked;
9999
}

ProjectVG.Application/Services/Chat/ChatService.cs

Lines changed: 1 addition & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -70,8 +70,6 @@ public async Task<ChatRequestResult> EnqueueChatRequestAsync(ChatRequestCommand
7070

7171
var preprocessContext = await PrepareChatRequestAsync(command);
7272

73-
LogChatRequestCommand(command);
74-
7573
_ = Task.Run(async () => {
7674
await ProcessChatRequestInternalAsync(preprocessContext);
7775
});
@@ -112,11 +110,9 @@ private async Task ProcessChatRequestInternalAsync(ChatProcessContext context)
112110
await _llmProcessor.ProcessAsync(context);
113111
await _ttsProcessor.ProcessAsync(context);
114112

115-
// ChatSuccessHandler와 ChatResultProcessor를 같은 스코프에서 실행
116-
117113
var successHandler = scope.ServiceProvider.GetRequiredService<ChatSuccessHandler>();
118114
var resultProcessor = scope.ServiceProvider.GetRequiredService<ChatResultProcessor>();
119-
115+
120116
await successHandler.HandleAsync(context);
121117
await resultProcessor.PersistResultsAsync(context);
122118
}
@@ -125,20 +121,10 @@ private async Task ProcessChatRequestInternalAsync(ChatProcessContext context)
125121
await failureHandler.HandleAsync(context);
126122
}
127123
finally {
128-
LogChatProcessContext(context);
129124
_metricsService.EndChatMetrics();
130125
_metricsService.LogChatMetrics();
131126
}
132127
}
133128

134-
private void LogChatRequestCommand(ChatRequestCommand command)
135-
{
136-
_logger.LogInformation("Starting chat process: {CommandInfo}", command.ToDebugString());
137-
}
138-
139-
private void LogChatProcessContext(ChatProcessContext context)
140-
{
141-
_logger.LogInformation("Chat process completed: {ContextInfo}", context.ToDebugString());
142-
}
143129
}
144130
}

ProjectVG.Application/Services/Chat/Validators/ChatRequestValidator.cs

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -35,22 +35,22 @@ public ChatRequestValidator(
3535
public async Task ValidateAsync(ChatRequestCommand command)
3636
{
3737
// 세션 검증 - 사용자 활성 세션 확인
38-
await ValidateUserSessionAsync(command.UserId).ConfigureAwait(false);
38+
await ValidateUserSessionAsync(command.UserId);
3939

40-
var userExists = await _userService.ExistsByIdAsync(command.UserId).ConfigureAwait(false);
40+
var userExists = await _userService.ExistsByIdAsync(command.UserId);
4141
if (!userExists) {
4242
_logger.LogWarning("사용자 ID 검증 실패: {UserId}", command.UserId);
4343
throw new NotFoundException(ErrorCode.USER_NOT_FOUND, command.UserId);
4444
}
4545

46-
var characterExists = await _characterService.CharacterExistsAsync(command.CharacterId).ConfigureAwait(false);
46+
var characterExists = await _characterService.CharacterExistsAsync(command.CharacterId);
4747
if (!characterExists) {
4848
_logger.LogWarning("캐릭터 ID 검증 실패: {CharacterId}", command.CharacterId);
4949
throw new NotFoundException(ErrorCode.CHARACTER_NOT_FOUND, command.CharacterId);
5050
}
5151

5252
// 토큰 잔액 검증 - 예상 비용으로 미리 확인
53-
var balance = await _tokenManagementService.GetCreditBalanceAsync(command.UserId).ConfigureAwait(false);
53+
var balance = await _tokenManagementService.GetCreditBalanceAsync(command.UserId);
5454
var currentBalance = balance.CurrentBalance;
5555

5656
if (currentBalance <= 0) {
@@ -76,8 +76,7 @@ private async Task ValidateUserSessionAsync(Guid userId)
7676
try {
7777
// 사용자 ID를 기반으로 세션 조회
7878
var userSessions = (await _sessionStorage
79-
.GetSessionsByUserIdAsync(userId.ToString())
80-
.ConfigureAwait(false))
79+
.GetSessionsByUserIdAsync(userId.ToString()))
8180
.ToList();
8281

8382
if (userSessions.Count == 0) {

ProjectVG.Infrastructure/Auth/TokenService.cs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ public async Task<TokenResponse> GenerateTokensAsync(Guid userId)
2424
var accessTokenExpiresAt = DateTime.UtcNow.AddMinutes(15);
2525
var refreshTokenExpiresAt = DateTime.UtcNow.AddMinutes(1440);
2626

27-
var stored = await _refreshTokenStorage.StoreRefreshTokenAsync(refreshToken, userId, refreshTokenExpiresAt).ConfigureAwait(false);
27+
var stored = await _refreshTokenStorage.StoreRefreshTokenAsync(refreshToken, userId, refreshTokenExpiresAt);
2828
if (!stored)
2929
{
3030
_logger.LogError("Failed to store refresh token for user {UserId}", userId);
@@ -56,14 +56,14 @@ public async Task<TokenResponse> GenerateTokensAsync(Guid userId)
5656
return null;
5757
}
5858

59-
var isValid = await _refreshTokenStorage.IsRefreshTokenValidAsync(refreshToken).ConfigureAwait(false);
59+
var isValid = await _refreshTokenStorage.IsRefreshTokenValidAsync(refreshToken);
6060
if (!isValid)
6161
{
6262
_logger.LogWarning("Refresh token not found in storage");
6363
return null;
6464
}
6565

66-
var userId = await _refreshTokenStorage.GetUserIdFromRefreshTokenAsync(refreshToken).ConfigureAwait(false);
66+
var userId = await _refreshTokenStorage.GetUserIdFromRefreshTokenAsync(refreshToken);
6767
if (!userId.HasValue)
6868
{
6969
_logger.LogWarning("User ID not found for refresh token");
@@ -75,7 +75,7 @@ public async Task<TokenResponse> GenerateTokensAsync(Guid userId)
7575
var accessTokenExpiresAt = DateTime.UtcNow.AddMinutes(15);
7676

7777
// 기존 Refresh Token의 만료 시간 조회
78-
var refreshTokenExpiresAt = await _refreshTokenStorage.GetRefreshTokenExpiresAtAsync(refreshToken).ConfigureAwait(false);
78+
var refreshTokenExpiresAt = await _refreshTokenStorage.GetRefreshTokenExpiresAtAsync(refreshToken);
7979
if (!refreshTokenExpiresAt.HasValue)
8080
{
8181
_logger.LogWarning("Refresh token expiration time not found");
@@ -93,7 +93,7 @@ public async Task<TokenResponse> GenerateTokensAsync(Guid userId)
9393

9494
public async Task<bool> RevokeRefreshTokenAsync(string refreshToken)
9595
{
96-
return await _refreshTokenStorage.RemoveRefreshTokenAsync(refreshToken).ConfigureAwait(false);
96+
return await _refreshTokenStorage.RemoveRefreshTokenAsync(refreshToken);
9797
}
9898

9999
public async Task<bool> ValidateRefreshTokenAsync(string refreshToken)
@@ -110,7 +110,7 @@ public async Task<bool> ValidateRefreshTokenAsync(string refreshToken)
110110
return false;
111111
}
112112

113-
return await _refreshTokenStorage.IsRefreshTokenValidAsync(refreshToken).ConfigureAwait(false);
113+
return await _refreshTokenStorage.IsRefreshTokenValidAsync(refreshToken);
114114
}
115115

116116
public Task<bool> ValidateAccessTokenAsync(string accessToken)

ProjectVG.Infrastructure/Persistence/Repositories/User/SqlServerUserRepository.cs

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -24,37 +24,37 @@ public async Task<IEnumerable<User>> GetAllAsync()
2424
return await _context.Users
2525
.Where(u => u.Status == AccountStatus.Active)
2626
.OrderBy(u => u.Username)
27-
.ToListAsync().ConfigureAwait(false);
27+
.ToListAsync();
2828
}
2929

3030
public async Task<User?> GetByIdAsync(Guid id)
3131
{
32-
return await _context.Users.FirstOrDefaultAsync(u => u.Id == id && u.Status != AccountStatus.Deleted).ConfigureAwait(false);
32+
return await _context.Users.FirstOrDefaultAsync(u => u.Id == id && u.Status != AccountStatus.Deleted);
3333
}
3434

3535
public async Task<User?> GetByUsernameAsync(string username)
3636
{
37-
return await _context.Users.FirstOrDefaultAsync(u => u.Username == username && u.Status != AccountStatus.Deleted).ConfigureAwait(false);
37+
return await _context.Users.FirstOrDefaultAsync(u => u.Username == username && u.Status != AccountStatus.Deleted);
3838
}
3939

4040
public async Task<User?> GetByEmailAsync(string email)
4141
{
42-
return await _context.Users.FirstOrDefaultAsync(u => u.Email == email && u.Status != AccountStatus.Deleted).ConfigureAwait(false);
42+
return await _context.Users.FirstOrDefaultAsync(u => u.Email == email && u.Status != AccountStatus.Deleted);
4343
}
4444

4545
public async Task<User?> GetByProviderIdAsync(string providerId)
4646
{
47-
return await _context.Users.FirstOrDefaultAsync(u => u.ProviderId == providerId && u.Status != AccountStatus.Deleted).ConfigureAwait(false);
47+
return await _context.Users.FirstOrDefaultAsync(u => u.ProviderId == providerId && u.Status != AccountStatus.Deleted);
4848
}
4949

5050
public async Task<User?> GetByProviderAsync(string provider, string providerId)
5151
{
52-
return await _context.Users.FirstOrDefaultAsync(u => u.Provider == provider && u.ProviderId == providerId && u.Status != AccountStatus.Deleted).ConfigureAwait(false);
52+
return await _context.Users.FirstOrDefaultAsync(u => u.Provider == provider && u.ProviderId == providerId && u.Status != AccountStatus.Deleted);
5353
}
5454

5555
public async Task<User?> GetByUIDAsync(string uid)
5656
{
57-
return await _context.Users.FirstOrDefaultAsync(u => u.UID == uid && u.Status != AccountStatus.Deleted).ConfigureAwait(false);
57+
return await _context.Users.FirstOrDefaultAsync(u => u.UID == uid && u.Status != AccountStatus.Deleted);
5858
}
5959

6060
public async Task<User> CreateAsync(User user)
@@ -65,14 +65,14 @@ public async Task<User> CreateAsync(User user)
6565
user.Status = AccountStatus.Active;
6666

6767
_context.Users.Add(user);
68-
await _context.SaveChangesAsync().ConfigureAwait(false);
68+
await _context.SaveChangesAsync();
6969

7070
return user;
7171
}
7272

7373
public async Task<User> UpdateAsync(User user)
7474
{
75-
var existingUser = await _context.Users.FirstOrDefaultAsync(u => u.Id == user.Id && u.Status != AccountStatus.Deleted).ConfigureAwait(false);
75+
var existingUser = await _context.Users.FirstOrDefaultAsync(u => u.Id == user.Id && u.Status != AccountStatus.Deleted);
7676
if (existingUser == null) {
7777
throw new NotFoundException(ErrorCode.USER_NOT_FOUND, "User", user.Id);
7878
}
@@ -85,22 +85,22 @@ public async Task<User> UpdateAsync(User user)
8585
existingUser.Status = user.Status;
8686
existingUser.Update();
8787

88-
await _context.SaveChangesAsync().ConfigureAwait(false);
88+
await _context.SaveChangesAsync();
8989

9090
return existingUser;
9191
}
9292

9393
public async Task DeleteAsync(Guid id)
9494
{
95-
var user = await _context.Users.FirstOrDefaultAsync(u => u.Id == id && u.Status != AccountStatus.Deleted).ConfigureAwait(false);
95+
var user = await _context.Users.FirstOrDefaultAsync(u => u.Id == id && u.Status != AccountStatus.Deleted);
9696

9797
if (user == null) {
9898
throw new NotFoundException(ErrorCode.USER_NOT_FOUND, "User", id);
9999
}
100100

101101
user.Status = AccountStatus.Deleted;
102102
user.Update();
103-
await _context.SaveChangesAsync().ConfigureAwait(false);
103+
await _context.SaveChangesAsync();
104104
}
105105
}
106106
}

0 commit comments

Comments
 (0)