# 绿茵千顷灌溉设计优化版 — 本地副本

> 来源：https://zhanglihui2026.github.io/runye-irrigation/ （GitHub Pages 公开站点）
> 本目录为完整镜像副本，供本地使用与研究。

## 这是什么

一个面向滴灌工程的**交互式水力选型工具**：输入地块、滴灌带、水源与地形参数，自动完成
轮灌分区、滴灌带条数、主管/支管管径、水泵流量·扬程·功率的选型计算，并附带
管网布置图、主要材料清单、IRRICAD 对比、经济性分析、首部系统图等配套模块。

## 功能模块（主页面 index.html）

| # | 模块 | 作用 |
|---|------|------|
| 01 | 水源与地形 | 提升高度、水源压力、水源可用流量、过滤与阀门损失 |
| 02 | 主管与支管 | 主管长度、经济流速、水泵效率、滴灌带入口工作压力（带首） |
| 03 | 滴灌带与滴头 | 长度、间距、高差、滴头间距/流量/外径 |
| 04 | 分区与铺设方式 | 单区面积试算、滴灌带条数、流量选型结果、主管/支管管径对比表、水泵工作点、2/3/4 根支管方案对比 |
| 05 | 管网布置示意图 | SVG 俯视图：主管/支管/滴灌带/阀门/水泵的布置关系 |
| 06 | 地块绘制 | 上传图片或在线地图描边 → 比例尺标定 → 鞋带公式算面积 → 回填规划 |
| 07 | 规划计算器 | 多区联合灌溉、手动分组、重新分区、生成施工图 |
| 08 | 管网装配（平面图） | 交互式管道编辑器：点管身插三通/阀门/弯头、改管径、沿线统计损失 |
| 09 | 主要材料 | BOM 表（含约 10% 余量）、亩均折算、单价与合计 |
| 10 | IRRICAD 对比 | 本工具 vs IRRICAD 专业软件 6 项指标偏差对比、报告导入自动识别 |
| 11 | 经济指标分析 | 电价/年运行小时/折旧年限 → 年均总成本平衡点 |
| 12 | 过滤系统 | 叠片过滤器并联机组选型、反冲洗管路布置，并把过滤损失写回二级/三级扬程计算 |
| 13 | 首部系统图 | 参数化编辑器：图纸信息、规格排版、水源/水泵/过滤器选型、吸肥管设置、设备表、设计说明，支持简图导出 |
| 14 | 设置 | 材料单价、经济假设、比例尺、地块、埋深等持久化配置 |
| 15 | 设计校核与农艺闭环 | 统一设计工况、水源能力、ET₀/Kc 需水、土壤入渗、盐分淋洗、滴灌带均匀性、NPSH、水锤简化校核、运行电费、施工运维清单、导出校核摘要 |

## 计算方法（与原始站点一致）

- **沿程损失**：Hazen-Williams，`hf = 1.113×10⁹ × L × Q^1.852 / (C^1.852 × d^4.87)`，Q 为 m³/h、d 为 mm、C=150
- **多孔折减**：滴灌带及支管采用 Christiansen 系数 F；主管不折减
- **管径选型**：目标 1.5 m/s，经济范围 0.8–2.0 m/s；PE100 / PN1.25MPa / SDR13.6
- **水泵扬程**：（提升高度＋地形高差＋入口工作压力－已有压力＋主管/支管损失＋过滤阀门损失＋2 m 富余）×1.10
- **水泵功率**：`P = 2.725×Q×H/η/1000`（kW）
- **设计校核（P1）**：水源可开分区数、`ETc=ET0×Kc`、`TAW/RAW`、灌水周期与定额、淋洗分数 `LR=ECw/(2ECe)`、滴灌带 `EU`、NPSH、水锤简化升压、运行电费；经验系数全部显式暴露为输入
- 完整公式、假设与限制见 [`CALCULATION.md`](CALCULATION.md)；参考 GB/T 50485《微灌工程技术标准》——用于方案比选和初步选型，不替代现场测绘、土壤试验、水质检测、厂家泵曲线和专业工程设计

## 目录结构（按 6 大模块重组）

```
├── index.html                    主应用入口（灌溉设计主页面）
├── README.md                     本说明文档
├── CALCULATION.md                计算口径、假设与限制
├── PRIVACY.md                    联网模块与隐私说明
├── tests/
│   ├── core-regression.html       22 项水力核心回归
│   └── advanced-regression.html   55 项设计校核回归
├── _archive/                      历史备份（不参与运行）
│   └── index.pre-fix.html.bak     评审修复前 index.html
│
├── system/                       ⑥ 系统工具模块（公共基础）
│   ├── runye-nav.js / .css       顶部导航
│   ├── runye-theme.css           主题样式
│   ├── runye-typography.css     排版样式
│   ├── runye-mobile.js / .css   移动端适配
│   ├── runye-undo.js            撤销重做
│   ├── runye-entitle.js         会员权益体系
│   ├── runye-member-ui.js       会员 UI
│   ├── cloud-sync.js             云同步
│   ├── runye-landing.html        落地页
│   ├── hero-driptape.jpg         落地页主图
│   ├── core/                    核心引导脚本
│   ├── echarts/                 ECharts 图表库
│   ├── pwa/                     PWA 支持
│   └── _shots/                  截图素材
│
├── map-plot/                     ① 地图地块模块（空间数据输入）
│   ├── runye-map-measure.html    在线地图测量页
│   ├── runye-geo.js              地理坐标计算
│   ├── runye-map-enhance.js      地图增强功能
│   ├── runye-map-partition.js    地块分区地图逻辑
│   ├── runye-terrain.js / .css   地形模块
│   ├── terrain/                  地形子站（shp/RTK 导入）
│   └── leaflet/                 Leaflet 地图库
│
├── planting/                     ② 种植决策模块（农艺参数输入）
│   ├── runye-planting.html      种植决策主页面
│   ├── 数字农业.html             数字农业入口
│   ├── peanut-tool.html         花生工具
│   ├── workbench.html            工作台
│   ├── 耐特菲姆滴灌带长度查询器.html  滴灌带查询
│   ├── decision-engine/          决策引擎
│   ├── digital-agriculture/     数字农业子站
│   ├── lajiao-zhibao/           辣椒植保决策
│   └── qicai-huasheng/          七彩花生水肥决策
│
├── irrigation/                   ③ 灌溉设计模块（核心设计 + 水力校核）
│   ├── runye-hydraulics.html    水力校核页
│   ├── irrigation-bridge.js     集成桥接
│   ├── pipe_optim_ui.js         管网优化 UI（引擎文件缺失，入口已卸载，仅留档）
│   ├── runye-ai-plan.js / .css  AI 智能规划
│   ├── runye-inverse-design.js / .css  反向设计
│   ├── design-check.js          设计校核纯函数 + 校核面板（P1）
│   ├── mod/                     主页面 32 个内联功能模块
│   ├── hydraulic-calc/          水力计算核心 + wasm
│   ├── filter-system/           过滤系统选型
│   └── tl-workspace/            管网装配平面图编辑器
│
├── material-cost/                 ④ 材料经济模块（造价分析）
│   ├── runye-case-library.js / .css  工程案例库
│   └── runye-material-audit.js       材料审核
│
└── drawings/                     ⑤ 图纸输出模块（成果出图）
    ├── runye-dxf.js              DXF 导出
    ├── iso-diagram/              轴测图 / 首部系统图编辑器
    └── modeling/                 参数化数字化建模
```

## 本地运行

主计算页不需要构建、也不需要后端：用 Chrome/Edge 直接打开 `index.html` 即可，
核心水力计算、管径选型、材料清单、图纸编辑全部在浏览器本地完成。

但**并非完全离线**，以下功能会访问外网（不可用时只影响对应模块，不影响主计算）：

- 在线地图底图、地址搜索/逆地理编码（天地图/OSM/Nominatim/Photon）；
- 图片文字识别（`api.ocr.space`）；
- AI 智能规划（`runye-irrigation.vercel.app`，会把地块与方案数据发送到云端）；
- IP 归属地、云同步等辅助功能。

如用于涉密或离线现场，请先断网测试，并避免打开上述模块。各模块的联网行为、会发送的数据和关闭方式见 [`PRIVACY.md`](PRIVACY.md)；页面底部也常驻隐私提示。

### 快速验证

- 打开 `tests/core-regression.html`，应显示 **22 / 22 项通过**；
- 打开 `tests/advanced-regression.html`，应显示 **55 / 55 项通过**；
- 通过本地 HTTP 服务打开 `tests/ui-fix-regression.html`，应显示 **32 / 32 项通过**；
- 打开主页面，默认方案应显示：单区 30.00 亩、滴灌带 **250 条**、主管 **Ø140**、
  支管 **2 × Ø110**、水泵 **66.7 m³/h × 34 m**、建议电机 **11 kW**；
- 默认单区材料清单滴灌带 **27,500 m**（含 10% 余量）、分区阀 **1 套**；切到联合 2 区后
  滴灌带 **55,000 m**、分区阀 **2 套**、主管 **440 m**、总管 **220 m**，联合 2 区按 1.1Q 选泵电机为 **30 kW**；
- 切到「管路规划」，默认应显示联合 2 区、联合流量 **133.3 m³/h**、总管 **Ø200**；
- 滚到「设计校核与农艺闭环」，默认应显示：单区轮灌为采购依据、ET₀/ETc **5.0/5.0 mm/d**、
  灌水周期 **4.8 d**、LR **20%**、水锤升压约 **13.5 m**；水源流量未填时只提示校核、不影响水力结果；
- 点击“联合 2 区”后，采购依据应切换为联合工况，二级单区卡片明确标为“仅单区校核”。

## 相对原始站点的改动

- 移除一处外部分析埋点脚本（腾讯 Beacon `beacon.cdn.qq.com`）；
- 移除 `pipe_optim_ui.js` 的页面入口：该模块缺少 `irr_optim.js` / `pipe_optim.css`，
  且导航按钮已不再注入，保留入口只会产生 404。文件本身留档，补齐引擎后可恢复；
- 本轮评审修复（2026-10-20）：
  - 修正亩→平方米换算（`666.67` → `2000/3`），并对条数/排数/段数使用带容差的向上取整，
    解决默认 30 亩显示 252 条、流量却按 250 条计算的问题；
  - 支管管径对比表改为按 Christiansen 系数 F 折减（此前表内显示 0.85 m，扬程却用 0.30 m）；
  - 单区面积超限不再静默截断：保留用户输入，结果区横幅说明“请求多少亩、实际按多少亩算”；
  - 二级/三级结果面板明确标注“单区轮灌 / N 区联合”口径，并在两口径不一致时交叉提示；
  - 三级「分区固定边长 / 单区主管长度」默认值统一为 200 m，与二级默认 200×100 m 对齐；
  - 新增方案校核横幅（压差、流速、效率、主管损失、零流量等），替换原先只计算不显示的 `suggestions`；
  - 管材标注由 `PN0.4MPa / SDR13.6` 更正为 `PN1.25MPa / SDR13.6`（SDR13.6 对应约 PN1.25）；
  - 新增 `tests/core-regression.html`：浏览器直接打开即可跑 22 项核心公式与默认口径回归；
  - 修正 README 中“完全离线”“过滤系统为预留位”等与实现不符的描述。

### P1 第二轮修复与加强（2026-10-20）

- **统一设计工况**：新增“单区轮灌 / 联合 N 区”选择器，明确只有一个采购依据；二级/三级卡片不再同时冒充结论，另一工况标为校核参考；
- **水源能力**：二/三级新增“水源可用流量”，自动同步；给出可同时开启分区数、单区/联合缺口和反冲洗提醒；
- **阻断无效输入**：面积、带长、带间距、滴头间距、滴头流量、目标流速为 0/负值时，结果区暂停并清空管径表/材料表，不再用最小值钳制出“看似正常”的结果；
- **面积超限一键拆分**：保留 100 亩等真实输入，提示“当前按 60 亩算”，并提供“一键拆成 2 区（每区约 50 亩）”按钮；
- **农艺与土壤**：ET₀/Kc、TAW/RAW、灌水周期、净/毛定额、灌水历时、灌水强度/入渗率、湿润比/湿润深度；
- **盐分**：ECw/ECe → 淋洗分数 LR、含淋洗毛定额；LR>25% 时告警；
- **均匀性**：PC/非 PC、CV、带首带尾压差 → EU；按压差 20% 反算最大带长；
- **NPSH**：海拔、水温、吸程、吸水管损失、NPSHr → NPSHa 与余量；潜水泵提示按厂家淹没深度校核；
- **水锤**：直接/间接水锤简化升压、最高压力与 PN1.25 MPa 上限比较；
- **运行费**：年运行电量、年电费、亩均年电费；
- **过滤与清单**：按悬浮物/铁/锰给出组合过滤建议，生成调压、进排气、止回/水锤、冲洗、施肥防回流、防冻排空、试压冲洗清单；
- **校核摘要导出**：一键导出 Markdown，含工况、水力、水源、农艺、均匀性/NPSH/水锤、结论、施工运维清单与限制；
- **可访问性**：为没有显式 aria-label 的表单控件自动补最近标签文字；
- **材料价格口径**：材料表明确标注“单价需询价”，并注明管径/压力等级以厂家资料为准；
- **归档**：`index.html.bak` 移入 `_archive/index.pre-fix.html.bak`，避免误加载；
- **新增测试**：`tests/advanced-regression.html` 55 项，覆盖水源、农艺、盐分、均匀性、NPSH、水锤与运行费。

### P0/P1 第三轮修复（2026-10-21）

- **采购 BOM 与工况同源**：材料清单不再混用二级单区结果和三级联合结果；单区模式不生成独立总管行，联合模式按分区数计入主管/支管/分区阀，滴灌带和接头按全场面积重算；
- **水源距离**：`planSrcDist` 同时进入二级单区主管损失和三级总管损失，材料只计一次，消除“扬程不变、材料总管翻倍”的口径分裂；
- **沿线高差**：`tapeDh` 按“正=带尾低、负=带尾高”计入带尾压力和 EU；带尾压力接近 0 时给出警告，但泵扬程不重复计带首已给定的压力；
- **零值/超范围阻断**：目标流速、带首压力、水泵效率、固定边、联合分区数、滴灌带外径等非法输入会暂停结果并清空依赖水力的材料/管径表，不再用 min/max 钳制出虚假结果；
- **公共输入联动**：提升高度、地形高差、带首压力、效率、过滤损失、目标流速、带长/间距、滴头参数、滴灌带外径/卷长在二/三级面板之间双向同步；分区几何仍各自独立；
- **电机选型**：按 1.1Q、同扬程粗选电机，设计点轴功率仍单列；联合 2 区默认电机由 22 kW 修正为 30 kW；
- **亩均年电费**：联合工况使用全场面积（单区亩数 × 分区数），不再把联合电费除以单区亩数；
- **材料清空**：联合工况输入失效时暂停材料清单；单区仍有效时改用单区材料刷新，不把旧联合 BOM 留在页面；
- **移动/地形入口**：缺失的 `runye-mobile-map-preview.html` 不再作为跳转目标；资源缺失的地形模块和空的 `grPipeSection` 入口暂时隐藏，待资源补齐后恢复；
- **实际段长**：滴灌带不能整除地块边时，按实际段长计算滴头数、带流量、沿程损失和平面汇总条数；
- **回归**：新增 `tests/ui-fix-regression.html` 32 项，覆盖上述采购口径、联动、零值阻断和材料清空。

### 页面可运行性收尾（2026-10-21）

- **花生工具页**：独立页没有全站 `.nav-toggle` / `#navLinks`，原脚本空引用会抛 `TypeError` 并中断后续绑定；改为存在元素才绑定，控制台恢复干净；
- **地形模块**：当前副本确实缺少 `terrain.css` / `terrain-core.js` / `terrain-ui.js`，不再强行加载三个 404 资源，直接打开会显示“暂不可用”说明并保留在线地图入口；
- **数字农业入口**：移除页脚不存在的模块级 `AGENTS.md` / `README.md` 链接，改指项目 README 与种植模块。

### 已知限制（非阻断）

- 地形模块和多地块规划入口因本地资源缺失暂时隐藏；直接打开 `map-plot/terrain/index.html` 会显示“暂不可用”说明并停止加载缺失资源，补齐 `terrain.css` / `terrain-core.js` / `terrain-ui.js` 后即可恢复；
- 水泵/电机按 1.1Q、同扬程粗选，未接厂家泵曲线；施工前必须用厂家曲线、NPSHr 和实际管路复核；
- 计算采用稳定流、均质土壤和简化水锤模型，不替代施工图审查与现场试运行。

## 版权说明

本副本来源于公开部署的 GitHub Pages 站点，代码版权归原作者所有；仅用于个人学习、
研究与本地使用，请勿用于商业分发。

## 发布到 Cloudflare Pages

1. 在本目录运行 `python3 scripts/build_site.py`，生成 `../lvyingqianqing-site/` 和 `../lvyingqianqing-site.zip`；
2. 登录 Cloudflare Dashboard → **Workers & Pages** → **Create** → **Pages** → **Upload assets**；
3. 项目名建议 `lvyingqianqing`，上传 `lvyingqianqing-site.zip` 或整个 `lvyingqianqing-site/` 目录；
4. 部署完成后访问 `https://lvyingqianqing.pages.dev/`；若项目名被占用，改用其他名称，并同步修改 `index.html`、`robots.txt`、`sitemap.xml` 中的站点地址；
5. 百度收录：登录 [百度搜索资源平台](https://ziyuan.baidu.com/)，添加站点并完成验证，然后提交 `https://你的域名/sitemap.xml`；当前 HTML 标签验证代码已写入 `index.html`（`codeva-k4OQpudZ70`），重新构建会自动保留；如更换站点或百度账号，重新构建时加 `--baidu-verification <新代码>`；
6. 若绑定中国大陆服务器/自定义域名，需要按服务商要求完成 ICP 备案；Cloudflare Pages 默认域名不需要备案。

发布包已排除 `tests/`、`_archive/`、`scripts/`、本地服务日志和备份文件，不会把测试夹具或开发文件公开。
