- 说「我要请假」这类只有意图的短句时,直接弹出表单不再过模型: 后端 IntentShortcut 在编排器入口做「去空白标点 + 剥前后缀后正好等于标准说法 且原句 ≤12 字」的窄匹配,命中即跳过 LLM 直接下发表单。 - 按身份分离:学生 → leave.submit(提交申请),教师/管理员 → leave.register (帮学生登记,必填 classId+stuId);RolePolicy 把两者分别归入 STUDENT_ONLY 与 STAFF_ONLY,模型视野里天然只有一个,不可能选错。 - 表单字段由各自必填参数推导;下拉选项改为后端下发 optionCall(含 {{占位符}}), 由前端带用户登录态代取后按 valueKey/labelKey 映射(模块 /api/* 服务端必然 302)。 stuId 依赖 classId,选完班级才解锁学生名单。 - 抽出 utils/module-session.ts(会话预热 / 带登录态调模块 / 字典项解析), Chat.vue 与 FormCard.vue 复用。 - 例句与提示改为「我要请假」「帮学生登记请假」。
- 左下角身份标签改为直接展示平台下发的 roleName(与 GetUserInfo / 门户同源), 平台叫什么就显示什么,不再用归一化的「教师/学生/管理员」桶 - 取值优先级:GetUserInfo.currentRole.roleName → /api/agent/tools identity.roleName → catalog.roles 兜底 - 实测 byLoginName(lijing) 返回 currentRole={roleId:1, roleName:"老师"},改后左下角显示「老师」 - UserInfoVo 补充 currentRole 字段类型