فهرست منبع

完善开发文档以及页面文案

yawuga 1 ماه پیش
والد
کامیت
87db9b6f11
2فایلهای تغییر یافته به همراه313 افزوده شده و 95 حذف شده
  1. 4 4
      pages/trace/detail.vue
  2. 309 91
      佳友厚苑_溯源页第二阶段详细开发设计方案.md

+ 4 - 4
pages/trace/detail.vue

@@ -755,13 +755,13 @@ const MOCK_TRACE_DETAILS = {
 				time: '2026-03-12',
 				stage: 'care',
 				title: '生长期养护',
-				desc: '已完成灌溉、营养管理等日常养护'
+				desc: '种植期间已持续开展灌溉、施肥等日常养护'
 			},
 			{
 				time: '2026-03-20',
 				stage: 'inspection',
 				title: '田间巡检',
-				desc: '已完成长势检查与种植环境巡检'
+				desc: '种植期间已开展长势检查与环境巡检'
 			},
 			{
 				time: '2026-03-30',
@@ -1776,8 +1776,8 @@ const traceDetail = computed(() => {
 				// 演示态:使用完整 mock 时间轴(用于页面展示验证)
 				timeline = [
 					{ time: '2026-03-01', stage: 'planting', title: '开始种植', desc: '本批次产品进入种植管理阶段' },
-					{ time: '2026-03-12', stage: 'care', title: '生长期养护', desc: '已完成灌溉、营养管理等日常养护' },
-					{ time: '2026-03-20', stage: 'inspection', title: '田间巡检', desc: '已完成长势检查与种植环境巡检' },
+					{ time: '2026-03-12', stage: 'care', title: '生长期养护', desc: '种植期间已持续开展灌溉、施肥等日常养护' },
+					{ time: '2026-03-20', stage: 'inspection', title: '田间巡检', desc: '种植期间已持续开展长势检查与环境巡检' },
 					{ time: data.produceDate || '', stage: 'harvest', title: '成熟采收', desc: '本批次产品进入成熟采收阶段' },
 					{ time: (data.reports?.[0]?.reportDate) || '', stage: 'test', title: '安全检测', desc: '已完成安全检测,相关结果可查' },
 					{ time: data.packageDate || '', stage: 'pack', title: '包装出库', desc: '已完成包装整理,进入销售流通环节' }

+ 309 - 91
佳友厚苑_溯源页第二阶段详细开发设计方案.md

@@ -46,7 +46,7 @@
 - 溯源结论卡(以本批次综合溯源结论为主,不仅限于检测结果)
 - 关键农事时间轴
 - 实时监控画面展示
-- 当前环境状态展示
+- 种植环境记录展示
 - 检测报告与合格证作为证明层保留
 - 页面底部安心收口文案增强
 
@@ -537,13 +537,13 @@ timeline: [
     time: '2026-03-18',
     stage: 'care',
     title: '生长期养护',
-    desc: '已完成灌溉、营养管理等日常养护'
+    desc: '种植期间已持续开展灌溉、施肥等日常养护'
   },
   {
     time: '2026-03-26',
     stage: 'inspection',
     title: '田间巡检',
-    desc: '已完成长势检查与种植环境巡检'
+    desc: '种植期间已开展长势检查与环境巡检'
   },
   {
     time: '2026-03-30',
@@ -566,6 +566,38 @@ timeline: [
 ]
 ```
 
+#### 4.5.9.1 节点时间取值规则
+种植过程记录统一按以下 6 个节点展示,且各节点时间来源需固定,避免前后端理解不一致:
+
+| 节点 | stage | 时间取值规则 |
+|---|---|---|
+| 开始种植 | `planting` | 取批次/种植周期的 `plantStartTime`,作为时间轴起点 |
+| 生长期养护 | `care` | 取当前批次中“养护类农事任务”的最早完成时间 |
+| 田间巡检 | `inspection` | 取当前批次中“巡检类农事任务”的最早完成时间 |
+| 成熟采收 | `harvest` | 取批次的 `produceDate` |
+| 安全检测 | `test` | 取检测报告中最早的 `reportDate` |
+| 包装出库 | `pack` | 取批次的 `packageDate` |
+
+说明:
+- 养护类与巡检类节点取“最早完成时间”,目的是表达该批次从何时进入该阶段,而不是最后一次任务发生时间
+- 时间轴模块表达的是“关键过程阶段”,不是任务流水记录
+- 若某一类任务不存在,则不应伪造该节点时间
+
+#### 4.5.9.2 节点文案口径说明
+为避免“时间取最早一次”与“文案像最近一次行为”之间的语义冲突,时间轴文案统一按“阶段表达”处理,不使用“最后一次完成”的表达方式。
+
+推荐文案如下:
+- 开始种植:`本批次产品进入种植管理阶段`
+- 生长期养护:`种植期间已持续开展灌溉、施肥等日常养护`
+- 田间巡检:`种植期间已开展长势检查与环境巡检`
+- 成熟采收:`本批次产品进入成熟采收阶段`
+- 安全检测:`已完成安全检测,相关结果可查`
+- 包装出库:`已完成包装整理,进入销售流通环节`
+
+说明:
+- “生长期养护”“田间巡检”属于阶段性节点,文案应强调“已持续开展 / 已开展”,不建议写成“最后一次已完成”
+- 这样可以保证时间轴既符合阶段表达逻辑,也符合用户阅读理解
+
 #### 4.5.10 更多农事记录
 主时间轴之外,建议保留“查看更多农事记录”入口。
 
@@ -599,7 +631,7 @@ timeline: [
 ##### 同阶段合并规则
 - 同阶段出现多条记录时,不逐条展示
 - 应合并为一个阶段节点,并提炼成一句消费者可理解的话术
-- 同阶段节点取“最能代表当前阶段”的时间点作为展示时间
+- 同阶段节点取该阶段对应任务的最早完成时间作为展示时间
 
 ##### 排序规则
 - 主时间轴统一按时间升序排列
@@ -612,7 +644,7 @@ timeline: [
   6. 包装出库
 
 ##### 缺失数据处理规则
-- 若无开始种植节点,可从最早一条有效农事记录开始展示
+- 若无开始种植节点,优先补齐批次字段 `plantStartTime`;在未补齐前临时从最早一条有效农事记录开始展示
 - 若无检测结果日期或可用检测记录,则不生成“安全检测”节点
 - 若无包装时间,则不生成“包装出库”节点
 - 主时间轴不强行为凑满 6 个节点而制造虚假节点
@@ -655,85 +687,195 @@ timeline: [
 | `camera.status` | string | online / offline |
 | `camera.desc` | string | 辅助说明 |
 
-### 4.7 模块七:当前环境状态(数据转结论
+### 4.7 模块七:种植环境记录(历史背书优先
 
 #### 4.7.1 当前风险
-如果直接展示设备数据:
-- 温度 18℃
-- 湿度 65%
-- 土壤 PH 6.4
+如果把“当前实时环境数据”作为主表达,会存在明显问题:
+- 用户看到的是已采摘、已发货的产品
+- 当前实时环境并不能直接为历史种植过程背书
+- 容易让用户误解为“现在的环境”就是“当时的生长环境”
+
+因此,第二阶段环境模块不应以“当前实时数据”作为主展示逻辑,而应以:
+
+> 历史种植环境记录 + 当前环境摘要
 
-会显得冰冷、看不懂、技术化。
+的方式进行表达
 
 #### 4.7.2 正确策略
-环境模块必须遵循:
+> 先给历史环境结论,再用趋势图与摘要做佐证。
 
-> 先给结论,再给数据。
+其中:
+- 历史环境记录是主表达
+- 当前实时环境仅作为辅助参考
 
 #### 4.7.3 推荐展示形式
 标题:
-- 当前种植环境
-- 当前环境状态
+- 种植环境记录(推荐)
+- 生长环境记录
 
-主结论:
-- 当前环境稳定,适宜草莓生长
-- 当前种植环境良好,生长状态正常
+推荐默认使用:
+- `种植环境记录`
 
-辅助状态块:
-- 温度适宜
-- 湿度正常
-- 光照充足
-- 土壤墒情良好
+模块内部建议分为三层:
 
-#### 4.7.4 是否加入折线图
-结论:可以加,但不能让线图成为主角。
+##### 第一层:环境结论
+主结论示例:
+- 本批次种植期环境稳定,整体处于适宜生长区间
+- 种植期内环境指标整体平稳,处于适宜生长区间
 
-推荐方案:
-- 先做“环境结论 + 小趋势图”
-- 只做 1~2 张轻量趋势图
-- 不做大屏式复杂监控图表
+##### 第二层:核心趋势图(主视觉)
+以一张“土壤养分综合趋势图”作为主视觉,重点展示:
+- 氮(N)
+- 磷(P)
+- 钾(K)
+
+表达目标:
+- 体现土壤养分在种植周期内整体稳定
+- 体现养分管理较为均衡
+- 强化“这批产品是被持续管理出来的”感知
+
+##### 第三层:环境摘要(辅助信息)
+摘要项仅展示用户较容易理解、且对信任感有帮助的 4 项:
+- 气温
+- 湿度
+- 降雨量
+- 光照
+前端当前展示口径为:平均气温、平均湿度、累计降雨量、光照结论。
 
-优先图表:
-- 近 24 小时温度趋势
-- 近 24 小时湿度趋势
+不建议在主展示中加入:
+- 风速
+- 风向
+- 气压
 
-图表位置:
-环境结论下方,作为佐证信息,不抢视觉中心。
+因为这些数据对普通用户感知弱,容易增加理解负担,但对信任表达帮助有限。
+
+#### 4.7.4 是否加入曲线图
+结论:建议加入,但曲线图主角不再是温度/湿度,而是土壤养分(N/P/K)综合趋势。
+
+推荐方案:
+- 只做 1 张综合趋势图
+- 图中展示 N / P / K 三条趋势线
+- 横轴为种植周期时间
+- 纵轴为对应养分值
+- 如条件允许,可增加“适宜区间”浅色带作为辅助
+
+这样既能控制页面长度,又能明显提升专业感与可信度。
 
 #### 4.7.5 视觉建议
-- 趋势图轻量化
-- 线条细
-- 不做重坐标轴
-- 不做多图叠加
-- 不要超过 2 张图
+- 土壤养分综合趋势图作为主视觉区域
+- 线条保持轻量、细腻,不做重数据大屏风格
+- N / P / K 三条线颜色需区分,但保持低饱和度
+- 可弱化坐标轴与网格线,避免技术感过强
+- 4 个环境摘要项作为辅助信息,位于趋势图下方或下一区域
+- 不建议同时展示多张环境曲线图,避免页面过长、注意力分散
 
 #### 4.7.6 数据结构建议
 ```js
 environment: {
-  summary: '当前环境稳定,适宜草莓生长',
+  summary: '本批次种植期环境稳定,整体处于适宜生长区间',
+  chart: {
+    type: 'npk_trend',
+    sourceTable: 'weather_data_statistics',
+    values: {
+      n: [],
+      p: [],
+      k: []
+    }
+  },
   items: [
-    { label: '温度', value: '18℃', status: '适宜' },
-    { label: '湿度', value: '65%', status: '正常' },
-    { label: '光照', value: '充足', status: '正常' },
-    { label: '土壤', value: '墒情良好', status: '正常' }
-  ],
-  charts: [
-    { type: 'temperature', values: [] },
-    { type: 'humidity', values: [] }
+    { label: '气温', value: '22.3℃', status: '种植期平均' },
+    { label: '湿度', value: '45%', status: '种植期平均' },
+    { label: '降雨量', value: '118mm', status: '种植期累计' },
+    { label: '光照', value: '充足', status: '表现稳定' }
   ]
 }
 ```
 
 #### 4.7.7 数据库 / 接口建议
-如果已有设备接口,无需改数据库,可由后端聚合后返回给溯源页接口。  
-若无聚合接口,可新增:
+种植环境模块统一基于:
+- `weather_data_statistics`
+
+该表为聚合统计表,前端环境模块不直接读取原始设备时序数据。
+
+当前页面展示所需的数据包括:
+- 土壤养分趋势图:氮 / 磷 / 钾
+- 平均气温
+- 平均湿度
+- 累计降雨量
+- 光照结论
+
+建议后端在聚合接口中直接返回:
 
 | 字段名 | 类型 | 说明 |
 |---|---|---|
-| `environmentSummary` | string | 环境结论文案 |
-| `environmentItems` | json | 环境状态卡 |
-| `environmentCharts` | json | 趋势图数据 |
+| `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 建议
@@ -743,7 +885,7 @@ environment: {
 放在:
 - 时间轴
 - 实时画面
-- 环境状态
+- 种植环境记录
 
 之后
 
@@ -804,7 +946,7 @@ environment: {
 5. 农场信息
 6. 关键农事时间轴
 7. 种植现场实时画面
-8. 当前环境状态
+8. 种植环境记录
 9. 批次信息
 10. 检测报告
 11. 合格证
@@ -851,7 +993,8 @@ environment: {
 #### 新增字段:时间轴
 | 字段名 | 类型 | 说明 |
 |---|---|---|
-| `timeline` | json/array | 关键时间轴节点 |
+| `timeline` | json/array | 关键时间轴节点(由批次信息、农事任务、检测报告、包装信息聚合生成) |
+| `plantStartTime` | datetime/date | 开始种植时间,作为种植过程记录时间轴起点 |
 | `farmTasks` | json/array | 原始农事记录列表 |
 
 #### 新增字段:实时监控
@@ -861,12 +1004,13 @@ environment: {
 | `cameraCover` | string | 封面图 |
 | `cameraStatus` | string | 在线状态 |
 
-#### 新增字段:环境状态
+#### 新增字段:种植环境记录
 | 字段名 | 类型 | 说明 |
 |---|---|---|
-| `environmentSummary` | string | 环境结论 |
-| `environmentItems` | json | 状态项 |
-| `environmentCharts` | json | 趋势图数据 |
+| `environmentSummary` | string | 种植环境结论 |
+| `environmentItems` | json | 环境摘要项(平均气温/平均湿度/累计降雨量/光照结论) |
+| `environmentChart` | json | 土壤养分综合趋势图数据,来源于 `weather_data_statistics` |
+| `environmentRaw` | json | 可选,返回聚合原始值用于排查,如平均光照值 |
 
 ### 6.3 缺省数据与前端兜底策略
 
@@ -885,7 +1029,7 @@ environment: {
 - 若 `camera.liveUrl` 为空但 `camera.coverImage` 有值,则展示封面图模式
 - 若监控数据整体为空,则隐藏该模块
 
-#### 当前环境状态
+#### 种植环境记录
 - 若仅有 summary,无具体 items / charts,则只展示结论文案
 - 若 summary、items、charts 全为空,则隐藏该模块
 
@@ -935,9 +1079,12 @@ environment: {
 | `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 | 环境趋势图数据 |
+| `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 农事记录表(优先复用)
@@ -976,12 +1123,11 @@ environment: {
 
 #### P2
 - 实时监控画面
-- 环境状态卡
+- 种植环境记录
 
 #### P3
-- 趋势图
+- 土壤养分综合趋势图
 - 更多农事记录展开
-
 ### 8.2 前端实施策略
 建议基于当前 `detail.vue`:
 
@@ -1013,7 +1159,7 @@ environment: {
 1. 溯源结论卡
 2. 时间轴聚合逻辑
 3. 实时监控画面
-4. 当前环境状态
+4. 种植环境记录
 5. 报告 / 合格证与第二阶段模块的顺序联调
 
 #### 联调原则
@@ -1081,7 +1227,7 @@ environment: {
 - 溯源结论字段
 - 时间轴聚合逻辑
 - 摄像头数据
-- 环境状态聚合
+- 种植环境记录聚合
 
 ##### 阶段五:前后端联调
 目标:
@@ -1155,6 +1301,9 @@ environment: {
 ### 9.5 不要打破第一阶段视觉风格
 第二阶段是在第一阶段上增强,而不是重做。
 
+### 9.6 不要让"当前实时环境"冒充"历史种植环境"
+环境模块若作为溯源背书,主表达必须优先使用历史记录或种植周期聚合结果,避免让用户误以为"当前天气"就是"当时环境"。
+
 ---
 
 ## 10. 验收标准
@@ -1183,7 +1332,7 @@ environment: {
 - 时间轴节点不得伪造不存在的种植过程
 - 未接入真实农事记录或系统节点时,不得以前端 mock 时间轴替代真实过程展示给用户
 - 实时监控若为封面图或非实时模式,前端文案不得误导为“实时”
-- 环境状态结论必须与真实设备数据或后端聚合结论一致
+- 种植环境记录结论必须与真实设备数据或后端聚合结论一致
 - 产地、批次、检测报告、合格证之间的批次关联必须一致
 
 ---
@@ -1230,7 +1379,7 @@ environment: {
 
 ### 第二批(强化真实感与差异化)
 4. 种植现场实时画面
-5. 当前环境状态
+5. 种植环境记录
 
 ### 第三批(整体验收与细节增强)
 6. 批次信息顺序调整
@@ -1332,6 +1481,36 @@ timeline: [
     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: '已完成包装整理,进入销售流通环节'
   }
 ]
 ```
@@ -1340,6 +1519,10 @@ timeline: [
 - 前期可先用 mock timeline 数据做页面展示验证
 - 后期联调时应由 `farmTasks + batch + report` 计算生成
 - 真实接口场景下,若缺少真实时间轴数据,不得直接回退展示 mock timeline
+- `planting` 节点应明确取 `plantStartTime`
+- `care` 节点应取养护类任务的最早完成时间
+- `inspection` 节点应取巡检类任务的最早完成时间
+- 时间轴文案应采用“阶段表达”,不使用“最后一次任务完成”口径
 - 若某些系统节点缺失,应按文档中的缺失规则隐藏或简化
 
 #### 开发检查点
@@ -1347,6 +1530,10 @@ timeline: [
 - 不允许逐条展示所有农事记录
 - 必须有数量控制与排序控制
 - 时间轴为空时应整体隐藏或显示简化版
+- `planting` 是否明确取 `plantStartTime`
+- `care` 是否取养护类任务的最早完成时间,而不是最后一次时间
+- `inspection` 是否取巡检类任务的最早完成时间,而不是最后一次时间
+- 时间轴文案是否采用“阶段表达”而不是“最近一次任务表达”
 
 ---
 
@@ -1383,40 +1570,68 @@ camera: {
 
 ---
 
-### 模块 F:当前环境状态
+### 模块 F:种植环境记录
 
 #### 目标
-把设备数据转成用户可理解的环境结论
+把环境数据转成“历史背书”,而不是简单展示当前实时数值
 
 #### 需完成内容
-- 新增环境状态
+- 新增种植环境记录
 - 展示环境总结文案
-- 展示 4 个左右的状态项
-- 可预留 1–2 张轻量趋势图位置
+- 展示 1 张土壤养分综合趋势图
+- 展示 4 个环境摘要项(气温/湿度/降雨量/光照)
+- 可选展示“当前环境参考”作为辅助信息
 
 #### 推荐前端数据结构
 ```js
 environment: {
-  summary: '当前环境稳定,适宜草莓生长',
+  summary: '本批次种植期环境稳定,整体处于适宜生长区间',
+  chart: {
+    type: 'npk_trend',
+    sourceTable: 'weather_data_statistics',
+    values: {
+      n: [],
+      p: [],
+      k: []
+    }
+  },
   items: [
-    { label: '温度', value: '18℃', status: '适宜' },
-    { label: '湿度', value: '65%', status: '正常' },
-    { label: '光照', value: '充足', status: '正常' },
-    { label: '土壤', value: '墒情良好', status: '正常' }
-  ],
-  charts: []
+    { 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 + items
+- 第一版先完成 summary + 1 张土壤养分综合趋势图 + 4 个环境摘要项
+- 当前实时环境数据不作为主表达,只作为辅助参考信息
 - 图表建议单独封装为轻趋势图子模块
-- 若仅有 summary,则只展示 summary
+- 若仅有 summary,无 chart / items,则只展示 summary
 
 #### 开发检查点
-- 不要让数值成为主角
-- 环境模块首先要给结论
-- 趋势图是佐证,不是主表达
+- 是否表达的是“历史种植环境”
+- NPK 是否为主视觉
+- 是否只保留 4 个环境项(平均气温/平均湿度/累计降雨量/光照结论)
+- 数据是否来自 `weather_data_statistics`
+- 时间范围是否为种植 → 采收
+- 光照是否由后端返回结论
 
 ---
 
@@ -1522,9 +1737,12 @@ environment: {
 - 是否不显技术化
 - 封面图兜底是否自然
 
-### 环境状态验收
-- 是否先有环境结论
-- 状态块是否简洁
+### 种植环境记录验收
+- 是否先有“历史种植环境”结论
+- 土壤养分综合趋势图是否成为主视觉
+- 环境摘要是否控制为 4 项(平均气温/平均湿度/累计降雨量/光照结论)
+- 图表与摘要数据是否统一来源于 `weather_data_statistics`
+- 光照是否展示后端返回的结论值,而不是前端直接映射 lux
 - 图表是否克制,不抢戏
 
 ### 页面完整性验收