用户反馈:说「我要发布专业发展」没直接出表单,先被反问「要选哪个栏目」, 答完出来表单,「所属栏目」却还是空的要再选一次 —— 一件事问了两遍。 两处根因: 1) profession.publish 的说明只写了「调用前必须确认所属栏目 moduleId 与标题」, 漏了公告 / 宿舍 / 活动 / 作业四个发布工具都有的那句「缺失就直接调用本工具, 系统会弹出完整表单让用户填写,不要用文字反复追问」—— 模型读到「必须确认」 就照字面先去口头确认了; 2) 「发布专业发展」不在裸意图直达表里,这句必然要过一轮模型。 改动: - 工具说明按另外四个发布工具的同款句式补齐(说明词是模型唯一的施工图); - IntentShortcut 新增「发布专业发展记录」意图(仅教职工),说「我要发布专业发展」 直接弹表单;栏目是学校自建的、各校 id 不同,所以**不预置**, 由用户就在表单里选 —— 这正是「直接出表单选栏目」; - 契约测试 everyPublishToolTellsTheModelNotToKeepAskingInWords:凡是名字以 .publish 结尾的工具,说明里必须带「不要用文字反复追问」(漏写会被测出来); - IntentDirectFormTest 补两条:教职工直达出表单(含栏目下拉与代取地址、且不预置 栏目)、学生落回模型。 配套(前端 86e3a10):即便真的先问了一轮再弹表单,对话里定好的值也会被对齐到 选项取值(数字 71 → "71",名称「数学」→ SUB02),表单里不再重复问。
This commit is contained in:
@@ -146,6 +146,25 @@ public class IntentShortcut {
|
||||
"好的,下面是**发布家校活动**表单:填好活动标题、说明、分类、地点和起止时间,"
|
||||
+ "点「确认提交」我就发给全部班级的家长(需要家长报名的话,报名方式保持默认即可)。");
|
||||
|
||||
/**
|
||||
* 发布专业发展记录意图:<b>仅教职工</b>。
|
||||
*
|
||||
* <p>★ 2026-10 补录:此前「我要发布专业发展」不在直达表里,这句被交给模型,
|
||||
* 而工具的说明写着「调用前必须确认所属栏目 moduleId 与标题」—— 于是模型先反问一轮
|
||||
* 「你要发到哪个栏目?」,用户答完才弹表单。表单里本来就有「所属栏目」下拉,
|
||||
* 白白多一轮对话(用户反馈的原话:问完栏目,表单里又要选一次栏目)。
|
||||
*
|
||||
* <p>为什么不预置栏目:栏目是**学校自建**的(每所学校的栏目 id 都不同),
|
||||
* 硬编码「教学设计 = 71」在别的学校就是错的。所以直达时**不带任何栏目的预置值**,
|
||||
* 由用户就在表单里选 —— 这正是「直接出表单选栏目」。
|
||||
*/
|
||||
private static final Intent PROFESSION_PUBLISH = new Intent("profession.publish",
|
||||
null,
|
||||
"profession.publish",
|
||||
"发布专业发展记录需要教师或管理员身份;你可以先看看自己的专业发展记录,或换个身份账号再来发布。",
|
||||
"好的,下面是**发布专业发展记录**表单:先选「所属栏目」,再填标题和正文,"
|
||||
+ "点「确认提交」我就直接发布到你的专业发展空间。");
|
||||
|
||||
/**
|
||||
* 请假的标准说法全集(已剥掉语气词与标点后的形态)。
|
||||
*/
|
||||
@@ -190,6 +209,18 @@ public class IntentShortcut {
|
||||
"发布家校活动", "发家校活动", "发布校园活动", "发校园活动", "发布亲子活动"
|
||||
));
|
||||
|
||||
/**
|
||||
* 发布专业发展记录的标准说法全集。
|
||||
*
|
||||
* <p>⚠️ 只收**带模块限定**的说法。光秃秃的「发布记录」「新增记录」太泛
|
||||
* (作业、公告、宿舍都能叫「记录」),收进来会把别的意图劫持掉。
|
||||
*/
|
||||
private static final Set<String> PROFESSION_PUBLISH_BARE = new HashSet<>(Arrays.asList(
|
||||
"发布专业发展", "发专业发展", "专业发展发布", "发布专业发展记录", "发专业发展记录",
|
||||
"专业发展记录发布", "发布一条专业发展记录", "新增专业发展记录", "发布我的专业发展",
|
||||
"上传专业发展记录", "提交专业发展记录", "发布发展记录", "新增发展记录"
|
||||
));
|
||||
|
||||
/**
|
||||
* 前缀(语气/助动词),逐个尝试剥离后看余下是否等于标准说法。
|
||||
*
|
||||
@@ -215,6 +246,7 @@ public class IntentShortcut {
|
||||
RULES.add(new Rule(NOTICE_PUBLISH_BARE, NOTICE_PUBLISH));
|
||||
RULES.add(new Rule(DORM_PUBLISH_BARE, DORM_PUBLISH));
|
||||
RULES.add(new Rule(ACTIVITY_PUBLISH_BARE, ACTIVITY_PUBLISH));
|
||||
RULES.add(new Rule(PROFESSION_PUBLISH_BARE, PROFESSION_PUBLISH));
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -125,7 +125,11 @@ public final class ProfessionTools {
|
||||
|
||||
list.add(ToolDef.of("profession.publish", MODULE, "发布专业发展记录",
|
||||
"发布一条专业发展记录(教学设计/听课记录/课题研究/教学反思等)。"
|
||||
+ "调用前必须确认所属栏目 moduleId 与标题;"
|
||||
+ "调用前必须确认:所属栏目 moduleId、标题 title;"
|
||||
// ★ 与公告 / 宿舍 / 活动 / 作业四个发布工具完全同款的一句(此前唯独这里漏了):
|
||||
// 少了它,模型读到「必须确认」就先去反问用户「你要发到哪个栏目」,
|
||||
// 答完才弹表单 —— 一件小事被拆成两轮对话(用户反馈的原话)。
|
||||
+ "缺失就直接调用本工具,系统会弹出**完整表单**让用户填写,不要用文字反复追问;"
|
||||
+ "正文、年级段、学科、是否公开、附件在表单里补齐,"
|
||||
+ "栏目自定义字段由表单按所选栏目动态渲染。",
|
||||
"POST_FORM", "/api/profession/Create")
|
||||
|
||||
Reference in New Issue
Block a user