# 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 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 etc. - Validation: All options have expected default values - [x] Run openspec validation - Command: `openspec validate setup-solution-foundation --strict` - Validation: No errors reported