2.5 KiB
2.5 KiB
搜索与数据模型
- 引入 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(权限受控)
监控与测试
- 日志:结构化日志(导入错误行、查询参数与耗时)
- 测试:导入与搜索单测(前后缀、包含);接口集成测试覆盖分页与排序
验收标准
- 搜索在 5–10k 条数据下 100ms–300ms 返回
- 支持关键词与数字部分匹配,分页与排序可用
/import需令牌;导入报告清晰,错误不影响其他行- 前端在手机/桌面下可用;匹配高亮明显;复制条码便捷
实施清单
- 数据层:开启 WAL;新增 FTS5 虚拟表与同步触发器
- 导入模块:扩展列映射、报告输出、基础校验
- API:分页/排序参数;统一查询逻辑对接 FTS5(无破坏旧参数)
- 前端:高亮、分页控件、复制条码按钮(扫码为可选后续)
- 安全:
IMPORT_TOKEN校验与.env注入;文档与面板配置说明 - 部署:Compose 加载
.env;备份脚本与导出接口 - 测试与日志:单测/集成测试与结构化日志