docs(notification-outbox): split UI bullet, fix outbox-vs-S&F wording in CLAUDE.md
This commit is contained in:
@@ -113,7 +113,7 @@ This project contains design documentation for a distributed SCADA system built
|
|||||||
- Async best-effort replication to standby (no ack wait).
|
- Async best-effort replication to standby (no ack wait).
|
||||||
- Messages not cleared on instance deletion.
|
- Messages not cleared on instance deletion.
|
||||||
- CachedCall idempotency is the caller's responsibility.
|
- CachedCall idempotency is the caller's responsibility.
|
||||||
- Notification Outbox: central `NotificationOutboxActor` singleton on the active central node — the first centrally-hosted outbox (S&F Engine remains site-only).
|
- Notification Outbox: central `NotificationOutboxActor` singleton on the active central node — the first centrally-hosted store-and-forward component (the S&F Engine remains site-only).
|
||||||
- `Notifications` table in central MS SQL is the single source of audit truth (one row per notification); type-agnostic via the `Type` discriminator.
|
- `Notifications` table in central MS SQL is the single source of audit truth (one row per notification); type-agnostic via the `Type` discriminator.
|
||||||
- Status lifecycle `Pending → Retrying → Delivered / Parked / Discarded`, plus site-local `Forwarding` (never persisted centrally).
|
- Status lifecycle `Pending → Retrying → Delivered / Parked / Discarded`, plus site-local `Forwarding` (never persisted centrally).
|
||||||
- Dispatcher loop polls due rows, resolves the list, delivers via the typed adapter; transient failures retry to `Parked`, permanent failures park immediately.
|
- Dispatcher loop polls due rows, resolves the list, delivers via the typed adapter; transient failures retry to `Parked`, permanent failures park immediately.
|
||||||
@@ -141,7 +141,9 @@ This project contains design documentation for a distributed SCADA system built
|
|||||||
- Health reports: 30s interval, 60s offline threshold, monotonic sequence numbers, raw error counts per interval.
|
- Health reports: 30s interval, 60s offline threshold, monotonic sequence numbers, raw error counts per interval.
|
||||||
- Dead letter monitoring as a health metric.
|
- Dead letter monitoring as a health metric.
|
||||||
- Site Event Logging: 30-day retention, 1GB storage cap, daily purge, paginated queries with keyword search.
|
- Site Event Logging: 30-day retention, 1GB storage cap, daily purge, paginated queries with keyword search.
|
||||||
- Notification Outbox KPIs are central-computed point-in-time from the `Notifications` table (global + per-source-site): queue depth, stuck count, parked count, delivered-last-interval, oldest-pending age. Stuck = `Pending`/`Retrying` older than a configurable age threshold (default 10 min) — display-only (KPI count + row badge), no escalation/alerting. Headline KPI tiles surface on the Health dashboard; a new Central UI Notification Outbox page offers a queryable list with Retry/Discard actions on parked notifications.
|
- Notification Outbox KPIs are central-computed point-in-time from the `Notifications` table (global + per-source-site): queue depth, stuck count, parked count, delivered-last-interval, oldest-pending age.
|
||||||
|
- Stuck = `Pending`/`Retrying` older than a configurable age threshold (default 10 min) — display-only (KPI count + row badge), no escalation/alerting.
|
||||||
|
- Headline KPI tiles surface on the Health dashboard; a new Central UI Notification Outbox page offers a queryable list with Retry/Discard actions on parked notifications.
|
||||||
|
|
||||||
### Code Organization
|
### Code Organization
|
||||||
- Entity classes are persistence-ignorant POCOs in Commons; EF mappings in Configuration Database.
|
- Entity classes are persistence-ignorant POCOs in Commons; EF mappings in Configuration Database.
|
||||||
|
|||||||
Reference in New Issue
Block a user