feat: 提交校园智能助手后端工程源码(Spring Boot 2.7.18 + 平台 starter + JPA + Nacos)
build / build-push (push) Successful in 40s

- com.yunhai.agent,端口 8093,context-path /agent,制品 target/agent.jar;与 NoticeService 同构
- CAS 单点登录 + 三层角色权限(学生/教师/管理员/访客)+ 会话与工具调用审计落库
- DeepSeek 大模型编排 + 7 个业务模块工具(请假/公告/宿舍/活动/作业/资源库/教师发展)
- 浏览器代执行协议(服务端挂起 → 前端用登录态代调 → toolResult 续跑)+ 调用失败深链兜底
- 登出修复:服务端真正 session.invalidate() + 前端两步登出 + logout-guard
- 保留 projman 注入的 .gitea/workflows/build.yml 与 docker/Dockerfile;docker/application-prod.yml、run-app.sh 随工程入库
This commit is contained in:
lijing
2026-10-12 11:18:29 +08:00
parent 8589afd69a
commit 8303b857e9
58 changed files with 6883 additions and 2 deletions
@@ -0,0 +1,54 @@
package com.yunhai.agent.tool;
import lombok.Data;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
/**
* 「信息不全」时下发给前端的补全表单。
*
* <p>设计意图:用户说「我要请假」时,与其让大模型自由发挥去追问(格式、必填项都不稳定),
* 不如由后端从工具定义里**确定性地**推导出还缺哪些字段,连同中文名、格式示例、下拉选项
* 一起交给前端渲染成表单 —— 用户填完即提交,链路最短、最准确。
*/
@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<FormField> fields = new ArrayList<>();
/** 已经从对话里确定的参数(表单里以只读方式回显,用户可确认后提交;提交时原样带上) */
private Map<String, Object> preset = new LinkedHashMap<>();
/**
* 上述 preset 的「可读版」:[{name,label,text}],其中 text 已按字典翻译成中文
* (如 leaveType=1 → 病假)。前端直接展示,不用自己维护中文映射。
*/
private List<Map<String, String>> recognized = new ArrayList<>();
/** 缺失字段的中文名,用于生成「还差:开始时间、事由」这类话术 */
private List<String> missing = new ArrayList<>();
/** 补充提示(可选),如「时间格式为 2026-10-11 08:00:00」 */
private String hint;
}