51dc8dc4f6
- FastAPI + Qdrant + Redis + Ollama 技术栈 - L1→L2→L3→chunk 四层分层检索(dense + sparse RRF 融合) - 文档三级总结与 2.5 级回退 - query 解析路由与分类 - /admin 管理页面
1.8 KiB
1.8 KiB
Checklist
文档管理 API
- GET /api/v1/documents 分页返回 items(doc_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.py:ok/error/ApiError 结构与 code
- ollama.py:generate 正常/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无错误