观澜 v2 源代码快照(旁证实验)

zhouyang.xie 4866f71f27 按用户令去掉 VBScript: 无窗口启动改为 pythonw.exe + Python 启动器 + 安装时建快捷方式; 并修两处入口脚本编码事故 (install.ps1 掉 BOM / install.sh 是 CRLF), 编码守则 + .gitattributes 机器强制 (只钉 .bat/.ps1/.sh, 不制造 EOL 全仓改动) пре 3 недеља
configs d90da058aa 路径跨平台化: 新增 src/paths.py 唯一真源 + 相对路径门禁 + 回归指纹 пре 1 месец
data 54f7e34e1a A2: 数据层四项数据源目录改为 data/raw/<场站名称>/{scada_10min,故障报警,风机故障记录,油样报告} пре 1 месец
docs 4866f71f27 按用户令去掉 VBScript: 无窗口启动改为 pythonw.exe + Python 启动器 + 安装时建快捷方式; 并修两处入口脚本编码事故 (install.ps1 掉 BOM / install.sh 是 CRLF), 编码守则 + .gitattributes 机器强制 (只钉 .bat/.ps1/.sh, 不制造 EOL 全仓改动) пре 3 недеља
reference c5cb06a962 观澜·如东样板 v2 v0.2.0 基线入库 (含 2026-09-11 现场修复) пре 1 месец
release d7e253bfc0 交付包 v0.4.0: 打包不含 输入数据/产物/日志 (用户令 2026-09-16) пре 3 недеља
resources c5cb06a962 观澜·如东样板 v2 v0.2.0 基线入库 (含 2026-09-11 现场修复) пре 1 месец
scripts 4866f71f27 按用户令去掉 VBScript: 无窗口启动改为 pythonw.exe + Python 启动器 + 安装时建快捷方式; 并修两处入口脚本编码事故 (install.ps1 掉 BOM / install.sh 是 CRLF), 编码守则 + .gitattributes 机器强制 (只钉 .bat/.ps1/.sh, 不制造 EOL 全仓改动) пре 3 недеља
src 4866f71f27 按用户令去掉 VBScript: 无窗口启动改为 pythonw.exe + Python 启动器 + 安装时建快捷方式; 并修两处入口脚本编码事故 (install.ps1 掉 BOM / install.sh 是 CRLF), 编码守则 + .gitattributes 机器强制 (只钉 .bat/.ps1/.sh, 不制造 EOL 全仓改动) пре 3 недеља
vendor c5cb06a962 观澜·如东样板 v2 v0.2.0 基线入库 (含 2026-09-11 现场修复) пре 1 месец
.gitattributes 4866f71f27 按用户令去掉 VBScript: 无窗口启动改为 pythonw.exe + Python 启动器 + 安装时建快捷方式; 并修两处入口脚本编码事故 (install.ps1 掉 BOM / install.sh 是 CRLF), 编码守则 + .gitattributes 机器强制 (只钉 .bat/.ps1/.sh, 不制造 EOL 全仓改动) пре 3 недеља
.gitignore ae8e4191bb gitignore: 忽略 --off --archive-old 留下的上一代暂存区 (_products_off_prev_*/) пре 4 недеља
README_先读我.txt 4866f71f27 按用户令去掉 VBScript: 无窗口启动改为 pythonw.exe + Python 启动器 + 安装时建快捷方式; 并修两处入口脚本编码事故 (install.ps1 掉 BOM / install.sh 是 CRLF), 编码守则 + .gitattributes 机器强制 (只钉 .bat/.ps1/.sh, 不制造 EOL 全仓改动) пре 3 недеља
VERSION c5cb06a962 观澜·如东样板 v2 v0.2.0 基线入库 (含 2026-09-11 现场修复) пре 1 месец
check.bat 4866f71f27 按用户令去掉 VBScript: 无窗口启动改为 pythonw.exe + Python 启动器 + 安装时建快捷方式; 并修两处入口脚本编码事故 (install.ps1 掉 BOM / install.sh 是 CRLF), 编码守则 + .gitattributes 机器强制 (只钉 .bat/.ps1/.sh, 不制造 EOL 全仓改动) пре 3 недеља
guanlan.py 4866f71f27 按用户令去掉 VBScript: 无窗口启动改为 pythonw.exe + Python 启动器 + 安装时建快捷方式; 并修两处入口脚本编码事故 (install.ps1 掉 BOM / install.sh 是 CRLF), 编码守则 + .gitattributes 机器强制 (只钉 .bat/.ps1/.sh, 不制造 EOL 全仓改动) пре 3 недеља
guanlan.py.bak-bomfix c5cb06a962 观澜·如东样板 v2 v0.2.0 基线入库 (含 2026-09-11 现场修复) пре 1 месец
guanlan.py.bak-pyfix c5cb06a962 观澜·如东样板 v2 v0.2.0 基线入库 (含 2026-09-11 现场修复) пре 1 месец
install.bat 4866f71f27 按用户令去掉 VBScript: 无窗口启动改为 pythonw.exe + Python 启动器 + 安装时建快捷方式; 并修两处入口脚本编码事故 (install.ps1 掉 BOM / install.sh 是 CRLF), 编码守则 + .gitattributes 机器强制 (只钉 .bat/.ps1/.sh, 不制造 EOL 全仓改动) пре 3 недеља
install.ps1 4866f71f27 按用户令去掉 VBScript: 无窗口启动改为 pythonw.exe + Python 启动器 + 安装时建快捷方式; 并修两处入口脚本编码事故 (install.ps1 掉 BOM / install.sh 是 CRLF), 编码守则 + .gitattributes 机器强制 (只钉 .bat/.ps1/.sh, 不制造 EOL 全仓改动) пре 3 недеља
install.ps1.bak-bomfix c5cb06a962 观澜·如东样板 v2 v0.2.0 基线入库 (含 2026-09-11 现场修复) пре 1 месец
install.ps1.bak-pyfix c5cb06a962 观澜·如东样板 v2 v0.2.0 基线入库 (含 2026-09-11 现场修复) пре 1 месец
install.sh 4866f71f27 按用户令去掉 VBScript: 无窗口启动改为 pythonw.exe + Python 启动器 + 安装时建快捷方式; 并修两处入口脚本编码事故 (install.ps1 掉 BOM / install.sh 是 CRLF), 编码守则 + .gitattributes 机器强制 (只钉 .bat/.ps1/.sh, 不制造 EOL 全仓改动) пре 3 недеља
install.sh.bak-pyfix c5cb06a962 观澜·如东样板 v2 v0.2.0 基线入库 (含 2026-09-11 现场修复) пре 1 месец
requirements.txt 01ddb723e1 数据链补齐: 从 data/raw 重算/更新产物 (报警/工单/油样) + 等价验收 пре 1 месец
start.bat 4866f71f27 按用户令去掉 VBScript: 无窗口启动改为 pythonw.exe + Python 启动器 + 安装时建快捷方式; 并修两处入口脚本编码事故 (install.ps1 掉 BOM / install.sh 是 CRLF), 编码守则 + .gitattributes 机器强制 (只钉 .bat/.ps1/.sh, 不制造 EOL 全仓改动) пре 3 недеља
start.bat.bak-healthz c5cb06a962 观澜·如东样板 v2 v0.2.0 基线入库 (含 2026-09-11 现场修复) пре 1 месец
stop.bat 4866f71f27 按用户令去掉 VBScript: 无窗口启动改为 pythonw.exe + Python 启动器 + 安装时建快捷方式; 并修两处入口脚本编码事故 (install.ps1 掉 BOM / install.sh 是 CRLF), 编码守则 + .gitattributes 机器强制 (只钉 .bat/.ps1/.sh, 不制造 EOL 全仓改动) пре 3 недеља
测试须知.txt c5cb06a962 观澜·如东样板 v2 v0.2.0 基线入库 (含 2026-09-11 现场修复) пре 1 месец

README_先读我.txt

观澜·如东样板 v2 0.4.0 — 单包全量离线应用 (Windows / Linux / macOS)

= Windows 的 .venv\Scripts\python.exe, 或 Linux·macOS 的 .venv/bin/python;
命令里路径写 / 即可两平台通用; Windows 也可以只双击 .bat, 不必敲命令。

★ 本包**不含 输入数据(data/) · 产物(outputs/) · 日志(logs/, run/)**(用户令 2026-09-16):
解压安装后页面会显示"无产物"; 把现场数据包放好后跑一次重算(第四节), 页面立刻有数。
随包内容 = 程序/配置/门户与三维资产/交付文档/离线依赖轮子/便携运行时 (没有数据与产物)。

一、安装 (约 10 分钟; 安装目录不要有空格和中文)
Windows : 解压到 D:\guanlan\app → 双击 install.bat (自动选 Python → 建 .venv → 包内轮子离线装依赖)
Linux : 解压到 /opt/guanlan → sh install.sh (麒麟 V10 / 统信 UOS 20 / Ubuntu / CentOS / macOS;
多版本机器: GUANLAN_PY=/usr/bin/python3.11 sh install.sh)
没装 Python 的机器也能装: 包内有便携运行时(Windows / Linux x86_64 / Linux aarch64), 安装脚本自动用。
离线边界: Windows 侧包内带全部轮子, 完全离线可装; **Linux·macOS 侧包内没带轮子**, install.sh 会自动
改为联网安装 —— 要离线装就把对应平台轮子放进 wheels/linux_x86_64 或 wheels/macos_arm64 再装。
模型(可选, 只影响问答与本地审核页): ollama pull qwen3:8b / deepseek-r1:14b / bge-m3

二、启动 / 停止
Windows : 双击 check.bat 全绿 → 双击「启动观澜」快捷方式(安装时自动建: 根目录 + 桌面各一份;
目标 = .venv\Scripts\pythonw.exe, **完全不出现命令窗口**) 或双击 start.bat
(会闪一下窗口 —— .bat 是控制台程序, 想完全无窗就用上面那个快捷方式) 停止: 双击 stop.bat
Linux : guanlan.py check → guanlan.py serve 停止: guanlan.py stop
三个入口: 门户 http://127.0.0.1:28084/ · 工作台 /detail/ · 运维控制台 /ops
排障要看见实时日志: 双击 start.bat console (前台模式, 关窗即停服务); 本包**不含 VBScript**,
无窗口启动不依赖 Windows 脚本宿主(WSH 被策略禁用的服务器上同样可用)。

三、重算与产物 (门户菜单「数据重算」, 或直接开 http://127.0.0.1:28084/ops)
一个按钮一件事: 停/启服务 · 执行重算 · 清除产物。按钮按真实状态启用(不能做的灰, 后端也拒绝,
直接打 API 返回 409); "启动服务"起来后自动打开门户; "停止组件服务"保留控制台本身; 同时刻只允许
一个动作, 页面上有进度/退出码/实时日志尾巴。重算进行中按钮按设计禁用 —— 那不是坏了。
★ 清除产物 = **直接删除, 不留备份**(用户令 2026-09-16; 旧的 --on 还原已移除), 不动 data/raw、release;
要补回"包内没有生成端"的随包件: scripts/products_restore_missing.py --stash <交付包.zip>

四、放数据后重算 (一条命令; 控制台点"执行重算"等价)
scripts/place_raw_data.py --src <现场包目录> --scope full 放数据(同尺寸自动跳过, 可反复跑)
scripts/rebuild_all.py [--skip-scada] [--src <现场包目录>] 默认含 SCADA 侧约 15 分钟;
只换台账类数据加 --skip-scada(约 2 分钟); --dry-run 只看计划; 完事自动重启组件服务。
算成功判据: /detail/ 左栏「系统维护」两屏, 或 -m src.ontology.maintenance
重算后应达锚点: 报警 39211 · 工单 5876 · 油样 404 · temp_monthly 19494 · 本体 9702 对象(审计 0 问题)

五、必读 (如实)
· 页面的数来自 outputs/<场站> 下的产物, 产物由 data/raw 下的原始件算出来(下一级目录名=场站名, 扫描辨识)。
本包两样都没带: 没有 data/raw 时重算会"没有源件可算", 没有 outputs/ 时页面显示"无产物"。
· 有一批产物**没有生成端**(pitch_daily、pc_monthly_bins、CMS/TCM 链等): 从交付包按需补齐
(products_restore_missing.py --stash <交付包.zip>), 补齐后逐件来源见 outputs/<场站>/_provenance.json。
· 某页没数据: 先看控制台的退出码与 logs/, 再看 docs/重算缺口与补件清单_v0.1.md。

包内含: 程序与配置 / 门户与仿真 / 三维资产 release/viewer / 治理清单交付件 release/如东(客户交付物勿外传) /
离线依赖轮子 wheels/ / 便携运行时 vendor/ / 交付文档 docs/
包内不含: data/(输入数据) · outputs/(产物) · logs/ run/(日志) · .venv(安装时重建) · .git(版本库)

详细说明: docs/系统设计说明.md · docs/重算操作手册_v0.1.md
docs/数据目录结构与落位约定_v0.2.md · docs/重算缺口与补件清单_v0.1.md
docs/振动数据接入_v0.1.md(振动侧 CMS/TCM 落位与摄入) · docs/说明书_观澜如东样板v2_v0.2.md