Files
kplam 51dc8dc4f6 Initial commit: QMDSearch 分层信息检索服务
- FastAPI + Qdrant + Redis + Ollama 技术栈
- L1→L2→L3→chunk 四层分层检索(dense + sparse RRF 融合)
- 文档三级总结与 2.5 级回退
- query 解析路由与分类
- /admin 管理页面
2026-07-29 21:24:40 +08:00

1.8 KiB
Raw Permalink Blame History

Checklist

文档管理 API

  • GET /api/v1/documents 分页返回 itemsdoc_id/title/category/tags/summary)与 next_offset,空库返回空列表
  • GET /api/v1/documents/{doc_id} 返回 L1 全部字段 + l2_nodes/l3_nodes + chunks_count
  • 不存在 doc_id 详情返回 code=1004
  • DELETE /api/v1/documents/{doc_id} 后四层集合该文档点全部清除,再查详情返回 1004
  • DELETE 不存在 doc_id 幂等成功且 deleted 统计为 0

统计 API

  • GET /api/v1/knowledge/stats 返回四层集合点数、类目分布、uncategorized_count
  • stats 数值与内存 Qdrant 实际写入一致(测试验证)

管理页面

  • GET /admin 返回 200 HTML
  • 页面含 概览/文档管理/入库/检索测试台/类目 五个区块
  • 页面无外部 CDN/外链资源(无 http(s):// src 或 link
  • 所有 fetch 指向 /api/v1/ 路径且与后端路由契约一致(路径、方法、字段名)
  • 删除操作有二次确认逻辑(confirm 或等价交互)
  • code≠0 时页面有错误提示处理

单测补全

  • judge.py:正常幻觉率计算、部分断言不支持、解析失败返回 0.0
  • response.pyok/error/ApiError 结构与 code
  • ollama.pygenerate 正常/json_mode payload 含 format:is_available 可达与异常分支
  • run_eval.py:门槛判定(/)与数值格式化纯函数

部署与文档

  • Dockerfile 含 COPY scripts/ scripts/
  • CLAUDE.md 项目结构、API 清单(含 documents 管理端点/stats//admin)与实际一致

集成

  • 内存 Qdrant 管理闭环冒烟通过:入库→列表→详情→检索→删除→统计
  • uv run pytest 全部通过(含新增测试)
  • uv run ruff check app tests scripts 无错误