# 佳友厚苑溯源页第二阶段详细开发设计方案

## 1. 文档说明

### 1.1 文档目的
本文档用于指导 **佳友厚苑溯源页第二阶段** 的产品设计、前端开发、后端接口、数据结构补充与后续联调验收。  
适用对象包括：

- 产品经理
- 前端开发
- 后端开发
- Cursor / AI 辅助开发
- 测试与运营同事
- 后续需求回顾与迭代参考

### 1.2 当前阶段背景
佳友厚苑溯源页第一阶段已完成并具备以下能力：

- 商品信息展示
- 农场信息展示
- 批次信息展示
- 检测报告查看
- 合格证查看
- 二维码标签生成与打印
- 扫码进入 H5 溯源页

第一阶段目标已实现：

> 跑通溯源链路，做到“能看”。

### 1.3 第二阶段目标
第二阶段不再是简单增加模块，而是围绕以下目标展开：

1. 在现有页面风格基础上，增强用户第一眼信任感
2. 加入种植过程可视化内容，形成更完整的可信链路
3. 引入农事时间轴、实时监控、环境状态等内容
4. 将冰冷数据转化为用户可理解、可感知的信任表达
5. 在不破坏当前第一阶段页面风格的前提下，完成信任升级

### 1.4 第二阶段一句话目标
> 从“资料完整的溯源页”，升级为“让消费者放心的信任页”。

### 1.5 第二阶段范围边界

- 首屏信任感优化（基于现有页头与 Hero 商品图，不额外新增 Hero 内重文案）
- 溯源结论卡（以本批次综合溯源结论为主，不仅限于检测结果）
- 关键农事时间轴
- 实时监控画面展示
- 当前环境状态展示
- 检测报告与合格证作为证明层保留
- 页面底部安心收口文案增强

#### 本阶段不包含
- 商城购买链路打通
- 加购、下单、支付等交易能力
- 复杂的多 Tab 页面重构
- 大屏式设备监控看板
- 监管报表、导出报表等后台能力
- 复杂权限系统或内容审核流重构

#### 实施原则
第二阶段以“增强信任表达”为目标，不以增加功能数量为目标。

---

## 2. 用户与信任目标分析

### 2.1 面向用户
当前溯源页主要面向两类用户：

1. 普通消费者
2. 高端用户 / 送礼用户

### 用户共性特征
- 不具备专业农业知识
- 不愿意阅读复杂报告和大量数据
- 更关注结果而非过程细节
- 对“真实性、安全性、新鲜度”敏感
- 希望快速获得“可不可以买、可不可以放心吃”的判断

### 2.2 用户核心关注点
用户普遍会关心以下问题：

- 是否安全，尤其是农药残留、重金属等问题
- 是否真实产地
- 是否真实种植，不是“包装出来的”
- 是否新鲜，是否刚采摘、刚包装
- 是否有检测与证明材料

### 当前阶段优先聚焦的信任点
第二阶段建议重点强化两个核心信任点：

1. **安全**：农残、检测、合格证
2. **真实新鲜**：种植过程、采收、实时现场、环境状态

### 2.3 信任表达策略
第二阶段的信任，不建议以“科技感”作为主导，而应以：

- 真实可信
- 官方可信

为主，技术能力作为辅助支撑。

### 推荐信任构成比例
- 70% 真实可信
- 30% 官方可信

### 不建议作为主表达
- 纯设备炫技
- 纯技术指标堆砌
- 大量术语和参数展示

### 2.4 第二阶段信任表达原则
第二阶段所有新增内容必须遵守以下原则：

#### 原则 1：先给结论，再给证据
错误方式：
- 先给报告、参数、曲线，让用户自己判断

正确方式：
- 先告诉用户“这批产品来源清晰、检测完成、过程可查”
- 再提供报告、证书、数据作为佐证

#### 原则 2：少讲技术，多讲真实
用户不关心：
- 你用了几个传感器
- 采集频率是多少
- 设备品牌是什么

用户关心：
- 现场能不能看见
- 种植过程是不是真的
- 检测是否真实出具
- 数据是否表明环境正常

#### 原则 3：数据是证据，结论才是信任
环境数据、农事数据、检测报告都不是目的，它们只是用于支撑以下结论：

- 本批次产品安全可查
- 本批次产品真实种植
- 本批次产品过程可见
- 本批次产品值得放心食用

---

## 3. 第二阶段页面整体策略

### 3.1 总体策略
第二阶段不推翻第一阶段页面风格与代码结构，而是在当前基础上进行：

- 模块新增
- 模块顺序优化
- 文案升级
- 数据展示策略升级

### 不做的事
- 不做整体视觉重构
- 不引入复杂 tab 结构
- 不把页面做成数据看板
- 不做重后台化表达

### 3.2 页面结构策略
第二阶段页面结构由原来的“资料罗列型”调整为“信任递进型”。

### 信任递进型逻辑
1. 第一屏先建立安全感
2. 第二屏再讲来源与过程
3. 第三屏提供证明材料
4. 最后做安心收口

### 3.3 页面交互策略
#### 建议
- 继续采用单页纵向滚动结构
- 不建议第二阶段上 tab
- 如果后期内容特别多，可考虑“轻锚点导航”，而不是 tab

#### 原因
扫码页不是后台系统页，用户行为是：
- 打开
- 扫一眼
- 往下确认
- 看证明材料

不是：
- 切换 tab
- 主动查不同模块

---

## 4. 第二阶段页面模块设计方案

以下模块顺序为建议实施顺序，也是推荐最终页面展示顺序。

### 4.1 模块一：首屏信任头图（Hero 升级）

#### 4.1.1 模块目标
确保首屏仍然具备“官方溯源页”的气质，但不通过在 Hero 图内叠加大段信任文案来实现。

#### 4.1.2 当前判断
经过页面实际验证后确认：
- 当前顶部 `brandPageHeader` 已具备“官方溯源 / 品质可验”的定调作用
- 当前 Hero 商品图本身已经具备较强的品牌感、品质感与送礼感
- 若在 Hero 图内继续叠加大段信任文案，容易出现：
  - 文案可读性差
  - 遮挡商品主图
  - 信息重复
  - 破坏首屏高级感

因此，第二阶段不建议继续在 Hero 图内新增额外的信任标签、重文案或多行结论文案。

#### 4.1.3 最终策略
模块一保留为“首屏信任感优化”目标，但当前版本的实现策略为：

- 保留现有 `brandPageHeader`
- 保留现有 Hero 商品图表现力
- 保留现有商品信息面板结构
- 不在 Hero 图内额外新增信任标签
- 不在 Hero 图内新增主结论 / 副结论文案

也就是说：

> 首屏的“官方感”和“品质感”由现有页头 + Hero 商品图共同承担，
> 第二阶段真正的信任表达重点下沉到“溯源结论卡”等后续模块。

#### 4.1.4 实现要求
当前版本中，模块一不新增以下内容：
- `heroTrustBlock`
- `heroTrustPill`
- Hero 图内额外标签
- Hero 图内多行信任文案

允许的调整范围仅包括：
- 保持现有 Hero 首屏结构不变
- 如有必要，仅对现有首屏留白、间距、页头与 Hero 之间关系做极轻微优化

#### 4.1.5 设计结论
模块一不是取消，而是经过验证后确认：

- 模块一的目标仍成立：首屏要有“可信的官方气质”
- 但当前最优实现不是“继续加内容”
- 而是“避免重复表达，保持首屏克制”

这是一次经过验证后的设计收敛，而非方案遗漏。

### 4.2 模块二：溯源结论卡（优先级最高）

#### 4.2.1 模块目标
用最短路径回答用户最关心的问题：

> 这批产品值不值得信任？

该模块不是只回答“是否检测通过”，而是对本批次产品的溯源信息做一个前置性的综合结论表达。

#### 4.2.2 重要性说明
当前页面虽然已有检测报告、合格证、批次信息等资料，但缺少一个面向消费者的“总括性结论”。  
这会导致：

- 用户需要自己从不同模块中拼凑判断
- 页面虽然资料完整，但“第一眼可信”感不够强
- 检测报告、合格证、后续农事时间轴、环境状态之间缺少一个统一的解释入口

因此，第二阶段建议将原“检测结论卡”升级为“溯源结论卡”，让该模块承担：

- 对本批次商品做总括性解释
- 先告诉用户“来源清晰、检测完成、过程可查”
- 再引导用户继续查看后方材料与过程数据

#### 4.2.3 模块建议位置
建议放在：
- Hero 后
- 商品信息后
- 农场信息前

推荐顺序：Hero → 溯源结论 → 商品信息 / 农场信息

#### 4.2.4 模块内容建议
标题建议：
- 溯源结论
- 本批次溯源结论

推荐默认使用：
- `溯源结论`

主结论建议：
- 本批次产品已完成安全检测，来源清晰、过程可查
- 本批次产品溯源信息完整，可安心选购
- 本批次产品已完成检测与记录归档，相关信息可查

补充说明建议：
- 本页面已同步展示农场信息、批次信息、检测材料及相关过程记录
- 农残、重金属等关键指标均在安全范围内，相关信息可在下方查看
- 相关检测结果、合格证及批次信息均已归档，可继续查看

#### 4.2.5 视觉建议
- 仍然采用“结论型卡片”
- 不做成报告摘要卡
- 不做成参数表格
- 不做成警示提示条
- 通过“标题 + 主结论 + 补充说明”三层结构表达

信息层级建议：
1. 中文标题（轻）
2. 主结论（最强）
3. 补充说明（最轻）

#### 4.2.6 数据字段建议
建议将字段命名从“检测结论”扩展为更适合整页总结的结构：

| 字段名 | 类型 | 说明 |
|---|---|---|
| `traceConclusion` | string | 溯源主结论 |
| `traceSummary` | string | 溯源补充说明 |
| `testPassed` | boolean | 是否完成检测并通过，可选 |
| `testOrganization` | string | 检测机构或检测来源说明，可选 |
| `testSourceType` | string | 检测来源类型：如 `self_device` / `third_party` |

前端推荐结构：

```js
traceConclusionCard: {
  title: '溯源结论',
  conclusion: '本批次产品已完成安全检测，来源清晰、过程可查',
  desc: '本页面已同步展示农场信息、批次信息、检测材料及相关过程记录。',
  testPassed: true,
  testSourceType: 'self_device'
}
```

#### 4.2.7 数据来源建议
当前阶段检测大概率以“自采设备检测”为主，因此：

- 不应在该模块中默认强调“第三方检测”
- 不应把“第三方机构出具”作为固定文案
- 应根据真实情况决定是否展示检测来源说明

建议规则：
- 若为自采设备检测，则以“已完成安全检测 / 关键指标在安全范围内”表达为主
- 若后期接入第三方检测，可再动态补充“第三方检测结果”文案
- 文案必须与真实检测来源一致，不能为提升信任感而写死第三方背书

### 4.3 模块三：商品信息（保留，轻增强）

#### 4.3.1 当前状态
当前商品信息模块已较成熟：
- 商品名称
- 规格
- 商品简介
- 右上角状态徽章

#### 4.3.2 第二阶段建议
- 保留当前结构
- 不做大改
- 只增强与“检测结论卡”的配合关系

#### 4.3.3 优化方向
- 保持商品信息承担“正式介绍商品”的职责
- 不要让商品信息承担“信任主表达”
- 右上角检验合格徽章可继续保留，但做得更弱一点，避免重复抢戏

### 4.4 模块四：农场信息升级为“真实源头背书卡”

#### 4.4.1 当前问题
当前农场信息更像普通资料卡，表达略偏中性。

#### 4.4.2 业务真实情况
当前农场信息不能一味往“高大上智慧农场”方向包装。  
因为实际情况是：
- 多为有机农场
- 也可能来自普通农户或合作农户
- 不一定都有特别强的规模化、示范化背书

#### 4.4.3 第二阶段策略
不强调“高大上基地”，强调：
- 真实源头
- 明确产地
- 现场可见
- 过程可追溯

#### 4.4.4 推荐标题
- 农场信息（可保留）
- 产地来源
- 源头农场

#### 4.4.5 推荐文案方向
- 产品来源于宿州·萧县种植区域
- 产品来自真实种植农户与合作种植基地
- 农场环境、种植过程及检测信息均可追溯

#### 4.4.6 素材建议
优先使用真实素材：
- 田间实景
- 大棚实景
- 采收现场
- 农户作业现场
- 农场门头或识别图

#### 4.4.7 数据字段建议
现有字段基本够用：
- `farmName`
- `farmRegion`
- `farmImage`
- `farmIntro`

可选补充：

| 字段名 | 类型 | 说明 |
|---|---|---|
| `farmType` | string | 如：合作农户 / 自营基地 / 合作基地 |
| `farmTag` | string[] | 如：有机种植 / 标准化管理 / 真实可追溯 |

### 4.5 模块五：关键农事时间轴（第二阶段核心模块）

#### 4.5.1 模块目标
让用户感受到：

> 这批产品是有过程、有管理、有记录地种出来的。

#### 4.5.2 模块定位
时间轴不是后台操作日志，而是消费者可理解的“成长过程”。

#### 4.5.3 当前难点
农事记录数据来自后台农事任务，存在：
- 数据多
- 任务碎
- 类型复杂
- 表达偏后台管理语义

#### 4.5.4 正确策略
主时间轴不直接展示原始农事记录，而是：

> 将农事记录 + 批次信息 + 检测信息，组合为 4–6 个关键阶段节点。

#### 4.5.5 关键时间轴阶段建议
建议主时间轴最多展示以下 6 类阶段：

1. 开始种植
2. 生长期养护
3. 田间巡检 / 健康管理
4. 成熟采收
5. 安全检测
6. 包装出库

如某阶段无数据，则可跳过。

#### 4.5.6 农事记录 → 时间轴节点映射规则表

##### 任务类型映射表

| 后台任务类型 | 是否进入主时间轴 | 映射阶段 | 前端标题建议 | 前端说明建议 |
|---|---:|---|---|---|
| 施肥 | 是 | 生长期养护 | 营养管理 / 生长期养护 | 已完成生长期养分管理 |
| 灌溉 | 是 | 生长期养护 | 水分管理 / 生长期养护 | 已完成日常灌溉养护 |
| 巡检 | 是 | 田间巡检 / 日常管理 | 田间巡检 | 已完成长势检查与环境巡检 |
| 采摘 | 是 | 成熟采收 | 成熟采收 | 本批次产品进入成熟采收阶段 |
| 除草 | 视情况 | 田间养护 / 日常管理 | 田间养护 | 已完成田间环境整理与养护 |
| 打药 | 谨慎展示 | 健康管理 / 病虫害防控 | 健康管理 | 已完成种植健康管理与病虫害防控 |
| 其他 | 否 | 不建议直接进入主时间轴 | - | 仅在更多记录中展示 |
| 测试 | 否 | 不展示 | - | 不进入消费者时间轴 |

#### 4.5.7 时间轴节点生成规则

规则 1：主时间轴只展示关键阶段，不按“每条农事记录 = 一个节点”，而是按阶段合并。

规则 2：同类任务合并。  
例如多次灌溉 / 施肥，可合并成一个“生长期养护”节点。

规则 3：后台术语转译为消费者语言。  
例如：
- 施肥 → 营养管理
- 打药 → 健康管理 / 病虫害防控
- 巡检 → 田间巡检

规则 4：优先保留高信任价值节点。  
优先级顺序：
1. 开始种植
2. 生长期养护
3. 田间巡检 / 健康管理
4. 成熟采收
5. 安全检测
6. 包装出库

#### 4.5.8 系统节点补充规则（非常重要）
农事记录本身通常不包含“检测完成”“包装出库”这类高信任节点，因此这两个节点不能强依赖农事记录，而应由系统补充生成。

##### 安全检测节点来源
来源：
- `report.items[].detectDate`

生成节点示例：
```json
{
  "time": "2026-03-31",
  "stage": "test",
  "title": "安全检测",
  "desc": "已完成安全检测，相关结果可查"
}
```

##### 包装节点来源
来源：
- `batch.packTime`（即 `data.packageDate`）

生成节点示例：
```json
{
  "time": "2026-04-01",
  "stage": "pack",
  "title": "包装出库",
  "desc": "已完成包装整理，进入销售流通环节"
}
```

##### 采收节点来源
来源：
- `batch.harvestTime`（即 `data.produceDate`）

生成节点示例：
```json
{
  "time": "2026-03-30",
  "stage": "harvest",
  "title": "成熟采收",
  "desc": "本批次产品进入成熟采收阶段"
}
```

#### 4.5.9 推荐前端展示数据结构
```js
timeline: [
  {
    time: '2026-03-01',
    stage: 'planting',
    title: '开始种植',
    desc: '本批次产品进入种植管理阶段'
  },
  {
    time: '2026-03-18',
    stage: 'care',
    title: '生长期养护',
    desc: '已完成灌溉、营养管理等日常养护'
  },
  {
    time: '2026-03-26',
    stage: 'inspection',
    title: '田间巡检',
    desc: '已完成长势检查与种植环境巡检'
  },
  {
    time: '2026-03-30',
    stage: 'harvest',
    title: '成熟采收',
    desc: '本批次产品进入成熟采收阶段'
  },
  {
    time: '2026-03-31',
    stage: 'test',
    title: '安全检测',
    desc: '已完成安全检测，相关结果可查'
  },
  {
    time: '2026-04-01',
    stage: 'pack',
    title: '包装出库',
    desc: '已完成包装整理，进入销售流通环节'
  }
]
```

#### 4.5.10 更多农事记录
主时间轴之外，建议保留“查看更多农事记录”入口。

用途：
- 满足查证
- 不打断主页面节奏
- 保留完整真实性

展开内容建议：
- 时间
- 任务类型
- 任务名称
- 任务说明
- 执行人（可选）

#### 4.5.10.1 时间轴节点数量控制与排序规则

为避免时间轴过长、过碎、不可读，主时间轴必须增加数量控制与排序规则。

##### 数量控制
- 主时间轴建议展示 4–6 个节点
- 当原始农事记录与系统节点合并后超过 6 个时，按优先级裁剪
- 优先保留的节点顺序为：
  1. 开始种植
  2. 生长期养护
  3. 田间巡检 / 健康管理
  4. 成熟采收
  5. 安全检测
  6. 包装出库

##### 同阶段合并规则
- 同阶段出现多条记录时，不逐条展示
- 应合并为一个阶段节点，并提炼成一句消费者可理解的话术
- 同阶段节点取“最能代表当前阶段”的时间点作为展示时间

##### 排序规则
- 主时间轴统一按时间升序排列
- 当出现同一天多个节点时，建议排序优先级为：
  1. 开始种植
  2. 生长期养护
  3. 田间巡检 / 健康管理
  4. 成熟采收
  5. 安全检测
  6. 包装出库

##### 缺失数据处理规则
- 若无开始种植节点，可从最早一条有效农事记录开始展示
- 若无检测结果日期或可用检测记录，则不生成“安全检测”节点
- 若无包装时间，则不生成“包装出库”节点
- 主时间轴不强行为凑满 6 个节点而制造虚假节点

### 4.6 模块六：实时监控画面

#### 4.6.1 模块目标
把“真实种植现场”呈现出来，形成最直接的可信感。

#### 4.6.2 为什么重要
这是第二阶段最具差异化的模块之一，用户看到实时现场会明显增强真实感。

#### 4.6.3 展示原则
- 不强调“摄像头”，强调“现场可见”
- 不讲技术术语，讲“当前画面”“实时可见”

#### 4.6.4 推荐标题
- 种植现场实时画面
- 当前农场监控画面

#### 4.6.5 推荐文案
- 当前为农场种植区实时画面
- 现场环境与种植状态可见

#### 4.6.6 展示方式建议
第一版推荐：
- 视频窗口
- 在线状态
- 轻说明

如果视频流接入稳定，可直接嵌实时视频。  
如果考虑移动端性能，也可先使用封面图 + 点击播放。

#### 4.6.7 数据字段建议

| 字段名 | 类型 | 说明 |
|---|---|---|
| `camera.liveUrl` | string | 实时视频流地址 |
| `camera.coverImage` | string | 封面图 |
| `camera.status` | string | online / offline |
| `camera.desc` | string | 辅助说明 |

### 4.7 模块七：当前环境状态（数据转结论）

#### 4.7.1 当前风险
如果直接展示设备数据：
- 温度 18℃
- 湿度 65%
- 土壤 PH 6.4

会显得冰冷、看不懂、技术化。

#### 4.7.2 正确策略
环境模块必须遵循：

> 先给结论，再给数据。

#### 4.7.3 推荐展示形式
标题：
- 当前种植环境
- 当前环境状态

主结论：
- 当前环境稳定，适宜草莓生长
- 当前种植环境良好，生长状态正常

辅助状态块：
- 温度适宜
- 湿度正常
- 光照充足
- 土壤墒情良好

#### 4.7.4 是否加入折线图
结论：可以加，但不能让线图成为主角。

推荐方案：
- 先做“环境结论 + 小趋势图”
- 只做 1~2 张轻量趋势图
- 不做大屏式复杂监控图表

优先图表：
- 近 24 小时温度趋势
- 近 24 小时湿度趋势

图表位置：
环境结论下方，作为佐证信息，不抢视觉中心。

#### 4.7.5 视觉建议
- 趋势图轻量化
- 线条细
- 不做重坐标轴
- 不做多图叠加
- 不要超过 2 张图

#### 4.7.6 数据结构建议
```js
environment: {
  summary: '当前环境稳定，适宜草莓生长',
  items: [
    { label: '温度', value: '18℃', status: '适宜' },
    { label: '湿度', value: '65%', status: '正常' },
    { label: '光照', value: '充足', status: '正常' },
    { label: '土壤', value: '墒情良好', status: '正常' }
  ],
  charts: [
    { type: 'temperature', values: [] },
    { type: 'humidity', values: [] }
  ]
}
```

#### 4.7.7 数据库 / 接口建议
如果已有设备接口，无需改数据库，可由后端聚合后返回给溯源页接口。  
若无聚合接口，可新增：

| 字段名 | 类型 | 说明 |
|---|---|---|
| `environmentSummary` | string | 环境结论文案 |
| `environmentItems` | json | 环境状态卡 |
| `environmentCharts` | json | 趋势图数据 |

### 4.8 模块八：批次信息（后置）

#### 4.8.1 建议
保留当前结构，不做大改。

#### 4.8.2 位置调整
放在：
- 时间轴
- 实时画面
- 环境状态

之后

#### 4.8.3 原因
批次信息属于查证层，不是信任起点。

### 4.9 模块九：检测报告（证明层）

#### 4.9.1 建议
保留当前横向滑动卡片列表。

#### 4.9.2 第二阶段定位
检测报告是“证据层”，不是“主结论层”。

#### 4.9.3 原则
- 保留“点击查看大图”
- 不再强调报告本身
- 通过前面的检测结论卡，先让用户理解“结果”
- 再通过这里让用户验证“材料”

### 4.10 模块十：合格证（证明层）

#### 4.10.1 建议
保持当前单证小图模式，不放大，不复杂化。

#### 4.10.2 目的
作为信任补充证明材料，和检测报告共同构成证据层。

### 4.11 模块十一：底部安心收口

#### 4.11.1 当前问题
当前 footer 已经有客服电话和品牌签名，但结束稍显平淡。

#### 4.11.2 建议新增一行轻收口文案
例如：
- 本产品已完成全流程溯源记录，信息真实可查，请放心食用。

#### 4.11.3 当前 footer 可继续保留
- 联系客服
- 电话
- 品牌签名

#### 4.11.4 推荐签名文案
- 佳友厚苑 · 安心之选
- 佳友厚苑 · 源头可见
- 佳友厚苑 · 溯源可鉴

---

## 5. 第二阶段推荐模块顺序

最终推荐页面顺序如下：

1. 品牌页头
2. Hero 首屏延续现状（不新增额外信任标签或重文案）
3. 溯源结论卡
4. 商品信息
5. 农场信息
6. 关键农事时间轴
7. 种植现场实时画面
8. 当前环境状态
9. 批次信息
10. 检测报告
11. 合格证
12. 收口说明 + footer

---

## 6. 数据结构与接口设计建议

### 6.1 溯源页主接口建议
建议继续使用一个聚合接口，例如：
- `getTraceDetail(batchId)`

但返回数据要扩展。

#### 建议返回结构
```json
{
  "product": {},
  "farm": {},
  "batch": {},
  "report": {},
  "certificate": {},
  "timeline": [],
  "farmTasks": [],
  "camera": {},
  "environment": {},
  "traceConclusion": "",
  "traceSummary": ""
}
```

### 6.2 字段增补建议

#### 新增字段：溯源结论
| 字段名 | 类型 | 说明 |
|---|---|---|
| `traceConclusion` | string | 溯源主结论 |
| `traceSummary` | string | 溯源补充说明 |
| `testPassed` | boolean | 是否通过检测 |
| `testOrganization` | string | 检测机构名称或检测来源说明 |
| `testSourceType` | string | 检测来源类型，如 `self_device` / `third_party` |

#### 新增字段：时间轴
| 字段名 | 类型 | 说明 |
|---|---|---|
| `timeline` | json/array | 关键时间轴节点 |
| `farmTasks` | json/array | 原始农事记录列表 |

#### 新增字段：实时监控
| 字段名 | 类型 | 说明 |
|---|---|---|
| `cameraLiveUrl` | string | 实时流地址 |
| `cameraCover` | string | 封面图 |
| `cameraStatus` | string | 在线状态 |

#### 新增字段：环境状态
| 字段名 | 类型 | 说明 |
|---|---|---|
| `environmentSummary` | string | 环境结论 |
| `environmentItems` | json | 状态项 |
| `environmentCharts` | json | 趋势图数据 |

### 6.3 缺省数据与前端兜底策略

第二阶段页面涉及多个新增模块，后端字段可能存在分阶段补齐的情况，因此前端必须设计缺省数据兜底策略。

#### 溯源结论卡
- 若 `traceConclusion` 为空，则该模块整体不展示
- 不建议在前端写死“第三方检测”“已通过检测”等强结论文案

#### 农事时间轴
- 若无农事记录，但有采收 / 检测 / 包装等系统节点，则仍可展示简化版时间轴
- 若农事记录与系统节点都为空，则隐藏时间轴模块
- 真实接口场景下，若后端未返回时间轴或可用于生成时间轴的真实数据，前端不得直接回退展示 mock 农事过程

#### 实时监控画面
- 若 `camera.liveUrl` 为空但 `camera.coverImage` 有值，则展示封面图模式
- 若监控数据整体为空，则隐藏该模块

#### 当前环境状态
- 若仅有 summary，无具体 items / charts，则只展示结论文案
- 若 summary、items、charts 全为空，则隐藏该模块

#### 检测报告 / 合格证
- 延续第一阶段逻辑：无数据时展示“待补充”或直接隐藏，由产品最终确定

#### 总体原则
- 前端不得为了页面完整性伪造关键可信信息
- 对于“检测通过”“实时在线”“环境正常”等结论性内容，必须以真实字段为准

---

## 7. 数据库字段增补建议

> 目标：支持第二阶段页面展示，但避免一次性扩表过度。

### 7.1 批次表（建议已有字段复用）
建议确认并继续使用以下字段：

| 字段名 | 类型 | 说明 |
|---|---|---|
| `batch_no` | varchar | 批次号 |
| `produce_date` | datetime/date | 生产/采收时间 |
| `package_date` | datetime/date | 包装时间 |
| `status` | varchar | 批次状态 |
| `product_name` | varchar | 商品名称 |
| `product_spec` | varchar | 商品规格 |
| `product_desc` | text | 商品简介 |
| `product_image` | varchar | 商品图片 |
| `farm_name` | varchar | 农场名称 |
| `farm_region` | varchar | 农场地区 |
| `farm_image` | varchar | 农场图片 |
| `farm_intro` | text | 农场介绍 |

### 7.2 溯源结论扩展表 / 扩展字段（建议新增）
可新建扩展表，也可挂在批次表上。推荐扩展表：`trace_batch_extra`

| 字段名 | 类型 | 说明 |
|---|---|---|
| `id` | bigint | 主键 |
| `batch_id` | bigint | 批次 ID |
| `trace_conclusion` | varchar(500) | 溯源主结论 |
| `trace_summary` | varchar(500) | 溯源补充说明 |
| `test_passed` | tinyint | 是否检测通过 |
| `test_organization` | varchar(200) | 检测机构或检测来源说明 |
| `test_source_type` | varchar(50) | 检测来源类型，如 self_device / third_party |
| `camera_live_url` | varchar(500) | 实时视频流地址 |
| `camera_cover` | varchar(500) | 监控封面图 |
| `camera_status` | varchar(20) | 摄像头状态 |
| `environment_summary` | varchar(500) | 环境总结 |
| `environment_items` | text/json | 环境状态项 |
| `environment_charts` | text/json | 环境趋势图数据 |
| `footer_statement` | varchar(500) | 页底收口文案，可选 |

### 7.3 农事记录表（优先复用）
建议复用现有农事记录表，无需为第二阶段专门新建。

建议前端所需字段至少包括：

| 字段名 | 类型 | 说明 |
|---|---|---|
| `task_name` | varchar | 任务名称 |
| `task_type` | varchar | 任务类型 |
| `farm_id` | bigint | 所属农场 |
| `plot_id` | bigint | 所属地块 |
| `operator_name` | varchar | 执行人 |
| `crop_name` | varchar | 作物名称 |
| `task_status` | varchar | 任务状态 |
| `plan_start_time` | datetime | 计划开始时间 |
| `plan_end_time` | datetime | 计划完成时间 |
| `task_desc` | text | 任务说明 |

### 7.4 原始农事记录查询接口建议
建议提供一个按批次/农场/作物过滤后的农事记录查询接口，供前端或聚合接口使用。

例如：
- 根据批次 ID 查询关联农事记录
- 或根据农场 + 作物 + 时间范围查询

---

## 8. 开发实施建议

### 8.1 开发优先级建议
#### P1
- 溯源结论卡
- 时间轴模块

#### P2
- 实时监控画面
- 环境状态卡

#### P3
- 小趋势图
- 更多农事记录展开

### 8.2 前端实施策略
建议基于当前 `detail.vue`：

- 继续复用 card 体系
- 新增模块，不推翻结构
- 通过 computed 对新字段做兼容
- mock 数据先行，后续联调替换

### 8.3 后端实施策略
建议后端分两步：

#### 第一步
先补字段并返回 mock / 半真实数据：
- traceConclusion
- timeline
- camera
- environment

#### 第二步
再接入真实数据聚合：
- 农事记录
- 摄像头实时流
- 设备环境状态
- 溯源结论文案生成 / 检测结论解析

### 8.4 联调建议

#### 联调顺序建议
1. 溯源结论卡
2. 时间轴聚合逻辑
3. 实时监控画面
4. 当前环境状态
5. 报告 / 合格证与第二阶段模块的顺序联调

#### 联调原则
- 先打通字段与接口，再优化文案与样式细节
- 先保证“有无逻辑”正确，再优化“展示效果”
- 时间轴联调时必须重点验证：
  - 同类任务是否正确合并
  - 系统节点是否正确拼入
  - 节点顺序是否正确
  - 超过 6 条时是否正确裁剪
  - 无真实时间轴数据时是否正确隐藏模块，而不是回退展示 mock 节点

### 8.5 开发推进策略（前端先行，但非原型）

本项目第二阶段采用“前端先行”的开发策略，但需特别强调：

> 本阶段前端不是原型开发，而是直接开发可上线的正式页面。

#### 8.5.1 开发阶段划分

##### 阶段一：前端页面落地开发（非原型）
目标：
- 完成第二阶段所有页面模块的真实开发（非原型）
- 页面结构、样式、交互均按正式上线标准实现
- 使用 mock 数据或前端示例数据填充

本阶段重点：
- 验证“信任感是否成立”
- 验证模块组合是否合理
- 验证页面节奏（是否冗长 / 是否跳跃 / 是否像后台）

注意事项：
- 不允许使用低保真原型结构（如占位框、简化布局）
- 所有模块需按最终 UI 标准开发
- 文案需接近最终运营版本（可后续微调）

##### 阶段二：运营 & 老板评审
目标：
- 确认页面是否达到“第一眼可信”的目标
- 确认内容表达是否符合运营使用习惯

评审重点问题建议：
- 第一屏是否让人产生安全感
- 哪个模块最有信任感
- 哪个模块显得多余或干扰
- 文案是否过于技术化或不接地气
- 页面是否有“真实感”而不是“系统感”

##### 阶段三：方案冻结（非常关键）
目标：
- 确认最终模块结构
- 确认字段需求
- 确认展示逻辑

原则：
- 页面结构一旦确认，不再大改
- 避免在联调阶段频繁调整页面结构

##### 阶段四：后端接口开发
目标：
- 根据已确认页面补充字段与接口
- 提供聚合数据结构

开发重点：
- 溯源结论字段
- 时间轴聚合逻辑
- 摄像头数据
- 环境状态聚合

##### 阶段五：前后端联调
目标：
- 数据与页面完全对齐
- 校验所有兜底逻辑

联调重点：
- 时间轴节点是否正确合并与排序
- 无数据时页面是否合理隐藏模块
- 溯源结论与检测来源、报告材料是否一致
- 实时监控状态是否真实反映

---

#### 8.5.2 前端开发数据策略

为提高开发效率，建议前端阶段采用三套数据策略：

##### 1. 理想数据（全量）
用于展示最佳效果：
- 完整时间轴
- 有检测结论
- 有实时视频
- 有环境状态与趋势图

##### 2. 常规数据（部分缺失）
用于验证页面健壮性：
- 无视频或无趋势图
- 有时间轴 + 报告

##### 3. 缺省数据（极端情况）
用于验证兜底逻辑：
- 无检测结论
- 无时间轴
- 无环境数据

要求：
- 三种状态页面都必须表现正常
- 不允许出现“空白块”“占位尴尬”“结构断裂”

---

#### 8.5.3 本阶段核心目标再次强调

第二阶段前端开发的核心目标不是“功能完成”，而是：

- 是否让用户第一眼产生信任感
- 是否让用户快速理解“安全 / 真实 / 新鲜”
- 是否避免页面呈现为后台系统或数据面板

最终标准：

> 用户扫码打开页面后，不需要解释，就能感知“这批产品是可信的”。

---

## 9. 风险点与注意事项

### 9.1 不要把页面做成数据看板
重点是信任，而不是设备展示。

### 9.2 不要直接展示过多原始农事记录
主时间轴必须提炼，原始记录仅用于展开查证。

### 9.3 不要把“打药”原词直接做主节点
应转译为“健康管理 / 病虫害防控管理”。

### 9.4 不要过度堆卡片
内容多时优先靠模块层级和收纳，不先上 tab。

### 9.5 不要打破第一阶段视觉风格
第二阶段是在第一阶段上增强，而不是重做。

---

## 10. 验收标准

第二阶段完成后，页面应满足以下验收标准：

### 10.1 体验层
- 用户打开页面后第一屏即可感知“安全、可信”
- 页面整体不冗长、不杂乱
- 所有新增模块都能自然融入现有风格

### 10.2 内容层
- 能看到溯源结论
- 能看到关键种植过程
- 能看到实时现场
- 能理解环境状态
- 能继续查看检测报告、合格证

### 10.3 业务层
- 支持普通消费者快速判断“能不能放心买”
- 支持高端用户快速建立送礼信任感
- 保持后续第三阶段“能卖”的承接空间

### 10.4 数据真实性验收
- 溯源结论文案必须与真实检测结果、检测来源及页面材料一致
- 时间轴节点不得伪造不存在的种植过程
- 未接入真实农事记录或系统节点时，不得以前端 mock 时间轴替代真实过程展示给用户
- 实时监控若为封面图或非实时模式，前端文案不得误导为“实时”
- 环境状态结论必须与真实设备数据或后端聚合结论一致
- 产地、批次、检测报告、合格证之间的批次关联必须一致

---

## 11. 最终结论

第二阶段不是简单加功能，而是围绕“安全、新鲜、真实”三件事，完成一次信任表达升级。

### 第二阶段要做的本质
- 把数据转成结论
- 把功能转成场景
- 把资料页升级成信任页

### 最终目标
> 让用户扫码打开页面后，不只是“看见很多资料”，而是“愿意相信这批产品”。

---

## 12. 第二阶段前端开发拆解清单

> 本章节用于指导第二阶段前端页面的实际开发落地，适用于前端开发人员、Cursor 辅助开发以及后续联调前的自查。

### 12.1 开发目标说明

第二阶段前端开发不是做低保真原型，而是直接开发可上线的正式页面。  
因此拆解清单不仅关注“做哪些模块”，也关注：

- 模块顺序是否正确
- 信息层级是否合理
- 信任感是否成立
- 缺省状态是否可用
- 后续联调是否方便

---

## 12.2 页面模块开发顺序建议

建议按以下顺序逐步开发，而不是一次性同时改完整个页面：

### 第一批（优先落地，最快形成第二阶段效果）
1. 溯源结论卡
2. 关键农事时间轴
3. 首屏与后续模块衔接细节校准

### 第二批（强化真实感与差异化）
4. 种植现场实时画面
5. 当前环境状态

### 第三批（整体验收与细节增强）
6. 批次信息顺序调整
7. 检测报告与合格证顺序校准
8. 页脚安心收口增强
9. 缺省状态与兜底逻辑处理

---

## 12.3 前端组件 / 模块拆解建议

建议在当前 `detail.vue` 基础上按模块拆分开发思路推进，即使不立即拆成独立组件，也应按组件思维组织代码。

### 模块 A：首屏信任感收敛优化

#### 目标
确保首屏具备“官方溯源页”的气质，但不通过在 Hero 图上继续叠加额外标签或文案来实现。

#### 当前结论
经过实际页面验证，已确认：
- 顶部 `brandPageHeader` 已承担“官方溯源”的定调作用
- Hero 商品图本身已承担品牌感、品质感与高端感表达
- 继续在 Hero 图内增加额外标签或结论文案，会造成信息重复与视觉干扰

#### 本模块当前需完成内容
- 保持首屏现有结构不变
- 不新增 `heroTrustBlock` / `heroTrustPill` 等额外元素
- 如有必要，仅微调页头与 Hero 的节奏关系、留白、间距

#### 开发检查点
- 首屏是否仍然一眼能感知“官方感”
- Hero 商品图是否仍然保持主视觉地位
- 是否避免了重复表达“官方溯源”
- 是否没有因为新增元素而破坏高级感

### 模块 B：溯源结论卡

#### 目标
优先回答用户“这批产品值不值得信任”。

#### 需完成内容
- 新增溯源结论卡
- 放置在 Hero 后的高优先级位置
- 呈现主结论 + 补充说明
- 结论不局限于“检测通过”，而是对整页溯源信息做总括表达

#### 推荐前端数据字段
```js
traceConclusionCard: {
  title: '溯源结论',
  conclusion: '本批次产品已完成安全检测，来源清晰、过程可查',
  desc: '本页面已同步展示农场信息、批次信息、检测材料及相关过程记录。',
  testPassed: true,
  testSourceType: 'self_device'
}
```

#### 开发检查点
- 模块应为“结论型卡片”，不能做成参数表格
- 该模块为空时应整体隐藏
- 不允许前端写死“第三方检测”作为长期方案
- 结论应能承接后续时间轴、检测报告、合格证等模块，而不是只解释检测结果

---

### 模块 C：农场信息卡优化

#### 目标
将当前农场资料卡提升为“真实源头背书卡”。

#### 需完成内容
- 保留现有农场图片、名称、地址、简介结构
- 优化简介表达，使其更偏“真实来源”而非“高大上基地宣传”
- 必要时补充轻标签（如：真实产地 / 可追溯）

#### 开发检查点
- 避免过度包装为大型智慧农场
- 图片优先体现“真实感”而不是“概念感”
- 文案应更强调来源、产地、过程可查

---

### 模块 D：关键农事时间轴

#### 目标
将农事记录转化为消费者可理解的成长过程。

#### 需完成内容
- 新增时间轴卡片
- 根据当前设计方案中的映射规则生成时间轴数据
- 支持最多展示 4–6 个关键节点
- 可预留“查看更多农事记录”入口

#### 推荐前端数据结构
```js
timeline: [
  {
    time: '2026-03-01',
    stage: 'planting',
    title: '开始种植',
    desc: '本批次产品进入种植管理阶段'
  }
]
```

#### 前端实现建议
- 前期可先用 mock timeline 数据做页面展示验证
- 后期联调时应由 `farmTasks + batch + report` 计算生成
- 真实接口场景下，若缺少真实时间轴数据，不得直接回退展示 mock timeline
- 若某些系统节点缺失，应按文档中的缺失规则隐藏或简化

#### 开发检查点
- 时间轴不能做成后台操作日志样式
- 不允许逐条展示所有农事记录
- 必须有数量控制与排序控制
- 时间轴为空时应整体隐藏或显示简化版

---

### 模块 E：种植现场实时画面

#### 目标
用“现场可见”强化真实可信感。

#### 需完成内容
- 新增实时画面卡片
- 支持视频流模式
- 支持封面图兜底模式
- 支持在线 / 离线状态展示

#### 推荐前端数据结构
```js
camera: {
  liveUrl: '',
  coverImage: '',
  status: 'online',
  desc: '当前为农场种植区实时画面'
}
```

#### 前端实现建议
- 第一版先保证卡片结构正确
- 如果视频能力已成熟，可直接接已有方案
- 若 `liveUrl` 缺失，则自动回退为封面图模式

#### 开发检查点
- 文案不强调“摄像头”，强调“现场画面”
- 不要把该模块做成监控控制台
- 若为非实时模式，文案不得误导为实时

---

### 模块 F：当前环境状态

#### 目标
把设备数据转成用户可理解的环境结论。

#### 需完成内容
- 新增环境状态卡
- 展示环境总结文案
- 展示 4 个左右的状态项
- 可预留 1–2 张轻量趋势图位置

#### 推荐前端数据结构
```js
environment: {
  summary: '当前环境稳定，适宜草莓生长',
  items: [
    { label: '温度', value: '18℃', status: '适宜' },
    { label: '湿度', value: '65%', status: '正常' },
    { label: '光照', value: '充足', status: '正常' },
    { label: '土壤', value: '墒情良好', status: '正常' }
  ],
  charts: []
}
```

#### 前端实现建议
- 第一版可先不接图表，先完成 summary + items
- 图表建议单独封装为轻趋势图子模块
- 若仅有 summary，则只展示 summary

#### 开发检查点
- 不要让数值成为主角
- 环境模块首先要给结论
- 趋势图是佐证，不是主表达

---

### 模块 G：批次信息顺序与角色调整

#### 目标
保留批次信息，但将其放到“查证层”位置。

#### 需完成内容
- 不必大改样式
- 调整模块在页面中的顺序
- 确保在时间轴 / 监控 / 环境之后出现

#### 开发检查点
- 批次信息仍然清晰
- 但不应继续作为前半页核心内容

---

### 模块 H：检测报告与合格证证明层整理

#### 目标
让检测报告与合格证作为证明材料存在，而不是抢主结论。

#### 需完成内容
- 保持当前报告横滑卡片与合格证单证模式
- 校准两者在页面中的出现顺序
- 确保前面已有检测结论卡后，材料层逻辑自然成立

#### 开发检查点
- 不要再次放大报告与合格证的视觉权重
- 继续保持“点击查看大图”逻辑
- 与第二阶段新模块之间的节奏要顺

---

### 模块 I：页脚安心收口

#### 目标
让页面结尾不突兀，形成“安心结束”的感觉。

#### 需完成内容
- 在现有 footer 上方新增一行轻收口文案
- 保留客服电话与品牌签名
- 校准页尾留白与整体节奏

#### 推荐收口文案
- 本产品已完成全流程溯源记录，信息真实可查，请放心食用。

#### 开发检查点
- 页尾不能突然结束
- 不要做成重按钮区域
- 应保持当前第一阶段的克制风格

---

## 12.4 前端开发文件级任务拆解建议

建议以当前 `pages/trace/detail.vue` 为主文件推进，并视需要拆出子组件。

### 推荐拆解方式（建议，但不强制）

#### 方案 A：先在 `detail.vue` 内完成全部模块
适合：
- 先快速确认页面效果
- 便于统一调整顺序和节奏

#### 方案 B：边开发边提炼子组件
推荐可拆分子组件如下：
- `TraceHeroTrust.vue`
- `TraceConclusionCard.vue`
- `TraceTimeline.vue`
- `TraceCameraCard.vue`
- `TraceEnvironmentCard.vue`
- `TraceFooterStatement.vue`

### 建议优先
先在 `detail.vue` 内完成版面，老板确认后再酌情抽组件，避免过早拆分影响迭代速度。

---

## 12.5 页面开发验收清单（前端阶段）

### 第一屏验收
- 是否一眼看出是品牌官方溯源页面
- 首屏是否保持克制，而没有重复堆叠“官方溯源”信息
- Hero 商品图是否仍然是首屏主视觉
- 是否仍保持当前高级感

### 模块层级验收
- 是否先给结论，再给过程，再给证明
- 是否避免了“信息一上来就太多”
- 是否避免了后台感 / 数据面板感

### 时间轴验收
- 节点是否控制在 4–6 条
- 是否能看懂而不是像日志
- 是否包含采收 / 检测 / 包装等关键节点
- 真实数据缺失时是否没有错误展示 mock 过程节点

### 实时画面验收
- 是否有真实感
- 是否不显技术化
- 封面图兜底是否自然

### 环境状态验收
- 是否先有环境结论
- 状态块是否简洁
- 图表是否克制，不抢戏

### 页面完整性验收
- 各模块间距是否协调
- 页面是否过长
- 页脚是否收得住
- 无数据场景是否自然

---

## 12.6 前端阶段输出物要求

第二阶段前端开发完成后，应至少形成以下输出物：

1. 可运行的正式页面版本（非原型）
2. 至少一套全量 mock 数据
3. 一套部分缺失数据
4. 一套缺省数据
5. 页面截图 / 演示视频，用于老板与运营评审

---

## 12.7 本章节总结

第二阶段前端开发不是为了“把功能都放上去”，而是为了验证：

- 页面是否真的比第一阶段更可信
- 第二阶段内容是否能被“溯源结论”自然串起来
- 后续后端接口应该围绕哪些字段补齐

前端先行的价值不在于“首屏不断加元素”，而在于：

> 先把正确的页面表达验证清楚，再让后端围绕正确的目标补数据。
