This commit is contained in:
@@ -0,0 +1,209 @@
|
||||
/** 智能助手相关类型契约(与后端 com.yunhai.agent.model 对齐) */
|
||||
|
||||
/** 平台用户信息(BoaUser 的子集) */
|
||||
export interface UserInfoVo {
|
||||
id?: number;
|
||||
name?: string;
|
||||
account?: string;
|
||||
profilePicture?: string;
|
||||
deptName?: string;
|
||||
[key: string]: any;
|
||||
}
|
||||
|
||||
/** 平台已授权模块节点 */
|
||||
export interface ModuleNode {
|
||||
id: number;
|
||||
name: string;
|
||||
modId: number;
|
||||
page?: string;
|
||||
children?: ModuleNode[];
|
||||
[key: string]: any;
|
||||
}
|
||||
|
||||
/** 补全表单里的一个字段(由后端工具定义推导) */
|
||||
export interface FormField {
|
||||
/** 提交时的参数名 */
|
||||
name: string;
|
||||
/** 中文标签,如「开始时间」 */
|
||||
label: string;
|
||||
/** 控件类型 */
|
||||
widget: "text" | "textarea" | "number" | "date" | "datetime" | "select";
|
||||
type?: string;
|
||||
required: boolean;
|
||||
/** 字段说明(含义与格式) */
|
||||
description?: string;
|
||||
/** 格式示例,用作 placeholder */
|
||||
example?: string;
|
||||
defaultValue?: string;
|
||||
/** 下拉选项 */
|
||||
options?: { value: string; label: string }[];
|
||||
/**
|
||||
* 下拉选项的动态来源(后端字典工具名,如 leave.types)。
|
||||
* 有值但 options 为空 ⇒ 字典接口没取到,前端提示「可先手填编号」。
|
||||
*/
|
||||
optionsFrom?: string;
|
||||
/**
|
||||
* 当前 options 是否为内置兜底(而非学校实时字典)。
|
||||
* 为 true 时说明「选项能用,但可能不含学校自定义的项」,前端给一句轻提示即可,不阻塞填写。
|
||||
*/
|
||||
optionsFallback?: boolean;
|
||||
}
|
||||
|
||||
/**
|
||||
* 信息不全时后端下发的「补全表单」。
|
||||
* 用户填完直接提交,服务端会直接执行对应工具(不再让模型二次猜测)。
|
||||
*/
|
||||
export interface FormRequest {
|
||||
tool: string;
|
||||
title: string;
|
||||
description?: string;
|
||||
module?: string;
|
||||
write: boolean;
|
||||
landingPath?: string;
|
||||
fields: FormField[];
|
||||
/** 已从对话中确定的参数(只读回显) */
|
||||
preset?: Record<string, any>;
|
||||
/** 已识别参数的可读回显(text 已按字典翻译成中文,如「病假」而非 1) */
|
||||
recognized?: { name: string; label: string; text: string }[];
|
||||
/** 缺失字段的中文名 */
|
||||
missing?: string[];
|
||||
hint?: string;
|
||||
}
|
||||
|
||||
/** 表单提交体 */
|
||||
export interface FormSubmit {
|
||||
tool: string;
|
||||
args: Record<string, any>;
|
||||
}
|
||||
|
||||
/**
|
||||
* 「浏览器代执行」挂起载荷(方案 A):模块接口只认浏览器 CAS 会话,
|
||||
* 服务端把接口描述下发前端,由前端用用户自己的登录态调用后回传结果续跑。
|
||||
*/
|
||||
export interface BrowserToolRequest {
|
||||
calls: BrowserToolCall[];
|
||||
/** 给用户看的一句话说明 */
|
||||
notice?: string;
|
||||
}
|
||||
|
||||
/** 一次代执行调用描述(pathAndQuery 相对当前站点根,同站部署 ⇒ 同源) */
|
||||
export interface BrowserToolCall {
|
||||
name: string;
|
||||
title: string;
|
||||
arguments?: Record<string, any>;
|
||||
write: boolean;
|
||||
method: "GET" | "POST_JSON" | "POST_FORM";
|
||||
pathAndQuery: string;
|
||||
body?: string;
|
||||
contentType?: string;
|
||||
}
|
||||
|
||||
/** 代执行结果回传项(与 BrowserToolCall 按 name 对应) */
|
||||
export interface ToolResultItem {
|
||||
name: string;
|
||||
arguments?: Record<string, any>;
|
||||
/** HTTP 状态码;网络层失败时为空 */
|
||||
status?: number;
|
||||
/** 响应体原文 */
|
||||
body?: string;
|
||||
/** 网络层错误(失败/超时/跨域) */
|
||||
error?: string;
|
||||
}
|
||||
|
||||
/** 对话请求 */
|
||||
export interface AgentChatRequest {
|
||||
sessionId?: string;
|
||||
message?: string;
|
||||
enableTools?: boolean;
|
||||
/** 非空时:直接执行指定工具(表单提交) */
|
||||
formSubmit?: FormSubmit;
|
||||
/** 非空时:浏览器代执行结果回传(续跑) */
|
||||
toolResult?: ToolResultItem[];
|
||||
}
|
||||
|
||||
/** 一次工具调用轨迹 */
|
||||
export interface ToolCallTrace {
|
||||
name: string;
|
||||
title: string;
|
||||
/** 业务模块标识(前端据此拼模块页面地址做「去系统里查看」跳转) */
|
||||
module?: string;
|
||||
arguments?: Record<string, any>;
|
||||
success: boolean;
|
||||
error?: string;
|
||||
write?: boolean;
|
||||
/**
|
||||
* 模块内的落地路由(如 `/my`)。
|
||||
* 写操作 = 执行成功后去确认;**查询失败**(下游 code=302 需要浏览器登录态)= 深链兜底入口。
|
||||
*/
|
||||
landingPath?: string;
|
||||
costMs?: number;
|
||||
}
|
||||
|
||||
/** 对话响应 */
|
||||
export interface AgentChatResponse {
|
||||
sessionId: string;
|
||||
reply: string;
|
||||
toolCalls: ToolCallTrace[];
|
||||
wroteSomething: boolean;
|
||||
landingPath?: string;
|
||||
rounds?: number;
|
||||
promptTokens?: number;
|
||||
completionTokens?: number;
|
||||
warning?: string;
|
||||
/** 需要用户补全信息时返回的表单 */
|
||||
form?: FormRequest;
|
||||
/** 非空:本轮工具需要浏览器代执行,前端调完接口把 toolResult 回传续跑 */
|
||||
browserTool?: BrowserToolRequest;
|
||||
}
|
||||
|
||||
/** 能力目录里的单项能力 */
|
||||
export interface ToolCatalogItem {
|
||||
name: string;
|
||||
title: string;
|
||||
description: string;
|
||||
write: boolean;
|
||||
landingPath?: string;
|
||||
/** 可执行该能力的身份(中文标签,如「学生、教师」);不限身份时为空 */
|
||||
roles?: string;
|
||||
}
|
||||
|
||||
/** 能力目录:后端已按「当前角色 + 已授权模块」过滤后返回 */
|
||||
export interface AgentToolCatalog {
|
||||
/** 模块标识 → 能力列表;不同身份拿到的模块集合与能力数不同 */
|
||||
modules: Record<string, ToolCatalogItem[]>;
|
||||
/** 当前身份可见的能力总数 */
|
||||
total: number;
|
||||
/** 当前登录身份的中文描述(由后端按 BoaUser 解析,如「学生」「教师」「访客」) */
|
||||
roles?: string;
|
||||
/** 当前身份明细:一个账号可能有多重身份,后端只按「当前身份」生效 */
|
||||
identity?: {
|
||||
userId?: string;
|
||||
userName?: string;
|
||||
schoolId?: string;
|
||||
/** 当前身份的角色号(平台 currentRole.roleId) */
|
||||
roleId?: string;
|
||||
/** 当前身份名称(平台 currentRole.roleName) */
|
||||
roleName?: string;
|
||||
roles?: string;
|
||||
};
|
||||
}
|
||||
|
||||
/** 聊天界面里的一条消息 */
|
||||
export interface ChatItem {
|
||||
id: string;
|
||||
role: "user" | "assistant";
|
||||
/** 正文(assistant 回复可能先为空,由 toolCalls 展示过程) */
|
||||
text: string;
|
||||
/** 阶段提示("正在调用:提交请假申请") */
|
||||
stage?: string;
|
||||
traces?: ToolCallTrace[];
|
||||
wroteSomething?: boolean;
|
||||
landingPath?: string;
|
||||
error?: string;
|
||||
/** 需要用户补全信息时的表单 */
|
||||
form?: FormRequest;
|
||||
/** 表单是否已提交(提交后置为只读回显) */
|
||||
formSubmitted?: boolean;
|
||||
/** 消息创建时间(毫秒) */
|
||||
at: number;
|
||||
}
|
||||
Reference in New Issue
Block a user