feat(edit): 编辑页上报ozon 开发

This commit is contained in:
R524809
2026-09-30 15:57:54 +08:00
parent 0a303414d8
commit 45871584b3
48 changed files with 3700 additions and 887 deletions
+11 -1
View File
@@ -11,6 +11,10 @@ export class OzonRequestError extends Error {
}
}
export class OzonRetryableError extends Error {}
/** 429 明确未受理写请求,可按平台要求延迟重试。 */
export class OzonRateLimitError extends OzonRetryableError {
constructor(public readonly retryAfterSeconds: number) { super('Ozon request rate limited'); }
}
export type OzonCategoryNode = {
/** 类型叶子会省略这两个字段,继承最近的父类目。 */
@@ -193,7 +197,13 @@ export async function requestOzon(
if (response.status === 401 || response.status === 403) {
throw new OzonCredentialError(response.status);
}
if (response.status === 429 || response.status >= 500) {
if (response.status === 429) {
const header = response.headers.get('Item-Retry-After') ?? response.headers.get('Retry-After');
const parsed = Number(header);
const date = header ? (Date.parse(header)-Date.now())/1000 : NaN;
throw new OzonRateLimitError(Number.isFinite(parsed) && parsed > 0 ? Math.min(86400,Math.ceil(parsed)) : Number.isFinite(date) && date > 0 ? Math.min(86400,Math.ceil(date)) : 60);
}
if (response.status >= 500) {
throw new OzonRetryableError(`Ozon temporarily unavailable (${response.status})`);
}
throw new OzonRequestError(response.status);