26ff8d9b4f
Set up repository with legacy .NET Framework 4.8 source (OLD/), new .NET 10 Blazor solution (NEW/), OpenSpec specifications, documentation, and project configuration.
114 lines
4.9 KiB
Markdown
114 lines
4.9 KiB
Markdown
# Tasks: Setup Solution Foundation
|
|
|
|
## Phase 1: Options Classes
|
|
|
|
- [x] Create DataAccessOptions class
|
|
- Location: `NEW/src/JdeScoping.Core/Options/DataAccessOptions.cs`
|
|
- Properties: CommandTimeoutSeconds, EnableDetailedLogging
|
|
- Validation: Verify binds from appsettings.json
|
|
|
|
- [x] Create DataSyncOptions class
|
|
- Location: `NEW/src/JdeScoping.Core/Options/DataSyncOptions.cs`
|
|
- Properties: MassRefreshCronSchedule, DailyRefreshCronSchedule, HourlyRefreshCronSchedule, MaxConcurrentUpdates
|
|
- Validation: Verify binds from appsettings.json
|
|
|
|
- [x] Create AuthOptions class
|
|
- Location: `NEW/src/JdeScoping.Core/Options/AuthOptions.cs`
|
|
- Properties: LdapUrl, LdapGroup, CookieExpirationMinutes
|
|
- Validation: Verify binds from appsettings.json
|
|
|
|
- [x] Create ExcelExportOptions class
|
|
- Location: `NEW/src/JdeScoping.Core/Options/ExcelExportOptions.cs`
|
|
- Properties: TempDirectory, MaxRowsPerSheet, DefaultDateFormat
|
|
- Validation: Verify binds from appsettings.json
|
|
|
|
- [x] Create SearchProcessingOptions class
|
|
- Location: `NEW/src/JdeScoping.Core/Options/SearchProcessingOptions.cs`
|
|
- Properties: PollingIntervalSeconds, MaxConcurrentSearches, SearchTimeoutMinutes
|
|
- Validation: Verify binds from appsettings.json
|
|
|
|
## Phase 2: Extension Methods
|
|
|
|
- [x] Create DataAccessServiceExtensions class
|
|
- Location: `NEW/src/JdeScoping.Core/Extensions/DataAccessServiceExtensions.cs`
|
|
- Method: AddDataAccess(IServiceCollection, IConfiguration)
|
|
- Registers: DataAccessOptions, placeholder ILotFinderRepository
|
|
- Validation: Services resolve without error
|
|
|
|
- [x] Create DataSyncServiceExtensions class
|
|
- Location: `NEW/src/JdeScoping.Core/Extensions/DataSyncServiceExtensions.cs`
|
|
- Method: AddDataSync(IServiceCollection, IConfiguration)
|
|
- Registers: DataSyncOptions, placeholder IUpdateProcessor
|
|
- Validation: Services resolve without error
|
|
|
|
- [x] Create AuthServiceExtensions class
|
|
- Location: `NEW/src/JdeScoping.Core/Extensions/AuthServiceExtensions.cs`
|
|
- Method: AddAuth(IServiceCollection, IConfiguration)
|
|
- Registers: AuthOptions, authentication services
|
|
- Validation: Services resolve without error
|
|
|
|
- [x] Create ExcelExportServiceExtensions class
|
|
- Location: `NEW/src/JdeScoping.Core/Extensions/ExcelExportServiceExtensions.cs`
|
|
- Method: AddExcelExport(IServiceCollection, IConfiguration)
|
|
- Registers: ExcelExportOptions, placeholder IExcelWriter
|
|
- Validation: Services resolve without error
|
|
|
|
- [x] Create SearchProcessingServiceExtensions class
|
|
- Location: `NEW/src/JdeScoping.Core/Extensions/SearchProcessingServiceExtensions.cs`
|
|
- Method: AddSearchProcessing(IServiceCollection, IConfiguration)
|
|
- Registers: SearchProcessingOptions, placeholder ISearchProcessor
|
|
- Validation: Services resolve without error
|
|
|
|
## Phase 3: Configuration Files
|
|
|
|
- [x] Update appsettings.json with all configuration sections
|
|
- Location: `NEW/src/JdeScoping.Host/appsettings.json`
|
|
- Sections: ConnectionStrings, DataAccess, DataSync, Auth, ExcelExport, SearchProcessing
|
|
- Validation: JSON parses without error
|
|
|
|
- [x] Create appsettings.Development.json with dev overrides
|
|
- Location: `NEW/src/JdeScoping.Host/appsettings.Development.json`
|
|
- Overrides: Local SQL Server connection, detailed logging, disabled sync schedules
|
|
- Validation: JSON parses without error
|
|
|
|
## Phase 4: Program.cs Update
|
|
|
|
- [x] Update Program.cs with service registration
|
|
- Location: `NEW/src/JdeScoping.Host/Program.cs`
|
|
- Call all AddXxx extension methods
|
|
- Add database migration at startup
|
|
- Validation: Application starts without DI errors
|
|
|
|
- [x] Add startup validation for critical services
|
|
- Location: `NEW/src/JdeScoping.Host/Program.cs`
|
|
- Validate: GetRequiredService for IOptions<T> classes
|
|
- Validation: Startup fails fast on misconfiguration
|
|
|
|
## Phase 5: Project References
|
|
|
|
- [x] Add NuGet packages to JdeScoping.Core
|
|
- Packages: Microsoft.Extensions.Options, Microsoft.Extensions.DependencyInjection.Abstractions, Microsoft.Extensions.Configuration.Abstractions, Microsoft.Extensions.Configuration.Binder, Microsoft.Extensions.Options.ConfigurationExtensions
|
|
- Validation: `dotnet build` succeeds
|
|
|
|
- [x] Add NuGet packages to JdeScoping.Host
|
|
- Packages: Microsoft.Data.SqlClient, Dapper, EPPlus, DbUp-SqlServer, Quartz (or similar scheduler)
|
|
- Validation: `dotnet build` succeeds
|
|
|
|
- [x] Add project reference from Host to Core
|
|
- Reference: JdeScoping.Host references JdeScoping.Core
|
|
- Validation: `dotnet build` succeeds
|
|
|
|
## Phase 6: Verification
|
|
|
|
- [x] Run full solution build
|
|
- Command: `dotnet build NEW/JdeScoping.sln`
|
|
- Validation: Build succeeds with no errors
|
|
|
|
- [x] Verify configuration binding
|
|
- Test: Startup resolves IOptions<DataAccessOptions> etc.
|
|
- Validation: All options have expected default values
|
|
|
|
- [x] Run openspec validation
|
|
- Command: `openspec validate setup-solution-foundation --strict`
|
|
- Validation: No errors reported
|