Search-Goods/.trae/documents/系统改进计划:搜索、性能、UX 与部署增强.md

42 lines
2.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

## 搜索与数据模型
- 引入 FTS5 全文索引:为 `name`、`barcode`、(可选)`拼音码` 建立虚拟表,支持高性能模糊匹配与相关性排序
- 扩展导入:将 Excel 的 `拼音码` 一并入库;若缺失可后续考虑使用库生成(规划阶段不变更依赖)
- 排序策略:前缀匹配 > 后缀匹配 > 任意包含;同分时按匹配长度和最近导入时间排序
- 分页与上限:为 `/products` 增加 `page``limit`,默认 `limit=20`、`page=1`
## API 与后端性能
- WAL 模式:启用 SQLite `PRAGMA journal_mode=WAL` 与适度 `synchronous=NORMAL` 提升并发读性能
- 统一查询端点:保留 `/products?q=`(已支持数字部分匹配),增加 `sort`/`order` 参数
- 健壮性:为 `/import` 增加上传类型/大小校验与导入报告(插入/更新/跳过及示例错误行)
## 前端 UX
- 结果高亮:在卡片中高亮匹配片段(名称与条码)
- 分页与空态:在列表底部提供分页控件;无结果时引导用户切换到“导入”或修改关键词
- 条码复制与扫码:卡片“复制条码”按钮;可选增加移动端扫码(后续集成 ZXing
## 安全与配置
- `/import` 简单令牌:通过环境变量 `IMPORT_TOKEN` 校验;面板或 Docker Compose 注入
- CORS 与限流:允许必要来源;基础限流防滥用(规划阶段暂不改动)
## 部署与维护
- Docker保留端口 `57777`;增加 `.env` 支持 `PORT`、`IMPORT_TOKEN`、`WAL_OPEN=1`
- 备份与导出:每日备份 `data/products.db`;提供 `/export` 导出 CSV权限受控
## 监控与测试
- 日志:结构化日志(导入错误行、查询参数与耗时)
- 测试:导入与搜索单测(前后缀、包含);接口集成测试覆盖分页与排序
## 验收标准
- 搜索在 510k 条数据下 100ms300ms 返回
- 支持关键词与数字部分匹配,分页与排序可用
- `/import` 需令牌;导入报告清晰,错误不影响其他行
- 前端在手机/桌面下可用;匹配高亮明显;复制条码便捷
## 实施清单
1. 数据层:开启 WAL新增 FTS5 虚拟表与同步触发器
2. 导入模块:扩展列映射、报告输出、基础校验
3. API分页/排序参数;统一查询逻辑对接 FTS5无破坏旧参数
4. 前端:高亮、分页控件、复制条码按钮(扫码为可选后续)
5. 安全:`IMPORT_TOKEN` 校验与 `.env` 注入;文档与面板配置说明
6. 部署Compose 加载 `.env`;备份脚本与导出接口
7. 测试与日志:单测/集成测试与结构化日志