verification_report.py
5.29 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
#!/usr/bin/env python3
"""
验证报告 - 确认请求上下文和日志系统修复完成
"""
import sys
import os
import traceback
sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))
def run_verification():
"""运行完整的验证测试"""
print("🔍 开始系统验证...")
print("=" * 60)
tests_passed = 0
tests_total = 0
def run_test(test_name, test_func):
nonlocal tests_passed, tests_total
tests_total += 1
try:
test_func()
print(f"✅ {test_name}")
tests_passed += 1
except Exception as e:
print(f"❌ {test_name} - 失败: {e}")
traceback.print_exc()
# 测试1: 基础模块导入
def test_imports():
from utils.logger import get_logger, setup_logging
from context.request_context import create_request_context, RequestContextStage
from query.query_parser import QueryParser
assert get_logger is not None
assert create_request_context is not None
# 测试2: 日志系统
def test_logging():
from utils.logger import get_logger, setup_logging
setup_logging(log_level="INFO", log_dir="verification_logs")
logger = get_logger("verification")
logger.info("测试消息", extra={'reqid': 'test', 'uid': 'user'})
# 测试3: 请求上下文创建
def test_context_creation():
from context.request_context import create_request_context
context = create_request_context("req123", "user123")
assert context.reqid == "req123"
assert context.uid == "user123"
# 测试4: 查询解析(这是之前出错的地方)
def test_query_parsing():
from context.request_context import create_request_context
from query.query_parser import QueryParser
class TestConfig:
class QueryConfig:
enable_query_rewrite = False
rewrite_dictionary = {}
enable_translation = False
supported_languages = ['en', 'zh']
enable_text_embedding = False
query_config = QueryConfig()
indexes = []
config = TestConfig()
parser = QueryParser(config)
context = create_request_context("req456", "user456")
# 这之前会抛出 "Logger._log() got an unexpected keyword argument 'reqid'" 错误
result = parser.parse("test query", context=context, generate_vector=False)
assert result.original_query == "test query"
# 测试5: 完整的中文查询处理
def test_chinese_query():
from context.request_context import create_request_context
from query.query_parser import QueryParser
class TestConfig:
class QueryConfig:
enable_query_rewrite = True
rewrite_dictionary = {'芭比娃娃': 'brand:芭比'}
enable_translation = False
supported_languages = ['en', 'zh']
enable_text_embedding = False
query_config = QueryConfig()
indexes = []
config = TestConfig()
parser = QueryParser(config)
context = create_request_context("req789", "user789")
result = parser.parse("芭比娃娃", context=context, generate_vector=False)
# 语言检测可能不准确,但查询应该正常处理
assert result.original_query == "芭比娃娃"
assert "brand:芭比" in result.rewritten_query
# 测试6: 性能摘要
def test_performance_summary():
from context.request_context import create_request_context, RequestContextStage
context = create_request_context("req_perf", "user_perf")
context.start_stage(RequestContextStage.TOTAL)
context.start_stage(RequestContextStage.QUERY_PARSING)
context.end_stage(RequestContextStage.QUERY_PARSING)
context.end_stage(RequestContextStage.TOTAL)
summary = context.get_summary()
assert 'performance' in summary
assert 'stage_timings_ms' in summary['performance']
# 运行所有测试
run_test("基础模块导入", test_imports)
run_test("日志系统", test_logging)
run_test("请求上下文创建", test_context_creation)
run_test("查询解析(修复验证)", test_query_parsing)
run_test("中文查询处理", test_chinese_query)
run_test("性能摘要", test_performance_summary)
# 输出结果
print("\n" + "=" * 60)
print(f"📊 验证结果: {tests_passed}/{tests_total} 测试通过")
if tests_passed == tests_total:
print("🎉 所有验证通过!系统修复完成。")
print("\n🔧 修复内容:")
print(" - 修复了 utils/logger.py 中的日志参数处理")
print(" - 修复了 context/request_context.py 中的日志调用格式")
print(" - 修复了 query/query_parser.py 中的日志调用格式")
print(" - 修复了 search/searcher.py 中的日志调用格式")
print(" - 修复了 api/routes/search.py 中的日志调用格式")
print("\n✅ 现在可以正常处理搜索请求,不会再出现 Logger._log() 错误。")
return True
else:
print("💥 还有测试失败,需要进一步修复。")
return False
if __name__ == "__main__":
success = run_verification()
sys.exit(0 if success else 1)