# cau_gg **Repository Path**: ai-edu_tech/cau_gg ## Basic Information - **Project Name**: cau_gg - **Description**: 智能灌溉原型页面,供大家参考 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-01-26 - **Last Updated**: 2026-07-30 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 智能灌溉管控平台 基于LAWSTAC模型的智能农业灌溉管理系统,提供精准的水分运移模拟、智能灌溉决策和数据分析功能。 ## 📁 项目结构 ``` cau_gg/ ├── index.html # 主入口页面(首页) ├── demo-management.html # 示范区管理页面 ├── param-config.html # 参数配置页面 ├── device-management.html # 设备管理页面 ├── irrigation-schedule.html # 灌溉计划页面 ├── irrigation-data.html # 灌溉数据页面 ├── data-analytics.html # 数据分析页面 ├── settings.html # 系统设置页面 ├── styles.css # 全局样式文件 ├── common.js # 共享JavaScript(数据模型和通用功能) ├── irrigation-platform.html # 原始单文件版本(备份) ├── echarts.min.js # ECharts图表库 ├── LAWSTAC_API.md # LAWSTAC模型API文档 └── README.md # 项目说明文档 ``` ## 🚀 快速开始 ### 1. 启动应用 直接在浏览器中打开 `index.html` 文件即可: ```bash open index.html ``` 或者使用本地服务器: ```bash # Python 3 python -m http.server 8000 # Node.js npx serve # PHP php -S localhost:8000 ``` ### 2. 主要功能 - **示范区管理**:管理示范区和种植区信息 - **参数配置**:配置LAWSTAC模型参数(土壤、作物、气象、边界条件等) - **设备管理**:监控和控制灌溉设备 - **灌溉计划**:制定和管理灌溉计划 - **数据分析**:查看灌溉数据分析报告 ## 📋 页面说明 ### 首页 (index.html) ✅ 完整功能 **已完整保留所有原始功能:** - **统计概览**:示范区、种植区、设备、传感器数量统计 - **灌溉预报图表**:15天土壤含水率预报 + 灌溉量建议 - 种植区选择器 - 双Y轴图表(含水率 + 灌溉量) - 灌溉建议列表 - 导出图表功能 - **传感器实时数据**: - 土壤温度与湿度24小时监测图 - 气象站实时数据(温度、湿度、风速) - 导出图表功能 - 导出CSV数据功能 - 每30秒自动更新 - **15天天气预报**: - 逐日天气卡片(晴天/小雨/多云) - 温度、湿度、风速显示 - 动态日期生成 - **种植区实时状态**: - 所有种植区监测卡片 - 实时传感器数据 - 在线状态指示 - 状态判断(正常/需关注/需灌溉) - **智能灌溉建议**: - AI驱动建议生成 - 优先级标识 - 详细建议说明 ### 示范区管理 (demo-management.html) - **列表视图**:显示所有示范区的基本信息 - **详情视图**:点击示范区进入详情,管理种植区 - 支持新建、编辑、删除示范区和种植区 - **参数配置入口**:每个种植区有"参数配置"按钮 ### 参数配置 (param-config.html) - 模型类型选择(水分/水盐/水热/水热盐) - 土壤分层配置 - 土壤参数、作物参数、气象数据、边界条件等配置 - 支持导出/导入配置文件 ### 其他页面 - 设备管理、灌溉计划、灌溉数据、数据分析等功能页面开发中 ## 💾 数据存储 - 所有数据存储在浏览器的 `localStorage` 中 - 数据键名:`irrigationData` - 参数配置键名:`lawstac_config_{demoId}_{areaId}` ## 🔄 页面间数据传递 使用 `sessionStorage` 在页面间传递参数: ```javascript // 示范区管理页面 → 参数配置页面 sessionStorage.setItem('paramDemoId', demoId); sessionStorage.setItem('paramAreaId', areaId); window.location.href = 'param-config.html'; // 参数配置页面接收 const demoId = sessionStorage.getItem('paramDemoId'); const areaId = sessionStorage.getItem('paramAreaId'); ``` ## 激光雷达数据源 首页每 30 秒按当前示范区同步一次激光雷达数据。请求复用 `VITE_NONGDA_API_BASE_URL`、现有登录凭证和受保护的 `GET /lidar-frames?farm_id={本地农场ID}` 接口;切换示范区会立即取消旧请求并清空旧帧,避免跨区展示。 生产环境接口失败时直接展示错误,不会回退测试数据。仅开发环境可设置 `VITE_LIDAR_TEST_FALLBACK_ENABLED=1`,显式启用 `/lidar-test/manifest.json` 测试帧回退。 接口清单支持 `frames` 或 `data.frames`,每帧结构如下: ```json { "id": "frame-20260721-001", "frameNumber": 1, "capturedAt": "2026-07-21T10:00:00+08:00", "version": "20260721-001", "farmId": 10000, "ggFarmId": 1025, "deviceId": "ds-01", "deviceName": "一号示范区激光雷达", "pcdUrl": "https://www.zgzhy.com.cn/path/PointCloud_1.pcd", "bmpUrl": "https://www.zgzhy.com.cn/path/RGB_1.bmp", "analysis": { "status": "succeeded", "result": { "cards": [], "overall_summary": "作物长势总体正常" }, "error": "", "analyzedAt": "2026-07-21T10:02:00+08:00", "updatedAt": "2026-07-21T10:02:00+08:00" } } ``` 后端返回 PCD/PNG 的短时签名下载地址;跨域提供时需允许站点域名访问这些资源。轮询间隔可通过 `VITE_LIDAR_POLL_INTERVAL_MS` 调整,最小 10 秒。接口应在帧内容变化时更新 `id`、`version` 或 `capturedAt`;前端最多保留最近 5 帧,并复用未变化的帧,避免重复下载大文件。 分析由用户在当前帧手动触发。浏览器复用点云视图的 PCD 解析结果生成结构化摘要,并把已下载的 当前 PNG 转成 `data:image/png;base64,...`,并将示范区名称、位置、面积、种植作物、轮灌组种植时间和采集时间 一并放入 `input_text`,通过 Responses 风格请求发送给 `gpt-5.6-sol`。返回结果固定为长势、生育期、 水分、氮素、群体、风险、管理建议 7 类卡片;AI 返回后通过 `PUT /lidar-frames/{publicId}/analysis` 保存 `cards`、`overall_summary` 和点云摘要。 接口按帧覆盖旧结果,日常展示只读取数据库返回的 `analysis`。 图片分析使用同源路径 `POST /lidar-analysis-api`。开发环境由 Vite 代理到 `http://192.236.148.155:8080/v1/responses`(`/v1` 为该服务的 API 基地址),并从 `.env.development` 读取 `LIDAR_ANALYSIS_ACCESS_TOKEN` 后注入 Bearer 请求头。当前部署可复用与 `apiProxyTarget` 相同的 Vite 代理方式;若改为纯 `dist` 静态部署,则生产网关需要配置同样的反向代理。 令牌不使用 `VITE_*` 变量,因此不会进入前端产物。模型可通过 `VITE_LIDAR_ANALYSIS_MODEL` 配置,默认 `gpt-5.6-sol`。 “更多监测分析”独立请求 `GET /lidar-frame-analyses?farm_id={本地农场ID}`,至少读取最近 20 条分析记录,不受点云渲染的 5 帧缓存限制,也不会批量下载历史 PCD/PNG 文件。 签名地址轮换和分析状态变化只更新元数据,不会重新下载未变化的 PCD/PNG;“点云查看”全屏模式继续复用同一组件实例,因此当前帧、轮播和定时同步状态会连续保留。 系统设置中的“示范区管理”支持按示范区绑定一个激光雷达名称。绑定关系通过 `GET /farm-lidar-bindings?farm_id={本地农场ID}`、 `PUT /farm-lidar-bindings`(请求体为 `farm_id`、`device_name`)和 `DELETE /farm-lidar-bindings?farm_id={本地农场ID}` 在数据库中持久化,不再写入浏览器 `localStorage`。候选名称从 `/lidar-frames` 返回帧的 `deviceName` 去重生成;AI 驾驶舱会向 `/lidar-frames` 和 `/lidar-frame-analyses` 传入 `device_name`,并按名称在客户端兜底过滤。 解除绑定后恢复展示该示范区全部雷达数据。 ## 🎨 样式说明 - 所有页面共享 `styles.css` 样式文件 - 响应式设计,支持桌面端和移动端 - 使用绿色主题色(#10b981, #059669) ## 📝 待完善功能 - [ ] 完善设备管理页面 - [ ] 完善灌溉计划页面 - [ ] 完善灌溉数据页面 - [ ] 完善数据分析页面 - [ ] 完善参数配置的所有子页面 - [ ] 添加图表可视化功能 - [ ] 集成真实的后端API ## 📚 技术栈 - 前端框架:纯 HTML5 + CSS3 + Vanilla JavaScript - 图表库:ECharts 5.4.3 - 数据存储:localStorage - 无构建工具、无依赖 ## 📄 许可证 内部项目,仅供学习和研究使用。