-
Notifications
You must be signed in to change notification settings - Fork 0
Open
Description
Background
Currently, SportsData.JobsDashboard holds direct ProjectReference entries to SportsData.Api, SportsData.Producer, and SportsData.Provider so the Hangfire dashboard can deserialize and display job type details (e.g., ContestRecapJob, MatchupScheduler, VenueGeoCodeJob, ResourceIndexJob).
This was introduced as a pragmatic stabilization fix in PR #135 (see review comment).
Problem
Referencing the full worker projects from JobsDashboard introduces heavy transitive dependencies:
- Firebase Admin, JWT Bearer, SignalR, Azure services, MongoDB, SendGrid, Twilio, EntityFrameworkCore variants, and 800+ C# source files
- Build coordination: JobsDashboard rebuilds whenever Api, Producer, or Provider change
- Version alignment: all four projects must maintain binary compatibility
Proposed Solution
Extract only the job-type/contract definitions into a new minimal SportsData.Jobs.Contracts assembly:
- Create a new class library project
SportsData.Jobs.Contractswith no heavy dependencies - Move job class definitions, interfaces, and any DTOs needed for Hangfire serialization into this new assembly
- Keep actual job implementations in their respective worker projects (
Api,Producer,Provider), referencingSportsData.Jobs.Contracts - Update
SportsData.JobsDashboard.csprojto reference onlySportsData.Jobs.Contractsinstead of the three full worker projects - Update pipeline/build steps to produce and reference the new contracts project
Acceptance Criteria
-
SportsData.Jobs.Contractsproject created with only the types required for Hangfire deserialization -
SportsData.JobsDashboardreferences onlySportsData.Jobs.Contracts(andSportsData.Core) - Worker projects (
Api,Producer,Provider) referenceSportsData.Jobs.Contractsfor job type definitions - Hangfire dashboard correctly displays all job types
- No regression in existing job scheduling and execution
- DockerfileJobsDashboard COPY steps updated to reflect new project structure
References
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels