Releases: I-RzR-I/ItemDistribution
Releases · I-RzR-I/ItemDistribution
v2.0.0.6122
What's Changed
-> Breaking: Replaced the old DistributionSuggestionHelper singleton with a generic, pipeline-based engine.
- New public entry point:
DistributionSuggestionHelper<TUserId>(constructed withEngineConfig). - New input model:
UserLoad<TUserId>(immutable) replacesUserInfoOptions<TUserId>. - New result model:
DistributionResult<TUserId>withPrimaryUserId,AlternativeUserId,Allocation,TotalAllocated, andTrace. - Pluggable pipeline architecture:
LoadScoringStep,WorkingHoursCapacityStep,PriorityActivityScoringStep,FairAllocationStep. - Constraint support via
IConstraint<TUserId>(e.g.MaxPerUserConstraint). - Audit trail (
DistributionTrace<TUserId>) written by each pipeline step. IDistributionSuggestionHelper<TUserId>interface for DI and testing.- Full async support with
CancellationToken.
Migration steps (v1.x -> v2.0):
- Replace
using ItemDistribution.Helpers/ItemDistribution.Models.DtowithItemDistribution.Public,ItemDistribution.Models.Config,ItemDistribution.Models.Domain. - Replace
DistributionSuggestionHelper.Instancewithnew DistributionSuggestionHelper<TUserId>(new EngineConfig { ... }). - Replace
UserInfoOptions<TUserId>withUserLoad<TUserId>(immutable constructor;InProcessDocuments->currentLoad,UserPriority->priority, add explicitcapacity). - Replace
GenerateNewDistributionSuggestion(DistributionParams)withGenerate(users, documents). MoveFullWorkDayHours/MaxAllowedInProcessDocumentstoEngineConfig. RemoveAvoidDuplicateResult. - Replace
result.Response.SuggestionUser/.AlternativeUserwithresult.Response.PrimaryUserId/.AlternativeUserId. - Remove
.Dispose()— the new helper is notIDisposable.
Full Changelog: v1.1.0.0...v2.0.0.6122