# 宠物用品报价文件查看系统改版需求与技术方案

## 1. 系统定位

本系统定位为：

> 以“品牌报价单文件”为核心的宠物用品报价展示、检索、预览、更新提醒和客户行为分析系统。

系统暂时不以单品数据库为核心，也不强制把 Excel、PDF、Word、图片等报价单里的每一行产品拆成独立商品。当前阶段，每个“报价单文件”就是核心展示对象。

系统围绕报价单文件维护以下信息：

- 品牌
- 分类
- 标签
- 客户权限
- 上传时间
- 更新时间
- 有效期
- 历史版本
- 文件预览
- 下载记录
- 查看统计
- 搜索关键词
- 更新提醒

默认排序规则：

1. 上传时间越近越靠前。
2. 有效期内的报价单优先展示。
3. 热门查看、热门下载的报价单可进入推荐区。
4. 过期或即将过期的报价单在后台重点提醒。
5. 前台对过期状态可弱提示，避免影响客户对报价单的信任。

## 2. 客户端需求

客户首页建议采用“电商搜索 + 文件报价库”的结构，类似淘宝的搜索和筛选体验，但展示对象不是单个商品，而是品牌报价单文件。

首页主要模块：

1. 顶部搜索框
   - 支持品牌名搜索。
   - 支持产品关键词搜索。
   - 支持 SKU、规格、材质、用途、适用宠物搜索。
   - 支持文件名、备注、英文、拼音、同义词搜索。

2. 分类入口
   - 猫粮类
      - 膨化猫粮
      - 烘焙猫粮
      - 冻干猫粮
      - 风干猫粮
   - 犬粮类
      - 膨化犬粮
      - 烘焙犬粮
      - 冻干犬粮
      - 风干犬粮
   - 猫处方粮类
      - 猫肠胃处方粮
      - 猫泌尿处方粮
      - 猫肝肾处方粮
      - 猫消化处方粮
      - 猫关节处方粮
      - 猫皮肤处方粮
      - 猫低过敏处方粮
      - 猫低脂处方粮
      - 猫减肥处方粮
      - 猫糖尿病处方粮   
   - 犬处方粮类
      - 犬肠胃处方粮
      - 犬泌尿处方粮
      - 犬肝肾处方粮
      - 犬消化处方粮
      - 犬关节处方粮
      - 犬皮肤处方粮
      - 犬低过敏处方粮
      - 犬低脂处方粮
      - 犬减肥处方粮
      - 犬糖尿病处方粮
  - 猫处方罐类
      - 猫肠胃处方罐
         - 流质
         - 非流质
      - 猫泌尿处方粮
         - 流质
         - 非流质
      - 猫肝肾处方罐
         - 流质
         - 非流质
      - 猫消化处方罐
         - 流质
         - 非流质
      - 猫关节处方罐
         - 流质
         - 非流质
      - 猫皮肤处方罐
         - 流质
         - 非流质
      - 猫低过敏处方罐
         - 流质
         - 非流质
      - 猫低脂处方罐
         - 流质
         - 非流质
      - 猫减肥处方罐
         - 流质
         - 非流质
      - 猫糖尿病处方罐
         - 流质
         - 非流质
   - 犬处方罐类
      - 犬肠胃处方罐
         - 流质
         - 非流质
      - 犬泌尿处方粮
         - 流质
         - 非流质
      - 犬肝肾处方罐
         - 流质
         - 非流质
      - 犬消化处方罐
         - 流质
         - 非流质
      - 犬关节处方罐
         - 流质
         - 非流质
      - 犬皮肤处方罐
         - 流质
         - 非流质
      - 犬低过敏处方罐
         - 流质
         - 非流质
      - 犬低脂处方罐
         - 流质
         - 非流质
      - 犬减肥处方罐
         - 流质
         - 非流质
      - 犬糖尿病处方罐
         - 流质
         - 非流质
- 保健品类
      - 关节类
      - 心脏类
      - 肠胃类
      - 泌尿类
      - 肾脏类
      - 肝脏类
      - 肥胖类
      - 眼部类
      - 鼻部类
      - 耳部类
      - 肥胖类
      - 糖尿病类
      - 皮肤病类
      - 低过敏类
      - 老年犬类
      - 老年猫类
      - 营养补充类
      - 其它保健类
- 主食类
   - 猫主食类
      - 猫湿粮主食=
         - 猫罐头
         - 猫条
         - 猫肉酱
         - 猫鲜食
      - 猫干粮主食=
         - 猫肉干
         - 猫饼干
   - 犬主食类
      - 犬湿粮主食=
         - 犬罐头
         - 主食狗条
         - 犬肉酱
         - 犬鲜食
      - 犬干粮主食=
         - 犬xx
   - 猫零食类
      - 猫湿粮零食
         - 猫罐头
         - 猫条
         - 猫肉酱
         - 猫鲜食
      - 猫干粮零食
         - 猫肉干
         - 猫饼干
   - 犬零食类
      - 猫湿粮零食=
         - 猫罐头
         - 猫条
         - 猫肉酱
         - 猫鲜食
      - 犬干粮零食=
         - 猫罐头
         - 猫条
         - 猫肉酱
         - 猫鲜食
   - 进口零食类
   - 猫玩具类
   - 犬玩具类
   - 猫砂类
      - 豆腐猫砂
      - 木薯猫砂
      - 豆腐木薯混合猫砂
      - 矿砂
      - 膨润土猫砂
      - 豆腐矿物混合砂
      - 豆腐鹏润土混合砂
      - 沸石猫砂
      - 小米猫砂
      - 豌豆猫砂
      - 松木猫砂
   - 洗浴洗护类
   - 美容类
   - 尿垫
   - 猫罐头
   - 狗罐头
   - 猫砂盆
   - 犬笼
      - 犬笼垫
      
   - 猫笼
      - 猫笼垫
   - 猫窝
   - 犬窝

   - 牵引用品
   - 鸟类
   - 水族
   - 小宠
   - 清洁护理
   - 其他可扩展分类

3. 最新报价
   - 默认按上传时间排序。
   - 新上传的报价单排在前面。

4. 热销 / 热门报价
   - 根据查看次数、下载次数、加入询价次数、搜索命中次数综合排序。

5. 品牌专区
   - 品牌 Logo
   - 品牌图
   - 品牌名称
   - 主营分类
   - 报价单数量
   - 最近更新时间
   - 品牌备注

6. 最近更新
   - 展示最近有新报价的品牌或文件。
   - 方便客户快速发现更新内容。

7. 筛选区
   - 分类筛选
   - 品牌筛选
   - 报价标签筛选
   - 文件格式筛选
   - 更新时间筛选
   - 有效状态筛选
   - 是否新品筛选

8. 最近浏览
   - 展示客户最近看过的报价单。
   - 二次打开时优先使用缓存，减少重复下载。这一点很重要；

## 3. 移动端体验要求

客户需要在手机端方便查看，电脑端则提供更完整的检索和预览体验。

移动端重点目标：

- 快速找
- 快速看
- 少下载
- 少等待
- 弱网环境下也能基本可用

移动端建议：

1. 首页第一屏保留搜索框、分类快捷入口、最新报价。
2. 筛选条件做成抽屉式筛选，不占用主界面空间。
3. 报价单列表采用卡片式布局。
4. 每张卡片显示品牌图、品牌名、文件名、更新时间、标签、格式、权限状态。
5. PDF 直接在线预览，支持缩放、翻页、横屏查看。
6. Excel 在线预览，默认显示表格预览，不要求客户下载后再打开。
7. 已浏览文件使用本地缓存，二次打开尽量快速展示。
8. 弱网环境下优先显示文件基本信息、缩略图和上次缓存内容。
9. 对无权限内容显示锁标记和占位卡片，但不允许预览或下载。

电脑端建议：

1. 左侧分类树。
2. 中间报价单列表。
3. 右侧预览或详情。
4. 支持批量筛选。
5. 支持多条件组合搜索。
6. 支持更完整的 Excel 表格查看体验。

## 4. 分类体系

系统分类最多支持三级。

示例结构：

```text
狗用品
  牵引出行
    项圈
    胸背
    牵引绳

猫用品
  猫砂清洁
    猫砂盆
    猫砂铲
    除臭用品

食品
  主粮
    犬粮
    猫粮
```

分类设计原则：

1. 当前只需要三级分类，避免后台维护过重。
2. 分类必须支持后台扩展。
3. 分类支持排序、启用、停用。
4. 一个报价单可以绑定一个或多个分类。
5. 分类不强制等于文件夹结构，可以独立维护。

## 5. 搜索系统需求

搜索系统建议分三层建设。

### 5.1 基础搜索

搜索范围：

- 文件名
- 品牌名
- 一级分类
- 二级分类
- 三级分类
- 标签
- 备注
- 关键词

### 5.2 增强搜索

支持：

- 错别字
- 简称
- 拼音
- 英文
- 同义词
- 近义词
- 中英文混合搜索

示例：

```text
猫砂盆
猫厕所
cat litter box
maoshapen
砂盆
```

这些词应该尽量命中相关报价单。

### 5.3 文件内容搜索

后期可以对 Excel、PDF、Word 内容做文本提取，让客户能够搜到文件内部出现过的关键词。

该能力建议放到第二阶段，因为不同文件格式解析复杂度较高，并且可能涉及大文件性能问题。

### 5.4 搜索结果排序规则

建议排序：

1. 客户有权限查看的报价单优先。
2. 品牌名完全匹配优先。
3. 文件名命中优先。
4. 关键词命中其次。
5. 文件内容命中再次。
6. 最近上传的优先。
7. 热门查看的优先。
8. 热门下载的优先。

## 6. 筛选条件

因为当前系统以报价单文件为核心，不拆单品，所以筛选条件先围绕品牌和报价单维护。

第一阶段建议保留：

- 品牌
- 一级分类
- 二级分类
- 三级分类
- 文件格式
- 报价标签
- 更新时间
- 上传时间
- 是否有效
- 是否即将过期
- 是否热门
- 是否新品

后期如需扩展，可以增加：

- 规格关键词
- 颜色关键词
- 包装关键词
- 库存状态
- 起订量
- 适用宠物
- 材质
- 用途

## 7. 客户权限规则

客户分为 A、B、C 三类。

报价单标签建议至少包括：

- 零售
- 批发
- 内部报价

权限规则：

| 客户类型 | 可查看报价单 |
| --- | --- |
| A 类客户 | 零售、批发、内部报价 |
| B 类客户 | 零售、批发 |
| C 类客户 | 零售 |

无权限报价单处理：

1. 仍然显示占位卡片。
2. 显示锁图标。
3. 可显示品牌名、分类、文件更新时间。
4. 不显示价格内容。
5. 不允许预览。
6. 不允许下载。
7. 可提供“申请查看权限”按钮。

这样既能让客户知道系统里有相关品牌或报价，又不会泄露敏感内容。

## 8. 报价单信息结构

每个报价单建议维护以下字段：

| 字段 | 说明 |
| --- | --- |
| 文件名称 | 原始报价单名称或后台自定义名称 |
| 品牌名称 | 关联品牌 |
| 品牌 Logo / 图片 | 用于列表和品牌专区展示 |
| 一级分类 | 主分类 |
| 二级分类 | 子分类 |
| 三级分类 | 细分类 |
| 文件格式 | Excel、PDF、Word、图片、网页表格等 |
| 报价标签 | 零售、批发、内部报价 |
| 上传时间 | 文件首次上传时间 |
| 最近更新时间 | 最近一次替换或编辑时间 |
| 有效期 / 截止日期 | 用于提醒更新 |
| 更新状态 | 正常、即将过期、已过期、严重过期 |
| 文件备注 | 管理员维护的说明 |
| 搜索关键词 | 用于增强搜索 |
| 同义词 | 用于搜索扩展 |
| 适用宠物 | 猫、狗、鸟、水族、小宠等 |
| 规格关键词 | 先以关键词形式维护 |
| 是否热门 | 可人工设置或自动统计 |
| 是否新品 | 可人工设置或按时间自动判断 |
| 历史版本数量 | 旧版报价单数量 |

## 9. 报价有效期与更新提醒

报价单有效期可以同时支持两种规则：

1. 按上传时间自动判断。
2. 管理员手动指定截止日期。

建议提醒等级：

| 状态 | 规则 |
| --- | --- |
| 正常 | 未超过提醒周期 |
| 即将过期 | 距截止日期 7 天内，或超过 30 天未更新 |
| 已过期 | 超过截止日期，或超过 60 天未更新 |
| 严重过期 | 超过 90 天未更新 |

最小验证版本先实现：

1. 后台首页显示“待更新报价单”。
2. 报价单列表用黄色、橙色、红色状态标记。
3. 支持按过期状态筛选。
4. 支持设置截止日期。
5. 支持按上传时间自动计算过期状态。
6. 暂时不做邮件、微信推送，但保留接口位置。

后续扩展：

1. 邮件提醒。
2. 企业微信提醒。
3. 定时任务每日扫描。
4. 给负责人分配更新任务。
5. 按客户查看热度决定更新优先级。

## 10. 批量导入与更新

支持文件格式：

- Excel
- PDF
- Word
- 图片
- 网页表格
- 混合格式

更新方式：

1. 上传新文件，自动成为当前版本。
2. 旧文件自动归档为历史版本。
3. 可手动编辑品牌、分类、标签、备注、有效期。
4. 不同格式采用不同预览处理方式。
5. 后期可支持批量导入品牌和分类信息。
6. 后期可支持从 Excel 中提取关键词。

## 11. 历史版本

每个品牌或报价单可以保留历史版本。

历史版本功能：

1. 查看旧版报价单。
2. 下载旧版报价单。
3. 查看上传时间。
4. 查看更新人。
5. 查看版本备注。
6. 必要时恢复旧版为当前版本。

注意：

历史版本默认仅后台可见。是否允许客户查看历史版本，需要单独设置。

## 12. 询价流程

因为系统不提供每行产品，不适合做传统购物车。

当前阶段建议做“报价单级询价”：

1. 客户可以收藏报价单。
2. 客户可以把报价单加入询价清单。
3. 客户提交询价时填写备注。
4. 客户可说明想咨询哪些产品、数量或规格。
5. 后台收到询价后，管理员人工跟进。

后期如果报价单内容结构化，再升级为单品级询价。

## 13. 导出功能

客户或管理员可以根据权限导出报价内容。

第一阶段建议支持：

- 下载原始文件。
- 导出客户可见报价单列表。
- 导出品牌报价单清单。
- 管理员导出统计数据。

后期可以支持：

- 导出客户专属报价单。
- 导出带公司 Logo 的 PDF。
- 导出筛选后的 Excel。
- 按客户权限生成不同版本。

## 14. 文件预览

### 14.1 PDF 预览

要求：

1. 直接在线打开。
2. 支持手机端翻页。
3. 支持缩放。
4. 支持横屏查看。
5. 支持电脑端页码跳转。
6. 可生成首页缩略图。

推荐实现：

- 使用 PDF.js。
- 服务端可提前生成缩略图。
- 大 PDF 可分段加载，避免一次性加载过慢。

### 14.2 Excel 预览

要求：

1. 在线表格预览。
2. 支持多 Sheet 切换。
3. 支持冻结表头。
4. 支持横向滚动。
5. 手机端以可横向滑动表格展示。
6. 大文件可先展示前几百行，避免卡顿。

推荐实现：

- 使用 Luckysheet、Univer Sheet 或 OnlyOffice。
- 后端上传后生成预览数据。
- 对复杂 Excel 保留“下载原文件”入口。

### 14.3 Word / 图片 / 网页表格

Word：

- 可优先转 PDF 预览。
- 保留原文件下载。

图片：

- 直接预览。
- 支持缩放。
- 支持多图报价单。

网页表格：

- 可转为 HTML 预览。
- 后期可转为 Excel 或 PDF。

## 15. 缓存策略

缓存目标：

- 防止客户反复下载。
- 提高手机端打开速度。
- 降低服务器压力。

缓存分为四层。

### 15.1 浏览器缓存

客户看过的 PDF、Excel 预览资源尽量缓存在浏览器。

可使用：

- HTTP Cache
- Service Worker
- IndexedDB

### 15.2 服务端预览缓存

上传文件后，服务端提前生成预览数据。

客户访问时，不需要每次重新解析 Excel、PDF、Word。

### 15.3 缩略图缓存

缓存内容：

- PDF 首页图
- Excel 表格快照
- 品牌 Logo
- 品牌封面图

### 15.4 权限缓存与失效

规则：

1. 只缓存客户有权限查看的文件内容。
2. 无权限内容不缓存真实文件。
3. 文件更新后，旧缓存自动失效。
4. 客户权限变化后，相关缓存需要重新校验。

## 16. 后台管理需求

后台建议包含以下模块。

### 16.1 工作台

展示：

- 待更新报价
- 最近上传
- 热门查看
- 热门搜索
- 下载统计
- 异常文件
- 文件解析失败记录

### 16.2 报价单管理

功能：

- 上传报价单
- 编辑报价单
- 删除报价单
- 归档报价单
- 设置分类
- 设置品牌
- 设置标签
- 设置权限
- 设置有效期
- 查看历史版本

### 16.3 品牌管理

功能：

- 品牌名称
- 品牌 Logo
- 品牌图片
- 品牌介绍
- 主营分类
- 品牌备注
- 关联报价单

### 16.4 分类管理

功能：

- 三级分类维护
- 分类排序
- 启用 / 停用
- 分类合并
- 分类迁移

### 16.5 客户管理

功能：

- 客户账号
- 客户类型 A / B / C
- 登录记录
- 查看记录
- 下载记录
- 权限申请
- 备注

### 16.6 历史版本

功能：

- 查看旧版报价单
- 下载旧版报价单
- 查看更新人
- 查看更新时间
- 恢复旧版本

### 16.7 搜索词管理

功能：

- 热门搜索词
- 无结果搜索词
- 同义词维护
- 拼音关键词维护
- 英文关键词维护

### 16.8 数据统计

功能：

- 报价单查看排行
- 报价单下载排行
- 品牌热度排行
- 客户活跃度排行
- 分类访问排行
- 无人查看报价单
- 长期未更新报价单

### 16.9 文件处理中心

功能：

- 文件解析状态
- 预览生成状态
- 缩略图生成状态
- 失败原因
- 重新处理

## 17. 数据统计与分析

需要统计客户在看什么、搜什么、下载什么，以及哪些内容没人看。

建议统计：

1. 搜索最多的关键词。
2. 无结果搜索关键词。
3. 点击最多的报价单。
4. 下载最多的报价单。
5. 查看最多的品牌。
6. 查看最多的分类。
7. 客户下载记录。
8. 客户最近浏览。
9. 长期无人查看的报价单。
10. 长时间未更新的报价单。
11. 有权限但从未查看的客户。
12. 查看后未下载的报价单。
13. 下载后反复打开的报价单。
14. 热门报价和过期报价的交叉分析。

这些统计可以反过来帮助判断哪些报价单优先更新。

## 18. 系统架构方案

建议采用前后端分离架构。

整体结构：

```text
客户端 Web / 手机端 H5
        |
前端应用
        |
后端 API 服务
        |
业务数据库 + 文件存储 + 搜索引擎 + 缓存
        |
定时任务 / 文件解析 / 预览生成
```

核心模块：

1. 用户与权限模块
2. 报价单文件模块
3. 品牌模块
4. 分类模块
5. 搜索模块
6. 文件预览模块
7. 缓存模块
8. 历史版本模块
9. 更新提醒模块
10. 数据统计模块
11. 文件解析模块
12. 消息通知模块

## 19. 推荐技术栈

### 19.1 前端

推荐：

- Vue 3 或 React
- TypeScript
- Tailwind CSS 或 Ant Design Vue / Ant Design React
- PDF.js
- Luckysheet、Univer Sheet 或 OnlyOffice
- PWA
- Service Worker
- IndexedDB

说明：

1. PDF.js 用于 PDF 在线预览。
2. Luckysheet、Univer Sheet 或 OnlyOffice 用于 Excel 在线预览。
3. PWA + Service Worker 用于手机端缓存和弱网优化。
4. IndexedDB 用于存储最近浏览记录和部分预览缓存。

### 19.2 后端

可选：

- Laravel
- ThinkPHP
- Node.js NestJS

建议：

如果当前系统是 PHP，优先继续沿用 PHP 技术栈，减少重构成本。若需要更规范的后台和 API，可以考虑 Laravel。

### 19.3 数据库

推荐：

- MySQL
- PostgreSQL

用途：

- 报价单
- 品牌
- 分类
- 客户
- 权限
- 日志
- 历史版本
- 统计数据

### 19.4 缓存

推荐：

- Redis

用途：

- 热门报价缓存
- 搜索结果缓存
- 登录状态
- 统计计数
- 权限缓存

### 19.5 搜索引擎

推荐：

- Meilisearch
- Elasticsearch

建议：

中小规模项目优先使用 Meilisearch，部署和维护更简单。后期如果数据量很大、搜索规则复杂，再考虑 Elasticsearch。

### 19.6 文件存储

可选：

- 本地存储
- MinIO
- 阿里云 OSS
- 腾讯云 COS

建议：

报价单原文件、预览文件、缩略图统一走文件存储层，不直接依赖散乱目录。

### 19.7 定时任务

用途：

- 扫描过期报价
- 生成提醒
- 处理预览
- 更新统计
- 清理失效缓存

## 20. 开发阶段建议

### 第一阶段：最小可用版本

目标是快速把系统从“文件目录查看”升级为“可搜索、可预览、可提醒的报价文件系统”。

功能：

1. 报价单上传。
2. 品牌维护。
3. 分类维护。
4. 标签维护。
5. A / B / C 客户权限。
6. 首页搜索和筛选。
7. PDF 预览。
8. Excel 预览。
9. 最近浏览缓存。
10. 报价单过期提醒。
11. 历史版本保留。

### 第二阶段：体验增强

功能：

1. 拼音搜索。
2. 英文搜索。
3. 同义词搜索。
4. 文件内容索引。
5. 热门搜索统计。
6. 客户查看统计。
7. 客户下载统计。
8. 品牌专区。
9. 权限申请。
10. 邮件或企业微信提醒。

### 第三阶段：运营分析

功能：

1. 客户行为画像。
2. 热门品牌排行。
3. 热门报价排行。
4. 无结果搜索分析。
5. 报价单更新任务分配。
6. 客户专属导出。
7. 自动生成缩略图和预览缓存。
8. 根据查看热度自动调整更新优先级。

## 21. 推荐落地方向

当前最适合的方向是：

> 不急着拆产品明细，先把“报价单文件”管理做到专业、可搜索、可预览、可缓存、可提醒更新。

原因：

1. 符合当前业务形态。
2. 改造成本较低。
3. 能快速提升客户查看体验。
4. 能减少重复下载和沟通成本。
5. 能让管理员及时发现长期未更新报价单。
6. 后期仍然保留升级为单品数据库的空间。

等报价单、品牌、分类、搜索、权限、统计都跑顺以后，再考虑是否把 Excel 里的产品行逐步结构化。

