// 提示词/模板库前端纯逻辑(F3):新建表单值校验 + 请求体组装。 // 纯逻辑(无 React / 无 fetch),便于 node 环境单测。后端 title/body 非空校验为权威(422 兜底), // 前端先拦一道给即时反馈(守边界:不信输入,提交前 trim 判空)。 import type { TemplateCreateRequest } from "@/lib/api/types"; // 新建模板的草稿表单值(受控输入原始值)。 export interface TemplateDraft { title: string; body: string; category: string; toolKey: string; } export const EMPTY_TEMPLATE_DRAFT: TemplateDraft = { title: "", body: "", category: "", toolKey: "", }; // 草稿是否可提交(title/body 去空白后非空)。 export function isTemplateDraftValid(draft: TemplateDraft): boolean { return draft.title.trim().length > 0 && draft.body.trim().length > 0; } // 草稿 → 创建请求体:trim title/body;空 category/toolKey 省略为 null(后端可空)。 export function buildTemplateCreateRequest( draft: TemplateDraft, ): TemplateCreateRequest { const category = draft.category.trim(); const toolKey = draft.toolKey.trim(); return { title: draft.title.trim(), body: draft.body.trim(), category: category.length > 0 ? category : null, tool_key: toolKey.length > 0 ? toolKey : null, }; }