|
@@ -284,6 +284,7 @@
|
|
|
| 2026-09-17 | 打包后**对着 zip 条目逐件复核**(3,733 件全部与工作树逐字节相同)+ 开箱验证:解压 3,734 件 → ①b 闭合与编码守则通过 → 离线安装 rc=0(172 s)→ ②b 快捷方式在位 + `console_hwnd=0` 无窗口成立 + 包内无 `.vbs` → 页面 4/5(`/` 与主包同字节;`/cms/` 503 属无产物预期) |
|
|
| 2026-09-17 | 打包后**对着 zip 条目逐件复核**(3,733 件全部与工作树逐字节相同)+ 开箱验证:解压 3,734 件 → ①b 闭合与编码守则通过 → 离线安装 rc=0(172 s)→ ②b 快捷方式在位 + `console_hwnd=0` 无窗口成立 + 包内无 `.vbs` → 页面 4/5(`/` 与主包同字节;`/cms/` 503 属无产物预期) |
|
|
|
| 2026-09-17 | **用户令 1「页面是否属于产物」的落地(见 §10)**:新建登记表 `configs/portal_pages.yaml`(20 个页面/子页 + 五类 kind + 逐条判定依据)与检查器 `scripts/pages_audit.py`(五条机器规则;**陈旧检测** rc=7:内嵌快照的 `source_sha256` 与当前产物不符即报"数据变了页面没变");`guanlan.py check` 增一行;`rebuild_all.py` 增 ⑧b「重装门户(把新产物灌进门户结论段)」与 ⑧c「页面归口审计」;文档增 §10(含用户问的三页逐页判定)。**结论**:`#findings` 静态、非产物;`#sim` 本体是图纸派生的冻结资料包、其中"实际运行回放"面板属产物;`#documents` 里治理清单/报告是冻结交付件,而脱敏状态一览与取数单属产物且缺生成端与溯源(已入 §7 缺口表) |
|
|
| 2026-09-17 | **用户令 1「页面是否属于产物」的落地(见 §10)**:新建登记表 `configs/portal_pages.yaml`(20 个页面/子页 + 五类 kind + 逐条判定依据)与检查器 `scripts/pages_audit.py`(五条机器规则;**陈旧检测** rc=7:内嵌快照的 `source_sha256` 与当前产物不符即报"数据变了页面没变");`guanlan.py check` 增一行;`rebuild_all.py` 增 ⑧b「重装门户(把新产物灌进门户结论段)」与 ⑧c「页面归口审计」;文档增 §10(含用户问的三页逐页判定)。**结论**:`#findings` 静态、非产物;`#sim` 本体是图纸派生的冻结资料包、其中"实际运行回放"面板属产物;`#documents` 里治理清单/报告是冻结交付件,而脱敏状态一览与取数单属产物且缺生成端与溯源(已入 §7 缺口表) |
|
|
|
| 2026-09-17 | **用户令 2「统一配置与日志」的落地(见 §11)**:① 配置——`src/paths.py` 增唯一取用口 `P.config()/P.config_dir()/P.farm_config()`,9 个模块不再手拼 configs 路径;新增登记表 `configs/registry.yaml` 与检查器 `scripts/config_audit.py`(R1–R8);修掉三处真问题:**10 个场定义 YAML 因 `available()` 只 glob `*.json` 而"配了看不见"**(并查明它们其实是另一条链的机型/物理约束 profile,逐件登记在册)、坏模板 `_模板.json.example`(GBK 乱码 + 写死 `/Volumes/WINDDATA`)重写为 `_模板.yaml.example`、`sop/wrapup.py` 拼了不存在的 `configs/<场>/` 路径;删除 `serve.json.bak-bomfix`;5 处"代码引用但包里没有"的配置登进 `known_missing` 并写明影响。② 日志——新增 `src/logfile.py`(目录/命名/行格式唯一口径 + `prefix_stdout()` 流包装 + 动作日志保留 20 份/30 天 + `logs/build` 归位口)与 `scripts/log_audit.py`(L1–L5);6 个服务 + 启动器 + 运维动作全部接入统一格式(`viewer`/`sim` 改走新增的 `scripts/static_server.py`);**把 39 个躺在产物目录里的构建日志搬到 `logs/build/` 并同步重算产物台账**(2309→2270 件,`呼应校验` 仍 rc=0)、22 份历史动作日志与 8 个服务日志的旧内容归档 `logs/legacy/`;`guanlan.py check` 增两行 |
|
|
| 2026-09-17 | **用户令 2「统一配置与日志」的落地(见 §11)**:① 配置——`src/paths.py` 增唯一取用口 `P.config()/P.config_dir()/P.farm_config()`,9 个模块不再手拼 configs 路径;新增登记表 `configs/registry.yaml` 与检查器 `scripts/config_audit.py`(R1–R8);修掉三处真问题:**10 个场定义 YAML 因 `available()` 只 glob `*.json` 而"配了看不见"**(并查明它们其实是另一条链的机型/物理约束 profile,逐件登记在册)、坏模板 `_模板.json.example`(GBK 乱码 + 写死 `/Volumes/WINDDATA`)重写为 `_模板.yaml.example`、`sop/wrapup.py` 拼了不存在的 `configs/<场>/` 路径;删除 `serve.json.bak-bomfix`;5 处"代码引用但包里没有"的配置登进 `known_missing` 并写明影响。② 日志——新增 `src/logfile.py`(目录/命名/行格式唯一口径 + `prefix_stdout()` 流包装 + 动作日志保留 20 份/30 天 + `logs/build` 归位口)与 `scripts/log_audit.py`(L1–L5);6 个服务 + 启动器 + 运维动作全部接入统一格式(`viewer`/`sim` 改走新增的 `scripts/static_server.py`);**把 39 个躺在产物目录里的构建日志搬到 `logs/build/` 并同步重算产物台账**(2309→2270 件,`呼应校验` 仍 rc=0)、22 份历史动作日志与 8 个服务日志的旧内容归档 `logs/legacy/`;`guanlan.py check` 增两行 |
|
|
|
|
|
+| 2026-09-17 | **用户令 1「装成服务 + 安装时检查版本」的落地(见 §14)**:新增版本单一真源 `src/version.py`;安装脚本增"步骤 0"——读 `install-info.json` 比对已装版本(相同/升级/降级/老安装无记录四类提示),交互式询问是否重装(`-Force`/`--force` 跳过,非交互自动继续),装完写安装记录(version/时间/解释器/运行方式);服务化:**Windows 服务**(`scripts/win_service.py` **ctypes 直连 SCM,不依赖 pywin32**)+ **systemd 单元**(`scripts/service_main.py` + `guanlan.service`)+ 免管理员的"登录自启"备选;两平台共用工作体 `scripts/service_worker.py`(起/守护/停都走现成的 `guanlan.py serve|stop`,口径与手工一致);注册器 `scripts/service_ctl.py`(status/install/uninstall/start/stop/restart + `--dry-run` 打印逐条命令与单元全文;无权限时给三条可执行建议而不是抛 Access denied)。另:修掉网关轮询与执行器"写回退出码"的**竞态**(实测 14:58 清产物 rc=0 却被页面显示成"未拿到退出码")。本机非管理员 ⇒ 已用 `--dry-run`/`--debug --once`/直跑服务体报 1063 三条路径自证,见 §14.3 |
|
|
|
| 2026-09-17 | **清产物 → 重算链走通(并暴露"包不随产物"的连带后果)**:用户 13:05 执行「清除产物」(真删、无备份),之后重算在 ⑦ 本体层失败 —— `pitch_daily.parquet`/`handoff_vibration_v2.json` 属"包内无生成端"的件,而交付包按用户令已不含产物 ⇒ **目标机/清空后的机器上必然缺**,代码却按"缺了就抛"处理,把整条链打断(实测 2267 s 后 rc=1)。修法见 §7/§11.4:`windcms`(空表 + 结构化无产物页,不再掐连接)、`pitch`、`taxonomy.system_matrix`(`_cell()` 逐格兜底 + `_缺件说明`)、`fusion`(响亮降级而非抛错);修完把 ⑦⑧ 跑完:对象 9,613、`ontology.audit` rc=0,SCADA 锚点 39,211/5,876/404/19,494 全对,呼应校验正常。另把开箱验证改为**不打扰运行中的实例**(见上一条),实测验证期间主实例 6/7 全程在跑、副本 5/5 页面可用。⚠ **后果如实记**:这批无生成端的产物已无可恢复来源(包不含产物、本机无旧包),要保留请用 `--with-products` 打一份带产物的包存档 |
|
|
| 2026-09-17 | **清产物 → 重算链走通(并暴露"包不随产物"的连带后果)**:用户 13:05 执行「清除产物」(真删、无备份),之后重算在 ⑦ 本体层失败 —— `pitch_daily.parquet`/`handoff_vibration_v2.json` 属"包内无生成端"的件,而交付包按用户令已不含产物 ⇒ **目标机/清空后的机器上必然缺**,代码却按"缺了就抛"处理,把整条链打断(实测 2267 s 后 rc=1)。修法见 §7/§11.4:`windcms`(空表 + 结构化无产物页,不再掐连接)、`pitch`、`taxonomy.system_matrix`(`_cell()` 逐格兜底 + `_缺件说明`)、`fusion`(响亮降级而非抛错);修完把 ⑦⑧ 跑完:对象 9,613、`ontology.audit` rc=0,SCADA 锚点 39,211/5,876/404/19,494 全对,呼应校验正常。另把开箱验证改为**不打扰运行中的实例**(见上一条),实测验证期间主实例 6/7 全程在跑、副本 5/5 页面可用。⚠ **后果如实记**:这批无生成端的产物已无可恢复来源(包不含产物、本机无旧包),要保留请用 `--with-products` 打一份带产物的包存档 |
|
|
|
| 2026-09-17 | **现场事故二连(清产物后登录报"模块不可用")**:① `windcms` 在**无产物**时自毁 —— `data.load_scalars` 的 `pd.concat([])` 抛 `ValueError` 带走进程、`serve.py` 读不到产物页 `index.html` 直接掐断连接;改为返回空表 + 结构化「无产物」页(HTTP 200,页面写清"缺哪件/怎么补"),实测 CMS 在 `outputs/` 为空时 `GET /` → 200 / 48 KB。② `pack_dist.py --verify` 原先**必须**占用默认组件端口 ⇒ 要先停掉用户正在跑的服务(用户点「登录」正好撞上验证窗口);把 `guanlan_gateway.ROUTES` 的上游端口改为可被 `configs/serve.json` 覆盖(端口单一真源),验证改为**副本整套换端口**(网关 28700 + 组件 28800+),不再打扰主实例。见 §11.4 |
|
|
| 2026-09-17 | **现场事故二连(清产物后登录报"模块不可用")**:① `windcms` 在**无产物**时自毁 —— `data.load_scalars` 的 `pd.concat([])` 抛 `ValueError` 带走进程、`serve.py` 读不到产物页 `index.html` 直接掐断连接;改为返回空表 + 结构化「无产物」页(HTTP 200,页面写清"缺哪件/怎么补"),实测 CMS 在 `outputs/` 为空时 `GET /` → 200 / 48 KB。② `pack_dist.py --verify` 原先**必须**占用默认组件端口 ⇒ 要先停掉用户正在跑的服务(用户点「登录」正好撞上验证窗口);把 `guanlan_gateway.ROUTES` 的上游端口改为可被 `configs/serve.json` 覆盖(端口单一真源),验证改为**副本整套换端口**(网关 28700 + 组件 28800+),不再打扰主实例。见 §11.4 |
|
|
|
| 2026-09-17 | **用户令「实现打包功能」的落地(见 §9)**:打包器默认口径改为**一条命令、零开关** —— `outputs/`(产物/输出数据)由"默认打进包"改为**默认不含**(例外用 `--with-products`,旧开关 `--no-products` 保留兼容),并新增两类排除:**运行日志兜底**(`logs/` `run/` 之外,任何位置的 `*.log`/`*.jsonl` 都不进包)与**临时文件**(`*_cache/ __pycache__ .pytest_cache .npm-cache .qa-profile`、`*.tmp *.temp *.bak* *.old *.orig *.rej *.swp *~ ~$*`、`.DS_Store Thumbs.db desktop.ini` 等);`dist-manifest.json` 增 `no_temp` 并保留逐条排除理由;新增**双击可用**的打包入口 `pack.bat`(`dry`/`verify` 子命令)与 `pack.sh`、`scripts/pack_verify_entry.py`(自动找最新 zip);`pack.bat`/`pack.sh` 纳入入口引用闭合检查。同时按用户令把 `README_先读我.txt` **改名为 `README_先读我.MD`** 并在其中新增第五节「打包」(命令/输出位置/四类排除逐条理由/打完自查);`.bat` 全为纯 ASCII(§11.3)。实测:`pack.bat dry` 报 3,430 件 / 1,032.0 MB (含缓存与日志的旧口径是 3,741 件 / 1,091 MB) |
|
|
| 2026-09-17 | **用户令「实现打包功能」的落地(见 §9)**:打包器默认口径改为**一条命令、零开关** —— `outputs/`(产物/输出数据)由"默认打进包"改为**默认不含**(例外用 `--with-products`,旧开关 `--no-products` 保留兼容),并新增两类排除:**运行日志兜底**(`logs/` `run/` 之外,任何位置的 `*.log`/`*.jsonl` 都不进包)与**临时文件**(`*_cache/ __pycache__ .pytest_cache .npm-cache .qa-profile`、`*.tmp *.temp *.bak* *.old *.orig *.rej *.swp *~ ~$*`、`.DS_Store Thumbs.db desktop.ini` 等);`dist-manifest.json` 增 `no_temp` 并保留逐条排除理由;新增**双击可用**的打包入口 `pack.bat`(`dry`/`verify` 子命令)与 `pack.sh`、`scripts/pack_verify_entry.py`(自动找最新 zip);`pack.bat`/`pack.sh` 纳入入口引用闭合检查。同时按用户令把 `README_先读我.txt` **改名为 `README_先读我.MD`** 并在其中新增第五节「打包」(命令/输出位置/四类排除逐条理由/打完自查);`.bat` 全为纯 ASCII(§11.3)。实测:`pack.bat dry` 报 3,430 件 / 1,032.0 MB (含缓存与日志的旧口径是 3,741 件 / 1,091 MB) |
|
|
@@ -409,6 +410,11 @@
|
|
|
| `embed_reports_4` 分系统评估报告 (主轴承/齿轮箱/发电机/变桨, 门户内嵌 4 份) | `frozen-delivery` | 否 | 4 份系统评估报告(0.7–3.4 MB), 无内嵌数据/指纹; 属交付报告(缺版本号/日期登记) |
|
|
| `embed_reports_4` 分系统评估报告 (主轴承/齿轮箱/发电机/变桨, 门户内嵌 4 份) | `frozen-delivery` | 否 | 4 份系统评估报告(0.7–3.4 MB), 无内嵌数据/指纹; 属交付报告(缺版本号/日期登记) |
|
|
|
| `embed_governance_12` 治理清单分册 (门户内嵌 12 份) | `frozen-delivery` | 否 | 12 份治理分册(0–11), 与 release/如东 下的分册同源; 冻结交付件 |
|
|
| `embed_governance_12` 治理清单分册 (门户内嵌 12 份) | `frozen-delivery` | 否 | 12 份治理分册(0–11), 与 release/如东 下的分册同源; 冻结交付件 |
|
|
|
| `embed_sc1_local` SC1 本地占位 (门户内嵌) | `static` | 否 | 0.4 KB 占位面板 |
|
|
| `embed_sc1_local` SC1 本地占位 (门户内嵌) | `static` | 否 | 0.4 KB 占位面板 |
|
|
|
|
|
+| `detail_tabs` 工作台 /detail/v2 的 10 个标签 (SPA) | `live` | **是** | 工作台是单页应用: 外壳一次装载, 每个标签按需 fetch 后端 API, 而 API 现场读产物 (产物指纹 TTL 2s 自动重载) ⇒ 页面本体不存快照、永远与产物一致, 不需要产物管理。 其中 report 标签渲染产物 `outputs/<场>/windcms/report.md`(结论件), 该件属产物并已在台账里。 ★ 2026-09-17 现场: 清产物后 `tab=vibration` 空白, 不是页面坏了, 是它要的
|
|
|
|
|
+ `m5_cms_tcm/{handoff_vibration_v2,component_history,baseline_38}.json` 与 CMS 页面件不在位 (§7/§13.5)。 |
|
|
|
|
|
+| `delivery_pages_all` 交付页 (release/如东 下全部 html) | `frozen-delivery` | 否 | 客户交付件(治理清单分册/全册/正式报告/取数单/脱敏状态一览), 文件名自带版本号+日期 ⇒ 按交付版本冻结。 其中"脱敏状态一览"与"如东取数单"是**数据派生**的(内容随运行状态变) ⇒ 另见 §12 的逐页判定与 known_gap。 |
|
|
|
|
|
+| `viewer_pages_all` 三维页 (release/viewer 下全部 html) | `static` | 否 | 图纸/三维模型派生的资产页(工作台/索引/装配演示), 与 data/raw 无关 ⇒ 不是产物。 |
|
|
|
|
|
+| `portal_embeds_all` 门户内嵌件 (release/portal_src/templates 全部) | `static` | 否 | 门户装配时内嵌进 portal.html 的交付件正文(28 件); 逐件的 kind/是否产物见 §10 的自动表与 §12 的逐页判定 (其中"实际运行回放面板"是 data-derived, 已在台账与登记表两侧管起来)。 |
|
|
|
|
|
|
|
|
<!-- PAGES:END -->
|
|
<!-- PAGES:END -->
|
|
|
|
|
|
|
@@ -576,6 +582,279 @@ R7 每个域必须声明 consumers 或写明"无人读";R8 `configs/farms/`
|
|
|
或生成时间);③ **陈旧检测**(`pages_audit.py` rc=7);④ 进链(`rebuild_all.py` ⑧b 重装门户 + ⑧c 页面审计)。
|
|
或生成时间);③ **陈旧检测**(`pages_audit.py` rc=7);④ 进链(`rebuild_all.py` ⑧b 重装门户 + ⑧c 页面审计)。
|
|
|
**页面侧产物(`outputs/<场>/windcms/*`)另有一条硬要求**:它们必须出现在产物台账 `_provenance.json` 里(见 §13.4 的检查)。
|
|
**页面侧产物(`outputs/<场>/windcms/*`)另有一条硬要求**:它们必须出现在产物台账 `_provenance.json` 里(见 §13.4 的检查)。
|
|
|
|
|
|
|
|
|
|
+
|
|
|
|
|
+<!-- PAGES-INV:BEGIN -->
|
|
|
|
|
+### 12.2 全部网页总清点(自动生成,勿手改)
|
|
|
|
|
+
|
|
|
|
|
+共 **262** 项(门户锚点 / 工作台标签 / 组件页面件 / 组件结论件 / 产物里的过程留痕 / 交付页 / 三维页 / 门户内嵌件 / 仿真资料包页面),其中判定为**产物**的 178 项;未被管起来的 **0** 项。判据:产物树里的件看"在不在产物台账里",网页看"在不在页面登记表里"。
|
|
|
|
|
+
|
|
|
|
|
+| 来源 | 页面/子页 | 是产物? | 依据 | 已登记? |
|
|
|
|
|
+|---|---|---|---|---|
|
|
|
|
|
+| 门户锚点 | `#index` 总览 | 不是 | 外壳页(静态/iframe/链接);逐条判定见 §10 与 §12 | ✔ |
|
|
|
|
|
+| 门户锚点 | `#architecture` 系统架构 | 不是 | 外壳页(静态/iframe/链接);逐条判定见 §10 与 §12 | ✔ |
|
|
|
|
|
+| 门户锚点 | `#method` 方法 | 不是 | 外壳页(静态/iframe/链接);逐条判定见 §10 与 §12 | ✔ |
|
|
|
|
|
+| 门户锚点 | `#findings` 经验发现 | 不是 | 外壳页(静态/iframe/链接);逐条判定见 §10 与 §12 | ✔ |
|
|
|
|
|
+| 门户锚点 | `#case_hydraulic` 案例·液压 | 不是 | 外壳页(静态/iframe/链接);逐条判定见 §10 与 §12 | ✔ |
|
|
|
|
|
+| 门户锚点 | `#cms` 振动·CMS | 不是 | 外壳页(静态/iframe/链接);逐条判定见 §10 与 §12 | ✔ |
|
|
|
|
|
+| 门户锚点 | `#sim` 仿真与回放 | 不是 | 外壳页(静态/iframe/链接);逐条判定见 §10 与 §12 | ✔ |
|
|
|
|
|
+| 门户锚点 | `#documents` 交付文档 | 不是 | 外壳页(静态/iframe/链接);逐条判定见 §10 与 §12 | ✔ |
|
|
|
|
|
+| 门户锚点 | `#admin` 系统状态 | 不是 | 外壳页(静态/iframe/链接);逐条判定见 §10 与 §12 | ✔ |
|
|
|
|
|
+| 门户锚点 | `#recalc` 数据重算 | 不是 | 外壳页(静态/iframe/链接);逐条判定见 §10 与 §12 | ✔ |
|
|
|
|
|
+| 门户锚点 | `#login` 登录 | 不是 | 外壳页(静态/iframe/链接);逐条判定见 §10 与 §12 | ✔ |
|
|
|
|
|
+| 工作台标签 | `tab=overview` | 不是 | SPA 一次装载、按 tab 现场 fetch 产物 ⇒ 页面本体不存快照 | ✔ |
|
|
|
|
|
+| 工作台标签 | `tab=energy` | 不是 | SPA 一次装载、按 tab 现场 fetch 产物 ⇒ 页面本体不存快照 | ✔ |
|
|
|
|
|
+| 工作台标签 | `tab=component` | 不是 | SPA 一次装载、按 tab 现场 fetch 产物 ⇒ 页面本体不存快照 | ✔ |
|
|
|
|
|
+| 工作台标签 | `tab=vibration` | 不是 | SPA 一次装载、按 tab 现场 fetch 产物 ⇒ 页面本体不存快照 | ✔ |
|
|
|
|
|
+| 工作台标签 | `tab=generation` | 不是 | SPA 一次装载、按 tab 现场 fetch 产物 ⇒ 页面本体不存快照 | ✔ |
|
|
|
|
|
+| 工作台标签 | `tab=fault` | 不是 | SPA 一次装载、按 tab 现场 fetch 产物 ⇒ 页面本体不存快照 | ✔ |
|
|
|
|
|
+| 工作台标签 | `tab=decision` | 不是 | SPA 一次装载、按 tab 现场 fetch 产物 ⇒ 页面本体不存快照 | ✔ |
|
|
|
|
|
+| 工作台标签 | `tab=assistant` | 不是 | SPA 一次装载、按 tab 现场 fetch 产物 ⇒ 页面本体不存快照 | ✔ |
|
|
|
|
|
+| 工作台标签 | `tab=report` | 不是 | SPA 一次装载、按 tab 现场 fetch 产物 ⇒ 页面本体不存快照 | ✔ |
|
|
|
|
|
+| 工作台标签 | `tab=system` | 不是 | SPA 一次装载、按 tab 现场 fetch 产物 ⇒ 页面本体不存快照 | ✔ |
|
|
|
|
|
+| 组件结论件 (.md,页面会渲染) | `guanlan/derived/report_summary.md` | **是** | 产物(结论文本);工作台 report tab / CMS report.html 会渲染它;台账: 在 | ✔ |
|
|
|
|
|
+| 产物里的过程留痕 (.md,非网页) | `m5_cms_tcm/gear_grade_38.md` | **是** | 产物,但没有任何页面呈现它(给下游线的交接/复跑记录);台账: 在 | ✔ |
|
|
|
|
|
+| 产物里的过程留痕 (.md,非网页) | `m5_cms_tcm/OEM特征频率复跑_2026-08-17.md` | **是** | 产物,但没有任何页面呈现它(给下游线的交接/复跑记录);台账: 在 | ✔ |
|
|
|
|
|
+| 产物里的过程留痕 (.md,非网页) | `m5_cms_tcm/交接_振动→发电机分析.md` | **是** | 产物,但没有任何页面呈现它(给下游线的交接/复跑记录);台账: 在 | ✔ |
|
|
|
|
|
+| 产物里的过程留痕 (.md,非网页) | `m5_cms_tcm/交接_振动→齿轮箱_行星级中速轴判级.md` | **是** | 产物,但没有任何页面呈现它(给下游线的交接/复跑记录);台账: 在 | ✔ |
|
|
|
|
|
+| 产物里的过程留痕 (.md,非网页) | `m5_cms_tcm/交接_振动→齿轮箱分析.md` | **是** | 产物,但没有任何页面呈现它(给下游线的交接/复跑记录);台账: 在 | ✔ |
|
|
|
|
|
+| 产物里的过程留痕 (.md,非网页) | `m5_cms_tcm/取数与送检需求单_20260827.md` | **是** | 产物,但没有任何页面呈现它(给下游线的交接/复跑记录);台账: 在 | ✔ |
|
|
|
|
|
+| 产物里的过程留痕 (.md,非网页) | `m5_cms_tcm/回测训练_历史锚三轮深挖_20260826.md` | **是** | 产物,但没有任何页面呈现它(给下游线的交接/复跑记录);台账: 在 | ✔ |
|
|
|
|
|
+| 组件结论件 (.md,页面会渲染) | `m5_cms_tcm/对比_大生科技传动链报告_20260311.md` | **是** | 产物(结论文本);工作台 report tab / CMS report.html 会渲染它;台账: 在 | ✔ |
|
|
|
|
|
+| 产物里的过程留痕 (.md,非网页) | `m5_cms_tcm/振动板块_windscada融合面_设计v1.md` | **是** | 产物,但没有任何页面呈现它(给下游线的交接/复跑记录);台账: 在 | ✔ |
|
|
|
|
|
+| 产物里的过程留痕 (.md,非网页) | `m5_cms_tcm/振动算法复跑记录_2026-08-15.md` | **是** | 产物,但没有任何页面呈现它(给下游线的交接/复跑记录);台账: 在 | ✔ |
|
|
|
|
|
+| 组件结论件 (.md,页面会渲染) | `m5_cms_tcm/收敛报告_如东TCM振动诊断_v4.2.md` | **是** | 产物(结论文本);工作台 report tab / CMS report.html 会渲染它;台账: 在 | ✔ |
|
|
|
|
|
+| 组件结论件 (.md,页面会渲染) | `m5_cms_tcm/收敛报告_如东TCM振动诊断_v4.md` | **是** | 产物(结论文本);工作台 report tab / CMS report.html 会渲染它;台账: 在 | ✔ |
|
|
|
|
|
+| 组件结论件 (.md,页面会渲染) | `m5_cms_tcm/收敛报告_如东TCM振动诊断_v5.md` | **是** | 产物(结论文本);工作台 report tab / CMS report.html 会渲染它;台账: 在 | ✔ |
|
|
|
|
|
+| 产物里的过程留痕 (.md,非网页) | `m5_cms_tcm/给windscada线_TCM16验收槽规格_20260827.md` | **是** | 产物,但没有任何页面呈现它(给下游线的交接/复跑记录);台账: 在 | ✔ |
|
|
|
|
|
+| 产物里的过程留痕 (.md,非网页) | `m5_cms_tcm/给windscada线_工单库缺2024-11之后_20260827.md` | **是** | 产物,但没有任何页面呈现它(给下游线的交接/复跑记录);台账: 在 | ✔ |
|
|
|
|
|
+| 产物里的过程留痕 (.md,非网页) | `m5_cms_tcm/给windscada线_油样复核回执_20260827.md` | **是** | 产物,但没有任何页面呈现它(给下游线的交接/复跑记录);台账: 在 | ✔ |
|
|
|
|
|
+| 产物里的过程留痕 (.md,非网页) | `m5_cms_tcm/给windscada线_温度轴复核回执_20260826.md` | **是** | 产物,但没有任何页面呈现它(给下游线的交接/复跑记录);台账: 在 | ✔ |
|
|
|
|
|
+| 产物里的过程留痕 (.md,非网页) | `m5_cms_tcm/给windscada线_温度轴核查请求_20260826.md` | **是** | 产物,但没有任何页面呈现它(给下游线的交接/复跑记录);台账: 在 | ✔ |
|
|
|
|
|
+| 产物里的过程留痕 (.md,非网页) | `m5_cms_tcm/给windscada线_色标已改_20260828.md` | **是** | 产物,但没有任何页面呈现它(给下游线的交接/复跑记录);台账: 在 | ✔ |
|
|
|
|
|
+| 产物里的过程留痕 (.md,非网页) | `m5_cms_tcm/综合_振动最新×发电机齿轮箱原分析_2026-08-13.md` | **是** | 产物,但没有任何页面呈现它(给下游线的交接/复跑记录);台账: 在 | ✔ |
|
|
|
|
|
+| 组件结论件 (.md,页面会渲染) | `m5_cms_tcm/诊断报告_TCM振动_202601窗.md` | **是** | 产物(结论文本);工作台 report tab / CMS report.html 会渲染它;台账: 在 | ✔ |
|
|
|
|
|
+| 组件结论件 (.md,页面会渲染) | `m5_cms_tcm/诊断报告_TCM振动_六窗终版.md` | **是** | 产物(结论文本);工作台 report tab / CMS report.html 会渲染它;台账: 在 | ✔ |
|
|
|
|
|
+| 组件结论件 (.md,页面会渲染) | `m5_cms_tcm/频谱分析报告_轴承特征频率_2026-08-13.md` | **是** | 产物(结论文本);工作台 report tab / CMS report.html 会渲染它;台账: 在 | ✔ |
|
|
|
|
|
+| 产物里的过程留痕 (.md,非网页) | `paradigm_r1/experiments/E3_candidate_closure/plan.md` | **是** | 产物,但没有任何页面呈现它(给下游线的交接/复跑记录);台账: 在 | ✔ |
|
|
|
|
|
+| 产物里的过程留痕 (.md,非网页) | `paradigm_r1/experiments/E3_candidate_closure/result.md` | **是** | 产物,但没有任何页面呈现它(给下游线的交接/复跑记录);台账: 在 | ✔ |
|
|
|
|
|
+| 产物里的过程留痕 (.md,非网页) | `paradigm_r1/experiments/E3_candidate_closure/归宿草案.md` | **是** | 产物,但没有任何页面呈现它(给下游线的交接/复跑记录);台账: 在 | ✔ |
|
|
|
|
|
+| 产物里的过程留痕 (.md,非网页) | `paradigm_r1/experiments/E5_coverage_table/plan.md` | **是** | 产物,但没有任何页面呈现它(给下游线的交接/复跑记录);台账: 在 | ✔ |
|
|
|
|
|
+| 产物里的过程留痕 (.md,非网页) | `paradigm_r1/experiments/E5_coverage_table/result.md` | **是** | 产物,但没有任何页面呈现它(给下游线的交接/复跑记录);台账: 在 | ✔ |
|
|
|
|
|
+| 产物里的过程留痕 (.md,非网页) | `paradigm_r1/experiments/E5_coverage_table/主表.md` | **是** | 产物,但没有任何页面呈现它(给下游线的交接/复跑记录);台账: 在 | ✔ |
|
|
|
|
|
+| 产物里的过程留痕 (.md,非网页) | `paradigm_r1/experiments/E8_rudong_rebuild/plan.md` | **是** | 产物,但没有任何页面呈现它(给下游线的交接/复跑记录);台账: 在 | ✔ |
|
|
|
|
|
+| 产物里的过程留痕 (.md,非网页) | `paradigm_r1/experiments/E8_rudong_rebuild/result.md` | **是** | 产物,但没有任何页面呈现它(给下游线的交接/复跑记录);台账: 在 | ✔ |
|
|
|
|
|
+| 产物里的过程留痕 (.md,非网页) | `paradigm_r1/experiments/E8_rudong_rebuild/S0_盘点.md` | **是** | 产物,但没有任何页面呈现它(给下游线的交接/复跑记录);台账: 在 | ✔ |
|
|
|
|
|
+| 产物里的过程留痕 (.md,非网页) | `paradigm_r1/experiments/E8_rudong_rebuild/S1_能问表对拍.md` | **是** | 产物,但没有任何页面呈现它(给下游线的交接/复跑记录);台账: 在 | ✔ |
|
|
|
|
|
+| 产物里的过程留痕 (.md,非网页) | `paradigm_r1/experiments/E8_rudong_rebuild/S3_C7干跑.md` | **是** | 产物,但没有任何页面呈现它(给下游线的交接/复跑记录);台账: 在 | ✔ |
|
|
|
|
|
+| 产物里的过程留痕 (.md,非网页) | `paradigm_r1/experiments/E8_rudong_rebuild/S5_对表.md` | **是** | 产物,但没有任何页面呈现它(给下游线的交接/复跑记录);台账: 在 | ✔ |
|
|
|
|
|
+| 产物里的过程留痕 (.md,非网页) | `sop/_dual_review_20260726_payload脱敏.md` | **是** | 产物,但没有任何页面呈现它(给下游线的交接/复跑记录);台账: 在 | ✔ |
|
|
|
|
|
+| 产物里的过程留痕 (.md,非网页) | `sop/_review_pkg_20260822_model_additions.md` | **是** | 产物,但没有任何页面呈现它(给下游线的交接/复跑记录);台账: 在 | ✔ |
|
|
|
|
|
+| 产物里的过程留痕 (.md,非网页) | `sop/_review_pkg_20260822_sealed_predictions.md` | **是** | 产物,但没有任何页面呈现它(给下游线的交接/复跑记录);台账: 在 | ✔ |
|
|
|
|
|
+| 产物里的过程留痕 (.md,非网页) | `sop/_review_pkg_20260823_gende16_33.md` | **是** | 产物,但没有任何页面呈现它(给下游线的交接/复跑记录);台账: 在 | ✔ |
|
|
|
|
|
+| 产物里的过程留痕 (.md,非网页) | `sop/_review_pkg_20260823_gende16_33_addendum.md` | **是** | 产物,但没有任何页面呈现它(给下游线的交接/复跑记录);台账: 在 | ✔ |
|
|
|
|
|
+| 产物里的过程留痕 (.md,非网页) | `sop/_review_pkg_20260823_gende16_33_sealed_predictions.md` | **是** | 产物,但没有任何页面呈现它(给下游线的交接/复跑记录);台账: 在 | ✔ |
|
|
|
|
|
+| 产物里的过程留痕 (.md,非网页) | `sop/_review_pkg_20260824_shared_component_fleet.md` | **是** | 产物,但没有任何页面呈现它(给下游线的交接/复跑记录);台账: 在 | ✔ |
|
|
|
|
|
+| 产物里的过程留痕 (.md,非网页) | `sop/_review_pkg_20260824_shared_component_fleet_sealed_predictions.md` | **是** | 产物,但没有任何页面呈现它(给下游线的交接/复跑记录);台账: 在 | ✔ |
|
|
|
|
|
+| 产物里的过程留痕 (.md,非网页) | `sop/_review_pkg_20260824_wtg12_outlier.md` | **是** | 产物,但没有任何页面呈现它(给下游线的交接/复跑记录);台账: 在 | ✔ |
|
|
|
|
|
+| 产物里的过程留痕 (.md,非网页) | `sop/_review_pkg_20260824_wtg12_outlier_sealed.md` | **是** | 产物,但没有任何页面呈现它(给下游线的交接/复跑记录);台账: 在 | ✔ |
|
|
|
|
|
+| 产物里的过程留痕 (.md,非网页) | `sop/_u6_review_20260810/封存预测_审前.md` | **是** | 产物,但没有任何页面呈现它(给下游线的交接/复跑记录);台账: 在 | ✔ |
|
|
|
|
|
+| 产物里的过程留痕 (.md,非网页) | `sop/_u6_review_20260810/送审包_as_sent.md` | **是** | 产物,但没有任何页面呈现它(给下游线的交接/复跑记录);台账: 在 | ✔ |
|
|
|
|
|
+| 产物里的过程留痕 (.md,非网页) | `sop/_u6_送审包_20260810.md` | **是** | 产物,但没有任何页面呈现它(给下游线的交接/复跑记录);台账: 在 | ✔ |
|
|
|
|
|
+| 产物里的过程留痕 (.md,非网页) | `sop/_u6_送审包_r2_20260810.md` | **是** | 产物,但没有任何页面呈现它(给下游线的交接/复跑记录);台账: 在 | ✔ |
|
|
|
|
|
+| 产物里的过程留痕 (.md,非网页) | `sop/_u8_sealed_predictions.md` | **是** | 产物,但没有任何页面呈现它(给下游线的交接/复跑记录);台账: 在 | ✔ |
|
|
|
|
|
+| 产物里的过程留痕 (.md,非网页) | `sop/_u8_送审包_20260812.md` | **是** | 产物,但没有任何页面呈现它(给下游线的交接/复跑记录);台账: 在 | ✔ |
|
|
|
|
|
+| 产物里的过程留痕 (.md,非网页) | `sop/local_review/disposition_14b_20260824.md` | **是** | 产物,但没有任何页面呈现它(给下游线的交接/复跑记录);台账: 在 | ✔ |
|
|
|
|
|
+| 产物里的过程留痕 (.md,非网页) | `sop/local_review/disposition_32b_20260824.md` | **是** | 产物,但没有任何页面呈现它(给下游线的交接/复跑记录);台账: 在 | ✔ |
|
|
|
|
|
+| 产物里的过程留痕 (.md,非网页) | `sop/local_review/review_pkg_20260824_grading_calibration.md` | **是** | 产物,但没有任何页面呈现它(给下游线的交接/复跑记录);台账: 在 | ✔ |
|
|
|
|
|
+| 产物里的过程留痕 (.md,非网页) | `sop/review_20260831/lens_A_口径统计.md` | **是** | 产物,但没有任何页面呈现它(给下游线的交接/复跑记录);台账: 在 | ✔ |
|
|
|
|
|
+| 产物里的过程留痕 (.md,非网页) | `sop/review_20260831/lens_B_交付表述.md` | **是** | 产物,但没有任何页面呈现它(给下游线的交接/复跑记录);台账: 在 | ✔ |
|
|
|
|
|
+| 产物里的过程留痕 (.md,非网页) | `sop/review_20260831/pkg.md` | **是** | 产物,但没有任何页面呈现它(给下游线的交接/复跑记录);台账: 在 | ✔ |
|
|
|
|
|
+| 产物里的过程留痕 (.md,非网页) | `sop/review_20260831/SEALED_我的预测_勿送审.md` | **是** | 产物,但没有任何页面呈现它(给下游线的交接/复跑记录);台账: 在 | ✔ |
|
|
|
|
|
+| 产物里的过程留痕 (.md,非网页) | `sop/review_20260831/处置台账.md` | **是** | 产物,但没有任何页面呈现它(给下游线的交接/复跑记录);台账: 在 | ✔ |
|
|
|
|
|
+| 产物里的过程留痕 (.md,非网页) | `sop/review_20260831/夜间工作总结_0901.md` | **是** | 产物,但没有任何页面呈现它(给下游线的交接/复跑记录);台账: 在 | ✔ |
|
|
|
|
|
+| 产物里的过程留痕 (.md,非网页) | `sop/review_20260901/lens_A_事实核查.md` | **是** | 产物,但没有任何页面呈现它(给下游线的交接/复跑记录);台账: 在 | ✔ |
|
|
|
|
|
+| 产物里的过程留痕 (.md,非网页) | `sop/review_20260901/lens_B_读者与风险.md` | **是** | 产物,但没有任何页面呈现它(给下游线的交接/复跑记录);台账: 在 | ✔ |
|
|
|
|
|
+| 产物里的过程留痕 (.md,非网页) | `sop/review_20260901/pkg_r2.md` | **是** | 产物,但没有任何页面呈现它(给下游线的交接/复跑记录);台账: 在 | ✔ |
|
|
|
|
|
+| 产物里的过程留痕 (.md,非网页) | `sop/review_20260901/SEALED_我的预测_勿送审.md` | **是** | 产物,但没有任何页面呈现它(给下游线的交接/复跑记录);台账: 在 | ✔ |
|
|
|
|
|
+| 产物里的过程留痕 (.md,非网页) | `sop/review_20260901/处置台账.md` | **是** | 产物,但没有任何页面呈现它(给下游线的交接/复跑记录);台账: 在 | ✔ |
|
|
|
|
|
+| 产物里的过程留痕 (.md,非网页) | `sop/review_20260901/复审处置_r2.md` | **是** | 产物,但没有任何页面呈现它(给下游线的交接/复跑记录);台账: 在 | ✔ |
|
|
|
|
|
+| 产物里的过程留痕 (.md,非网页) | `sop/轴4返修_AdvCI两方向_2026-07-27.md` | **是** | 产物,但没有任何页面呈现它(给下游线的交接/复跑记录);台账: 在 | ✔ |
|
|
|
|
|
+| 产物里的过程留痕 (.md,非网页) | `tcm_compatible_replay/claude_handoff_20260823/_争议裁决_封存预判_勿入送审包.md` | **是** | 产物,但没有任何页面呈现它(给下游线的交接/复跑记录);台账: 在 | ✔ |
|
|
|
|
|
+| 产物里的过程留痕 (.md,非网页) | `tcm_compatible_replay/claude_handoff_20260823/_争议裁决送审包_20260823.md` | **是** | 产物,但没有任何页面呈现它(给下游线的交接/复跑记录);台账: 在 | ✔ |
|
|
|
|
|
+| 产物里的过程留痕 (.md,非网页) | `tcm_compatible_replay/claude_handoff_20260823/Codex回复_rms200_mask_20260823.md` | **是** | 产物,但没有任何页面呈现它(给下游线的交接/复跑记录);台账: 在 | ✔ |
|
|
|
|
|
+| 产物里的过程留痕 (.md,非网页) | `tcm_compatible_replay/claude_handoff_20260823/Codex复现闸回传_20260823.md` | **是** | 产物,但没有任何页面呈现它(给下游线的交接/复跑记录);台账: 在 | ✔ |
|
|
|
|
|
+| 产物里的过程留痕 (.md,非网页) | `tcm_compatible_replay/claude_handoff_20260823/争议裁决记录_20260823.md` | **是** | 产物,但没有任何页面呈现它(给下游线的交接/复跑记录);台账: 在 | ✔ |
|
|
|
|
|
+| 产物里的过程留痕 (.md,非网页) | `tcm_compatible_replay/claude_handoff_20260823/复现审计.md` | **是** | 产物,但没有任何页面呈现它(给下游线的交接/复跑记录);台账: 在 | ✔ |
|
|
|
|
|
+| 产物里的过程留痕 (.md,非网页) | `tcm_compatible_replay/claude_handoff_20260823/建议采纳清单_20260823.md` | **是** | 产物,但没有任何页面呈现它(给下游线的交接/复跑记录);台账: 在 | ✔ |
|
|
|
|
|
+| 产物里的过程留痕 (.md,非网页) | `tcm_compatible_replay/claude_handoff_20260823/振动模型规划.md` | **是** | 产物,但没有任何页面呈现它(给下游线的交接/复跑记录);台账: 在 | ✔ |
|
|
|
|
|
+| 产物里的过程留痕 (.md,非网页) | `tcm_compatible_replay/claude_handoff_20260823/给Codex的同步_R5_WTG23包络滞后_20260823.md` | **是** | 产物,但没有任何页面呈现它(给下游线的交接/复跑记录);台账: 在 | ✔ |
|
|
|
|
|
+| 产物里的过程留痕 (.md,非网页) | `tcm_compatible_replay/claude_handoff_20260823/给Codex的同步_rms200证据边界_20260823.md` | **是** | 产物,但没有任何页面呈现它(给下游线的交接/复跑记录);台账: 在 | ✔ |
|
|
|
|
|
+| 产物里的过程留痕 (.md,非网页) | `tcm_compatible_replay/claude_handoff_20260823/给Codex的回传.md` | **是** | 产物,但没有任何页面呈现它(给下游线的交接/复跑记录);台账: 在 | ✔ |
|
|
|
|
|
+| 产物里的过程留痕 (.md,非网页) | `tcm_compatible_replay/claude_handoff_20260823/给Codex的回传_R2_20260823.md` | **是** | 产物,但没有任何页面呈现它(给下游线的交接/复跑记录);台账: 在 | ✔ |
|
|
|
|
|
+| 产物里的过程留痕 (.md,非网页) | `tcm_compatible_replay/claude_handoff_20260823/给Codex的回信_如东振动研究历程梳理_20260905.md` | **是** | 产物,但没有任何页面呈现它(给下游线的交接/复跑记录);台账: 在 | ✔ |
|
|
|
|
|
+| 产物里的过程留痕 (.md,非网页) | `tcm_compatible_replay/claude_handoff_20260823/给Codex的问题_rms200_mask_20260823.md` | **是** | 产物,但没有任何页面呈现它(给下游线的交接/复跑记录);台账: 在 | ✔ |
|
|
|
|
|
+| 组件页面件 (.html) | `windcms/index.html` | **是** | 位于 outputs/<场>/ ⇒ 本身就是产物,且是被服务直接当页面呈现的件;台账: 在 | ✔ |
|
|
|
|
|
+| 组件页面件 (.html) | `windcms/index_eng.html` | **是** | 位于 outputs/<场>/ ⇒ 本身就是产物,且是被服务直接当页面呈现的件;台账: 在 | ✔ |
|
|
|
|
|
+| 组件页面件 (.html) | `windcms/overview.html` | **是** | 位于 outputs/<场>/ ⇒ 本身就是产物,且是被服务直接当页面呈现的件;台账: 在 | ✔ |
|
|
|
|
|
+| 组件结论件 (.md,页面会渲染) | `windcms/report.md` | **是** | 产物(结论文本);工作台 report tab / CMS report.html 会渲染它;台账: 在 | ✔ |
|
|
|
|
|
+| 组件页面件 (.html) | `windcms/turbines/WTG01.html` | **是** | 位于 outputs/<场>/ ⇒ 本身就是产物,且是被服务直接当页面呈现的件;台账: 在 | ✔ |
|
|
|
|
|
+| 组件页面件 (.html) | `windcms/turbines/WTG02.html` | **是** | 位于 outputs/<场>/ ⇒ 本身就是产物,且是被服务直接当页面呈现的件;台账: 在 | ✔ |
|
|
|
|
|
+| 组件页面件 (.html) | `windcms/turbines/WTG03.html` | **是** | 位于 outputs/<场>/ ⇒ 本身就是产物,且是被服务直接当页面呈现的件;台账: 在 | ✔ |
|
|
|
|
|
+| 组件页面件 (.html) | `windcms/turbines/WTG04.html` | **是** | 位于 outputs/<场>/ ⇒ 本身就是产物,且是被服务直接当页面呈现的件;台账: 在 | ✔ |
|
|
|
|
|
+| 组件页面件 (.html) | `windcms/turbines/WTG05.html` | **是** | 位于 outputs/<场>/ ⇒ 本身就是产物,且是被服务直接当页面呈现的件;台账: 在 | ✔ |
|
|
|
|
|
+| 组件页面件 (.html) | `windcms/turbines/WTG06.html` | **是** | 位于 outputs/<场>/ ⇒ 本身就是产物,且是被服务直接当页面呈现的件;台账: 在 | ✔ |
|
|
|
|
|
+| 组件页面件 (.html) | `windcms/turbines/WTG07.html` | **是** | 位于 outputs/<场>/ ⇒ 本身就是产物,且是被服务直接当页面呈现的件;台账: 在 | ✔ |
|
|
|
|
|
+| 组件页面件 (.html) | `windcms/turbines/WTG08.html` | **是** | 位于 outputs/<场>/ ⇒ 本身就是产物,且是被服务直接当页面呈现的件;台账: 在 | ✔ |
|
|
|
|
|
+| 组件页面件 (.html) | `windcms/turbines/WTG09.html` | **是** | 位于 outputs/<场>/ ⇒ 本身就是产物,且是被服务直接当页面呈现的件;台账: 在 | ✔ |
|
|
|
|
|
+| 组件页面件 (.html) | `windcms/turbines/WTG10.html` | **是** | 位于 outputs/<场>/ ⇒ 本身就是产物,且是被服务直接当页面呈现的件;台账: 在 | ✔ |
|
|
|
|
|
+| 组件页面件 (.html) | `windcms/turbines/WTG11.html` | **是** | 位于 outputs/<场>/ ⇒ 本身就是产物,且是被服务直接当页面呈现的件;台账: 在 | ✔ |
|
|
|
|
|
+| 组件页面件 (.html) | `windcms/turbines/WTG12.html` | **是** | 位于 outputs/<场>/ ⇒ 本身就是产物,且是被服务直接当页面呈现的件;台账: 在 | ✔ |
|
|
|
|
|
+| 组件页面件 (.html) | `windcms/turbines/WTG13.html` | **是** | 位于 outputs/<场>/ ⇒ 本身就是产物,且是被服务直接当页面呈现的件;台账: 在 | ✔ |
|
|
|
|
|
+| 组件页面件 (.html) | `windcms/turbines/WTG14.html` | **是** | 位于 outputs/<场>/ ⇒ 本身就是产物,且是被服务直接当页面呈现的件;台账: 在 | ✔ |
|
|
|
|
|
+| 组件页面件 (.html) | `windcms/turbines/WTG15.html` | **是** | 位于 outputs/<场>/ ⇒ 本身就是产物,且是被服务直接当页面呈现的件;台账: 在 | ✔ |
|
|
|
|
|
+| 组件页面件 (.html) | `windcms/turbines/WTG16.html` | **是** | 位于 outputs/<场>/ ⇒ 本身就是产物,且是被服务直接当页面呈现的件;台账: 在 | ✔ |
|
|
|
|
|
+| 组件页面件 (.html) | `windcms/turbines/WTG17.html` | **是** | 位于 outputs/<场>/ ⇒ 本身就是产物,且是被服务直接当页面呈现的件;台账: 在 | ✔ |
|
|
|
|
|
+| 组件页面件 (.html) | `windcms/turbines/WTG18.html` | **是** | 位于 outputs/<场>/ ⇒ 本身就是产物,且是被服务直接当页面呈现的件;台账: 在 | ✔ |
|
|
|
|
|
+| 组件页面件 (.html) | `windcms/turbines/WTG19.html` | **是** | 位于 outputs/<场>/ ⇒ 本身就是产物,且是被服务直接当页面呈现的件;台账: 在 | ✔ |
|
|
|
|
|
+| 组件页面件 (.html) | `windcms/turbines/WTG20.html` | **是** | 位于 outputs/<场>/ ⇒ 本身就是产物,且是被服务直接当页面呈现的件;台账: 在 | ✔ |
|
|
|
|
|
+| 组件页面件 (.html) | `windcms/turbines/WTG21.html` | **是** | 位于 outputs/<场>/ ⇒ 本身就是产物,且是被服务直接当页面呈现的件;台账: 在 | ✔ |
|
|
|
|
|
+| 组件页面件 (.html) | `windcms/turbines/WTG22.html` | **是** | 位于 outputs/<场>/ ⇒ 本身就是产物,且是被服务直接当页面呈现的件;台账: 在 | ✔ |
|
|
|
|
|
+| 组件页面件 (.html) | `windcms/turbines/WTG23.html` | **是** | 位于 outputs/<场>/ ⇒ 本身就是产物,且是被服务直接当页面呈现的件;台账: 在 | ✔ |
|
|
|
|
|
+| 组件页面件 (.html) | `windcms/turbines/WTG24.html` | **是** | 位于 outputs/<场>/ ⇒ 本身就是产物,且是被服务直接当页面呈现的件;台账: 在 | ✔ |
|
|
|
|
|
+| 组件页面件 (.html) | `windcms/turbines/WTG25.html` | **是** | 位于 outputs/<场>/ ⇒ 本身就是产物,且是被服务直接当页面呈现的件;台账: 在 | ✔ |
|
|
|
|
|
+| 组件页面件 (.html) | `windcms/turbines/WTG26.html` | **是** | 位于 outputs/<场>/ ⇒ 本身就是产物,且是被服务直接当页面呈现的件;台账: 在 | ✔ |
|
|
|
|
|
+| 组件页面件 (.html) | `windcms/turbines/WTG27.html` | **是** | 位于 outputs/<场>/ ⇒ 本身就是产物,且是被服务直接当页面呈现的件;台账: 在 | ✔ |
|
|
|
|
|
+| 组件页面件 (.html) | `windcms/turbines/WTG28.html` | **是** | 位于 outputs/<场>/ ⇒ 本身就是产物,且是被服务直接当页面呈现的件;台账: 在 | ✔ |
|
|
|
|
|
+| 组件页面件 (.html) | `windcms/turbines/WTG29.html` | **是** | 位于 outputs/<场>/ ⇒ 本身就是产物,且是被服务直接当页面呈现的件;台账: 在 | ✔ |
|
|
|
|
|
+| 组件页面件 (.html) | `windcms/turbines/WTG30.html` | **是** | 位于 outputs/<场>/ ⇒ 本身就是产物,且是被服务直接当页面呈现的件;台账: 在 | ✔ |
|
|
|
|
|
+| 组件页面件 (.html) | `windcms/turbines/WTG31.html` | **是** | 位于 outputs/<场>/ ⇒ 本身就是产物,且是被服务直接当页面呈现的件;台账: 在 | ✔ |
|
|
|
|
|
+| 组件页面件 (.html) | `windcms/turbines/WTG32.html` | **是** | 位于 outputs/<场>/ ⇒ 本身就是产物,且是被服务直接当页面呈现的件;台账: 在 | ✔ |
|
|
|
|
|
+| 组件页面件 (.html) | `windcms/turbines/WTG33.html` | **是** | 位于 outputs/<场>/ ⇒ 本身就是产物,且是被服务直接当页面呈现的件;台账: 在 | ✔ |
|
|
|
|
|
+| 组件页面件 (.html) | `windcms/turbines/WTG34.html` | **是** | 位于 outputs/<场>/ ⇒ 本身就是产物,且是被服务直接当页面呈现的件;台账: 在 | ✔ |
|
|
|
|
|
+| 组件页面件 (.html) | `windcms/turbines/WTG35.html` | **是** | 位于 outputs/<场>/ ⇒ 本身就是产物,且是被服务直接当页面呈现的件;台账: 在 | ✔ |
|
|
|
|
|
+| 组件页面件 (.html) | `windcms/turbines/WTG36.html` | **是** | 位于 outputs/<场>/ ⇒ 本身就是产物,且是被服务直接当页面呈现的件;台账: 在 | ✔ |
|
|
|
|
|
+| 组件页面件 (.html) | `windcms/turbines/WTG37.html` | **是** | 位于 outputs/<场>/ ⇒ 本身就是产物,且是被服务直接当页面呈现的件;台账: 在 | ✔ |
|
|
|
|
|
+| 组件页面件 (.html) | `windcms/turbines/WTG38.html` | **是** | 位于 outputs/<场>/ ⇒ 本身就是产物,且是被服务直接当页面呈现的件;台账: 在 | ✔ |
|
|
|
|
|
+| 组件结论件 (.md,页面会渲染) | `windcms/报告_CMS振动状态评估报告_2026-08-23.md` | **是** | 产物(结论文本);工作台 report tab / CMS report.html 会渲染它;台账: 在 | ✔ |
|
|
|
|
|
+| 组件结论件 (.md,页面会渲染) | `windcms/报告_CMS振动状态评估报告_2026-08-24.md` | **是** | 产物(结论文本);工作台 report tab / CMS report.html 会渲染它;台账: 在 | ✔ |
|
|
|
|
|
+| 组件结论件 (.md,页面会渲染) | `windcms/报告_CMS振动状态评估报告_2026-08-26.md` | **是** | 产物(结论文本);工作台 report tab / CMS report.html 会渲染它;台账: 在 | ✔ |
|
|
|
|
|
+| 组件结论件 (.md,页面会渲染) | `windcms/报告_CMS振动状态评估报告_2026-08-28.md` | **是** | 产物(结论文本);工作台 report tab / CMS report.html 会渲染它;台账: 在 | ✔ |
|
|
|
|
|
+| 组件结论件 (.md,页面会渲染) | `windcms/评审_离线系统诊断准确度_20260824.md` | **是** | 产物(结论文本);工作台 report tab / CMS report.html 会渲染它;台账: 在 | ✔ |
|
|
|
|
|
+| 产物里的过程留痕 (.md,非网页) | `windscada/_design_audit_20260826.md` | **是** | 产物,但没有任何页面呈现它(给下游线的交接/复跑记录);台账: 在 | ✔ |
|
|
|
|
|
+| 产物里的过程留痕 (.md,非网页) | `windscada/_selfaudit_20260825.md` | **是** | 产物,但没有任何页面呈现它(给下游线的交接/复跑记录);台账: 在 | ✔ |
|
|
|
|
|
+| 组件页面件 (.html) | `windscada/index.html` | **是** | 位于 outputs/<场>/ ⇒ 本身就是产物,且是被服务直接当页面呈现的件;台账: 在 | ✔ |
|
|
|
|
|
+| 产物里的过程留痕 (.md,非网页) | `windscada/review/_sealed_predictions_20260826.md` | **是** | 产物,但没有任何页面呈现它(给下游线的交接/复跑记录);台账: 在 | ✔ |
|
|
|
|
|
+| 产物里的过程留痕 (.md,非网页) | `windscada/review/审核处置_R1_20260826.md` | **是** | 产物,但没有任何页面呈现它(给下游线的交接/复跑记录);台账: 在 | ✔ |
|
|
|
|
|
+| 产物里的过程留痕 (.md,非网页) | `windscada/review/审核处置_R2_20260826.md` | **是** | 产物,但没有任何页面呈现它(给下游线的交接/复跑记录);台账: 在 | ✔ |
|
|
|
|
|
+| 产物里的过程留痕 (.md,非网页) | `windscada/review/审核处置_R3_20260826.md` | **是** | 产物,但没有任何页面呈现它(给下游线的交接/复跑记录);台账: 在 | ✔ |
|
|
|
|
|
+| 产物里的过程留痕 (.md,非网页) | `windscada/review/送审包_windscada_v1.md` | **是** | 产物,但没有任何页面呈现它(给下游线的交接/复跑记录);台账: 在 | ✔ |
|
|
|
|
|
+| 产物里的过程留痕 (.md,非网页) | `windscada/review/送审包_windscada_v2.md` | **是** | 产物,但没有任何页面呈现它(给下游线的交接/复跑记录);台账: 在 | ✔ |
|
|
|
|
|
+| 组件页面件 (.html) | `windscada/turbines/WTG01.html` | **是** | 位于 outputs/<场>/ ⇒ 本身就是产物,且是被服务直接当页面呈现的件;台账: 在 | ✔ |
|
|
|
|
|
+| 组件页面件 (.html) | `windscada/turbines/WTG02.html` | **是** | 位于 outputs/<场>/ ⇒ 本身就是产物,且是被服务直接当页面呈现的件;台账: 在 | ✔ |
|
|
|
|
|
+| 组件页面件 (.html) | `windscada/turbines/WTG03.html` | **是** | 位于 outputs/<场>/ ⇒ 本身就是产物,且是被服务直接当页面呈现的件;台账: 在 | ✔ |
|
|
|
|
|
+| 组件页面件 (.html) | `windscada/turbines/WTG04.html` | **是** | 位于 outputs/<场>/ ⇒ 本身就是产物,且是被服务直接当页面呈现的件;台账: 在 | ✔ |
|
|
|
|
|
+| 组件页面件 (.html) | `windscada/turbines/WTG05.html` | **是** | 位于 outputs/<场>/ ⇒ 本身就是产物,且是被服务直接当页面呈现的件;台账: 在 | ✔ |
|
|
|
|
|
+| 组件页面件 (.html) | `windscada/turbines/WTG06.html` | **是** | 位于 outputs/<场>/ ⇒ 本身就是产物,且是被服务直接当页面呈现的件;台账: 在 | ✔ |
|
|
|
|
|
+| 组件页面件 (.html) | `windscada/turbines/WTG07.html` | **是** | 位于 outputs/<场>/ ⇒ 本身就是产物,且是被服务直接当页面呈现的件;台账: 在 | ✔ |
|
|
|
|
|
+| 组件页面件 (.html) | `windscada/turbines/WTG08.html` | **是** | 位于 outputs/<场>/ ⇒ 本身就是产物,且是被服务直接当页面呈现的件;台账: 在 | ✔ |
|
|
|
|
|
+| 组件页面件 (.html) | `windscada/turbines/WTG09.html` | **是** | 位于 outputs/<场>/ ⇒ 本身就是产物,且是被服务直接当页面呈现的件;台账: 在 | ✔ |
|
|
|
|
|
+| 组件页面件 (.html) | `windscada/turbines/WTG10.html` | **是** | 位于 outputs/<场>/ ⇒ 本身就是产物,且是被服务直接当页面呈现的件;台账: 在 | ✔ |
|
|
|
|
|
+| 组件页面件 (.html) | `windscada/turbines/WTG11.html` | **是** | 位于 outputs/<场>/ ⇒ 本身就是产物,且是被服务直接当页面呈现的件;台账: 在 | ✔ |
|
|
|
|
|
+| 组件页面件 (.html) | `windscada/turbines/WTG12.html` | **是** | 位于 outputs/<场>/ ⇒ 本身就是产物,且是被服务直接当页面呈现的件;台账: 在 | ✔ |
|
|
|
|
|
+| 组件页面件 (.html) | `windscada/turbines/WTG13.html` | **是** | 位于 outputs/<场>/ ⇒ 本身就是产物,且是被服务直接当页面呈现的件;台账: 在 | ✔ |
|
|
|
|
|
+| 组件页面件 (.html) | `windscada/turbines/WTG14.html` | **是** | 位于 outputs/<场>/ ⇒ 本身就是产物,且是被服务直接当页面呈现的件;台账: 在 | ✔ |
|
|
|
|
|
+| 组件页面件 (.html) | `windscada/turbines/WTG15.html` | **是** | 位于 outputs/<场>/ ⇒ 本身就是产物,且是被服务直接当页面呈现的件;台账: 在 | ✔ |
|
|
|
|
|
+| 组件页面件 (.html) | `windscada/turbines/WTG16.html` | **是** | 位于 outputs/<场>/ ⇒ 本身就是产物,且是被服务直接当页面呈现的件;台账: 在 | ✔ |
|
|
|
|
|
+| 组件页面件 (.html) | `windscada/turbines/WTG17.html` | **是** | 位于 outputs/<场>/ ⇒ 本身就是产物,且是被服务直接当页面呈现的件;台账: 在 | ✔ |
|
|
|
|
|
+| 组件页面件 (.html) | `windscada/turbines/WTG18.html` | **是** | 位于 outputs/<场>/ ⇒ 本身就是产物,且是被服务直接当页面呈现的件;台账: 在 | ✔ |
|
|
|
|
|
+| 组件页面件 (.html) | `windscada/turbines/WTG19.html` | **是** | 位于 outputs/<场>/ ⇒ 本身就是产物,且是被服务直接当页面呈现的件;台账: 在 | ✔ |
|
|
|
|
|
+| 组件页面件 (.html) | `windscada/turbines/WTG20.html` | **是** | 位于 outputs/<场>/ ⇒ 本身就是产物,且是被服务直接当页面呈现的件;台账: 在 | ✔ |
|
|
|
|
|
+| 组件页面件 (.html) | `windscada/turbines/WTG21.html` | **是** | 位于 outputs/<场>/ ⇒ 本身就是产物,且是被服务直接当页面呈现的件;台账: 在 | ✔ |
|
|
|
|
|
+| 组件页面件 (.html) | `windscada/turbines/WTG22.html` | **是** | 位于 outputs/<场>/ ⇒ 本身就是产物,且是被服务直接当页面呈现的件;台账: 在 | ✔ |
|
|
|
|
|
+| 组件页面件 (.html) | `windscada/turbines/WTG23.html` | **是** | 位于 outputs/<场>/ ⇒ 本身就是产物,且是被服务直接当页面呈现的件;台账: 在 | ✔ |
|
|
|
|
|
+| 组件页面件 (.html) | `windscada/turbines/WTG24.html` | **是** | 位于 outputs/<场>/ ⇒ 本身就是产物,且是被服务直接当页面呈现的件;台账: 在 | ✔ |
|
|
|
|
|
+| 组件页面件 (.html) | `windscada/turbines/WTG25.html` | **是** | 位于 outputs/<场>/ ⇒ 本身就是产物,且是被服务直接当页面呈现的件;台账: 在 | ✔ |
|
|
|
|
|
+| 组件页面件 (.html) | `windscada/turbines/WTG26.html` | **是** | 位于 outputs/<场>/ ⇒ 本身就是产物,且是被服务直接当页面呈现的件;台账: 在 | ✔ |
|
|
|
|
|
+| 组件页面件 (.html) | `windscada/turbines/WTG27.html` | **是** | 位于 outputs/<场>/ ⇒ 本身就是产物,且是被服务直接当页面呈现的件;台账: 在 | ✔ |
|
|
|
|
|
+| 组件页面件 (.html) | `windscada/turbines/WTG28.html` | **是** | 位于 outputs/<场>/ ⇒ 本身就是产物,且是被服务直接当页面呈现的件;台账: 在 | ✔ |
|
|
|
|
|
+| 组件页面件 (.html) | `windscada/turbines/WTG29.html` | **是** | 位于 outputs/<场>/ ⇒ 本身就是产物,且是被服务直接当页面呈现的件;台账: 在 | ✔ |
|
|
|
|
|
+| 组件页面件 (.html) | `windscada/turbines/WTG30.html` | **是** | 位于 outputs/<场>/ ⇒ 本身就是产物,且是被服务直接当页面呈现的件;台账: 在 | ✔ |
|
|
|
|
|
+| 组件页面件 (.html) | `windscada/turbines/WTG31.html` | **是** | 位于 outputs/<场>/ ⇒ 本身就是产物,且是被服务直接当页面呈现的件;台账: 在 | ✔ |
|
|
|
|
|
+| 组件页面件 (.html) | `windscada/turbines/WTG32.html` | **是** | 位于 outputs/<场>/ ⇒ 本身就是产物,且是被服务直接当页面呈现的件;台账: 在 | ✔ |
|
|
|
|
|
+| 组件页面件 (.html) | `windscada/turbines/WTG33.html` | **是** | 位于 outputs/<场>/ ⇒ 本身就是产物,且是被服务直接当页面呈现的件;台账: 在 | ✔ |
|
|
|
|
|
+| 组件页面件 (.html) | `windscada/turbines/WTG34.html` | **是** | 位于 outputs/<场>/ ⇒ 本身就是产物,且是被服务直接当页面呈现的件;台账: 在 | ✔ |
|
|
|
|
|
+| 组件页面件 (.html) | `windscada/turbines/WTG35.html` | **是** | 位于 outputs/<场>/ ⇒ 本身就是产物,且是被服务直接当页面呈现的件;台账: 在 | ✔ |
|
|
|
|
|
+| 组件页面件 (.html) | `windscada/turbines/WTG36.html` | **是** | 位于 outputs/<场>/ ⇒ 本身就是产物,且是被服务直接当页面呈现的件;台账: 在 | ✔ |
|
|
|
|
|
+| 组件页面件 (.html) | `windscada/turbines/WTG37.html` | **是** | 位于 outputs/<场>/ ⇒ 本身就是产物,且是被服务直接当页面呈现的件;台账: 在 | ✔ |
|
|
|
|
|
+| 组件页面件 (.html) | `windscada/turbines/WTG38.html` | **是** | 位于 outputs/<场>/ ⇒ 本身就是产物,且是被服务直接当页面呈现的件;台账: 在 | ✔ |
|
|
|
|
|
+| 产物里的过程留痕 (.md,非网页) | `windscada/给振动线_温度轴回复_20260826.md` | **是** | 产物,但没有任何页面呈现它(给下游线的交接/复跑记录);台账: 在 | ✔ |
|
|
|
|
|
+| 组件结论件 (.md,页面会渲染) | `windscada/送审_系统结论与判定_20260828.md` | **是** | 产物(结论文本);工作台 report tab / CMS report.html 会渲染它;台账: 在 | ✔ |
|
|
|
|
|
+| 交付页 (release/如东) | `如东/全场状态一览_脱敏_20260825.html` | 不是 | 客户交付件,按版本冻结 | ✔ |
|
|
|
|
|
+| 交付页 (release/如东) | `如东/如东取数单_2026-08-21/如东取数单_2026-08-21.html` | 不是 | 客户交付件,按版本冻结 | ✔ |
|
|
|
|
|
+| 交付页 (release/如东) | `如东/如东取数单_2026-08-21/如东现场一页单.html` | 不是 | 客户交付件,按版本冻结 | ✔ |
|
|
|
|
|
+| 交付页 (release/如东) | `如东/如东取数单_2026-08-21/更正页_2026-08-21晚.html` | 不是 | 客户交付件,按版本冻结 | ✔ |
|
|
|
|
|
+| 交付页 (release/如东) | `如东/如东取数单_2026-08-21.html` | 不是 | 客户交付件,按版本冻结 | ✔ |
|
|
|
|
|
+| 交付页 (release/如东) | `如东/如东治理清单_交付_20260901/01_正式报告/如东_液压系统技术报告_v1.0_2026-09-01.html` | 不是 | 客户交付件,按版本冻结 | ✔ |
|
|
|
|
|
+| 交付页 (release/如东) | `如东/如东治理清单_交付_20260901/02_治理清单/如东_液压系统治理清单_v1.2_2026-09-01.html` | 不是 | 客户交付件,按版本冻结 | ✔ |
|
|
|
|
|
+| 交付页 (release/如东) | `如东/如东治理清单_交付_20260901/02_治理清单/如东风场治理清单_全册_v4.5_2026-09-06.html` | 不是 | 客户交付件,按版本冻结 | ✔ |
|
|
|
|
|
+| 交付页 (release/如东) | `如东/如东治理清单_交付_20260901/03_分册全套/00_总目录.html` | 不是 | 客户交付件,按版本冻结 | ✔ |
|
|
|
|
|
+| 交付页 (release/如东) | `如东/如东治理清单_交付_20260901/03_分册全套/01_如东_液压系统治理清单_v1.0_2026-09-05.html` | 不是 | 客户交付件,按版本冻结 | ✔ |
|
|
|
|
|
+| 交付页 (release/如东) | `如东/如东治理清单_交付_20260901/03_分册全套/02_如东_变桨执行治理清单_v1.0_2026-09-05.html` | 不是 | 客户交付件,按版本冻结 | ✔ |
|
|
|
|
|
+| 交付页 (release/如东) | `如东/如东治理清单_交付_20260901/03_分册全套/03_如东_偏航系统治理清单_v1.0_2026-09-05.html` | 不是 | 客户交付件,按版本冻结 | ✔ |
|
|
|
|
|
+| 交付页 (release/如东) | `如东/如东治理清单_交付_20260901/03_分册全套/04_如东_变流器治理清单_v1.0_2026-09-05.html` | 不是 | 客户交付件,按版本冻结 | ✔ |
|
|
|
|
|
+| 交付页 (release/如东) | `如东/如东治理清单_交付_20260901/03_分册全套/05_如东_主控与传感网治理清单_v1.0_2026-09-05.html` | 不是 | 客户交付件,按版本冻结 | ✔ |
|
|
|
|
|
+| 交付页 (release/如东) | `如东/如东治理清单_交付_20260901/03_分册全套/06_如东_电气并网治理清单_v1.0_2026-09-05.html` | 不是 | 客户交付件,按版本冻结 | ✔ |
|
|
|
|
|
+| 交付页 (release/如东) | `如东/如东治理清单_交付_20260901/03_分册全套/07_如东_塔架与基础治理清单_v1.0_2026-09-05.html` | 不是 | 客户交付件,按版本冻结 | ✔ |
|
|
|
|
|
+| 交付页 (release/如东) | `如东/如东治理清单_交付_20260901/03_分册全套/08_如东_润滑与冷却辅助治理清单_v1.1_2026-09-06.html` | 不是 | 客户交付件,按版本冻结 | ✔ |
|
|
|
|
|
+| 交付页 (release/如东) | `如东/如东治理清单_交付_20260901/03_分册全套/09_如东_CMS-TCM监测面治理清单_v1.1_2026-09-06.html` | 不是 | 客户交付件,按版本冻结 | ✔ |
|
|
|
|
|
+| 交付页 (release/如东) | `如东/如东治理清单_交付_20260901/03_分册全套/10_如东_参数与管理治理清单_v1.0_2026-09-05.html` | 不是 | 客户交付件,按版本冻结 | ✔ |
|
|
|
|
|
+| 交付页 (release/如东) | `如东/如东治理清单_交付_20260901/03_分册全套/11_如东_故障负担榜_v1.0_2026-09-05.html` | 不是 | 客户交付件,按版本冻结 | ✔ |
|
|
|
|
|
+| 交付页 (release/如东) | `如东/如东现场一页单_2026-08-21.html` | 不是 | 客户交付件,按版本冻结 | ✔ |
|
|
|
|
|
+| 三维页 (release/viewer) | `viewer/bedframe-demo.html` | 不是 | 图纸/模型派生的三维资产 | ✔ |
|
|
|
|
|
+| 三维页 (release/viewer) | `viewer/guanlan-publish-findings.html` | 不是 | 图纸/模型派生的三维资产 | ✔ |
|
|
|
|
|
+| 三维页 (release/viewer) | `viewer/guanlan-publish-index.html` | 不是 | 图纸/模型派生的三维资产 | ✔ |
|
|
|
|
|
+| 三维页 (release/viewer) | `viewer/guanlan-publish-method.html` | 不是 | 图纸/模型派生的三维资产 | ✔ |
|
|
|
|
|
+| 三维页 (release/viewer) | `viewer/guanlan-publish-services.html` | 不是 | 图纸/模型派生的三维资产 | ✔ |
|
|
|
|
|
+| 三维页 (release/viewer) | `viewer/guanlan-publish-turbine-explorer.html` | 不是 | 图纸/模型派生的三维资产 | ✔ |
|
|
|
|
|
+| 三维页 (release/viewer) | `viewer/guanlan-publish-whitepaper.html` | 不是 | 图纸/模型派生的三维资产 | ✔ |
|
|
|
|
|
+| 三维页 (release/viewer) | `viewer/index.html` | 不是 | 图纸/模型派生的三维资产 | ✔ |
|
|
|
|
|
+| 三维页 (release/viewer) | `viewer/unit-workbench.html` | 不是 | 图纸/模型派生的三维资产 | ✔ |
|
|
|
|
|
+| 门户内嵌件 | `portal_src/templates/tpl-coverage_ch0_zh.html.html` | —(逐条判定) | 内嵌交付件(§10 逐条判定;个别为数据派生) | ✔ |
|
|
|
|
|
+| 门户内嵌件 | `portal_src/templates/tpl-governance-0.html.html` | —(逐条判定) | 内嵌交付件(§10 逐条判定;个别为数据派生) | ✔ |
|
|
|
|
|
+| 门户内嵌件 | `portal_src/templates/tpl-governance-1.html.html` | —(逐条判定) | 内嵌交付件(§10 逐条判定;个别为数据派生) | ✔ |
|
|
|
|
|
+| 门户内嵌件 | `portal_src/templates/tpl-governance-10.html.html` | —(逐条判定) | 内嵌交付件(§10 逐条判定;个别为数据派生) | ✔ |
|
|
|
|
|
+| 门户内嵌件 | `portal_src/templates/tpl-governance-11.html.html` | —(逐条判定) | 内嵌交付件(§10 逐条判定;个别为数据派生) | ✔ |
|
|
|
|
|
+| 门户内嵌件 | `portal_src/templates/tpl-governance-2.html.html` | —(逐条判定) | 内嵌交付件(§10 逐条判定;个别为数据派生) | ✔ |
|
|
|
|
|
+| 门户内嵌件 | `portal_src/templates/tpl-governance-3.html.html` | —(逐条判定) | 内嵌交付件(§10 逐条判定;个别为数据派生) | ✔ |
|
|
|
|
|
+| 门户内嵌件 | `portal_src/templates/tpl-governance-4.html.html` | —(逐条判定) | 内嵌交付件(§10 逐条判定;个别为数据派生) | ✔ |
|
|
|
|
|
+| 门户内嵌件 | `portal_src/templates/tpl-governance-5.html.html` | —(逐条判定) | 内嵌交付件(§10 逐条判定;个别为数据派生) | ✔ |
|
|
|
|
|
+| 门户内嵌件 | `portal_src/templates/tpl-governance-6.html.html` | —(逐条判定) | 内嵌交付件(§10 逐条判定;个别为数据派生) | ✔ |
|
|
|
|
|
+| 门户内嵌件 | `portal_src/templates/tpl-governance-7.html.html` | —(逐条判定) | 内嵌交付件(§10 逐条判定;个别为数据派生) | ✔ |
|
|
|
|
|
+| 门户内嵌件 | `portal_src/templates/tpl-governance-8.html.html` | —(逐条判定) | 内嵌交付件(§10 逐条判定;个别为数据派生) | ✔ |
|
|
|
|
|
+| 门户内嵌件 | `portal_src/templates/tpl-governance-9.html.html` | —(逐条判定) | 内嵌交付件(§10 逐条判定;个别为数据派生) | ✔ |
|
|
|
|
|
+| 门户内嵌件 | `portal_src/templates/tpl-report-主轴承.html.html` | —(逐条判定) | 内嵌交付件(§10 逐条判定;个别为数据派生) | ✔ |
|
|
|
|
|
+| 门户内嵌件 | `portal_src/templates/tpl-report-发电机.html.html` | —(逐条判定) | 内嵌交付件(§10 逐条判定;个别为数据派生) | ✔ |
|
|
|
|
|
+| 门户内嵌件 | `portal_src/templates/tpl-report-变桨.html.html` | —(逐条判定) | 内嵌交付件(§10 逐条判定;个别为数据派生) | ✔ |
|
|
|
|
|
+| 门户内嵌件 | `portal_src/templates/tpl-report-齿轮箱.html.html` | —(逐条判定) | 内嵌交付件(§10 逐条判定;个别为数据派生) | ✔ |
|
|
|
|
|
+| 门户内嵌件 | `portal_src/templates/tpl-sc1-local.html.html` | —(逐条判定) | 内嵌交付件(§10 逐条判定;个别为数据派生) | ✔ |
|
|
|
|
|
+| 门户内嵌件 | `portal_src/templates/tpl-standard_panel_zh.html.html` | —(逐条判定) | 内嵌交付件(§10 逐条判定;个别为数据派生) | ✔ |
|
|
|
|
|
+| 门户内嵌件 | `portal_src/templates/tpl-swt-subsystem-1.html.html` | —(逐条判定) | 内嵌交付件(§10 逐条判定;个别为数据派生) | ✔ |
|
|
|
|
|
+| 门户内嵌件 | `portal_src/templates/tpl-swt-subsystem-2.html.html` | —(逐条判定) | 内嵌交付件(§10 逐条判定;个别为数据派生) | ✔ |
|
|
|
|
|
+| 门户内嵌件 | `portal_src/templates/tpl-swt-subsystem-3.html.html` | —(逐条判定) | 内嵌交付件(§10 逐条判定;个别为数据派生) | ✔ |
|
|
|
|
|
+| 门户内嵌件 | `portal_src/templates/tpl-swt-subsystem-4.html.html` | —(逐条判定) | 内嵌交付件(§10 逐条判定;个别为数据派生) | ✔ |
|
|
|
|
|
+| 门户内嵌件 | `portal_src/templates/tpl-swt40_控制律仪表台_外发版.html.html` | —(逐条判定) | 内嵌交付件(§10 逐条判定;个别为数据派生) | ✔ |
|
|
|
|
|
+| 门户内嵌件 | `portal_src/templates/tpl-U6_变桨液压仿真台.html.html` | —(逐条判定) | 内嵌交付件(§10 逐条判定;个别为数据派生) | ✔ |
|
|
|
|
|
+| 门户内嵌件 | `portal_src/templates/tpl-U6_液压公共站健康报告_客户版.html.html` | —(逐条判定) | 内嵌交付件(§10 逐条判定;个别为数据派生) | ✔ |
|
|
|
|
|
+| 门户内嵌件 | `portal_src/templates/tpl-如东传动链实际运行诊断_单文件版.html.html` | —(逐条判定) | 内嵌交付件(§10 逐条判定;个别为数据派生) | ✔ |
|
|
|
|
|
+| 门户内嵌件 | `portal_src/templates/tpl-如东海上风电场_整机综合诊断与风险评估_主轴冲击深挖修订版V2.1.html.html` | —(逐条判定) | 内嵌交付件(§10 逐条判定;个别为数据派生) | ✔ |
|
|
|
|
|
+| 仿真资料包 (zip) | `2_传动链与功率.html` | 不是 | 图纸派生的冻结资料包(sim_sys_server 从 zip 现读) | ✔ |
|
|
|
|
|
+| 仿真资料包 (zip) | `4_变桨轮毂液压.html` | 不是 | 图纸派生的冻结资料包(sim_sys_server 从 zip 现读) | ✔ |
|
|
|
|
|
+| 仿真资料包 (zip) | `0_四系统合页.html` | 不是 | 图纸派生的冻结资料包(sim_sys_server 从 zip 现读) | ✔ |
|
|
|
|
|
+| 仿真资料包 (zip) | `3_发电机与热管理.html` | 不是 | 图纸派生的冻结资料包(sim_sys_server 从 zip 现读) | ✔ |
|
|
|
|
|
+| 仿真资料包 (zip) | `1_偏航系统.html` | 不是 | 图纸派生的冻结资料包(sim_sys_server 从 zip 现读) | ✔ |
|
|
|
|
|
+
|
|
|
|
|
+<!-- PAGES-INV:END -->
|
|
|
|
|
+
|
|
|
---
|
|
---
|
|
|
|
|
|
|
|
## 13. 输入数据 → 功能 → 算法 → 产物(关系与实现逻辑)
|
|
## 13. 输入数据 → 功能 → 算法 → 产物(关系与实现逻辑)
|
|
@@ -651,3 +930,72 @@ python scripts/products_restore_missing.py --stash <含产物的包.zip> #
|
|
|
已按 §11.2 归位到 `logs/build/`),补齐后与旧包**逐字节相同 538 件**。
|
|
已按 §11.2 归位到 `logs/build/`),补齐后与旧包**逐字节相同 538 件**。
|
|
|
**教训(写进 §9 的口径里)**:交付包默认不含产物 + 清除产物不留备份 ⇒ 这批件**一旦清掉就没有来源**;
|
|
**教训(写进 §9 的口径里)**:交付包默认不含产物 + 清除产物不留备份 ⇒ 这批件**一旦清掉就没有来源**;
|
|
|
要留退路就用 `scripts/pack_dist.py --with-products` 打一份带产物的包存档。
|
|
要留退路就用 `scripts/pack_dist.py --with-products` 打一份带产物的包存档。
|
|
|
|
|
+
|
|
|
|
|
+---
|
|
|
|
|
+
|
|
|
|
|
+## 14. 服务化安装(Windows 服务 / systemd)与版本检查(2026-09-17 用户令 1)
|
|
|
|
|
+
|
|
|
|
|
+### 14.1 装成什么
|
|
|
|
|
+
|
|
|
|
|
+| 平台 | 形态 | 服务体 | 注册器 | 前置 |
|
|
|
|
|
+|---|---|---|---|---|
|
|
|
|
|
+| Windows | **Windows 服务**(SCM 托管,`SERVICE_WIN32_OWN_PROCESS`) | `scripts/win_service.py`(**ctypes 直连 advapi32,不依赖 pywin32**) | `scripts/service_ctl.py install`(内部 `sc.exe create/description/failure/start`) | 管理员 |
|
|
|
|
|
+| Linux | **systemd 单元** `guanlan.service`(`Type=simple` + `Restart=always`) | `scripts/service_main.py`(前台守护) | `scripts/service_ctl.py install`(写 `/etc/systemd/system/guanlan.service` + `systemctl enable --now`) | root |
|
|
|
|
|
+| Windows(备选) | 当前用户**登录自启**(`HKCU\...\Run`)——不需要管理员 | `scripts/guanlan_start_hidden.py`(无窗口启动器) | `scripts/service_ctl.py install --user-login` | 无 |
|
|
|
|
|
+
|
|
|
|
|
+**为什么 Windows 服务体不用 `sc create python xxx.py`**:SCM 要求被拉起的进程跟它握手
|
|
|
|
|
+(`StartServiceCtrlDispatcher` + 控制处理回调),否则起服务报 **1053**。
|
|
|
|
|
+实现它有两条路:`pywin32`(要加新依赖,破坏"单包离线零新依赖")或 **ctypes 直连**(本实现,只用标准库)。
|
|
|
|
|
+
|
|
|
|
|
+**两平台共用一个工作体**(`scripts/service_worker.py`):起 = `guanlan.py serve`(幂等,缺谁补谁)、
|
|
|
|
|
+守护 = 每 15 s 巡检一次同样命令(组件掉了自动拉起)、停 = `guanlan.py stop`。
|
|
|
|
|
+这样"服务起的"与"手工起的"口径完全一致,不会出现两套行为。
|
|
|
|
|
+
|
|
|
|
|
+### 14.2 版本检查与重装确认(安装时)
|
|
|
|
|
+
|
|
|
|
|
+版本**单一真源** = `src/version.py::VERSION`(打包器、安装脚本、`guanlan.py check`、文档都以它为准)。
|
|
|
|
|
+安装脚本在**动手之前**做一次检查,读 `<安装根>/install-info.json`(上次安装写下的记录):
|
|
|
|
|
+
|
|
|
|
|
+| 情形 | 提示 | 动作 |
|
|
|
|
|
+|---|---|---|
|
|
|
|
|
+| 没装过 | 未检测到已安装 → 全新安装 vX | 直接装 |
|
|
|
|
|
+| 版本相同 | 已安装 vX,与本包**版本相同**;重装会重建 `.venv`、覆盖程序文件(`data/`、`outputs/` 不动) | **问**是否重装 |
|
|
|
|
|
+| 已装更旧 | v旧 → v新(**升级**) | **问**是否重装 |
|
|
|
|
|
+| 已装更新 | 已装 v新 > 本包 v旧 ⇒ **降级**警告:"除非确知原因,不要用旧包覆盖新装" | **问**(并明确警告) |
|
|
|
|
|
+| 老安装无版本记录 | 按"重装/升级"处理 | **问** |
|
|
|
|
|
+
|
|
|
|
|
+* 交互式:`Read-Host` / `read` 问 `y` 才继续;**非交互**(stdin 被重定向,例如自动化核验)自动继续并打印说明;
|
|
|
|
|
+* 跳过询问:`install.bat -Force`(PowerShell 侧 `-Force`)/ `sh install.sh --force`;
|
|
|
|
|
+* 装完写 `install-info.json`:`version / installed_at / python / mode(manual|windows-service|systemd|startup-entry)`;
|
|
|
|
|
+* `guanlan.py check` 增一行显示"已装版本 vs 本包版本"。
|
|
|
|
|
+
|
|
|
|
|
+### 14.3 没有权限时怎么办(本次实机就是这种情况)
|
|
|
|
|
+
|
|
|
|
|
+本机当前账号**不是管理员**,所以"真注册服务"这一步无法在此验证。为此该功能自带三条**无权限自证**路径:
|
|
|
|
|
+
|
|
|
|
|
+```
|
|
|
|
|
+python scripts/service_ctl.py status # 装没装/在跑没在跑(免权限)
|
|
|
|
|
+python scripts/service_ctl.py install --dry-run # 前置检查 + 逐条打印将执行的命令 + 打印将写入的 systemd 单元全文
|
|
|
|
|
+python scripts/win_service.py --debug --once # 免权限跑一轮守护(起组件→巡检→报"网关在听")
|
|
|
|
|
+python scripts/win_service.py # 直跑服务体: 报 "不是由 SCM 启动(WinError 1063)" ⇒ SCM 接口调用正确
|
|
|
|
|
+```
|
|
|
|
|
+
|
|
|
|
|
+权限不足时 `service_ctl.py` **不抛 Access is denied**,而是打印三条可执行建议(管理员重试 / 先 `--dry-run` /
|
|
|
|
|
+改用 `--user-login`)并返回 rc=3。**实机输出**(本机,非管理员):
|
|
|
|
|
+
|
|
|
|
|
+```
|
|
|
|
|
+$ python scripts/service_ctl.py install --dry-run
|
|
|
|
|
+ 前置检查: 通过
|
|
|
|
|
+ $ sc.exe create guanlan binPath= "…\.venv\Scripts\python.exe" "…\scripts\win_service.py" start= auto DisplayName= "观澜·如东样板 v2 …"
|
|
|
|
|
+ $ sc.exe description guanlan "观澜·如东样板 v2 v0.4.0 本机离线版(观澜风电资产智能)"
|
|
|
|
|
+ $ sc.exe failure guanlan reset= 86400 actions= restart/60000/restart/60000/restart/60000
|
|
|
|
|
+ $ sc.exe start guanlan
|
|
|
|
|
+$ python scripts/win_service.py --debug --once
|
|
|
|
|
+ 一轮巡检结果: 网关在听
|
|
|
|
|
+```
|
|
|
|
|
+
|
|
|
|
|
+### 14.4 与"手工启动"的关系
|
|
|
|
|
+
|
|
|
|
|
+装了服务之后**不必**再双击快捷方式:开机会自动起(Windows 服务)/ `systemctl start guanlan`(Linux)。
|
|
|
|
|
+手工路径仍然可用(快捷方式、`start.bat`、`guanlan.py serve`),两者互不冲突——
|
|
|
|
|
+服务只是"代表整套系统守着"的那一个进程。停止:`service_ctl.py stop`(或 `stop.bat`)。
|