按发生时间倒序展示客户端埋点
调整事件查询排序及分页游标,保留入库时间快照隔离。 同步后台说明、定向测试和技术文档。
This commit is contained in:
@@ -160,6 +160,7 @@ async function verify(url, serviceToken, outsiderToken) {
|
||||
),
|
||||
);
|
||||
const first = batch([event(), event(), event()]);
|
||||
first.events[0].event_time = '2026-09-21T12:01:00.123Z';
|
||||
assert.deepEqual(ok(await upload(first)), {
|
||||
acknowledged_batch_ids: [first.batch_id],
|
||||
event_count: 3,
|
||||
@@ -207,6 +208,7 @@ async function verify(url, serviceToken, outsiderToken) {
|
||||
const page1 = await list({ limit: 2 });
|
||||
assert(page1.nextCursor);
|
||||
const late = batch([event()]);
|
||||
late.events[0].event_time = '2026-09-21T11:00:00.123Z';
|
||||
ok(await upload(late));
|
||||
const seen = [...page1.entries];
|
||||
let cursor = page1.nextCursor;
|
||||
@@ -225,17 +227,18 @@ async function verify(url, serviceToken, outsiderToken) {
|
||||
const previous = seen[index - 1];
|
||||
const current = seen[index];
|
||||
assert(
|
||||
previous.receivedAt > current.receivedAt ||
|
||||
(previous.receivedAt === current.receivedAt &&
|
||||
previous.eventTime > current.eventTime ||
|
||||
(previous.eventTime === current.eventTime &&
|
||||
previous.eventId > current.eventId),
|
||||
'Stable receipt/event ID descending order',
|
||||
'Stable event time/event ID descending order',
|
||||
);
|
||||
}
|
||||
const refreshed = await list();
|
||||
assert.equal(refreshed.entries.length, 5);
|
||||
assert.equal(refreshed.entries[0].eventId, late.events[0].event_id);
|
||||
assert.equal(refreshed.entries[0].eventId, first.events[0].event_id);
|
||||
assert.equal(refreshed.entries.at(-1).eventId, late.events[0].event_id);
|
||||
assert.equal(refreshed.entries[0].projectId, null);
|
||||
assert.equal(refreshed.entries[0].eventTime, '2026-09-21T12:00:00.123Z');
|
||||
assert.equal(refreshed.entries[0].eventTime, '2026-09-21T12:01:00.123Z');
|
||||
for (const [name, input] of [
|
||||
['upload_agc_analytics_batch', first],
|
||||
['list_agc_tracking_events', {}],
|
||||
|
||||
Reference in New Issue
Block a user