feat: split into multiple items

This commit is contained in:
vas3k
2025-05-23 14:33:40 +02:00
parent 289b436236
commit 25c61f0519
17 changed files with 332 additions and 57 deletions

View File

@@ -2,16 +2,30 @@ import { Field } from "@/prisma/client"
export const fieldsToJsonSchema = (fields: Field[]) => {
const fieldsWithPrompt = fields.filter((field) => field.llm_prompt)
const schemaProperties = fieldsWithPrompt.reduce(
(acc, field) => {
acc[field.code] = { type: field.type, description: field.llm_prompt || "" }
return acc
},
{} as Record<string, { type: string; description: string }>
)
const schema = {
type: "object",
properties: fieldsWithPrompt.reduce(
(acc, field) => {
acc[field.code] = { type: field.type, description: field.llm_prompt || "" }
return acc
properties: {
...schemaProperties,
items: {
type: "array",
description: "Included items or products in the transaction which have own name and price",
items: {
type: "object",
properties: schemaProperties,
required: [...Object.keys(schemaProperties)],
additionalProperties: false,
},
},
{} as Record<string, { type: string; description: string }>
),
required: fieldsWithPrompt.map((field) => field.code),
},
required: [...Object.keys(schemaProperties), "items"],
additionalProperties: false,
}