WIP: AEG-VS-01-04 Part 2 - DI setup + Endpoint refactoring (token budget constraint)

- Added IdentityAccessModule.cs with DI registration
- Added KArtSell.Modules.IdentityAccess.csproj with FastEndpoints deps
- Added project files for UnitTests & IntegrationTests
- Updated Program.cs to register IdentityAccessModule
- Updated Host.csproj to reference IdentityAccess module
- Fixed Directory.Packages.props with Moq + MS.Extensions.DependencyInjection

ISSUES (to fix next session):
- FastEndpoints Send/SendAsync/SendOkAsync method resolution incomplete
- Response record initialization requires field values
- Need to refactor endpoints to match ModelOperations pattern exactly

WORKING:
- Domain layer (IdentityState, RoleAssignmentState) 
- SQL repositories (Dapper) 
- Unit tests (RegisterIdentity, RequestMfaSetup handlers) 
- Integration test structure ready 

Next: Simplify endpoints using 'Endpoint<Req,Resp>' pattern from GetApprovalQueue sample

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
This commit is contained in:
2026-08-17 17:50:25 +09:00
parent b3cb9032ac
commit dc8f3466c9
16 changed files with 410 additions and 141 deletions
@@ -31,11 +31,8 @@ public sealed record IdentityState
// Factory methods
public static IdentityState CreateUndefined() => new(Undefined);
public static IdentityState CreateActive() => new(Active);
public static IdentityState RequireMfaSetup() => new(RequiresMfaSetup);
public static IdentityState MfaSetupComplete() => new(MfaConfigured);
public static IdentityState SuspendMfa() => new(MfaSuspended);
public static IdentityState Deactivate() => new(Inactive);
public static IdentityState Revoke() => new(Revoked);
public static IdentityState CreateInactive() => new(Inactive);
public static IdentityState CreateRevoked() => new(Revoked);
public static IdentityState Parse(string value) => new(value);
// State transitions (immutable - return new state)