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

## 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 模块内容建议
标题建议：
- 溯源信息（推荐）

推荐默认使用：
- `溯源信息`

卡片内部采用三层结构：

##### 第一层：批次身份信息（主视觉）
展示内容：
- 批次编号
- 批次号

当前推荐表现：
- 弱标签：`批次编号`
- 主信息：`THY-20260330-001`

说明：
- 批次号是该卡片中的最强识别信息
- 用于让用户与包装标签上的批次号进行核对
- 不建议在批次号前重复增加"批次号："字段式前缀

##### 第二层：关键时间信息（摘要信息）
展示内容：
- 生产/采收日期
- 包装日期

当前推荐表达：
- `生产/采收日期：2026-04-09 ｜ 包装日期：2026-04-10`

说明：
- 使用严谨字段表达，便于用户与商品外包装信息进行核对
- 采用一行摘要形式，而不是表格式字段区

##### 第三层：轻状态标签（结论层）
展示内容：
- `全程可追溯`
- `已通过安全检测`

说明：
- 使用两个轻标签表达结果状态
- 不再使用长句式结论和说明文案
- 不建议继续使用"来源可查 / 检测合格"这类偏电商宣传式文案

#### 4.2.5 视觉建议
- 保留当前 sectionHeader 风格（英文小标题 + 中文主标题）
- 采用"主信息 → 摘要信息 → 状态标签"的三层结构
- 批次号为卡片最强视觉，但不做成页面主标题级别
- 时间信息采用一行摘要，不做表格、不做字段列表卡
- 状态标签使用轻胶囊标签形式，作为结论层
- 整体风格需与当前页面其他卡片保持同一体系，避免像单独做了一种新卡片
- 不再保留原独立"批次信息卡"样式

#### 4.2.6 数据字段建议
当前前端融合卡所需字段主要来自已有批次信息与结论信息，无需为此额外新建复杂字段。

建议字段如下：

| 字段名 | 类型 | 说明 |
|---|---|---|
| `traceConclusion` | string | 溯源主结论，可选；当前融合卡前端版本中已不作为主展示长句 |
| `traceSummary` | string | 溯源补充说明，可选 |
| `batchNo` | string | 批次号 |
| `produceDate` | datetime/date | 生产/采收日期 |
| `packageDate` | datetime/date | 包装日期 |
| `testPassed` | boolean | 是否通过检测，可用于状态标签兜底 |
| `testSourceType` | string | 检测来源类型，如 `self_device` / `third_party` |

前端当前融合卡推荐结构：

```js
traceInfoCard: {
  title: '溯源信息',
  batchLabel: '批次编号',
  batchNo: 'THY-20260330-001',
  summaryLine: '生产/采收日期：2026-04-09 ｜ 包装日期：2026-04-10',
  tags: ['全程可追溯', '已通过安全检测']
}
```

#### 4.2.7 数据来源建议
当前融合卡的数据来源建议如下：

- `batchNo`：来自批次表
- `produceDate`：来自批次表
- `packageDate`：来自批次表
- `testPassed / testSourceType`：来自检测相关扩展字段

说明：
- 当前已确认前端主展示以"批次号 + 日期 + 状态标签"为核心
- 原 `traceConclusion` / `traceSummary` 字段仍可保留，供后续版本扩展使用
- 但当前版本不再以长句结论作为卡片主展示方式

### 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 农事记录 → 时间轴节点映射规则表

| 后台任务类型 | 是否参与主时间轴计算 | 归属阶段 | 说明 |
|---|---:|---|---|
| 施肥 | 是 | 生长期养护 | 归入养护类任务 |
| 灌溉 | 是 | 生长期养护 | 归入养护类任务 |
| 除草 | 是 | 生长期养护 | 归入养护类任务，不单独成节点 |
| 打药 | 是 | 生长期养护 | 归入养护类任务，前端不单独突出“打药”表述 |
| 巡检 | 是 | 田间巡检 | 归入巡检类任务 |
| 采摘 | 否 | 系统节点补充 | 使用 produceDate 生成成熟采收节点 |
| 测试 | 否 | 系统节点补充 | 使用 reportDate 生成安全检测节点 |
| 包装相关 | 否 | 系统节点补充 | 使用 packageDate 生成包装出库节点 |
| 其他 | 否 | 不进入主时间轴 | 仅用于更多记录展示 |

【说明】
- 主时间轴不按“任务逐条展示”，而是按“阶段聚合展示”
- 所有农事任务先归类，再映射到阶段
- 生长期养护与田间巡检为两个核心聚合节点
- 除草、打药等任务不单独作为时间轴节点展示
- 时间轴表达的是“过程阶段”，而不是“任务流水”
- 生长期养护节点时间取养护类任务的最早完成时间
- 田间巡检节点时间取巡检类任务的最早完成时间

#### 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.9.1 节点时间取值规则
种植过程记录统一按以下 6 个节点展示，且各节点时间来源需固定，避免前后端理解不一致：

| 节点 | stage | 时间取值规则 |
|---|---|---|
| 开始种植 | `planting` | 取批次/种植周期的 `plantStartTime`，作为时间轴起点 |
| 生长期养护 | `care` | 取当前批次中“养护类农事任务”的最早完成时间 |
| 田间巡检 | `inspection` | 取当前批次中“巡检类农事任务”的最早完成时间 |
| 成熟采收 | `harvest` | 取批次的 `produceDate` |
| 安全检测 | `test` | 取检测报告中最早的 `reportDate` |
| 包装出库 | `pack` | 取批次的 `packageDate` |

说明：
- 养护类与巡检类节点取“最早完成时间”，目的是表达该批次从何时进入该阶段，而不是最后一次任务发生时间
- 时间轴模块表达的是“关键过程阶段”，不是任务流水记录
- 若某一类任务不存在，则不应伪造该节点时间

#### 4.5.9.2 节点文案口径说明
为避免“时间取最早一次”与“文案像最近一次行为”之间的语义冲突，时间轴文案统一按“阶段表达”处理，不使用“最后一次完成”的表达方式。

推荐文案如下：
- 开始种植：`本批次产品进入种植管理阶段`
- 生长期养护：`种植期间已持续开展灌溉、施肥等日常养护`
- 田间巡检：`种植期间已开展长势检查与环境巡检`
- 成熟采收：`本批次产品进入成熟采收阶段`
- 安全检测：`已完成安全检测，相关结果可查`
- 包装出库：`已完成包装整理，进入销售流通环节`

说明：
- “生长期养护”“田间巡检”属于阶段性节点，文案应强调“已持续开展 / 已开展”，不建议写成“最后一次已完成”
- 这样可以保证时间轴既符合阶段表达逻辑，也符合用户阅读理解

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

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

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

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

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

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

##### 同阶段合并规则
- 同阶段出现多条记录时，不逐条展示
- 应合并为一个阶段节点，并提炼成一句消费者可理解的话术
- 同阶段节点取该阶段对应任务的最早完成时间作为展示时间

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

##### 缺失数据处理规则
- 若无开始种植节点，优先补齐批次字段 `plantStartTime`；在未补齐前可临时从最早一条有效农事记录开始展示
- 若无检测结果日期或可用检测记录，则不生成“安全检测”节点
- 若无包装时间，则不生成“包装出库”节点
- 主时间轴不强行为凑满 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 当前风险
如果把“当前实时环境数据”作为主表达，会存在明显问题：
- 用户看到的是已采摘、已发货的产品
- 当前实时环境并不能直接为历史种植过程背书
- 容易让用户误解为“现在的环境”就是“当时的生长环境”

因此，第二阶段环境模块不应以“当前实时数据”作为主展示逻辑，而应以：

> 历史种植环境记录 + 当前环境摘要

的方式进行表达。

#### 4.7.2 正确策略
> 先给历史环境结论，再用趋势图与摘要做佐证。

其中：
- 历史环境记录是主表达
- 当前实时环境仅作为辅助参考

#### 4.7.3 推荐展示形式
标题：
- 种植环境记录（推荐）
- 生长环境记录

推荐默认使用：
- `种植环境记录`

模块内部建议分为三层：

##### 第一层：环境结论
主结论示例：
- 本批次种植期环境稳定，整体处于适宜生长区间
- 种植期内环境指标整体平稳，处于适宜生长区间

##### 第二层：核心趋势图（主视觉）
以一张“土壤养分综合趋势图”作为主视觉，重点展示：
- 氮（N）
- 磷（P）
- 钾（K）

表达目标：
- 体现土壤养分在种植周期内整体稳定
- 体现养分管理较为均衡
- 强化“这批产品是被持续管理出来的”感知

##### 第三层：环境摘要（辅助信息）
摘要项仅展示用户较容易理解、且对信任感有帮助的 4 项：
- 气温
- 湿度
- 降雨量
- 光照
前端当前展示口径为：平均气温、平均湿度、累计降雨量、光照结论。

不建议在主展示中加入：
- 风速
- 风向
- 气压

因为这些数据对普通用户感知弱，容易增加理解负担，但对信任表达帮助有限。

#### 4.7.4 是否加入曲线图
结论：建议加入，但曲线图主角不再是温度/湿度，而是土壤养分（N/P/K）综合趋势。

推荐方案：
- 只做 1 张综合趋势图
- 图中展示 N / P / K 三条趋势线
- 横轴为种植周期时间
- 纵轴为对应养分值
- 如条件允许，可增加“适宜区间”浅色带作为辅助

这样既能控制页面长度，又能明显提升专业感与可信度。

#### 4.7.5 视觉建议
- 土壤养分综合趋势图作为主视觉区域
- 线条保持轻量、细腻，不做重数据大屏风格
- N / P / K 三条线颜色需区分，但保持低饱和度
- 可弱化坐标轴与网格线，避免技术感过强
- 4 个环境摘要项作为辅助信息，位于趋势图下方或下一区域
- 不建议同时展示多张环境曲线图，避免页面过长、注意力分散

#### 4.7.6 数据结构建议
```js
environment: {
  summary: '本批次种植期环境稳定，整体处于适宜生长区间',
  chart: {
    type: 'npk_trend',
    sourceTable: 'weather_data_statistics',
    values: {
      n: [],
      p: [],
      k: []
    }
  },
  items: [
    { label: '气温', value: '22.3℃', status: '种植期平均' },
    { label: '湿度', value: '45%', status: '种植期平均' },
    { label: '降雨量', value: '118mm', status: '种植期累计' },
    { label: '光照', value: '充足', status: '表现稳定' }
  ]
}
```

#### 4.7.7 数据库 / 接口建议
种植环境模块统一基于：
- `weather_data_statistics`

该表为聚合统计表，前端环境模块不直接读取原始设备时序数据。

当前页面展示所需的数据包括：
- 土壤养分趋势图：氮 / 磷 / 钾
- 平均气温
- 平均湿度
- 累计降雨量
- 光照结论

建议后端在聚合接口中直接返回：

| 字段名 | 类型 | 说明 |
|---|---|---|
| `environmentSummary` | string | 种植环境结论文案 |
| `environmentChart` | json | 土壤养分综合趋势图数据（N/P/K） |
| `environmentItems` | json | 环境摘要项（平均气温/平均湿度/累计降雨量/光照结论） |
| `environmentRaw` | json | 可选，返回聚合原始值用于排查，如平均光照值 |

#### 4.7.8 统计时间范围规则
种植环境数据的统计时间范围统一定义为：

- 起点：开始种植时间（`plantStartTime`）
- 终点：成熟采收时间（`harvestTime`）

不使用包装出库时间作为环境统计结束时间。

环境数据用于描述作物生长过程，作物在采收后已脱离生长环境，包装出库属于流通阶段，不应继续计入种植环境统计。

#### 4.7.9 指标统计口径说明
当前页面中的环境数据展示口径统一为：

- 氮 / 磷 / 钾：种植期区间趋势
- 气温：种植期平均
- 湿度：种植期平均
- 降雨量：种植期累计
- 光照：种植期光照结论（非实时值）

说明：
- 前端展示的是“种植期统计结果”
- 不是实时环境数据

#### 4.7.10 光照结论映射规则
当前光照展示为：

- value：充足
- status：表现稳定

后端计算规则：

- 数据来源：`weather_data_statistics` 日聚合表
- 日口径：当日非 0 光照值平均（单位：lux）
- 周期口径：种植期内日均值再平均，得到：`cycleLightAvg`

结论映射（面向消费者的简化展示规则）：

- `cycleLightAvg < 8000 lux` → `lightLevel = 偏弱`，`lightStatus = 光照较弱`
- `8000 ≤ cycleLightAvg < 20000 lux` → `lightLevel = 适宜`，`lightStatus = 整体平稳`
- `20000 ≤ cycleLightAvg ≤ 50000 lux` → `lightLevel = 充足`，`lightStatus = 表现稳定`
- `cycleLightAvg > 50000 lux` → `lightLevel = 充足`，`lightStatus = 光照偏强`

对应关系说明：
- 后端根据 `cycleLightAvg` 按 lux 阈值规则生成前端展示文案

推荐返回结构示例：
```json
{
  "cycleLightAvg": 24000,
  "lightLevel": "充足",
  "lightStatus": "表现稳定"
}
```

前端展示对应关系：
- `cycleLightAvg`：后端计算出的种植期平均光照值，仅用于排查或后台查看，可不直接展示给消费者
- `lightLevel`：前端 `value` 展示值，对应“偏弱 / 适宜 / 充足”
- `lightStatus`：前端 `status` 展示值，对应“表现稳定”等辅助描述

- 本规则第一版采用基于 lux 的简化映射方式，展示语气更接近日常天气类表达，便于消费者理解
- 阈值区间参考常见自然光照强度范围，属于面向消费者展示的“合理分档”，不强调农业专业术语，也不用于农业精细化控制
- 后端应负责输出“平均光照数值 + 光照等级文案 + 状态文案”三层结果
- 前端最终展示 `lightLevel` 与 `lightStatus`，不负责做 lux → 文案 的阈值判断
### 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. 收口说明 + 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 | 关键时间轴节点（由批次信息、农事任务、检测报告、包装信息聚合生成） |
| `plantStartTime` | datetime/date | 开始种植时间，作为种植过程记录时间轴起点 |
| `farmTasks` | json/array | 原始农事记录列表 |

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

#### 新增字段：种植环境记录
| 字段名 | 类型 | 说明 |
|---|---|---|
| `environmentSummary` | string | 种植环境结论 |
| `environmentItems` | json | 环境摘要项（平均气温/平均湿度/累计降雨量/光照结论） |
| `environmentChart` | json | 土壤养分综合趋势图数据，来源于 `weather_data_statistics` |
| `environmentRaw` | json | 可选，返回聚合原始值用于排查，如平均光照值 |

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

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

#### 溯源信息卡
- 若 `batchNo` 为空，则该模块整体不展示
- 不建议在前端写死“第三方检测”等具体来源类文案；
-“已通过安全检测”可作为状态标签展示，但需以后端真实字段为准
- 若仅 `produceDate` / `packageDate` 缺失，可仅展示批次号与状态标签
- 不建议因为 `traceConclusion` 为空就隐藏整张卡
- 当前前端主展示以“批次号 + 日期 + 状态标签”为核心，`traceConclusion` / `traceSummary` 为可选扩展字段

#### 农事时间轴
- 若无农事记录，但有采收 / 检测 / 包装等系统节点，则仍可展示简化版时间轴
- 若农事记录与系统节点都为空，则隐藏时间轴模块
- 真实接口场景下，若后端未返回时间轴或可用于生成时间轴的真实数据，前端不得直接回退展示 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_chart` | text/json | 土壤养分综合趋势图数据，来源于 weather_data_statistics |
| `environment_raw` | text/json | 可选，返回聚合原始值用于排查，如平均光照值 |
| `plant_start_time` | datetime/date | 开始种植时间，作为环境统计起点 |
| `harvest_time` | datetime/date | 成熟采收时间，作为环境统计终点 |
| `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 不要打破第一阶段视觉风格
第二阶段是在第一阶段上增强，而不是重做。

### 9.6 不要让“当前实时环境”冒充“历史种植环境”
环境模块若作为溯源背书，主表达必须优先使用历史记录或种植周期聚合结果，避免让用户误以为“当前天气”就是“当时环境”。

---

## 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. 缺省状态与兜底逻辑处理

---

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

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

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

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

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

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

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

### 模块 B：溯源信息卡

#### 目标
作为页面前半部分的首个核心信任卡片，同时完成"信任建立"与"批次核验"。

#### 需完成内容
- 将原"溯源结论卡"与"批次信息卡"融合为一个模块
- 标题调整为：溯源信息
- 展示批次编号与批次号
- 展示生产/采收日期与包装日期摘要
- 展示轻状态标签（如：全程可追溯、已通过安全检测）
- 删除原独立"批次信息卡"

#### 推荐前端数据结构
```js
traceInfoCard: {
  title: '溯源信息',
  batchLabel: '批次编号',
  batchNo: 'THY-20260330-001',
  summaryLine: '生产/采收日期：2026-04-09 ｜ 包装日期：2026-04-10',
  tags: ['全程可追溯', '已通过安全检测']
}
```

#### 当前前端实现口径
- 批次号作为该卡片中的主视觉信息
- 时间信息使用一行摘要表达：生产/采收日期：xxxx ｜ 包装日期：xxxx
- 状态信息使用两个轻标签，不再使用长句式结论和说明
- 不再单独保留"批次信息卡"

#### 开发检查点
- 是否已将原"批次信息卡"完全并入
- 批次号是否为卡片中的最强识别信息
- 时间信息是否使用一行摘要表达，而不是表单式字段列表
- 标签文案是否为状态表达，而非营销口号
- 是否避免在该卡中重复展示产地、规格、种植时间等其他模块已有信息

---

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

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

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

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

---

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

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

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

#### 推荐前端数据结构
```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: '已完成包装整理，进入销售流通环节'
  }
]
```

#### 前端实现建议
- 前期可先用 mock timeline 数据做页面展示验证
- 后期联调时应由 `farmTasks + batch + report` 计算生成
- 真实接口场景下，若缺少真实时间轴数据，不得直接回退展示 mock timeline
- `planting` 节点应明确取 `plantStartTime`
- `care` 节点应取养护类任务的最早完成时间
- `inspection` 节点应取巡检类任务的最早完成时间
- 时间轴文案应采用“阶段表达”，不使用“最后一次任务完成”口径
- 若某些系统节点缺失，应按文档中的缺失规则隐藏或简化

#### 开发检查点
- 时间轴不能做成后台操作日志样式
- 不允许逐条展示所有农事记录
- 必须有数量控制与排序控制
- 时间轴为空时应整体隐藏或显示简化版
- `planting` 是否明确取 `plantStartTime`
- `care` 是否取养护类任务的最早完成时间，而不是最后一次时间
- `inspection` 是否取巡检类任务的最早完成时间，而不是最后一次时间
- 时间轴文案是否采用“阶段表达”而不是“最近一次任务表达”

---

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

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

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

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

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

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

---

### 模块 F：种植环境记录

#### 目标
把环境数据转成“历史背书”，而不是简单展示当前实时数值。

#### 需完成内容
- 新增种植环境记录卡
- 展示环境总结文案
- 展示 1 张土壤养分综合趋势图
- 展示 4 个环境摘要项（气温/湿度/降雨量/光照）
- 可选展示“当前环境参考”作为辅助信息

#### 推荐前端数据结构
```js
environment: {
  summary: '本批次种植期环境稳定，整体处于适宜生长区间',
  chart: {
    type: 'npk_trend',
    sourceTable: 'weather_data_statistics',
    values: {
      n: [],
      p: [],
      k: []
    }
  },
  items: [
    { label: '气温', value: '22.3℃', status: '种植期平均' },
    { label: '湿度', value: '45%', status: '种植期平均' },
    { label: '降雨量', value: '118mm', status: '种植期累计' },
    { label: '光照', value: '充足', status: '表现稳定' }
  ]
}
```

#### 数据来源与统计规则
- 数据来源：`weather_data_statistics`
- 时间范围：`plantStartTime ~ harvestTime`

当前展示口径：
- 氮磷钾：趋势
- 气温：平均
- 湿度：平均
- 降雨：累计
- 光照：结论（后端返回）

光照由后端计算，不由前端判断。
后端建议同时返回平均光照数值（如 `cycleLightAvg`）以及映射后的展示文案（如 `lightLevel`、`lightStatus`），前端仅负责展示文案结果。
光照文案整体表达风格应偏消费者理解口径，更接近日常天气描述，不需过多强调农业专业术语。

#### 前端实现建议
- 第一版先完成 summary + 1 张土壤养分综合趋势图 + 4 个环境摘要项
- 当前实时环境数据不作为主表达，只作为辅助参考信息
- 图表建议单独封装为轻趋势图子模块
- 若仅有 summary，无 chart / items，则只展示 summary

#### 开发检查点
- 是否表达的是“历史种植环境”
- NPK 是否为主视觉
- 是否只保留 4 个环境项（平均气温/平均湿度/累计降雨量/光照结论）
- 数据是否来自 `weather_data_statistics`
- 时间范围是否为种植 → 采收
- 光照是否由后端返回结论

---

### 模块 G：批次信息角色调整（已合并）

#### 目标
确认"批次信息"在第二阶段中不再作为独立卡片存在，而是以前部融合信息的方式呈现。

#### 当前结论
- 批次信息不再单独成卡
- 批次核验信息前移并融入"溯源信息卡"
- 页面后半部分不再重复展示同一组批次字段

#### 开发检查点
- 页面中是否已删除独立批次信息卡
- 批次号 / 生产采收日期 / 包装日期是否已在前部融合卡中正确展示
- 是否避免重复展示造成信息冗余

---

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

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

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

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

---

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

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

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

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

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

---

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

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

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

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

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

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

---

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

### 第一屏验收
- 是否一眼看出是品牌官方溯源页面
- 首屏是否保持克制，而没有重复堆叠“官方溯源”信息
- Hero 商品图是否仍然是首屏主视觉
- 是否仍保持当前高级感
- 溯源信息卡是否已承担"信任建立 + 批次核验"的双重职责

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

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

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

### 种植环境记录验收
- 是否先有“历史种植环境”结论
- 土壤养分综合趋势图是否成为主视觉
- 环境摘要是否控制为 4 项（平均气温/平均湿度/累计降雨量/光照结论）
- 图表与摘要数据是否统一来源于 `weather_data_statistics`
- 光照是否展示后端返回的结论值，而不是前端直接映射 lux
- 图表是否克制，不抢戏

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

---

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

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

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

---

## 12.7 本章节总结

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

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

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

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