本文档用于指导 佳友厚苑溯源页第二阶段 的产品设计、前端开发、后端接口、数据结构补充与后续联调验收。
适用对象包括:
佳友厚苑溯源页第一阶段已完成并具备以下能力:
第一阶段目标已实现:
跑通溯源链路,做到“能看”。
第二阶段不再是简单增加模块,而是围绕以下目标展开:
从“资料完整的溯源页”,升级为“让消费者放心的信任页”。
第二阶段以“增强信任表达”为目标,不以增加功能数量为目标。
当前溯源页主要面向两类用户:
用户普遍会关心以下问题:
第二阶段建议重点强化两个核心信任点:
第二阶段的信任,不建议以“科技感”作为主导,而应以:
为主,技术能力作为辅助支撑。
第二阶段所有新增内容必须遵守以下原则:
错误方式:
正确方式:
用户不关心:
用户关心:
环境数据、农事数据、检测报告都不是目的,它们只是用于支撑以下结论:
第二阶段不推翻第一阶段页面风格与代码结构,而是在当前基础上进行:
第二阶段页面结构由原来的“资料罗列型”调整为“信任递进型”。
扫码页不是后台系统页,用户行为是:
不是:
以下模块顺序为建议实施顺序,也是推荐最终页面展示顺序。
确保首屏仍然具备“官方溯源页”的气质,但不通过在 Hero 图内叠加大段信任文案来实现。
经过页面实际验证后确认:
brandPageHeader 已具备“官方溯源 / 品质可验”的定调作用因此,第二阶段不建议继续在 Hero 图内新增额外的信任标签、重文案或多行结论文案。
模块一保留为“首屏信任感优化”目标,但当前版本的实现策略为:
brandPageHeader也就是说:
首屏的“官方感”和“品质感”由现有页头 + Hero 商品图共同承担, 第二阶段真正的信任表达重点下沉到“溯源结论卡”等后续模块。
当前版本中,模块一不新增以下内容:
heroTrustBlockheroTrustPill允许的调整范围仅包括:
模块一不是取消,而是经过验证后确认:
这是一次经过验证后的设计收敛,而非方案遗漏。
用最短路径同时回答用户两个最关心的问题:
这批产品值不值得信任?是不是我手上这一批?
该模块不是只回答"是否检测通过",而是对本批次产品的溯源信息做一个前置性的综合结论表达,同时让用户快速核对批次编号与关键时间信息。
当前页面虽然已有检测报告、合格证、批次信息等资料,但之前"溯源结论"和"批次信息"是分开的,存在两个问题:
因此,第二阶段当前版本已确认:
将原"溯源结论卡"与"批次信息卡"融合为一张"溯源信息卡",作为首个核心信任卡片。
这张卡片同时承担两类职责:
建议放在:
推荐顺序:Hero → 溯源信息 → 商品信息 / 农场信息
标题建议:
推荐默认使用:
溯源信息卡片内部采用三层结构:
展示内容:
当前推荐表现:
批次编号THY-20260330-001说明:
展示内容:
当前推荐表达:
生产/采收日期:2026-04-09 | 包装日期:2026-04-10说明:
展示内容:
全程可追溯已通过安全检测说明:
当前前端融合卡所需字段主要来自已有批次信息与结论信息,无需为此额外新建复杂字段。
建议字段如下:
| 字段名 | 类型 | 说明 |
|---|---|---|
traceConclusion |
string | 溯源主结论,可选;当前融合卡前端版本中已不作为主展示长句 |
traceSummary |
string | 溯源补充说明,可选 |
batchNo |
string | 批次号 |
produceDate |
datetime/date | 生产/采收日期 |
packageDate |
datetime/date | 包装日期 |
testPassed |
boolean | 是否通过检测,可用于状态标签兜底 |
testSourceType |
string | 检测来源类型,如 self_device / third_party |
前端当前融合卡推荐结构:
traceInfoCard: {
title: '溯源信息',
batchLabel: '批次编号',
batchNo: 'THY-20260330-001',
summaryLine: '生产/采收日期:2026-04-09 | 包装日期:2026-04-10',
tags: ['全程可追溯', '已通过安全检测']
}
当前融合卡的数据来源建议如下:
batchNo:来自批次表produceDate:来自批次表packageDate:来自批次表testPassed / testSourceType:来自检测相关扩展字段说明:
traceConclusion / traceSummary 字段仍可保留,供后续版本扩展使用当前商品信息模块已较成熟:
当前农场信息更像普通资料卡,表达略偏中性。
当前农场信息不能一味往“高大上智慧农场”方向包装。
因为实际情况是:
不强调“高大上基地”,强调:
优先使用真实素材:
现有字段基本够用:
farmNamefarmRegionfarmImagefarmIntro可选补充:
| 字段名 | 类型 | 说明 |
|---|---|---|
farmType |
string | 如:合作农户 / 自营基地 / 合作基地 |
farmTag |
string[] | 如:有机种植 / 标准化管理 / 真实可追溯 |
让用户感受到:
这批产品是有过程、有管理、有记录地种出来的。
时间轴不是后台操作日志,而是消费者可理解的“成长过程”。
农事记录数据来自后台农事任务,存在:
主时间轴不直接展示原始农事记录,而是:
将农事记录 + 批次信息 + 检测信息,组合为 4–6 个关键阶段节点。
建议主时间轴最多展示以下 6 类阶段:
如某阶段无数据,则可跳过。
| 后台任务类型 | 是否参与主时间轴计算 | 归属阶段 | 说明 |
|---|---|---|---|
| 施肥 | 是 | 生长期养护 | 归入养护类任务 |
| 灌溉 | 是 | 生长期养护 | 归入养护类任务 |
| 除草 | 是 | 生长期养护 | 归入养护类任务,不单独成节点 |
| 打药 | 是 | 生长期养护 | 归入养护类任务,前端不单独突出“打药”表述 |
| 巡检 | 是 | 田间巡检 | 归入巡检类任务 |
| 采摘 | 否 | 系统节点补充 | 使用 produceDate 生成成熟采收节点 |
| 测试 | 否 | 系统节点补充 | 使用 reportDate 生成安全检测节点 |
| 包装相关 | 否 | 系统节点补充 | 使用 packageDate 生成包装出库节点 |
| 其他 | 否 | 不进入主时间轴 | 仅用于更多记录展示 |
【说明】
规则 1:主时间轴只展示关键阶段,不按“每条农事记录 = 一个节点”,而是按阶段合并。
规则 2:同类任务合并。
例如多次灌溉 / 施肥,可合并成一个“生长期养护”节点。
规则 3:后台术语转译为消费者语言。
例如:
规则 4:优先保留高信任价值节点。
优先级顺序:
农事记录本身通常不包含“检测完成”“包装出库”这类高信任节点,因此这两个节点不能强依赖农事记录,而应由系统补充生成。
来源:
report.items[].detectDate生成节点示例:
{
"time": "2026-03-31",
"stage": "test",
"title": "安全检测",
"desc": "已完成安全检测,相关结果可查"
}
来源:
batch.packTime(即 data.packageDate)生成节点示例:
{
"time": "2026-04-01",
"stage": "pack",
"title": "包装出库",
"desc": "已完成包装整理,进入销售流通环节"
}
来源:
batch.harvestTime(即 data.produceDate)生成节点示例:
{
"time": "2026-03-30",
"stage": "harvest",
"title": "成熟采收",
"desc": "本批次产品进入成熟采收阶段"
}
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: '已完成包装整理,进入销售流通环节'
}
]
种植过程记录统一按以下 6 个节点展示,且各节点时间来源需固定,避免前后端理解不一致:
| 节点 | stage | 时间取值规则 |
|---|---|---|
| 开始种植 | planting |
取批次/种植周期的 plantStartTime,作为时间轴起点 |
| 生长期养护 | care |
取当前批次中“养护类农事任务”的最早完成时间 |
| 田间巡检 | inspection |
取当前批次中“巡检类农事任务”的最早完成时间 |
| 成熟采收 | harvest |
取批次的 produceDate |
| 安全检测 | test |
取检测报告中最早的 reportDate |
| 包装出库 | pack |
取批次的 packageDate |
说明:
为避免“时间取最早一次”与“文案像最近一次行为”之间的语义冲突,时间轴文案统一按“阶段表达”处理,不使用“最后一次完成”的表达方式。
推荐文案如下:
本批次产品进入种植管理阶段种植期间已持续开展灌溉、施肥等日常养护种植期间已开展长势检查与环境巡检本批次产品进入成熟采收阶段已完成安全检测,相关结果可查已完成包装整理,进入销售流通环节说明:
主时间轴之外,建议保留“查看更多农事记录”入口。
用途:
展开内容建议:
为避免时间轴过长、过碎、不可读,主时间轴必须增加数量控制与排序规则。
plantStartTime;在未补齐前可临时从最早一条有效农事记录开始展示把“真实种植现场”呈现出来,形成最直接的可信感。
这是第二阶段最具差异化的模块之一,用户看到实时现场会明显增强真实感。
第一版推荐:
如果视频流接入稳定,可直接嵌实时视频。
如果考虑移动端性能,也可先使用封面图 + 点击播放。
| 字段名 | 类型 | 说明 |
|---|---|---|
camera.liveUrl |
string | 实时视频流地址 |
camera.coverImage |
string | 封面图 |
camera.status |
string | online / offline |
camera.desc |
string | 辅助说明 |
如果把“当前实时环境数据”作为主表达,会存在明显问题:
因此,第二阶段环境模块不应以“当前实时数据”作为主展示逻辑,而应以:
历史种植环境记录 + 当前环境摘要
的方式进行表达。
先给历史环境结论,再用趋势图与摘要做佐证。
其中:
标题:
推荐默认使用:
种植环境记录模块内部建议分为三层:
主结论示例:
以一张“土壤养分综合趋势图”作为主视觉,重点展示:
表达目标:
摘要项仅展示用户较容易理解、且对信任感有帮助的 4 项:
不建议在主展示中加入:
因为这些数据对普通用户感知弱,容易增加理解负担,但对信任表达帮助有限。
结论:建议加入,但曲线图主角不再是温度/湿度,而是土壤养分(N/P/K)综合趋势。
推荐方案:
这样既能控制页面长度,又能明显提升专业感与可信度。
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该表为聚合统计表,前端环境模块不直接读取原始设备时序数据。
当前页面展示所需的数据包括:
建议后端在聚合接口中直接返回:
| 字段名 | 类型 | 说明 |
|---|---|---|
environmentSummary |
string | 种植环境结论文案 |
environmentChart |
json | 土壤养分综合趋势图数据(N/P/K) |
environmentItems |
json | 环境摘要项(平均气温/平均湿度/累计降雨量/光照结论) |
environmentRaw |
json | 可选,返回聚合原始值用于排查,如平均光照值 |
种植环境数据的统计时间范围统一定义为:
plantStartTime)harvestTime)不使用包装出库时间作为环境统计结束时间。
环境数据用于描述作物生长过程,作物在采收后已脱离生长环境,包装出库属于流通阶段,不应继续计入种植环境统计。
当前页面中的环境数据展示口径统一为:
说明:
当前光照展示为:
后端计算规则:
weather_data_statistics 日聚合表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 阈值规则生成前端展示文案推荐返回结构示例:
{
"cycleLightAvg": 24000,
"lightLevel": "充足",
"lightStatus": "表现稳定"
}
前端展示对应关系:
cycleLightAvg:后端计算出的种植期平均光照值,仅用于排查或后台查看,可不直接展示给消费者lightLevel:前端 value 展示值,对应“偏弱 / 适宜 / 充足”lightStatus:前端 status 展示值,对应“表现稳定”等辅助描述
本规则第一版采用基于 lux 的简化映射方式,展示语气更接近日常天气类表达,便于消费者理解
阈值区间参考常见自然光照强度范围,属于面向消费者展示的“合理分档”,不强调农业专业术语,也不用于农业精细化控制
后端应负责输出“平均光照数值 + 光照等级文案 + 状态文案”三层结果
前端最终展示 lightLevel 与 lightStatus,不负责做 lux → 文案 的阈值判断
原独立"批次信息卡"已不再保留,相关核心信息已并入前部"溯源信息卡"。
这样调整的原因包括:
已并入溯源信息卡的字段包括:
当前不再在融合卡中展示:
保留当前横向滑动卡片列表。
检测报告是“证据层”,不是“主结论层”。
保持当前单证小图模式,不放大,不复杂化。
作为信任补充证明材料,和检测报告共同构成证据层。
当前 footer 已经有客服电话和品牌签名,但结束稍显平淡。
例如:
最终推荐页面顺序如下:
建议继续使用一个聚合接口,例如:
getTraceDetail(batchId)但返回数据要扩展。
{
"product": {},
"farm": {},
"batch": {}, // 批次号、生产/采收日期、包装日期等
"report": {},
"certificate": {},
"timeline": [],
"farmTasks": [],
"camera": {},
"environment": {},
"traceConclusion": "",
"traceSummary": ""
}
| 字段名 | 类型 | 说明 |
|---|---|---|
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 | 可选,返回聚合原始值用于排查,如平均光照值 |
第二阶段页面涉及多个新增模块,后端字段可能存在分阶段补齐的情况,因此前端必须设计缺省数据兜底策略。
batchNo 为空,则该模块整体不展示produceDate / packageDate 缺失,可仅展示批次号与状态标签traceConclusion 为空就隐藏整张卡traceConclusion / traceSummary 为可选扩展字段camera.liveUrl 为空但 camera.coverImage 有值,则展示封面图模式目标:支持第二阶段页面展示,但避免一次性扩表过度。
建议确认并继续使用以下字段:
| 字段名 | 类型 | 说明 |
|---|---|---|
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 | 农场介绍 |
可新建扩展表,也可挂在批次表上。推荐扩展表: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) | 页底收口文案,可选 |
建议复用现有农事记录表,无需为第二阶段专门新建。
建议前端所需字段至少包括:
| 字段名 | 类型 | 说明 |
|---|---|---|
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 | 任务说明 |
建议提供一个按批次/农场/作物过滤后的农事记录查询接口,供前端或聚合接口使用。
例如:
更多农事记录展开
建议基于当前 detail.vue:
继续复用 card 体系
新增模块,不推翻结构
通过 computed 对新字段做兼容
mock 数据先行,后续联调替换
建议后端分两步:
先补字段并返回 mock / 半真实数据:
再接入真实数据聚合:
本项目第二阶段采用“前端先行”的开发策略,但需特别强调:
本阶段前端不是原型开发,而是直接开发可上线的正式页面。
目标:
本阶段重点:
注意事项:
目标:
评审重点问题建议:
目标:
原则:
目标:
开发重点:
目标:
联调重点:
为提高开发效率,建议前端阶段采用三套数据策略:
用于展示最佳效果:
用于验证页面健壮性:
用于验证兜底逻辑:
要求:
第二阶段前端开发的核心目标不是“功能完成”,而是:
最终标准:
用户扫码打开页面后,不需要解释,就能感知“这批产品是可信的”。
重点是信任,而不是设备展示。
主时间轴必须提炼,原始记录仅用于展开查证。
应转译为“健康管理 / 病虫害防控管理”。
内容多时优先靠模块层级和收纳,不先上 tab。
第二阶段是在第一阶段上增强,而不是重做。
环境模块若作为溯源背书,主表达必须优先使用历史记录或种植周期聚合结果,避免让用户误以为“当前天气”就是“当时环境”。
第二阶段完成后,页面应满足以下验收标准:
第二阶段不是简单加功能,而是围绕“安全、新鲜、真实”三件事,完成一次信任表达升级。
让用户扫码打开页面后,不只是“看见很多资料”,而是“愿意相信这批产品”。
本章节用于指导第二阶段前端页面的实际开发落地,适用于前端开发人员、Cursor 辅助开发以及后续联调前的自查。
第二阶段前端开发不是做低保真原型,而是直接开发可上线的正式页面。
因此拆解清单不仅关注“做哪些模块”,也关注:
建议按以下顺序逐步开发,而不是一次性同时改完整个页面:
建议在当前 detail.vue 基础上按模块拆分开发思路推进,即使不立即拆成独立组件,也应按组件思维组织代码。
确保首屏具备“官方溯源页”的气质,但不通过在 Hero 图上继续叠加额外标签或文案来实现。
经过实际页面验证,已确认:
brandPageHeader 已承担“官方溯源”的定调作用heroTrustBlock / heroTrustPill 等额外元素作为页面前半部分的首个核心信任卡片,同时完成"信任建立"与"批次核验"。
traceInfoCard: {
title: '溯源信息',
batchLabel: '批次编号',
batchNo: 'THY-20260330-001',
summaryLine: '生产/采收日期:2026-04-09 | 包装日期:2026-04-10',
tags: ['全程可追溯', '已通过安全检测']
}
将当前农场资料卡提升为“真实源头背书卡”。
将农事记录转化为消费者可理解的成长过程。
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: '已完成包装整理,进入销售流通环节'
}
]
farmTasks + batch + report 计算生成planting 节点应明确取 plantStartTimecare 节点应取养护类任务的最早完成时间inspection 节点应取巡检类任务的最早完成时间planting 是否明确取 plantStartTimecare 是否取养护类任务的最早完成时间,而不是最后一次时间inspection 是否取巡检类任务的最早完成时间,而不是最后一次时间用“现场可见”强化真实可信感。
camera: {
liveUrl: '',
coverImage: '',
status: 'online',
desc: '当前为农场种植区实时画面'
}
liveUrl 缺失,则自动回退为封面图模式把环境数据转成“历史背书”,而不是简单展示当前实时数值。
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_statisticsplantStartTime ~ harvestTime当前展示口径:
光照由后端计算,不由前端判断。
后端建议同时返回平均光照数值(如 cycleLightAvg)以及映射后的展示文案(如 lightLevel、lightStatus),前端仅负责展示文案结果。
光照文案整体表达风格应偏消费者理解口径,更接近日常天气描述,不需过多强调农业专业术语。
weather_data_statistics确认"批次信息"在第二阶段中不再作为独立卡片存在,而是以前部融合信息的方式呈现。
让检测报告与合格证作为证明材料存在,而不是抢主结论。
让页面结尾不突兀,形成“安心结束”的感觉。
建议以当前 pages/trace/detail.vue 为主文件推进,并视需要拆出子组件。
detail.vue 内完成全部模块适合:
推荐可拆分子组件如下:
TraceHeroTrust.vueTraceInfoCard.vueTraceTimeline.vueTraceCameraCard.vueTraceEnvironmentCard.vueTraceFooterStatement.vue先在 detail.vue 内完成版面,老板确认后再酌情抽组件,避免过早拆分影响迭代速度。
weather_data_statistics第二阶段前端开发完成后,应至少形成以下输出物:
第二阶段前端开发不是为了“把功能都放上去”,而是为了验证:
前端先行的价值不在于“首屏不断加元素”,而在于:
先把正确的页面表达验证清楚,再让后端围绕正确的目标补数据。