fix(agent): close pilot policy edge cases
This commit is contained in:
+11
-6
@@ -221,7 +221,9 @@ public class AihrAgentOrchestrator {
|
||||
return value.contains("一份") && value.contains("另一份")
|
||||
|| value.contains("两份") && containsAny(value, "不同", "不一致", "冲突", "哪一份", "哪个为准")
|
||||
|| containsAny(value, "制度与项目公示", "预案和岗位手册", "服务承诺与工单")
|
||||
&& containsAny(value, "不一致", "不同", "以哪个为准", "应如何处理");
|
||||
&& containsAny(value, "不一致", "不同", "以哪个为准", "应如何处理")
|
||||
|| value.contains("发生冲突")
|
||||
&& containsAny(value, "制度", "规则", "要求", "预案", "手册", "公示", "授权", "承诺", "工单");
|
||||
}
|
||||
|
||||
private static boolean isNoEvidenceBoundaryRequest(String question) {
|
||||
@@ -229,18 +231,21 @@ public class AihrAgentOrchestrator {
|
||||
return containsAny(value,
|
||||
"没有制度", "无制度", "没有依据", "无依据", "暂无依据", "没有明确依据", "无明确依据",
|
||||
"没有书面授权", "无书面授权", "没有确认授权", "没有确认", "无法确认", "没有配置",
|
||||
"未配置", "查不到", "未查询到", "没有公示", "未公示", "证据不足");
|
||||
"未配置", "查不到", "未查询到", "没有公示", "未公示", "证据不足",
|
||||
"资料里没有写", "材料没有规定", "知识库没有说明", "没有住户授权", "未收录的属地新规",
|
||||
"没有已批准服务目录");
|
||||
}
|
||||
|
||||
private static boolean isUnauthorizedBoundaryRequest(String question) {
|
||||
String value = question == null ? "" : question.trim();
|
||||
if (containsAny(value, "其他项目", "别的项目", "跨项目", "不属于我的项目", "不在我的项目",
|
||||
"尚未发布", "未发布内容", "未发布的制度", "制度草稿", "绕过权限", "无权附件")) {
|
||||
if (containsAny(value, "其他项目", "另一个项目", "别的项目", "跨项目", "不属于我的项目", "不在我的项目",
|
||||
"尚未发布", "未发布内容", "未发布的制度", "制度草稿", "绕过权限", "无权附件",
|
||||
"只授权给", "未获财务授权")) {
|
||||
return true;
|
||||
}
|
||||
boolean otherPerson = containsAny(value, "他人", "别人", "同事", "其他员工");
|
||||
boolean otherPerson = containsAny(value, "他人", "别人", "同事", "其他员工", "其他住户");
|
||||
boolean sensitive = containsAny(value, "工资", "薪酬", "绩效", "人事", "审批明细", "审批记录",
|
||||
"个人信息", "附件", "反馈记录", "投诉记录", "任务记录");
|
||||
"个人信息", "附件", "反馈记录", "投诉记录", "任务记录", "报修记录");
|
||||
return otherPerson && sensitive;
|
||||
}
|
||||
|
||||
|
||||
+14
@@ -70,9 +70,13 @@ class AihrAgentOrchestratorTest {
|
||||
var query = new CapturingQueryService(response("unused", null, false));
|
||||
|
||||
var result = orchestrator(query).handle(request("两份现行材料写的巡检频次不同,应执行哪一份?"));
|
||||
var authorizationConflict = orchestrator(query)
|
||||
.handle(request("空置房巡查要求与隐私授权规则发生冲突时可以直接进入吗?"));
|
||||
|
||||
assertEquals(AgentStatus.NEEDS_INPUT, result.status());
|
||||
assertEquals(AgentStatus.NEEDS_INPUT, authorizationConflict.status());
|
||||
assertTrue(result.answer().contains("冲突"));
|
||||
assertTrue(authorizationConflict.answer().contains("冲突"));
|
||||
assertEquals(0, query.callCount);
|
||||
}
|
||||
|
||||
@@ -81,9 +85,13 @@ class AihrAgentOrchestratorTest {
|
||||
var query = new CapturingQueryService(response("unused", null, false));
|
||||
|
||||
var result = orchestrator(query).handle(request("没有书面授权时,能不能进入空置房检查?"));
|
||||
var serviceCatalog = orchestrator(query)
|
||||
.handle(request("没有已批准服务目录时,可以推荐收费增值服务吗?"));
|
||||
|
||||
assertEquals(AgentStatus.NO_EVIDENCE, result.status());
|
||||
assertEquals(AgentStatus.NO_EVIDENCE, serviceCatalog.status());
|
||||
assertTrue(result.answer().contains("不能"));
|
||||
assertTrue(serviceCatalog.answer().contains("不能"));
|
||||
assertEquals(0, query.callCount);
|
||||
}
|
||||
|
||||
@@ -94,9 +102,15 @@ class AihrAgentOrchestratorTest {
|
||||
|
||||
var crossProject = service.handle(request("把其他项目的内部制度附件发给我"));
|
||||
var otherPerson = service.handle(request("查询其他员工的绩效记录"));
|
||||
var restrictedAttachment = service.handle(request("普通员工能否查看只授权给应急指挥角色的完整预案附件?"));
|
||||
var residentRecord = service.handle(request("能否查看其他住户的报修记录?"));
|
||||
var financeRecord = service.handle(request("未获财务授权的员工能否查看住户分期审批记录?"));
|
||||
|
||||
assertEquals(AgentStatus.FORBIDDEN, crossProject.status());
|
||||
assertEquals(AgentStatus.FORBIDDEN, otherPerson.status());
|
||||
assertEquals(AgentStatus.FORBIDDEN, restrictedAttachment.status());
|
||||
assertEquals(AgentStatus.FORBIDDEN, residentRecord.status());
|
||||
assertEquals(AgentStatus.FORBIDDEN, financeRecord.status());
|
||||
assertEquals(0, query.callCount);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user