Files
jdescopingtool/openspec/changes/archive/2026-01-01-setup-solution-foundation/tasks.md
T
Joseph Doherty 26ff8d9b4f Initial commit: JDE Scoping Tool migration project
Set up repository with legacy .NET Framework 4.8 source (OLD/),
new .NET 10 Blazor solution (NEW/), OpenSpec specifications,
documentation, and project configuration.
2026-01-02 07:43:29 -05:00

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