13 KiB
13 KiB
📋 作业数据记录功能 - 完整性评估报告
🎯 需求说明
核心需求:基于农机上报的轨迹和作业数据,实现以下功能:
- ✅ 实际作业面积 - 基于GIS几何计算,与计划面积对比
- ✅ 作业轨迹图 - 绘制作业轨迹,可视化路径
- ✅ 作业质量评估 - 根据传感器数据评估(播种均匀度、深浅一致性等)
- ✅ 数据自动归档 - 所有数据自动归档,形成作业档案
📊 当前功能状态
1️⃣ OperationRecord.tsx (作业数据记录)
位置: /components/machinery/operation/OperationRecord.tsx
现有功能:
- ✅ 基本作业记录列表
- ✅ 计划面积 vs 实际面积
- ✅ 覆盖率显示
- ✅ 作业质量评估(优秀/良好/一般)
- ✅ 作业时长统计
缺少功能:
- ❌ GIS几何计算 - 实际面积计算逻辑不完整
- ❌ 作业轨迹图 - 没有地图轨迹可视化
- ❌ 详细质量评估 - 缺少播种均匀度、深浅一致性等具体指标
- ❌ 传感器数据展示 - 没有传感器原始数据
- ❌ 自动归档触发 - 没有自动归档到档案系统的功能
功能说明存在,但未实现:
// 在代码中有功能说明,但没有实际实现
<ul>
<li>• 基于GPS轨迹自动计算实际作业面积</li> // ❌ 未实现
<li>• 绘制作业轨迹图,可视化作业路径</li> // ❌ 未实现
<li>• 根据传感器数据评估作业质量</li> // ❌ 部分实现
<li>• 所有数据自动归档,形成完整作业档案</li> // ❌ 未实现
</ul>
2️⃣ OperationArchive.tsx (作业档案)
位置: /components/operation/OperationArchive.tsx
现有功能:
- ✅ 作业档案管理
- ✅ 操作记录、投入品、收获记录
- ✅ IoT传感器数据
- ✅ 数据筛选和查询
- ✅ 档案完整度统计
缺少功能:
- ❌ 从作业记录自动归档 - 没有自动归档触发
- ❌ 轨迹数据存储 - 档案中没有GPS轨迹数据
- ❌ GIS面积计算结果 - 没有几何计算的详细记录
- ❌ 质量评估细节 - 档案中缺少质量评估的传感器数据
3️⃣ 其他相关组件
OperationData.tsx (作业数据监控):
- ✅ 实时数据监控
- ❌ 不是作业记录的核心功能
OperationAnalysis.tsx (作业分析):
- ✅ 数据分析和统计
- ❌ 不涉及轨迹和质量评估
❌ 缺失功能详细分析
缺失1: GIS几何计算
需求:
- 基于农机上报的GPS轨迹点
- 使用GIS算法计算实际作业面积
- 与计划面积进行对比
- 计算覆盖率和重叠率
当前状态:
// 当前只有模拟数据
actualArea: 48.5, // ❌ 硬编码,没有实际计算
coverage: 97, // ❌ 硬编码,没有实际计算
所需实现:
// 需要实现的功能
interface GPSPoint {
lat: number;
lng: number;
timestamp: string;
speed: number;
workingStatus: boolean;
}
interface AreaCalculation {
trajectoryPoints: GPSPoint[];
plannedArea: number;
actualArea: number; // ✅ 通过GIS计算
coverage: number; // ✅ 计算覆盖率
overlapRate: number; // ✅ 计算重叠率
efficiency: number; // ✅ 作业效率
}
缺失2: 作业轨迹图
需求:
- 在地图上绘制农机作业轨迹
- 显示作业区域和路径
- 不同作业状态用不同颜色标识
- 可以回放轨迹
当前状态:
- ❌ 完全没有地图轨迹可视化功能
所需实现:
interface TrajectoryMap {
center: { lat: number; lng: number };
trajectoryPath: GPSPoint[];
workingArea: Polygon; // ✅ 作业区域多边形
plannedArea: Polygon; // ✅ 计划区域多边形
colorByStatus: { // ✅ 按状态着色
working: 'green',
idle: 'gray',
turning: 'yellow'
};
}
// 需要地图组件
<TrajectoryMap
trajectoryData={trajectoryData}
showPlannedArea={true}
showWorkingArea={true}
enablePlayback={true}
/>
缺失3: 详细质量评估
需求:
- 播种均匀度 - 评估播种密度的一致性
- 深浅一致性 - 评估作业深度的稳定性
- 直线度 - 评估作业路径的直线性
- 重叠率 - 评估作业区域的重叠情况
- 漏播率 - 评估漏播的区域比例
当前状态:
// 当前只有简单的质量分级
quality: '优秀' // ❌ 太简单,没有具体指标
所需实现:
interface QualityAssessment {
overall: '优秀' | '良好' | '一般' | '较差';
// ✅ 播种质量(针对播种作业)
seeding?: {
uniformity: number; // 均匀度 (0-100)
depthConsistency: number; // 深浅一致性 (0-100)
spacingAccuracy: number; // 行距准确度 (0-100)
missRate: number; // 漏播率 (%)
};
// ✅ 耕地质量(针对耕地作业)
plowing?: {
depthConsistency: number; // 深度一致性 (0-100)
straightness: number; // 直线度 (0-100)
soilFineness: number; // 土壤细碎度 (0-100)
};
// ✅ 通用指标
common: {
coverage: number; // 覆盖率 (%)
overlapRate: number; // 重叠率 (%)
efficiency: number; // 作业效率 (亩/小时)
straightness: number; // 路径直线度 (0-100)
};
// ✅ 传感器原始数据
sensorData: {
timestamp: string;
depth: number; // 作业深度 (cm)
speed: number; // 作业速度 (km/h)
seedingRate: number; // 播种量 (kg/亩)
workingWidth: number; // 作业幅宽 (m)
}[];
}
缺失4: 自动归档
需求:
- 作业完成后自动触发归档
- 将轨迹、传感器数据、质量评估自动保存到档案
- 关联到对应的地块和批次
- 生成作业报告
当前状态:
- ❌ OperationRecord 和 OperationArchive 没有关联
- ❌ 没有自动归档的触发机制
所需实现:
interface AutoArchive {
// ✅ 归档触发器
trigger: 'manual' | 'auto'; // 手动或自动
// ✅ 归档数据
archiveData: {
operationRecord: OperationRecord;
trajectoryData: GPSPoint[];
qualityAssessment: QualityAssessment;
sensorData: SensorData[];
photos: string[];
notes: string;
};
// ✅ 归档到档案系统
archiveToFile: (fieldId: string, batchNo: string) => void;
// ✅ 生成报告
generateReport: () => ArchiveReport;
}
// 作业完成后自动归档
onOperationComplete: (recordId: string) => {
const record = getOperationRecord(recordId);
const trajectoryData = getTrajectoryData(recordId);
const qualityData = calculateQuality(trajectoryData, record);
// ✅ 自动归档
autoArchiveToFile({
record,
trajectoryData,
qualityData,
});
toast.success('作业数据已自动归档');
};
📝 功能完善计划
Phase 1: GIS面积计算 (优先级: ⭐⭐⭐⭐⭐)
任务:
- 创建 GIS 计算工具函数
- 实现基于轨迹点的面积计算
- 计算覆盖率和重叠率
- 与计划面积对比
文件:
- 新建:
/lib/gisCalculation.ts - 更新:
/components/machinery/operation/OperationRecord.tsx
预估工作量: 4-6小时
Phase 2: 轨迹地图可视化 (优先级: ⭐⭐⭐⭐⭐)
任务:
- 创建轨迹地图组件
- 绘制GPS轨迹路径
- 显示作业区域和计划区域
- 实现轨迹回放功能
文件:
- 新建:
/components/machinery/operation/TrajectoryMap.tsx - 更新:
/components/machinery/operation/OperationRecord.tsx
预估工作量: 6-8小时
Phase 3: 详细质量评估 (优先级: ⭐⭐⭐⭐)
任务:
- <EFBFBD><EFBFBD>计质量评估数据结构
- 实现播种均匀度计算
- 实现深浅一致性计算
- 实现路径直线度计算
- 展示传感器原始数据
文件:
- 新建:
/lib/qualityAssessment.ts - 新建:
/components/machinery/operation/QualityDetail.tsx - 更新:
/components/machinery/operation/OperationRecord.tsx
预估工作量: 6-8小时
Phase 4: 自动归档系统 (优先级: ⭐⭐⭐⭐)
任务:
- 创建归档触发机制
- 实现数据自动归档
- 关联作业记录和档案系统
- 生成作业报告
文件:
- 新建:
/lib/archiveSystem.ts - 更新:
/components/machinery/operation/OperationRecord.tsx - 更新:
/components/operation/OperationArchive.tsx
预估工作量: 4-6小时
📊 数据结构设计
完整的作业记录数据结构
interface CompleteOperationRecord {
// 基本信息
id: string;
recordNumber: string;
machineryId: string;
machineryName: string;
driverId: string;
driverName: string;
fieldId: string;
fieldName: string;
operationType: string;
// 时间信息
startTime: string;
endTime: string;
duration: number;
// 面积信息 (GIS计算)
plannedArea: number; // 计划面积 (亩)
actualArea: number; // 实际面积 (亩) ✅ GIS计算
coverage: number; // 覆盖率 (%)
overlapRate: number; // 重叠率 (%)
missedArea: number; // 漏作业面积 (亩)
// 轨迹数据
trajectoryData: {
points: GPSPoint[]; // GPS轨迹点
workingPath: GPSPoint[]; // 作业路径(仅作业中的点)
totalDistance: number; // 总行驶距离 (km)
workingDistance: number; // 作业距离 (km)
};
// 质量评估
qualityAssessment: {
overall: '优秀' | '良好' | '一般' | '较差';
score: number; // 总分 (0-100)
// 具体指标
metrics: {
uniformity: number; // 均匀度
depthConsistency: number; // 深浅一致性
straightness: number; // 直线度
overlapRate: number; // 重叠率
missRate: number; // 漏作业率
};
// 传感器数据
sensorData: SensorDataPoint[];
};
// 作业参数
parameters: {
targetSpeed: number;
actualAvgSpeed: number;
workingWidth: number;
workingDepth: number;
seedingRate?: number;
// ...
};
// 归档信息
archiveStatus: '待归档' | '已归档' | '归档失败';
archiveId?: string;
archivedAt?: string;
// 系统信息
createdAt: string;
updatedAt: string;
createdBy: string;
}
interface GPSPoint {
lat: number;
lng: number;
altitude: number;
timestamp: string;
speed: number;
heading: number;
accuracy: number;
workingStatus: boolean; // 是否在作业中
}
interface SensorDataPoint {
timestamp: string;
depth: number; // 作业深度 (cm)
speed: number; // 速度 (km/h)
workingWidth: number; // 幅宽 (m)
seedingRate?: number; // 播种量 (kg/亩)
engineRpm?: number; // 发动机转速
fuelConsumption?: number; // 燃油消耗
temperature?: number; // 温度
}
🎯 实现优先级
立即实现 (P0)
- ✅ GIS面积计算 - 核心功能
- ✅ 轨迹地图可视化 - 核心功能
近期实现 (P1)
- ✅ 详细质量评估 - 重要功能
- ✅ 自动归档系统 - 重要功能
后续增强 (P2)
- 轨迹回放功能
- 质量对比分析
- 历史数据追溯
- AI质量预测
📋 验收标准
功能完整性
- GIS几何计算正确计算实际面积
- 地图上正确显示作业轨迹
- 质量评估包含所有关键指标
- 数据自动归档到档案系统
数据准确性
- 面积计算误差 < 5%
- 轨迹绘制准确无偏移
- 质量评估算法科学合理
- 归档数据完整无丢失
用户体验
- 界面清晰易懂
- 操作流程顺畅
- 性能良好不卡顿
- 错误提示友好
📖 相关文档
- GIS计算算法:
/docs/gis-calculation.md(待创建) - 质量评估标准:
/docs/quality-standard.md(待创建) - 归档系统设计:
/docs/archive-system.md(待创建)
🎉 总结
当前状态
- ✅ 基础框架已搭建
- ⚠️ 核心功能未完整实现
- ❌ GIS计算、轨迹图、详细质量评估、自动归档都需要完善
完善后效果
- ✅ 完整的作业数据记录系统
- ✅ 精准的GIS面积计算
- ✅ 直观的轨迹可视化
- ✅ 科学的质量评估
- ✅ 自动化的数据归档
工作量评估
- 总工作量: 20-28 小时
- 优先功能: 10-14 小时
- 完整实现: 20-28 小时
评估时间: 2025-10-17
评估人: AI Assistant
状态: ⚠️ 功能不齐全,需要完善
建议: 优先实现 GIS 面积计算和轨迹地图可视化,这是核心功能,然后再完善质量评估和自动归档。