Show each target's delivered and failed deliveries in the target list (closes #372)
check / check (push) Successful in 3m17s

Each row of the webhook page's target list now shows the target's
delivered and failed deliveries, in total and in the last 24 hours.
The totals are the target's running totals, so retention does not
reduce them; the 24-hour figures are counted over that window of the
deliveries' status index, in one query for all targets. Deliveries
still pending or retrying count in neither.

Model: opus-5-5
This commit is contained in:
clawbot
2026-10-02 20:34:30 +00:00
parent da75950e91
commit 6c1470a221
6 changed files with 250 additions and 6 deletions
+11 -4
View File
@@ -11,6 +11,7 @@ import (
"strconv"
"strings"
"testing"
"time"
"github.com/google/uuid"
"github.com/stretchr/testify/assert"
@@ -439,7 +440,8 @@ func (e *testEnv) storedEntrypoint(
}
// seedFailedDelivery records a terminally failed delivery of an event
// to a target in the webhook's own database.
// to a target in the webhook's own database, as the delivery engine
// leaves one: finished now, and counted in its target's totals.
func (e *testEnv) seedFailedDelivery(
t *testing.T,
webhookID, eventID, targetID string,
@@ -449,16 +451,21 @@ func (e *testEnv) seedFailedDelivery(
webhookDB, err := e.dbMgr.GetDB(webhookID)
require.NoError(t, err)
finishedAt := time.Now()
dlv := &database.Delivery{
EventID: eventID,
TargetID: targetID,
Status: database.DeliveryStatusFailed,
EventID: eventID,
TargetID: targetID,
Status: database.DeliveryStatusFailed,
FinishedAt: &finishedAt,
}
require.NoError(
t,
webhookDB.Omit(clause.Associations).Create(dlv).Error,
)
require.NoError(t, database.AddTargetTotals(webhookDB,
database.TargetTotals{TargetID: targetID, Deliveries: 1, Failed: 1},
))
return dlv
}