2026-07-25 15:44:34 -03:00
|
|
|
using System.Security.Claims;
|
|
|
|
|
|
2026-07-24 22:13:25 -03:00
|
|
|
namespace SeaHaven.Services.Interfaces
|
|
|
|
|
{
|
2026-07-25 15:44:34 -03:00
|
|
|
/// <summary>
|
|
|
|
|
/// Controller-facing admin surface for work-order reconciliation. Every method enforces an
|
|
|
|
|
/// authenticated Admin principal at service entry before any data-service call, independent of
|
|
|
|
|
/// any HTTP-layer authorization filter.
|
|
|
|
|
/// </summary>
|
2026-07-24 22:13:25 -03:00
|
|
|
public interface IWorkOrderReconciliationService
|
|
|
|
|
{
|
|
|
|
|
Task<WorkOrderReconciliationTriggerResult> TriggerAsync(
|
2026-07-25 15:44:34 -03:00
|
|
|
ClaimsPrincipal user,
|
2026-07-24 22:13:25 -03:00
|
|
|
string reason,
|
|
|
|
|
CancellationToken cancellationToken);
|
|
|
|
|
|
2026-07-25 15:44:34 -03:00
|
|
|
Task<WorkOrderReconciliationStatus> GetStatusAsync(
|
|
|
|
|
ClaimsPrincipal user,
|
|
|
|
|
CancellationToken cancellationToken);
|
2026-07-24 22:13:25 -03:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public sealed record WorkOrderReconciliationTriggerResult(bool Queued, Guid RunId);
|
|
|
|
|
|
|
|
|
|
public sealed record WorkOrderReconciliationStatus(
|
|
|
|
|
Guid? RunId,
|
|
|
|
|
string State,
|
|
|
|
|
string? Reason,
|
|
|
|
|
DateTimeOffset? RequestedAt,
|
|
|
|
|
DateTimeOffset? StartedAt,
|
|
|
|
|
DateTimeOffset? CompletedAt,
|
|
|
|
|
int WorkOrdersProcessed,
|
|
|
|
|
int CommentsProcessed,
|
|
|
|
|
string? ErrorCode);
|
|
|
|
|
}
|