## 搜索与数据模型
- 引入 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` 需令牌；导入报告清晰，错误不影响其他行
- 前端在手机/桌面下可用；匹配高亮明显；复制条码便捷

## 实施清单
1. 数据层：开启 WAL；新增 FTS5 虚拟表与同步触发器
2. 导入模块：扩展列映射、报告输出、基础校验
3. API：分页/排序参数；统一查询逻辑对接 FTS5（无破坏旧参数）
4. 前端：高亮、分页控件、复制条码按钮（扫码为可选后续）
5. 安全：`IMPORT_TOKEN` 校验与 `.env` 注入；文档与面板配置说明
6. 部署：Compose 加载 `.env`；备份脚本与导出接口
7. 测试与日志：单测/集成测试与结构化日志