perf(api-server): tune gallery load shedding

This commit is contained in:
kdletters
2026-05-19 01:00:33 +08:00
parent 3eb292b403
commit 8038b6a6ee
22 changed files with 1178 additions and 80 deletions

View File

@@ -137,12 +137,12 @@ function unwrapPayload(json) {
}
function hasCollection(payload, keys) {
return keys.some((key) => Array.isArray(payload?.[key]));
return Boolean(payload) && keys.some((key) => Array.isArray(payload[key]));
}
function firstCollection(payload, keys) {
for (const key of keys) {
if (Array.isArray(payload?.[key])) return payload[key];
if (payload && Array.isArray(payload[key])) return payload[key];
}
return [];
}
@@ -152,10 +152,11 @@ function hasListItemShape(payload, keys) {
if (collection.length === 0) return true;
const item = collection[0];
const hasId = Boolean(
item?.profileId || item?.profile_id || item?.workId || item?.work_id || item?.publicWorkCode,
item &&
(item.profileId || item.profile_id || item.workId || item.work_id || item.publicWorkCode),
);
const hasTitle = Boolean(
item?.title || item?.workTitle || item?.work_title || item?.levelName || item?.worldName,
item && (item.title || item.workTitle || item.work_title || item.levelName || item.worldName),
);
return hasId && hasTitle;
}
@@ -213,7 +214,8 @@ function performDetailRequest() {
const payload = unwrapPayload(json);
const ok = check(response, {
[`${endpoint.name} status is 200`]: (res) => res.status === 200,
[`${endpoint.name} has detail payload`]: () => endpoint.expectKeys.some((key) => payload?.[key]),
[`${endpoint.name} has detail payload`]: () =>
Boolean(payload) && endpoint.expectKeys.some((key) => payload[key]),
});
worksDetailShapeErrorRate.add(!ok, { endpoint: endpoint.name });
}