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 随工程入库
91 lines
4.7 KiB
Java
91 lines
4.7 KiB
Java
package com.yunhai.agent.tool.defs;
|
|
|
|
import com.yunhai.agent.tool.ToolDef;
|
|
import com.yunhai.agent.tool.ToolParam;
|
|
|
|
import java.util.ArrayList;
|
|
import java.util.List;
|
|
|
|
/**
|
|
* 教师专业发展模块工具 —— 后端 Profession,前缀 /api/profession、/api/moudule、/api/points、/api/stats。
|
|
*/
|
|
public final class ProfessionTools {
|
|
|
|
public static final String MODULE = "profession";
|
|
|
|
private ProfessionTools() {
|
|
}
|
|
|
|
public static List<ToolDef> defs() {
|
|
List<ToolDef> list = new ArrayList<>();
|
|
|
|
list.add(ToolDef.of("profession.homeRecords", MODULE, "栏目最新记录",
|
|
"各栏目最新发布的记录块(专业发展首页内容)。",
|
|
"GET", "/api/profession/HomeModuleRecords")
|
|
.p(ToolParam.optional("size", "integer", "每栏取几条").dft("6"))
|
|
.readAt("/home"));
|
|
|
|
list.add(ToolDef.of("profession.list", MODULE, "专业发展记录列表",
|
|
"后台口径的专业发展记录分页查询,可按栏目/教师/时间筛选。",
|
|
"GET", "/api/profession/ProfessionList")
|
|
.p(ToolParam.optional("pageIndex", "integer", "页码").dft("1"),
|
|
ToolParam.optional("pageSize", "integer", "每页条数").dft("10"),
|
|
ToolParam.optional("keyword", "string", "标题关键词"),
|
|
ToolParam.optional("moduleId", "integer", "栏目 id"),
|
|
ToolParam.optional("starttime", "string", "开始时间 yyyy-MM-dd"),
|
|
ToolParam.optional("endtime", "string", "结束时间 yyyy-MM-dd"))
|
|
.readAt("/module/list"));
|
|
|
|
list.add(ToolDef.of("profession.moduleRecords", MODULE, "栏目文章列表",
|
|
"某个栏目下的文章分页(附同校其他栏目)。",
|
|
"GET", "/api/profession/ModuleRecordList")
|
|
.p(ToolParam.required("moduleId", "integer", "栏目 id"),
|
|
ToolParam.optional("pageIndex", "integer", "页码").dft("1"),
|
|
ToolParam.optional("pageSize", "integer", "每页条数").dft("10"))
|
|
.readAt("/module/list"));
|
|
|
|
list.add(ToolDef.of("profession.myRecords", MODULE, "我的栏目文章",
|
|
"查询我在某栏目下发表的文章。",
|
|
"GET", "/api/profession/MyModuleRecordList")
|
|
.p(ToolParam.required("moduleId", "integer", "栏目 id"),
|
|
ToolParam.optional("pageIndex", "integer", "页码").dft("1"),
|
|
ToolParam.optional("pageSize", "integer", "每页条数").dft("10"))
|
|
.readAt("/timeline"));
|
|
|
|
list.add(ToolDef.of("profession.detail", MODULE, "记录详情",
|
|
"查看一条专业发展记录的详情。",
|
|
"GET", "/api/profession/ProfessionDetail")
|
|
.p(ToolParam.required("SerID", "integer", "记录 id"))
|
|
.readAt("/module/list"));
|
|
|
|
list.add(ToolDef.of("profession.moduleTree", MODULE, "栏目树",
|
|
"专业发展的栏目树(含我的栏目),发布记录时选栏目用。",
|
|
"GET", "/api/moudule/ModuleTree")
|
|
.readAt("/record/new"));
|
|
|
|
list.add(ToolDef.of("profession.myPoints", MODULE, "我的积分",
|
|
"查询我的专业发展积分与来源明细。",
|
|
"GET", "/api/profession/MyPoints")
|
|
.readAt("/timeline"));
|
|
|
|
list.add(ToolDef.of("profession.pointsRank", MODULE, "积分排行",
|
|
"积分排行榜。",
|
|
"GET", "/api/profession/PointsRank")
|
|
.p(ToolParam.optional("top", "integer", "取前几名").dft("8"))
|
|
.readAt("/home"));
|
|
|
|
list.add(ToolDef.of("profession.publish", MODULE, "发布专业发展记录",
|
|
"发布一条专业发展记录(教案/学习资料/反思等)。调用前必须确认栏目 moduleId、标题与内容。",
|
|
"POST_FORM", "/api/profession/Create")
|
|
.p(ToolParam.required("moduleId", "integer", "栏目 id,来自 profession.moduleTree")
|
|
.label("所属栏目").optionsFrom("profession.moduleTree"),
|
|
ToolParam.required("title", "string", "记录标题")
|
|
.label("记录标题").eg("2026年秋季公开课教学设计"),
|
|
ToolParam.optional("content", "string", "记录正文")
|
|
.label("记录正文").as("textarea"))
|
|
.write("/record/new"));
|
|
|
|
return list;
|
|
}
|
|
}
|