资讯动态

基于物联网与ZigBee/RFID的现代农业种植及食品溯源系统设计

发布时间:2026/10/26 8:57:19 来源:尧图企业网站定制
简介《基于物联网技术构建现代农业种植及食品溯源系统》是一份面向农业信息化、食品安全监管与物联网应用学习者的技术论文PDF聚焦从种植源头到加工、储运、销售的全流程监控和追溯问题。文章结合条形码、RFID、OCR与视频监控、ZigBee等技术讨论农业物联网在环境参数采集、自动控制灌溉施肥、生产信息记录及溯源数据库建设中的实现思路并介绍国内外食品追溯措施与现代化生产基地的应用场景。压缩包仅含1个PDF文件约1.08MB篇幅精炼便于检索阅读和引用。已有221人学习适合作为课程论文、项目调研或方案设计参考可帮助读者梳理“感知—传输—执行—溯源”的系统框架理解生产者、管理者与消费者三类角色的信息需求并提炼食品安全追溯体系的设计要点与落地思路。1. 一车叶菜的追溯断点这套系统要补的是哪一段一车叶菜在批发环节被抽检出问题合作社翻遍纸质台账只查得到收购日期和经手人地块、用药、采收批次全是空白最后整车处理掉。这类断点在中小种植基地很常见种植端有设备但数据不落地加工流通端有单据但不成链。基于物联网技术构建的现代农业种植及食品溯源系统要补的正是这条链上的自动采集与全程可查——用传感器和 ZigBee 把大棚环境、农事操作变成结构化数据用条码与 RFID 把加工、仓储、运输、销售串成一条可正查可反查的记录。这套结构适合做农业物联网、食品安全溯源方向毕设或课设的学生也适合要给基地出一版可交付方案的技术人员模块边界清楚硬件成本可控一个人两个月能跑通演示闭环。2. 总体架构感知层、传输层、应用层与六个业务模块的职责划分2.1 三层架构怎么切谁采集、谁传输、谁决策物联网项目最容易画成一张糊在一起的图所有设备都连到平台出了问题无从下手。我一般按三层切并且给每一层规定明确的输入、输出和失败模式这样联调时能一眼定位问题出在哪一段。感知层负责把物理量变成数字。这一层的成员包括空气温湿度传感器、土壤温湿度传感器、光照传感器、RFID 读写器与电子标签、条码扫描枪、摄像头。它的输出是带时间戳的原始读数或标签 ID失败模式是数据不动了——探头被泥糊住、电池耗尽、节点掉线表现出来都是同一个数值反复上报。传输层负责把数据搬回来。种植大棚这一段用 ZigBee 短距自组网终端节点上报到协调器协调器通过串口接网关网关再用以太网或 WiFi 上行到服务器加工车间、冷库、门店这几段走有线网络或 WiFi 就够了。它的失败模式是数据迟到或丢失网关断网期间的数据必须有本地缓存恢复后补传否则追溯链上会出现一段没有记录的空白期。应用层负责存储、判定和展示。数据库存三类东西环境与操作的原始记录、批次与流向的关系记录、用户与权限。业务逻辑放在这一层包括阈值判定、超限告警、追溯查询、报表。它的失败模式是数据在但不对比如同一批次被两个加工单引用、时间戳用了设备本地时间导致排序错乱。分层的实际价值在排障。大棚温度在页面上不动了按顺序看节点最后心跳时间是否在三个采样周期内、网关有没有收到该短地址的帧、数据库里该设备的记录条数是否连续、页面查询的时间范围是否正确。四步之内基本能收敛比到处翻日志快得多。2.2 六个业务模块与四类参与者从生产到溯源的闭环按食品从地块到餐桌的流转系统拆成生产、检验检疫、加工、超市销售、付费管理、溯源六个模块。这个划分不是按技术分的是按谁在什么环节写入什么数据分的好处是每个模块都能独立交给一组人开发和验收。模块主要动作写入的关键数据主要使用角色生产建地块与批次、记录播种施肥施药、采集环境数据地块编号、批次号、投入品名称与用量、环境读数生产企业检验检疫抽检登记、出具结果、不合格处置抽检日期、检测项、结果、检测机构代号质检部门加工领用原料批次、记录加工工序与产出原料批次号、成品批次号、工序与时间、操作人生产企业超市销售入库、上架、销售、退货成品批次号、门店代号、销售时间、流向销售方付费管理订单结算、对账、发票状态订单号、金额、结算状态生产企业、销售方、银行侧接口溯源正向追踪、反向追溯、召回、预警查询日志、召回范围消费者、管理者参与者有四类权限要卡死生产企业只能写自己基地和工厂的数据能看全链质检部门只写检验结果不能改生产记录销售方只能写自己门店的入库与销售消费者只能凭码查询看不到其他批次和任何人信息。银行侧的付费管理通常做成对外接口只交换订单与结算状态不碰溯源主数据。提示模块划分完成之后先把谁能写哪张表列成一张权限表再动手写代码。溯源系统最怕的不是功能少是任何人都能改历史记录。2.3 技术选型对比条码、RFID、OCR 与 ZigBee 各管哪一段原方案里列了四类常用技术它们不是替代关系是分段使用的关系。选错的典型后果是成本翻几倍却没解决问题。技术读写方式典型距离成本量级适合的环节主要短板一维条码接触式扫描几厘米极低外包装、单据、门店结算污损即失效不可批量读二维码摄像头扫描十几厘米极低消费端查询、箱体贴标同样怕污损无法穿透RFID非接触、可批量几厘米到数米中托盘、周转筐、加工车间流转金属与液体环境衰减明显OCR 与视频图像识别视安装而定中高单据录入、生产过程留证识别率依赖光照与角度ZigBee无线自组网几十米级、可中继低大棚环境采集与控制带宽低不适合传图像选择逻辑很直接种植端要的是大量低功耗节点、长期无人值守、只传几个字节的数值ZigBee 正合适用 WiFi 会让每个节点都变成一个小型耗电设备布二十个点就要考虑供电改造。加工车间要在不拆托盘的情况下清点周转筐RFID 省下来的工时很快能抵掉标签成本。到了消费端谁也不会为一把青菜配读写器二维码贴在包装上手机一扫就能查这是唯一可行的方案。视频监控不承担数据录入的主责它的作用是出问题时能回看属于后悔药不是主链路。3. 种植端测控落地测点布置、ZigBee 组网与自动控制回路3.1 测点清单与采样周期怎么定测点不是越多越好多了成本高、维护难、数据冗余。一个标准种植大棚我一般按下面这张清单布置覆盖作物生长的主要环境因子即可。测点安装位置采样周期上报周期说明空气温度湿度棚中部、作物冠层上方 30 厘米30 秒5 分钟避开门口与热源加防辐射罩土壤温度湿度根系主要分布层深度 15 至 20 厘米60 秒5 分钟每棚不少于 3 个点取均值光照强度冠层顶部水平安装60 秒5 分钟注意遮挡与积尘二氧化碳棚中部5 分钟15 分钟成本较高可按需选配土壤 pH 与 EC固定监测点30 分钟1 小时变化慢不必高频采样周期和上报周期要分开传感器可以 30 秒读一次用于本地控制判断但上行到服务器没必要这么密5 分钟一条足够支撑展示和追溯。这样既保证控制响应又把无线信道和数据库的压力降下来。土壤类参数变化慢一小时一条完全够用过量采集只会让后面的存储和查询变贵。布点密度按棚的面积和结构定长度 50 米以内、跨度 8 米左右的大棚空气温湿度两点、土壤三点、光照一点是常见配置。多点位的目的是抵消局部差异比如靠近通风口的位置温度明显偏低单点数据会误导控制决策取多点均值或者去掉极值再平均更稳。3.2 ZigBee 组网协调器、路由器与终端节点的分工ZigBee 网络里有三种角色。协调器负责建网一个棚区一个通过串口或网口接网关路由器是有市电供电的节点可以转发其他节点的数据用来延长覆盖终端节点是电池供电的采集点大部分时间休眠按周期唤醒上报。拓扑上棚区不大、障碍不多时星型就够用所有节点直连协调器配置简单、排障容易。棚区跨度大、中间有墙体或密集作物遮挡时改成网状沿棚架每 30 至 40 米布一个路由器节点给远端终端做中继。我倾向于先用星型跑通实测丢包率超过 5% 再加路由节点避免一上来就把网络搞复杂。几个参数要在部署时固定下来PAN ID 全网唯一多个棚区相邻时不能让网络串到一起信道避开现场 WiFi 常用的 1、6、11 信道所在的频段重叠区终端节点的上报周期与网关轮询周期对齐避免网关空转或者节点数据被覆盖。节点短地址要写进配置文件与地块编号、测点类型建立映射这张映射表是后面所有数据解析的依据丢了就得重新一个个对。供电和防护是现场最容易忽略的。电池供电的终端节点要算清功耗按 5 分钟上报一次、其余时间休眠计算两节干电池通常撑几个月具体取决于发射功率和唤醒时长土壤类节点必须做防水探头线缆接头处灌胶否则一个雨季就报废。控制柜里的协调器和网关走市电配小型 UPS避免跳闸后整片区域失联。3.3 自动控制回路阈值、回差与手动兜底控制逻辑写不好系统就会变成继电器抽筋。判断条件不能只写一个阈值要加回差死区否则温度在阈值附近抖动时风机每小时能启停几十次。常见的做法是给每个被控量配一组参数启动阈值、停止阈值、最短运行时间、最短间隔时间。以降温风机为例温度高于 30 摄氏度启动低于 27 摄氏度停止两次启动之间至少间隔 5 分钟单次运行不少于 3 分钟。灌溉控制除了土壤湿度上下限还要加光照和时间的联锁——夜间不灌溉正午强光时不灌溉防止灼伤和水分浪费。下面这段是网关侧的采集与控制判定骨架用 Python 写跑在棚区网关的工控机或树莓派一类设备上逻辑与语言无关换成 Java 或 C 也一样。# gateway_poll.py 采集网关主循环骨架 # 职责轮询ZigBee终端节点 - 校验 - 落库 - 交给控制判定 import time import sqlite3 from datetime import datetime POLL_INTERVAL 300 # 秒与终端节点上报周期一致 STALE_SECONDS 900 # 超过3个周期无数据判定节点离线 # 短地址 - (地块编号, 测点类型)这张映射表必须与现场安装记录一致 NODES { 0x1A2B: (GH01, air_th), 0x1A2C: (GH01, soil_th), 0x1A2D: (GH01, lux), } def read_node(short_addr, timeout2.0): 向协调器发读指令超时或校验失败返回 None由上层记为缺失而不是0 try: frame serial_read(short_addr, timeout) # 串口读取原始帧 return parse_frame(frame) # 返回 {temp:25.4,humi:68.1} except Exception: return None def save(conn, plot_id, metric, values, ts): 一条记录一次写入缺失值写 NULL绝不用0填充 conn.execute( INSERT INTO env_record(plot_id, metric, temp, humi, lux, collect_time) VALUES(?,?,?,?,?,?), (plot_id, metric, values.get(temp), values.get(humi), values.get(lux), ts) ) conn.commit() def main_loop(): conn sqlite3.connect(trace.db) last_seen {} while True: now datetime.now() for addr, (plot_id, metric) in NODES.items(): values read_node(addr) if values is None: # 节点离线记录心跳缺失超过阈值再告警避免单次抖动误报 if (now - last_seen.get(addr, now)).total_seconds() STALE_SECONDS: raise_alarm(plot_id, metric, node_offline) continue last_seen[addr] now save(conn, plot_id, metric, values, now) check_control(conn) # 进入控制判定见下一段 time.sleep(POLL_INTERVAL)这段代码有三个刻意的设计。第一读失败返回None而不是 0环境数据里的 0 摄氏度是有意义的值用 0 填充缺失会让后续统计和告警全部失真。第二离线判定加了时间窗口单次读取失败不立刻告警连续三个周期没数据才报能过滤掉大量无线抖动造成的误报。第三落库和判定分开采集只负责把事实写进去控制逻辑读库做决策这样即使控制模块出问题原始数据仍然是完整的追溯链不会断。控制判定部分同样要留手动开关。自动控制再稳现场也需要一个强制开强制关的物理按钮或页面开关并且手动操作要写进操作日志记录谁在什么时候干预了什么。农业现场的情况比代码复杂管理者临时决定多浇一次水这个动作本身也是溯源数据的一部分。3.4 数据补传与时间同步网关断网是必然会发生的方案里必须安排补传。做法是网关本地留一个轻量数据库或按天滚动的文件队列上行失败时先写本地恢复后按时间顺序补推服务端按设备号 采集时间做幂等去重重复推送不产生重复记录。补传窗口一般设 7 天超期的数据在页面上标记为补传与实时数据区分展示。时间同步比多数人想的重要。节点、网关、服务器三者的时钟必须对齐否则同一时刻的控制动作和采集数据在时间轴上错位事后分析会得出错误结论。做法是网关定时向服务器对时节点每次上报时由网关附带时间戳节点自身不维护绝对时间只维护相对计数。数据表统一存服务器时间设备本地时间作为一个辅助字段保留用于排查时钟漂移。4. 溯源数据链设计批次粒度、表结构与正向反向查询4.1 溯源粒度批次码还是单品码这是整套系统里最先要拍板的决定直接影响成本和可用性。批次码是同一地块、同一品种、同一天采收、同一套农事操作归为一批一个批次一个码单品码是每一件商品一个唯一码。蔬菜、水果、粮食这类大宗农产品批次码就够。一箱菜贴一个二维码扫码看到地块、采收日期、用药记录、检测报告消费者关心的问题基本都能回答成本几乎可以忽略。单品码适合高价值品类比如礼盒装、单品溯源的品牌农产品标签成本和录入工作量都要高一个量级用 RFID 或者一变一码的二维码实现还要在包装环节增加读码工位。我一般建议先用批次码把全链路跑通把批次号作为贯穿始终的主键式标识单品码作为可选扩展。批次号的设计要能承载信息又便于人读常见格式是基地代号 地块号 品种代号 采收日期 流水号例如JD01-A03-TF-20240518-002长度控制在 30 字符以内避免二维码密度过高扫不出来。批次号一旦生成就不允许修改任何拆分、合并都要生成新批次并记录父子关系。4.2 核心表结构六张主表加两张辅助表表设计的原则是记录事实、不记录结论。环境、投入品、检验、加工、仓储物流、销售这六类事实各建一张主表另外用批次关系表和操作日志表做串联与审计。-- 地块与批次批次是贯穿全链的主标识 CREATE TABLE batch ( batch_no VARCHAR(32) PRIMARY KEY, -- 批次号生成后不可改 plot_id VARCHAR(16) NOT NULL, -- 地块编号 crop_code VARCHAR(16) NOT NULL, -- 品种代号 parent_batch VARCHAR(32), -- 拆分/合并时指向来源批次 sow_date DATE, harvest_date DATE, create_time DATETIME DEFAULT CURRENT_TIMESTAMP ); -- 环境记录由网关自动写入量大按时间建索引 CREATE TABLE env_record ( id BIGINT PRIMARY KEY AUTO_INCREMENT, plot_id VARCHAR(16) NOT NULL, metric VARCHAR(16) NOT NULL, -- air_th / soil_th / lux temp DECIMAL(5,2), humi DECIMAL(5,2), collect_time DATETIME NOT NULL, source TINYINT DEFAULT 1, -- 1实时 2补传 UNIQUE KEY uk_dev_time (plot_id, metric, collect_time) ); -- 投入品记录施肥施药人工录入加审核是农残问题的关键证据 CREATE TABLE input_record ( id BIGINT PRIMARY KEY AUTO_INCREMENT, batch_no VARCHAR(32) NOT NULL, input_type VARCHAR(16) NOT NULL, -- 肥料 / 农药 input_name VARCHAR(64) NOT NULL, dosage DECIMAL(8,2), unit VARCHAR(8), operator VARCHAR(32), operate_time DATETIME NOT NULL, safe_period INT, -- 安全间隔期(天) review_status TINYINT DEFAULT 0 -- 0待审 1通过 2驳回 ); -- 检验记录质检部门写入系统只读不改 CREATE TABLE inspect_record ( id BIGINT PRIMARY KEY AUTO_INCREMENT, batch_no VARCHAR(32) NOT NULL, inspect_item VARCHAR(64) NOT NULL, inspect_value VARCHAR(32), result TINYINT NOT NULL, -- 1合格 0不合格 org_code VARCHAR(32), -- 检测机构代号 inspect_time DATETIME NOT NULL ); -- 加工记录原料批次到成品批次的转换关系 CREATE TABLE process_record ( id BIGINT PRIMARY KEY AUTO_INCREMENT, src_batch VARCHAR(32) NOT NULL, -- 原料批次 dst_batch VARCHAR(32) NOT NULL, -- 成品批次 process_step VARCHAR(32) NOT NULL, -- 清洗/分切/包装 operator VARCHAR(32), start_time DATETIME, end_time DATETIME ); -- 仓储物流与销售温度、线路、门店、时间 CREATE TABLE flow_record ( id BIGINT PRIMARY KEY AUTO_INCREMENT, batch_no VARCHAR(32) NOT NULL, stage VARCHAR(16) NOT NULL, -- 仓储 / 运输 / 门店 place_code VARCHAR(32), -- 冷库号 / 车牌代号 / 门店代号 env_temp DECIMAL(5,2), arrive_time DATETIME, leave_time DATETIME ); -- 销售记录最终流向召回时按这张表圈定范围 CREATE TABLE sale_record ( id BIGINT PRIMARY KEY AUTO_INCREMENT, batch_no VARCHAR(32) NOT NULL, store_code VARCHAR(32) NOT NULL, quantity DECIMAL(10,2), sale_time DATETIME NOT NULL );几点说明。env_record上的唯一索引uk_dev_time是给补传准备的重复推送直接冲突忽略天然实现幂等。input_record里的safe_period安全间隔期字段很重要采收日期减去施药日期如果小于安全间隔期系统应该直接拦截该批次出库这是把事后追溯变成事前控制的关键一处。process_record用来源批次和目标批次表达转换关系一个原料批次可以进多个成品批次一个成品批次也可能混合多个原料批次这张表决定了召回范围算得准不准。另外两张辅助表一张记录批次父子关系用于拆分合并一张记录所有写操作的操作人、时间、IP 和变更前后的值。后者在答辩时是加分项它说明这套系统考虑了记录本身被篡改的问题。4.3 编码规则与二维码承载内容二维码里不要只放一个批次号也不要放一大段明文 JSON。常见做法是放一个短链接路径里带批次号和校验位例如https://域名/t/JD01A03TF20240518002扫码后由服务端解析并渲染页面。校验位用简单的模运算生成防止手工改码后还能查到别的批次。码面内容按展示需要组装通常包括品种名称、产地地块代号、采收日期、检测结论、主要农事操作摘要、加工与流通节点时间轴。用药明细不必全量展示展示施药次数与安全间隔期是否满足更容易被理解详细的检测报告以附件形式提供。打印环节要注意两点标签材质要耐水耐摩擦普通铜版纸在冷链环境里半小时就糊了贴标位置统一比如统一贴在箱体右上角方便后续环节批量扫码。这两条看着琐碎实际是现场效率的分水岭。4.4 正向追踪与反向追溯两个方向各写一套查询正向追踪是这批菜去了哪用于召回反向追溯是这箱菜从哪来用于消费者查询和问题定位。两个方向的查询逻辑不一样不能用一个接口糊弄。反向追溯沿批次向上走用递归查询把父批次一层层找出来-- 给定成品批次向上追溯所有来源批次MySQL 8.0 递归 CTE WITH RECURSIVE up AS ( SELECT batch_no, parent_batch, 1 AS lvl FROM batch WHERE batch_no CP20240520001 UNION ALL SELECT b.batch_no, b.parent_batch, u.lvl 1 FROM batch b JOIN up u ON b.batch_no u.parent_batch WHERE u.lvl 10 -- 层数上限防止脏数据造成死循环 ) SELECT * FROM up ORDER BY lvl;正向追踪是给定原料批次找出所有下游成品和销售门店先按process_record向下展开再按sale_record圈定门店范围-- 原料批次 - 成品批次 - 销售门店用于问题批次召回 SELECT s.store_code, s.batch_no, s.quantity, s.sale_time FROM sale_record s WHERE s.batch_no IN ( SELECT dst_batch FROM process_record WHERE src_batch JD01A03TF20240518002 );实际系统里还要处理两种情况。一是批次在加工环节被合并一个成品批次含多个原料批次向上追溯会得到一棵树而不是一条链页面要能把这棵树画出来让人看清哪一批原料进了哪些成品。二是时间维度的排查同一地块连续多天采收问题可能出在某次施药这时要按地块和时间窗口查环境与投入品记录而不是只查单个批次。查询接口加一个时间范围参数就能覆盖。注意追溯查询要限制递归深度和返回条数。历史数据里一旦出现父子关系成环没有上限的递归会把数据库拖死这类事故在演示现场非常尴尬。5. 避坑与排查现场最容易翻车的几个点5.1 硬件与组网类的坑现象一大棚温度曲线在中午出现规律性尖峰比相邻棚高五六度。原因不是传感器坏了是安装位置在阳光直射面探头没有防辐射罩测到的是外壳温度而不是空气温度。解决办法是加装百叶箱或防辐射罩探头离棚膜和金属支架至少 20 厘米安装完成后用一支校准过的温湿度计在旁边比对偏差超过 0.5 摄氏度就调整位置。这类问题在数据上表现为只在晴天正午出现看到这个特征基本可以锁定是安装问题。现象二ZigBee 节点白天在线、晚上频繁掉线。常见原因是供电电池供电的节点在低温夜间电压下降欠压复位也可能是夜间开启的补光灯或风机产生干扰。排查顺序是先看掉线时间是否与温度低谷重合再看是否与某台设备的启停同步。解决办法是给节点加稳压或者换用锂亚电池控制柜内走线把信号线与动力线分开实在干扰严重就把协调器移到棚区中部缩短单跳距离。现象三两个相邻棚区的数据串了。典型的新手事故协调器默认 PAN ID 和信道相同两个网络互相加入节点上报到了错误的网关。表现是某个地块的数据里突然出现明显不符合实际的读数。解决办法是部署时给每个棚区分配唯一 PAN ID节点入网前先做绑定确认网关侧再按短地址校验一次短地址与地块映射不一致的帧直接丢弃并记日志。现象四摄像头和 OCR 识别单据白天识别率九成下午西晒时掉到一半。原因很直接逆光和反光导致图像过曝。解决办法是把补光改成均匀漫射光源摄像头加遮光罩识别失败的图片落盘保留人工复核入口而不是直接丢弃。任何自动化录入都要留人工复核通道这是我在几个项目里都坚持的一条。5.2 数据与业务类的坑现象五消费者扫码查不到信息或者查出来是别的产品。原因通常有两个批次号在包装环节手工录入时打错一位或者是二维码生成后标签贴错箱。前者要在打印环节做校验生成码时同步校验位并在扫码入库时自动比对后者要靠流程约束贴标和装箱必须同工位完成装箱单扫码复核。系统层面再加一层保护——查询时如果批次号不存在页面提示该码无效请核对并且把无效查询记日志连续大量无效查询往往意味着有一批标签打错了。现象六农残检测不合格但系统里查不到相关施药记录。这往往是录入流程的问题种植户怕麻烦施药后没有及时录入或者只记在纸上。解决办法有两个方向一是把录入动作前置到投入品出库环节领药即登记关联地块和批次不允许跳过二是定期比对库存与记录农药出库量与记录用量差异过大就发起核查。系统能做的是让不录入变得不方便而不是指望自觉。现象七召回演练时算出的范围过大半个城市的门店都被圈进去。根源是批次粒度太粗一个批次号用了一整季所有货都挂在同一个批次下。补救办法是在采收和加工环节强制拆分批次按采收日期拆、按地块拆、按加工班次拆并把这些拆分关系写进父子关系表。做方案时就要预判这一点批次号规则里带上日期和班次后续不用改结构。6. 验收与答辩用一条完整的追溯链路把系统讲透验收和答辩考的不是功能列表有多长而是能不能当着人走通一条完整的链路并且在每个节点说出数据是怎么来的、存在哪、被谁改过。我一般按下面的清单准备逐项过一遍再上台。验收项检查方法合格标准采集完整性查看某棚 24 小时记录条数与理论条数偏差小于 5%缺失有标记控制可靠性手动触发超限观察执行机构按回差动作不频繁启停有操作日志断网补传拔掉网关网线 30 分钟后恢复数据补齐无重复记录权限隔离用销售方账号尝试改生产记录被拒绝并留下审计日志正向追踪输入原料批次查流向5 秒内返回成品批次与门店清单反向追溯扫成品码查来源展示地块、采收、检测、加工、物流时间轴召回演练指定问题批次圈定范围范围精确到门店与数量可导出清单演示流程控制在 8 到 10 分钟。开头不铺垫直接拿出一箱贴好码的样品现场扫码让评审看到页面上的时间轴接着切到后台把这一批的地块、施药记录、环境曲线调出来说明哪些字段是设备自动写的、哪些是人工录入并经过审核的然后演示一次断网补传和一次超限告警最后给一段假设这批检出问题的召回查询把受影响的成品批次和门店一次性列出来。被问到最多的问题通常是三个。第一数据能不能被改回答要落到操作日志和审核状态上说清楚谁能改、改了什么留痕、审核前数据在页面上怎么标记。第二传感器坏了怎么办回答缺失值处理、离线判定和人工补录三条别只说会有告警。第三和市面上现成系统有什么区别别贬低别人讲清楚这套方案是按种植、加工、流通分段选技术成本和现场条件匹配代码和表结构都在自己手里能改。有个血泪经验答辩前一定用真实的一批货跑一遍不要只用造好的测试数据。测试数据是干净的真实数据里会有录入错字、时间格式不一致、批次号重复这些脏东西跑一遍能提前暴露大半问题。从那以后我每次做这类系统上线前都强制走一遍一条真货从地块到扫码的全流程包括故意拔一次网线、故意输错一次批次号把异常路径也跑通再交付。希望这套结构能帮到你把方案讲成一个完整的、能验收的工程而不是一堆功能截图。本文还有配套的精品资源点击获取

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑