fix(alerts): подтвердить риск ручного повтора сообщения

This commit is contained in:
Denozordec committed 2026-10-03 19:21:19 +07:00
1 parent 7d0608bbce
commit b109532f33
11 files changed
+103 -16

No files matched your search

+10 -1
View File
@@ -1,4 +1,4 @@
import {alertsOutboxOverviewSchema} from "@mmapp/contracts/alerts"
import {alertsOutboxOverviewSchema,alertsOutboxRetrySchema,alertsOutboxRetryReceiptSchema} from "@mmapp/contracts/alerts"
import {requestJson} from "./http-client"
export async function getAlertsOutbox(base:string,options?:{signal?:AbortSignal}){
const signal=options?.signal?AbortSignal.any([options.signal,AbortSignal.timeout(30_000)]):AbortSignal.timeout(30_000);signal.throwIfAborted()
@@ -6,3 +6,12 @@ export async function getAlertsOutbox(base:string,options?:{signal?:AbortSignal}
if(!parsed.success)throw Error("Состояние очереди не подтверждено сервером")
return parsed.data
}
export async function retryAlertsOutbox(base:string,id:string,input:unknown,options?:{signal?:AbortSignal}){
const body=alertsOutboxRetrySchema.safeParse(input);if(!body.success||!id.trim()||id.length>200)throw Error("Проверьте подтверждение и версию сообщения")
const signal=options?.signal?AbortSignal.any([options.signal,AbortSignal.timeout(30_000)]):AbortSignal.timeout(30_000);signal.throwIfAborted()
const raw=await requestJson<unknown>(base,"/api/alerts/outbox/"+encodeURIComponent(id)+"/retry",{method:"POST",body:JSON.stringify(body.data),signal,cache:"no-store"});signal.throwIfAborted()
const parsed=alertsOutboxRetryReceiptSchema.safeParse(raw)
if(!parsed.success||parsed.data.id!==id||parsed.data.resolutionVersion!==body.data.expectedVersion+1)throw Error("Постановка сообщения в очередь не подтверждена сервером")
return parsed.data
}