feat: 增强知识库索引与设置页面模块化拆分
扩展知识库索引任务和 RAG 检索支持增量入库和文档去重,优 化本体检测和规则匹配精度,前端设置页面拆分为 LLM、邮件 和 Hermes 员工同步子面板并重构样式,新增日志详情组件和 知识入库日志模型,补充单元测试覆盖。
This commit is contained in:
@@ -59,11 +59,16 @@ class OntologyExtractionMixin:
|
||||
missing_slots.append("attachments")
|
||||
return missing_slots
|
||||
|
||||
if any(
|
||||
has_entertainment_type = any(
|
||||
item.normalized_value == "entertainment"
|
||||
for item in entities
|
||||
if item.type == "expense_type"
|
||||
):
|
||||
)
|
||||
has_explicit_entertainment_text = "客户" in compact_query and any(
|
||||
keyword in compact_query
|
||||
for keyword in ("招待", "接待", "吃饭", "用餐", "宴请", "请客", "客户餐")
|
||||
)
|
||||
if has_entertainment_type or has_explicit_entertainment_text:
|
||||
if "customer" not in entity_types:
|
||||
missing_slots.append("customer_name")
|
||||
missing_slots.append("participants")
|
||||
@@ -171,14 +176,14 @@ class OntologyExtractionMixin:
|
||||
upsert(self._make_entity("expense_type", label, normalized, role="filter"))
|
||||
|
||||
has_customer_entertainment_signal = "客户" in query and any(
|
||||
keyword in query for keyword in ("吃饭", "用餐", "餐饮", "宴请", "请客", "招待")
|
||||
keyword in query for keyword in ("吃饭", "用餐", "餐饮", "宴请", "请客", "招待", "接待")
|
||||
)
|
||||
if has_customer_entertainment_signal:
|
||||
upsert(
|
||||
self._make_entity(
|
||||
"expense_type",
|
||||
"客户招待",
|
||||
"entertainment",
|
||||
"业务招待费",
|
||||
"meal",
|
||||
role="filter",
|
||||
confidence=0.96,
|
||||
)
|
||||
@@ -189,46 +194,52 @@ class OntologyExtractionMixin:
|
||||
for keyword in (
|
||||
"打车",
|
||||
"网约车",
|
||||
"出租车",
|
||||
"出租车票",
|
||||
"出租车",
|
||||
"车费",
|
||||
"乘车",
|
||||
"用车",
|
||||
"叫车",
|
||||
"车资",
|
||||
"的士",
|
||||
"的士票",
|
||||
"的士",
|
||||
"滴滴",
|
||||
"市内交通",
|
||||
"地铁",
|
||||
"公交",
|
||||
"停车费",
|
||||
"过路费",
|
||||
"通行费",
|
||||
"高速费",
|
||||
)
|
||||
):
|
||||
upsert(self._make_entity("expense_type", "交通", "transport", role="filter", confidence=0.9))
|
||||
|
||||
if any(keyword in query for keyword in ("出差", "机票", "火车", "高铁", "行程单")):
|
||||
if any(keyword in query for keyword in ("出差", "机票", "飞机票", "航班", "火车票", "火车", "高铁票", "高铁", "动车", "行程单")):
|
||||
upsert(self._make_entity("expense_type", "差旅", "travel", role="filter", confidence=0.88))
|
||||
|
||||
if any(keyword in query for keyword in ("酒店", "住宿", "宾馆")):
|
||||
if any(keyword in query for keyword in ("酒店", "酒店发票", "住宿", "住宿费", "宾馆", "民宿", "房费", "客房")):
|
||||
upsert(self._make_entity("expense_type", "住宿", "hotel", role="filter", confidence=0.86))
|
||||
|
||||
if (
|
||||
not has_customer_entertainment_signal
|
||||
and any(keyword in query for keyword in ("餐费", "用餐", "午餐", "晚餐", "早餐", "餐饮"))
|
||||
):
|
||||
upsert(self._make_entity("expense_type", "餐费", "meal", role="filter", confidence=0.84))
|
||||
upsert(self._make_entity("expense_type", "业务招待费", "meal", role="filter", confidence=0.84))
|
||||
|
||||
if any(
|
||||
keyword in query
|
||||
for keyword in ("办公用品", "文具", "耗材", "办公耗材", "打印纸", "办公设备", "键盘", "鼠标", "白板")
|
||||
for keyword in ("办公用品", "文具", "耗材", "办公耗材", "打印纸", "办公设备", "键盘", "鼠标", "白板", "硒鼓", "墨盒")
|
||||
):
|
||||
upsert(self._make_entity("expense_type", "办公费", "office", role="filter", confidence=0.87))
|
||||
upsert(self._make_entity("expense_type", "办公用品费", "office", role="filter", confidence=0.87))
|
||||
|
||||
if any(keyword in query for keyword in ("培训", "讲师费", "课时费", "课程费")):
|
||||
if any(keyword in query for keyword in ("培训", "讲师费", "课时费", "课程费", "教材", "认证费", "考试费")):
|
||||
upsert(self._make_entity("expense_type", "培训费", "training", role="filter", confidence=0.84))
|
||||
|
||||
if any(keyword in query for keyword in ("通讯费", "话费", "流量费", "宽带费")):
|
||||
if any(keyword in query for keyword in ("通讯费", "话费", "电话费", "手机费", "流量费", "宽带费", "网络费")):
|
||||
upsert(self._make_entity("expense_type", "通讯费", "communication", role="filter", confidence=0.84))
|
||||
|
||||
if any(keyword in query for keyword in ("福利费", "团建", "慰问", "节日福利", "体检费")):
|
||||
if any(keyword in query for keyword in ("福利费", "团建", "慰问", "节日福利", "体检费", "员工关怀")):
|
||||
upsert(self._make_entity("expense_type", "福利费", "welfare", role="filter", confidence=0.84))
|
||||
|
||||
for amount in self._extract_amount_entities(query):
|
||||
|
||||
Reference in New Issue
Block a user