import { createHuman, createStep, createWorkflow } from "@ai_kit/core";
import { z } from "zod";
const fetchDraftApplication = createStep<
{ applicantId: string },
{ applicantId: string; amount: number; history: string[] }
>({
id: "fetch-draft-application",
description: "Charge un dossier à valider",
inputSchema: z.object({ applicantId: z.string().min(1) }),
handler: async ({ input }) => ({
applicantId: input.applicantId,
amount: 4200,
history: ["2019: ouverture", "2023: mise à jour"],
}),
});
export const manualReview = createHuman<
{ applicantId: string; amount: number; history: string[] },
{ decision: string; commentaire: string }
>({
id: "manual-review",
output: ({ current }) => ({
dossier: {
id: current.applicantId,
montant: current.amount,
historique: current.history,
},
}),
input: ({ ask }) =>
ask.form({
title: "Validation manuelle du dossier",
fields: [
ask.text({ id: "commentaire", label: "Commentaire" }),
ask.select({
id: "decision",
label: "Décision",
options: ["approve", "reject"],
}),
],
}),
});
const finalizeDecision = createStep<
{ decision: string; commentaire: string },
{ status: string }
>({
id: "finalize-decision",
handler: ({ input, context }) => ({
status: `${context.initialInput.applicantId}:${input.decision}:${input.commentaire}`,
}),
});
export const onboardingWorkflow = createWorkflow({ id: "onboarding" })
.then(fetchDraftApplication)
.human(manualReview)
.then(finalizeDecision)
.commit();