f7a720204a
- 移除 GovAI, nomifun-tauri, 算力盒子 的 submodule 引用 - 添加所有子项目的完整源代码 - 保留原始 .git 为 .git.bak 备份
137 lines
4.2 KiB
Go
137 lines
4.2 KiB
Go
package handler
|
|
|
|
import (
|
|
"strings"
|
|
"testing"
|
|
)
|
|
|
|
// TestEnhanceCitations 测试来源标注增强功能
|
|
func TestEnhanceCitations(t *testing.T) {
|
|
h := &LLMChatHandler{}
|
|
|
|
tests := []struct {
|
|
name string
|
|
response string
|
|
hasKnowledge bool
|
|
knowledgeSources []string
|
|
expectedContains []string
|
|
}{
|
|
{
|
|
name: "清单格式 - 应该为每个问题添加标注",
|
|
response: `劳动用工合规审查清单
|
|
一、劳动合同管理
|
|
劳动合同签订
|
|
|
|
是否所有员工均签订了书面劳动合同?
|
|
合同内容是否符合《劳动合同法》的相关规定?
|
|
是否存在劳动合同未明确约定工作地点、工作内容、劳动报酬等情况?`,
|
|
hasKnowledge: true,
|
|
knowledgeSources: []string{"劳动合同法"},
|
|
expectedContains: []string{
|
|
"是否所有员工均签订了书面劳动合同? [[",
|
|
"合同内容是否符合《劳动合同法》的相关规定? [[",
|
|
"是否存在劳动合同未明确约定工作地点、工作内容、劳动报酬等情况? [[",
|
|
},
|
|
},
|
|
{
|
|
name: "列表项 - 应该为每个列表项添加标注",
|
|
response: `办理条件:
|
|
- 有合法稳定就业
|
|
- 有合法稳定住所
|
|
- 连续就读`,
|
|
hasKnowledge: true,
|
|
knowledgeSources: []string{"居住证管理规定"},
|
|
expectedContains: []string{
|
|
"- 有合法稳定就业 [[",
|
|
"- 有合法稳定住所 [[",
|
|
"- 连续就读 [[",
|
|
},
|
|
},
|
|
{
|
|
name: "数字列表 - 应该为每个列表项添加标注",
|
|
response: `办理流程:
|
|
1. 到派出所提交申请材料
|
|
2. 派出所审核材料
|
|
3. 制作并发放居住证`,
|
|
hasKnowledge: true,
|
|
knowledgeSources: []string{"居住证管理规定"},
|
|
expectedContains: []string{
|
|
"1. 到派出所提交申请材料 [[",
|
|
"2. 派出所审核材料 [[",
|
|
"3. 制作并发放居住证 [[",
|
|
},
|
|
},
|
|
{
|
|
name: "陈述句 - 应该添加标注",
|
|
response: `居住证办理需要身份证、居住证明和近期照片。
|
|
办理时限为15个工作日。`,
|
|
hasKnowledge: true,
|
|
knowledgeSources: []string{"居住证管理规定"},
|
|
expectedContains: []string{
|
|
"居住证办理需要身份证、居住证明和近期照片。 [[",
|
|
"办理时限为15个工作日。 [[",
|
|
},
|
|
},
|
|
{
|
|
name: "无知识库 - 应该添加AI建议标注",
|
|
response: `建议您提前准备齐全材料。
|
|
如有疑问可先电话咨询。`,
|
|
hasKnowledge: false,
|
|
knowledgeSources: []string{},
|
|
expectedContains: []string{
|
|
"建议您提前准备齐全材料。 [[AI建议]]",
|
|
"如有疑问可先电话咨询。 [[AI建议]]",
|
|
},
|
|
},
|
|
{
|
|
name: "已有标注 - 不应该重复添加",
|
|
response: `居住证办理需要身份证、居住证明和近期照片 [[知识库:居住证管理规定]]。
|
|
建议您提前准备齐全材料 [[AI建议]]。`,
|
|
hasKnowledge: true,
|
|
knowledgeSources: []string{"居住证管理规定"},
|
|
expectedContains: []string{
|
|
"[[知识库:居住证管理规定]]",
|
|
"[[AI建议]]",
|
|
"**来源说明**",
|
|
},
|
|
},
|
|
}
|
|
|
|
for _, tt := range tests {
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
result := h.enhanceCitations(tt.response, tt.hasKnowledge, tt.knowledgeSources)
|
|
|
|
for _, expected := range tt.expectedContains {
|
|
if !strings.Contains(result, expected) {
|
|
t.Errorf("期望结果包含: %q\n实际结果: %s", expected, result)
|
|
}
|
|
}
|
|
|
|
// 验证来源说明块存在
|
|
if !strings.Contains(result, "**来源说明**") {
|
|
t.Errorf("期望结果包含来源说明块")
|
|
}
|
|
})
|
|
}
|
|
}
|
|
|
|
// TestAddCitationsToResponse 测试自动添加标注的逻辑
|
|
func TestAddCitationsToResponse(t *testing.T) {
|
|
h := &LLMChatHandler{}
|
|
|
|
response := `劳动合同管理
|
|
是否所有员工均签订了书面劳动合同?
|
|
合同内容是否符合《劳动合同法》的相关规定?`
|
|
|
|
result := h.addCitationsToResponse(response, true, []string{"劳动合同法"})
|
|
|
|
// 验证每个问题都被标注了
|
|
if !strings.Contains(result, "是否所有员工均签订了书面劳动合同? [[") {
|
|
t.Errorf("第一个问题没有被标注: %s", result)
|
|
}
|
|
|
|
if !strings.Contains(result, "合同内容是否符合《劳动合同法》的相关规定? [[") {
|
|
t.Errorf("第二个问题没有被标注: %s", result)
|
|
}
|
|
}
|