feat(auth): 角色映射按平台字典(1-7)校准,并移除资源库模块对接
build / build-push (push) Successful in 52s

- 角色字典实测校准(采样 200+ 账号 currentRole/roles):
  1 老师 / 2 校领导 / 3 学生 / 4 家长 / 5 局领导 / 6 工作号 / 7 管理员
  → agent.roles: student=[3] teacher=[1,6] parent=[4] admin=[2,5,7]
  (旧默认 student=[1]/teacher=[2,3]/admin=[4..7] 系臆测,导致老师账号被显示为学生)
- 新增家长身份 AgentRole.PARENT;活动报名/取消改由 STUDENT_OR_PARENT 放行
- 当前身份识别增加 roleName 关键词兜底,避免识别不出就降级为访客
- 移除资源库对接:删除 ResourceTools 及注册/编排/agent.modules/module-landing
- 测试 48/48 通过
This commit is contained in:
lijing
2026-10-12 16:10:39 +08:00
parent 57766c8bba
commit 67e55f1875
11 changed files with 265 additions and 135 deletions
@@ -10,7 +10,6 @@ import com.yunhai.agent.tool.defs.DormNoticeTools;
import com.yunhai.agent.tool.defs.HomeworkTools;
import com.yunhai.agent.tool.defs.LeaveTools;
import com.yunhai.agent.tool.defs.ProfessionTools;
import com.yunhai.agent.tool.defs.ResourceTools;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Component;
@@ -75,7 +74,6 @@ public class ToolRegistry {
register(DormNoticeTools.defs());
register(ActivityTools.defs());
register(HomeworkTools.defs());
register(ResourceTools.defs());
register(ProfessionTools.defs());
// 套用「学生 / 教师」角色能力策略(未显式声明角色的工具在此落定)
RolePolicy.apply(tools.values());
@@ -1,59 +0,0 @@
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;
/**
* 资源库模块工具 —— 后端 ResourceLibrary,前缀 /api/resource、/api/category、/api/textbook。
*/
public final class ResourceTools {
public static final String MODULE = "resourcelibrary";
private ResourceTools() {
}
public static List<ToolDef> defs() {
List<ToolDef> list = new ArrayList<>();
list.add(ToolDef.of("resource.search", MODULE, "检索资源",
"按关键词/分类/学科检索教学资源(课件、教案、试题等)。用户问“找一份 XX 的课件”“有没有 XX 资料”时用它。",
"GET", "/api/resource/List")
.p(ToolParam.optional("keyword", "string", "关键词:资源名称 / 编码 / 上传人"),
ToolParam.optional("categoryId", "integer", "分类节点 id(含子节点)"),
ToolParam.optional("subject", "string", "学科"),
ToolParam.optional("type", "string", "资源类型"),
ToolParam.optional("orderBy", "string", "排序:time_desc 最新 / download_desc 下载最多 / view_desc 浏览最多"),
ToolParam.optional("pageIndex", "integer", "页码").dft("1"),
ToolParam.optional("pageSize", "integer", "每页条数").dft("10"))
.readAt("/resource"));
list.add(ToolDef.of("resource.detail", MODULE, "资源详情",
"查看一份资源的详细信息(分类、学科、格式、下载量等)。",
"GET", "/api/resource/Detail")
.p(ToolParam.required("id", "integer", "资源 id,来自 resource.search"))
.readAt("/resource"));
list.add(ToolDef.of("resource.categoryTree", MODULE, "资源分类树",
"资源分类树(学段 → 学科 → 年级册次 → 章节),用于按分类筛选资源。",
"GET", "/api/category/Tree")
.readAt("/resource"));
list.add(ToolDef.of("resource.collect", MODULE, "收藏资源",
"收藏或取消收藏一份资源。",
"POST_FORM", "/api/resource/Collect")
.p(ToolParam.required("id", "integer", "资源 id")
.label("资源"))
.write("/resource/collect"));
list.add(ToolDef.of("resource.textbookOptions", MODULE, "教材选项",
"查询可选的教材版本 / 学科 / 出版社。",
"GET", "/api/textbook/Options")
.readAt("/textbook"));
return list;
}
}