feat(mcp): подготовить сервер и доступ к приёмке
This commit is contained in:
commit
bf3d50e1ff
3835 files changed
+537122
No files matched your search
@@ -0,0 +1,20 @@
|
||||
import { z } from "zod"
|
||||
import { certificateIssueRequestSchema, certificateIssueJobSchema, type CertificateIssueRequest } from "@mmapp/contracts/certificates"
|
||||
|
||||
export const certificateIssueCheckpointSchema = z.object({
|
||||
request: certificateIssueRequestSchema.extend({ requestId: z.string().uuid() }),
|
||||
accepted: z.boolean(),
|
||||
job: certificateIssueJobSchema.nullable(),
|
||||
}).superRefine((value, ctx) => {
|
||||
const job = value.job, request = value.request
|
||||
if (job && (job.id !== request.requestId || job.serverId !== String(request.serverId) || job.certName !== request.certName || JSON.stringify(job.domainNames) !== JSON.stringify(request.domainNames))) ctx.addIssue({ code: "custom", message: "Сохранённая задача относится к другой цели" })
|
||||
if (job && !value.accepted) ctx.addIssue({ code: "custom", message: "Наблюдение задачи не подтверждает принятие запроса" })
|
||||
})
|
||||
export type CertificateIssueCheckpoint = z.infer<typeof certificateIssueCheckpointSchema>
|
||||
export function createCertificateIssueCheckpoint(request: CertificateIssueRequest, requestId: string) {
|
||||
return certificateIssueCheckpointSchema.parse({ request: { ...request, requestId }, accepted: false, job: null })
|
||||
}
|
||||
export function readCertificateIssueCheckpoint(raw: string | null) {
|
||||
return raw === null ? null : certificateIssueCheckpointSchema.parse(JSON.parse(raw))
|
||||
}
|
||||
export function certificateIssueStorageKey(backendUrl: string) { return "mmapp:certificate-issue:" + backendUrl }
|
||||
Reference in new issue
Block a user