zhouyang.xie 0edf335a78 2.40.1 rpt_export 组装侧就绪: report_views.py + /api/rpt_export_raw(字节) + 补搬 _jclean/_redact 与别名导入; 自检导出 36873B docx 成功; 修 app.py 缩进与命名冲突; HTTP/Java/裁判二进制比对待下轮 1 týždeň pred
..
app_algorithmModel_guanlan 0edf335a78 2.40.1 rpt_export 组装侧就绪: report_views.py + /api/rpt_export_raw(字节) + 补搬 _jclean/_redact 与别名导入; 自检导出 36873B docx 成功; 修 app.py 缩进与命名冲突; HTTP/Java/裁判二进制比对待下轮 1 týždeň pred
common 26f1eca47f 2.13.0 P9 源码目录结构变更: 实现包上提模块根(app_X/app_X_guanlan)+旧前缀别名(同名同体)+每模块 common/configs/data/README.MD/install-run-uninstall 包装+配置双根(app_ETL/app_frontEnd configs 下放, 取用口多根+单源+owner); 修文档构建器死循环(落单反引号)并支持代码栅栏 1 týždeň pred
configs 26f1eca47f 2.13.0 P9 源码目录结构变更: 实现包上提模块根(app_X/app_X_guanlan)+旧前缀别名(同名同体)+每模块 common/configs/data/README.MD/install-run-uninstall 包装+配置双根(app_ETL/app_frontEnd configs 下放, 取用口多根+单源+owner); 修文档构建器死循环(落单反引号)并支持代码栅栏 1 týždeň pred
data 26f1eca47f 2.13.0 P9 源码目录结构变更: 实现包上提模块根(app_X/app_X_guanlan)+旧前缀别名(同名同体)+每模块 common/configs/data/README.MD/install-run-uninstall 包装+配置双根(app_ETL/app_frontEnd configs 下放, 取用口多根+单源+owner); 修文档构建器死循环(落单反引号)并支持代码栅栏 1 týždeň pred
README.md 1a3867e369 2.15.0 P10 算法服务化: FastAPI 服务(app_algorithmModel/service: app/registry/jsonable/deps) 11 个只读端点 + /docs + /api/{名}/raw 对拍; 端口 18050 登记 serve.json; FastAPI 栈离线随包 vendor/pyfastapi(15.9MB)+deps 兜底; 逐值对拍 11 端点+3 带参全一致; 设计说明 §3.5; 文档/版本表同步 1 týždeň pred
__init__.py 98adf72dce 2.11.0 命名对齐用户示例: app_algorithm->app_algorithmModel, app_dataAccess->app_ETL(目录/包/登记/文档/版本记录同步) 1 týždeň pred
install.bat 899d17147f 2.14.0 分别打包: pack_dist --module(四模块各自成包, 真实依赖闭包=全模块) + MODULE_PACKAGE.json 标记 + 模块 install/run/uninstall 双模 + app_common bootstrap.py(独立装/检/跑/卸) + --verify --module; 根 VERSION 镜像纳入版本门; 文档与版本表同步 1 týždeň pred
install.sh 899d17147f 2.14.0 分别打包: pack_dist --module(四模块各自成包, 真实依赖闭包=全模块) + MODULE_PACKAGE.json 标记 + 模块 install/run/uninstall 双模 + app_common bootstrap.py(独立装/检/跑/卸) + --verify --module; 根 VERSION 镜像纳入版本门; 文档与版本表同步 1 týždeň pred
run.bat 899d17147f 2.14.0 分别打包: pack_dist --module(四模块各自成包, 真实依赖闭包=全模块) + MODULE_PACKAGE.json 标记 + 模块 install/run/uninstall 双模 + app_common bootstrap.py(独立装/检/跑/卸) + --verify --module; 根 VERSION 镜像纳入版本门; 文档与版本表同步 1 týždeň pred
run.sh 899d17147f 2.14.0 分别打包: pack_dist --module(四模块各自成包, 真实依赖闭包=全模块) + MODULE_PACKAGE.json 标记 + 模块 install/run/uninstall 双模 + app_common bootstrap.py(独立装/检/跑/卸) + --verify --module; 根 VERSION 镜像纳入版本门; 文档与版本表同步 1 týždeň pred
uninstall.bat 899d17147f 2.14.0 分别打包: pack_dist --module(四模块各自成包, 真实依赖闭包=全模块) + MODULE_PACKAGE.json 标记 + 模块 install/run/uninstall 双模 + app_common bootstrap.py(独立装/检/跑/卸) + --verify --module; 根 VERSION 镜像纳入版本门; 文档与版本表同步 1 týždeň pred
uninstall.sh 899d17147f 2.14.0 分别打包: pack_dist --module(四模块各自成包, 真实依赖闭包=全模块) + MODULE_PACKAGE.json 标记 + 模块 install/run/uninstall 双模 + app_common bootstrap.py(独立装/检/跑/卸) + --verify --module; 根 VERSION 镜像纳入版本门; 文档与版本表同步 1 týždeň pred

README.md

观澜 · 算法(app_algorithmModel/)

职责:七系统判级矩阵、七镜头曲线、可靠性指标、控制参数一致性、融合面四源、振动与温度面、趋势与可用率

允许依赖:app_common, app_ETL

对外公开面:common/app_algorithmModel_guanlan/api.py —— 模块间调用只许走这里(scripts/module_boundary_audit.py 机器检查)。

当前实现落点(P3 已实体迁入):src/windscada/{taxonomy,audit}.py、src/windscada/perf/*、src/windscada/subsys/*、src/windcms/{report_std,tcm,knowledge,cross_review,audit_rules,pipeline}.py

迁移状态:P3 已完成(2026-09-22) —— 26 个文件 / 3,858 行迁入本模块(taxonomy、audit、perf/*、subsys/*、随迁的 windcms 分析件 6 个);旧路径 src/windscada/{taxonomy,audit,perf/*,subsys/*} 与 src/windcms/<6 件> 留兼容转发壳。65 处相对导入按表改写 50 处(其余是包内相对导入,子包结构未变故保持原样)。验收:逐值对拍 —— 迁移前后 25 项算法输出(判级矩阵、七镜头曲线、M9、可靠性、四轴 registry、曲线/限电/故障/趋势/功率曲线)24 项逐字节一致,唯一差异是 trend.attribution_router 报出的"缺件名"(因快照自身写产物而变);同状态重跑两次 25/25 完全一致(总哈希相同)⇒ 算法输出零变化。实逮并修掉:① 改写规则顺序误伤 windcms 侧 .data/.config(5 处);② from . import data 类相对导入未在规则内(已覆盖);③ 公共层/数据层的函数级公开名需在 api 中显式暴露(已补 load_10min/contracted_cols/slim)。

依据:docs/重构方案_模块化_v0.1.md(用户令 2026-09-22:只重构目录与接口、零行为变化、逐版本可回滚)。

安装部署与运行

本系统是单包离线交付:解压到无空格无中文路径 → 安装 → 自检 → 启动(一套安装,七个模块共用一份 .venv)。 本模块目录里的脚本只是入口包装,内部调安装根的统一入口,保证"进模块目录也能装/跑/卸":

动作 Windows Linux/macOS 内部实际调用
安装 install.bat sh install.sh 安装根 install.bat / install.sh(建 .venv、装依赖、自检、注册服务)
运行 run.bat sh run.sh 安装根 start.bat(Windows)/python guanlan.py serve(跨平台)
卸载 uninstall.bat sh uninstall.sh 安装根 uninstall.bat / uninstall.sh

目录约定(P9,2026-09-28 用户令):

app_algorithmModel/
  common/               模块内通用插件/组件(旧导入前缀的兼容别名在此保留一个版本)
  configs/              本模块专属配置域(共用单件在安装根 configs/)
  data/                 模块相关数据件(运行期数据在安装根 data/、outputs/)
  app_algorithmModel_guanlan/                观澜在本模块的实现包(模块间调用只许经其中的 api.py)
  README.MD             本文件(职责 / 公开面 / 安装部署与运行)
  install.bat|sh  uninstall.bat|sh  run.bat|sh

自检与打包:安装根 check.bat(=python guanlan.py check)、pack.bat / sh pack.sh (打包 + 开箱验证:页面 5/5 + 卸载核验)。

算法服务(FastAPI,P10 起)

算法层对外提供 HTTP 服务(用户令 2026-09-29 的目标技术栈:算法 = Python + FastAPI), 它是后端(各栈)与前端调用算法的统一入口,只读、不改盘上产物:

python scripts/algorithm_service.py --host 127.0.0.1 --port 18050   # 端口登记在 configs/serve.json 的 algorithm
# Swagger UI: http://127.0.0.1:18050/docs      OpenAPI: /openapi.json
端点 取数 参数
/api/systems 判级维度字典(七系统 + 温度通道→系统) —
/api/matrix 七系统判级矩阵(与 /detail/api/fleet 的 sysmx 同源) —
/api/reconcile 判级与台账对账 —
/api/reliability 可靠性总览 since
/api/problems 当前问题清单 —
/api/availability_summary 可用率摘要 month_from
/api/fusion 融合面四源表 all_turbines
/api/handoff 振动融合交接件 —
/api/pitch 变桨面(日粒度 + 零位三口径) —
/api/curves · /api/curves_check 曲线仓(只读)· 曲线物理性检查 —
/healthz · /api/endpoints · /api/{名}/raw 存活 · 端点自述 · 确定性 JSON 文本(对拍用) —
  • 不改行为的证明:/api/<端点>/raw 的确定性 JSON 与进程内直调同一函数的 JSON 逐字节相同 (2026-09-29 实测 11 端点 + 3 带参抽查全部一致)。
  • 离线依赖:FastAPI 运行栈随包在 vendor/pyfastapi/(15.9 MB),service/deps.py 在导入失败时插 sys.path。
  • 模块包独立运行时也可用:run.bat service / sh run.sh service(内部走 bootstrap)。