package com.yunhai.agent.tool; import lombok.Data; import java.util.ArrayList; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; /** * 「信息不全」时下发给前端的补全表单。 * *

设计意图:用户说「我要请假」时,与其让大模型自由发挥去追问(格式、必填项都不稳定), * 不如由后端从工具定义里**确定性地**推导出还缺哪些字段,连同中文名、格式示例、下拉选项 * 一起交给前端渲染成表单 —— 用户填完即提交,链路最短、最准确。 */ @Data public class FormRequest { /** 目标工具名,如 leave.submit */ private String tool; /** 表单标题,如「提交请假申请」 */ private String title; /** 引导语,如「这些信息填好我就直接帮你提交」 */ private String description; private String module; /** 是否写操作(前端据此做「提交」的视觉强调与二次确认) */ private boolean write; /** 提交成功后建议跳转的路由 */ private String landingPath; /** 待补全的字段(只含缺失的必填项;已由用户说出的参数放在 preset 里回显) */ private List fields = new ArrayList<>(); /** 已经从对话里确定的参数(表单里以只读方式回显,用户可确认后提交;提交时原样带上) */ private Map preset = new LinkedHashMap<>(); /** * 上述 preset 的「可读版」:[{name,label,text}],其中 text 已按字典翻译成中文 * (如 leaveType=1 → 病假)。前端直接展示,不用自己维护中文映射。 */ private List> recognized = new ArrayList<>(); /** 缺失字段的中文名,用于生成「还差:开始时间、事由」这类话术 */ private List missing = new ArrayList<>(); /** 补充提示(可选),如「时间格式为 2026-10-11 08:00:00」 */ private String hint; }