WangXuMing 2aa581feda v0.0.8-debug 1 lună în urmă
..
README.md 2aa581feda v0.0.8-debug 1 lună în urmă
test_completeness_accuracy.py 2aa581feda v0.0.8-debug 1 lună în urmă

README.md

完整性审查准确性验证测试

测试目的

验证完整性审查模块(completeness_reviewer.py)是否正确统计分类结果, 确保不会出现"分类结果中存在,但被误报为缺失"的情况

测试数据

  • 来源文件: temp/construction_review/final_result/67d45692fb97aeef8f896e78475ce539-1773153034.json
  • 数据内容: 包含65个已分类的文档块(chunks)
  • 分类维度: 一级分类(chapter_classification)、二级分类(secondary_category_code)、三级分类(tertiary_category_code)

测试用例列表

测试用例 说明 关键验证点
test_data_file_exists 测试数据文件存在性检查 数据文件可访问
test_standard_csv_exists 标准CSV文件存在性检查 标准分类表可访问
test_extract_actual_categories 测试分类提取功能 正确提取实际存在的分类
test_no_false_positives_for_existing_categories 关键测试:确保存在的分类不会被误报为缺失 无分类误报
test_check_result_structure 测试结果结构正确性 返回结果符合预期结构
test_secondary_stats_accuracy 测试二级分类统计准确性 统计数据一致
test_category_code_consistency 测试分类代码一致性 检查大小写问题
test_chunks_with_invalid_categories 测试无效分类的处理 正确处理无效分类
test_completeness_accuracy_report 完整性审查准确性测试报告 输出详细统计信息

运行测试

运行所有测试

python -m pytest utils_test/Completeness_Test/test_completeness_accuracy.py -v

运行关键测试(误报检测)

python -m pytest utils_test/Completeness_Test/test_completeness_accuracy.py::TestCompletenessAccuracy::test_no_false_positives_for_existing_categories -v -s

查看详细报告

python -m pytest utils_test/Completeness_Test/test_completeness_accuracy.py::TestCompletenessAccuracy::test_completeness_accuracy_report -v -s

测试统计概览

基于测试数据,各章节的完整性统计如下:

章节 块数 存在分类 标准分类 缺失 完整率
basis 5 5 16 11 31.2%
overview 7 6 16 10 37.5%
plan 5 5 11 6 45.5%
technology 16 7 28 21 25.0%
safety 12 4 20 16 20.0%
quality 4 3 15 12 20.0%
environment 3 3 10 7 30.0%
management 4 0 0 0 0.0%
acceptance 5 5 24 19 20.8%
other 4 2 21 19 9.5%

关键验证逻辑

1. 误报检测逻辑

# 获取实际存在的分类
actual_tertiary = {...}

# 获取检查器报告的缺失项
reported_missing = {...}

# 计算交集(误报)
false_positives = reported_missing & actual_tertiary

# 验证无交集
assert len(false_positives) == 0, f"存在 {len(false_positives)} 个误报"

2. 分类提取逻辑

# 从 chunks 中提取三级分类
cat1 = chunk.get("chapter_classification")
cat2 = chunk.get("secondary_category_code")
cat3 = chunk.get("tertiary_category_code")

# 排除无效值
if cat3 and cat3 not in ["", "none", "non_standard"]:
    actual.add((cat1, cat2, cat3))

测试结果

  • 测试状态: 全部通过
  • 误报情况: 0个
  • 结论: 完整性审查模块工作正常,没有出现"分类结果中存在但被误报为缺失"的情况

注意事项

  1. 测试数据依赖: 测试依赖于 temp/construction_review/final_result/ 目录下的JSON文件
  2. 标准CSV依赖: 测试依赖于 core/construction_review/component/doc_worker/config/StandardCategoryTable.csv
  3. 分类代码匹配: 确保 chunk 中的分类代码与标准CSV中的代码大小写一致