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

4.9 KiB

Tasks: Setup Solution Foundation

Phase 1: Options Classes

  • Create DataAccessOptions class

    • Location: NEW/src/JdeScoping.Core/Options/DataAccessOptions.cs
    • Properties: CommandTimeoutSeconds, EnableDetailedLogging
    • Validation: Verify binds from appsettings.json
  • Create DataSyncOptions class

    • Location: NEW/src/JdeScoping.Core/Options/DataSyncOptions.cs
    • Properties: MassRefreshCronSchedule, DailyRefreshCronSchedule, HourlyRefreshCronSchedule, MaxConcurrentUpdates
    • Validation: Verify binds from appsettings.json
  • Create AuthOptions class

    • Location: NEW/src/JdeScoping.Core/Options/AuthOptions.cs
    • Properties: LdapUrl, LdapGroup, CookieExpirationMinutes
    • Validation: Verify binds from appsettings.json
  • Create ExcelExportOptions class

    • Location: NEW/src/JdeScoping.Core/Options/ExcelExportOptions.cs
    • Properties: TempDirectory, MaxRowsPerSheet, DefaultDateFormat
    • Validation: Verify binds from appsettings.json
  • 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

  • Create DataAccessServiceExtensions class

    • Location: NEW/src/JdeScoping.Core/Extensions/DataAccessServiceExtensions.cs
    • Method: AddDataAccess(IServiceCollection, IConfiguration)
    • Registers: DataAccessOptions, placeholder ILotFinderRepository
    • Validation: Services resolve without error
  • Create DataSyncServiceExtensions class

    • Location: NEW/src/JdeScoping.Core/Extensions/DataSyncServiceExtensions.cs
    • Method: AddDataSync(IServiceCollection, IConfiguration)
    • Registers: DataSyncOptions, placeholder IUpdateProcessor
    • Validation: Services resolve without error
  • Create AuthServiceExtensions class

    • Location: NEW/src/JdeScoping.Core/Extensions/AuthServiceExtensions.cs
    • Method: AddAuth(IServiceCollection, IConfiguration)
    • Registers: AuthOptions, authentication services
    • Validation: Services resolve without error
  • Create ExcelExportServiceExtensions class

    • Location: NEW/src/JdeScoping.Core/Extensions/ExcelExportServiceExtensions.cs
    • Method: AddExcelExport(IServiceCollection, IConfiguration)
    • Registers: ExcelExportOptions, placeholder IExcelWriter
    • Validation: Services resolve without error
  • 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

  • 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
  • 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

  • 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
  • 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

  • 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
  • Add NuGet packages to JdeScoping.Host

    • Packages: Microsoft.Data.SqlClient, Dapper, EPPlus, DbUp-SqlServer, Quartz (or similar scheduler)
    • Validation: dotnet build succeeds
  • Add project reference from Host to Core

    • Reference: JdeScoping.Host references JdeScoping.Core
    • Validation: dotnet build succeeds

Phase 6: Verification

  • Run full solution build

    • Command: dotnet build NEW/JdeScoping.sln
    • Validation: Build succeeds with no errors
  • Verify configuration binding

    • Test: Startup resolves IOptions etc.
    • Validation: All options have expected default values
  • Run openspec validation

    • Command: openspec validate setup-solution-foundation --strict
    • Validation: No errors reported