Files
KArtSell.Aegis/src/KArtSell.Modules.ModelOperations/Application/ModelOperationsContracts.cs
T
kjh2064 dcd1322d41
ci / backend (push) Failing after 12s
ci / frontend (push) Failing after 19s
ci / static (push) Failing after 45s
Initial commit: Add project files
2026-08-02 05:15:36 +09:00

81 lines
2.1 KiB
C#

using KArtSell.BuildingBlocks.Versioning;
namespace KArtSell.Modules.ModelOperations.Application;
public sealed record ApprovedModelContext(
string ScopeKey,
VersionSet VersionSet,
string LifecycleState,
DateTimeOffset EffectiveAt);
public sealed record DueModelOperation(
Guid ScheduleId,
string OperationCode,
string ScopeKey,
string Cadence,
string AutomationMode,
string Queue,
string IdempotencyKey,
int ScheduleVersion,
DateTimeOffset ScheduledFor,
string CatchUpPolicy,
int MaxCatchUp);
public sealed record ModelOperationRequest(
Guid RequestId,
Guid ScheduleId,
string OperationCode,
string ScopeKey,
string AutomationMode,
string IdempotencyKey,
ApprovedModelContext Context,
string CorrelationId,
DateTimeOffset RequestedAt);
public interface IApprovedModelContextReader
{
Task<ApprovedModelContext?> ReadAsync(string scopeKey, DateTimeOffset asOf, CancellationToken cancellationToken);
}
public interface IModelScheduleRepository
{
Task<IReadOnlyList<DueModelOperation>> AcquireDueAsync(
DateTimeOffset now,
string leaseOwner,
TimeSpan leaseDuration,
int limit,
CancellationToken cancellationToken);
Task MarkDispatchedAsync(
Guid scheduleId,
string leaseOwner,
string backgroundJobId,
DateTimeOffset dispatchedAt,
DateTimeOffset nextDueAt,
CancellationToken cancellationToken);
Task ReleaseAsync(
Guid scheduleId,
string leaseOwner,
string reasonCode,
DateTimeOffset releasedAt,
CancellationToken cancellationToken);
}
public interface IModelOperationRequestRepository
{
Task<bool> AddAsync(ModelOperationRequest request, CancellationToken cancellationToken);
}
public interface IModelOperationRequestService
{
Task<ModelOperationRequest?> RequestAsync(
Guid scheduleId,
string operationCode,
string scopeKey,
string automationMode,
string idempotencyKey,
string correlationId,
CancellationToken cancellationToken);
}