add search function

This commit is contained in:
2026-04-19 13:00:11 +02:00
parent 5fdf3f4ab2
commit ea73b0c165
8 changed files with 380 additions and 1 deletions
+30 -1
View File
@@ -10,7 +10,7 @@
- pytest / FastAPI TestClient
- Docker / Docker Compose
项目目标是小而稳、容易继续扩展。目前已经支持固定三层的数据结构、基础 CRUD,以及单图上传能力,但仍然没有加入搜索、OCR、AI 识别或其他扩展功能。
项目目标是小而稳、容易继续扩展。目前已经支持固定三层的数据结构、基础 CRUD单图上传能力和全局搜索,但仍然没有加入 OCR、AI 识别或其他扩展功能。
## 当前数据模型
@@ -44,6 +44,7 @@ Box
- Item 新建、详情、编辑、删除
- SubItem 新建、编辑、删除
- Box / Item / SubItem 单张图片上传、替换、删除、展示
- Box / Item / SubItem 全局搜索
- `/` 重定向到 `/boxes`
- Jinja2 模板渲染
- 静态文件挂载
@@ -92,6 +93,33 @@ Box
- `/items/{id}/image`
- `/subitems/{id}/image`
## 全局搜索
当前已经支持一个轻量的全局搜索页:
- 路由:`/search`
- 使用 query parameter,例如:`/search?q=电源线`
搜索范围包括:
- `Box.name`
- `Box.note`
- `Item.name`
- `Item.note`
- `SubItem.name`
- `SubItem.note`
当前使用 SQLite 上的简单模糊匹配完成搜索,不引入外部搜索引擎或复杂全文系统。
搜索结果会尽量帮助你快速定位:
- 显示对象类型:`Box / Item / SubItem`
- 显示名称和备注
- 显示归属路径
-`Item` 展示所属 `Box`
-`SubItem` 展示所属 `Item``Box`
- 如果对象已有图片,会显示一个小缩略图
## 当前未实现
这一阶段仍然没有实现以下内容:
@@ -232,5 +260,6 @@ python -m pytest
- 非容器 Item 不能创建 SubItem
- Box / Item 删除后的级联删除
- 图片上传、转换为 JPEG、缩放、读取、替换、删除
- 全局搜索 name / note,并展示对象类型与归属路径
- 无图片访问和非法图片上传等错误路径
- 关键 POST 请求后的重定向行为