fix(sitecallaudit): correct stale relay docs and clarify ack switch
This commit is contained in:
@@ -415,9 +415,11 @@ akka {{
|
|||||||
// and NotificationOutbox patterns. M3's dual-write transaction routes
|
// and NotificationOutbox patterns. M3's dual-write transaction routes
|
||||||
// SiteCalls upserts through AuditLogIngestActor's own scope-per-message
|
// SiteCalls upserts through AuditLogIngestActor's own scope-per-message
|
||||||
// ISiteCallAuditRepository resolution, so this singleton is not on the
|
// ISiteCallAuditRepository resolution, so this singleton is not on the
|
||||||
// M3 happy-path hot path; it exists so future direct-write callers
|
// M3 happy-path hot path; it exists so direct-write callers Ask through
|
||||||
// (reconciliation puller, central→site Retry/Discard relay, KPI
|
// a stable cluster proxy without further wiring. The central→site
|
||||||
// projector) Ask through a stable cluster proxy without further wiring.
|
// Retry/Discard relay now lives in this actor (see the
|
||||||
|
// RegisterCentralCommunication wiring below); the reconciliation puller
|
||||||
|
// is the remaining deferred direct-write caller.
|
||||||
// Like AuditLogIngestActor, the actor takes the root IServiceProvider
|
// Like AuditLogIngestActor, the actor takes the root IServiceProvider
|
||||||
// and creates a fresh scope per message because ISiteCallAuditRepository
|
// and creates a fresh scope per message because ISiteCallAuditRepository
|
||||||
// is a scoped EF Core service.
|
// is a scoped EF Core service.
|
||||||
|
|||||||
@@ -23,9 +23,10 @@ namespace ScadaLink.SiteCallAudit;
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <remarks>
|
/// <remarks>
|
||||||
/// <para>
|
/// <para>
|
||||||
/// Query, detail and KPIs land in Task 4; reconciliation and the central→site
|
/// Query, detail and KPIs (Task 4) and the central→site Retry/Discard relay
|
||||||
/// Retry/Discard relay remain deferred (per CLAUDE.md scope discipline — they
|
/// (Task 5 — the relay handlers live in this actor) are implemented; only
|
||||||
/// land in a later follow-up).
|
/// reconciliation remains deferred (per CLAUDE.md scope discipline — it lands
|
||||||
|
/// in a later follow-up).
|
||||||
/// </para>
|
/// </para>
|
||||||
/// <para>
|
/// <para>
|
||||||
/// Per CLAUDE.md "audit-write failure NEVER aborts the user-facing action" —
|
/// Per CLAUDE.md "audit-write failure NEVER aborts the user-facing action" —
|
||||||
@@ -550,7 +551,12 @@ public class SiteCallAuditActor : ReceiveActor
|
|||||||
SiteCallRelayOutcome.NotParked =>
|
SiteCallRelayOutcome.NotParked =>
|
||||||
"The operation is no longer parked at the site (already delivered, discarded, or retrying).",
|
"The operation is no longer parked at the site (already delivered, discarded, or retrying).",
|
||||||
SiteCallRelayOutcome.OperationFailed => ack.ErrorMessage,
|
SiteCallRelayOutcome.OperationFailed => ack.ErrorMessage,
|
||||||
_ => ack.ErrorMessage,
|
// SiteUnreachable is never produced from a ParkedOperationActionAck —
|
||||||
|
// unreachable responses are built by UnreachableRetry/UnreachableDiscard
|
||||||
|
// before any ack is classified, so this arm is unreachable by construction.
|
||||||
|
SiteCallRelayOutcome.SiteUnreachable => ack.ErrorMessage,
|
||||||
|
_ => throw new ArgumentOutOfRangeException(
|
||||||
|
nameof(outcome), outcome, "unknown SiteCallRelayOutcome"),
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user