在 kbot3 测试中删除业务域时,若出现无法删除的提示,不一定是界面操作异常,更可能是该业务域仍关联知识库或提示词数据。
01 | 先看报错信息
删除时提示:
text
Cannot delete, this domain contains business (Knowledge base or prompt) data.
含义很明确:当前业务域中还存在业务数据,包括 Knowledge base 或 prompt,因此系统禁止直接删除。
02 | 开发者模式定位校验规则
在 APEX 开发者模式中,可以看到报错来自页面校验:
text
component.name: Include subset check
进入对应页面,找到相关 validation,校验代码如下:
sql
DECLARE
ln_cnt1 NUMBER;
ln_cnt2 NUMBER;
BEGIN
SELECT COUNT(1) INTO ln_cnt1 FROM kbot_md_prompt WHERE app_id = :app_id AND domain_id = :P45_DOMAIN_ID;
SELECT COUNT(1) INTO ln_cnt2 FROM kbot_md_kb WHERE app_id = :app_id AND domain_id = :P45_DOMAIN_ID;
IF ln_cnt1 > 0 OR ln_cnt2 > 0 THEN
RETURN FALSE;
ELSE
RETURN TRUE;
END IF;
END;
这段逻辑会检查两张表:
kbot_md_prompt:提示词数据kbot_md_kb:知识库数据
只要任意一张表中存在当前业务域的记录,删除校验就不会通过。
03 | 查询并清理关联记录
可以进一步查询关联数据,例如:
sql
SELECT * FROM kbot_md_kb
WHERE app_id = 1001
AND domain_id = 21
笔者查询后发现,kbot_md_kb 中存在对应记录。清理该业务域关联的知识库或提示词记录后,再回到界面执行删除,即可删除成功。
关注我,和AI一起成长~