Forráskód Böngészése

修语言包闸拦下的 /v2 500(英文措辞含'黑话 spectra') + 把语言包闸前移到 guanlan.py check

zhouyang.xie 3 hete
szülő
commit
a3563d3437
3 módosított fájl, 25 hozzáadás és 13 törlés
  1. 9 9
      docs/页面输出体检_v0.1.md
  2. 10 0
      guanlan.py
  3. 6 4
      src/windscada/lang.py

+ 9 - 9
docs/页面输出体检_v0.1.md

@@ -20,25 +20,25 @@
  "mode": "offline",
  "entry": "http://127.0.0.1:28084/",
   | 版本/契约指纹 |
-| 有输出 | `/cms/` | 200 | 412,949 | 有输出 | 如东海上风电场 振动诊断 · 客户版 如东海上风电场 · CMS 振动诊断 客户版 · 证据窗末 2026-04-21  | CMS 首页 (windcms/index.html) |
-| 有输出 | `/cms/` | 200 | 412,949 | 有输出 | 如东海上风电场 振动诊断 · 客户版 如东海上风电场 · CMS 振动诊断 客户版 · 证据窗末 2026-04-21  | /cms 内的嵌套页 (从入口页发现) |
+| 有输出 | `/cms/` | 200 | 424,864 | 有输出 | 如东海上风电场 振动诊断 · 客户版 如东海上风电场 · CMS 振动诊断 客户版 · 2026-03-16 → 202 | CMS 首页 (windcms/index.html) |
+| 有输出 | `/cms/` | 200 | 424,864 | 有输出 | 如东海上风电场 振动诊断 · 客户版 如东海上风电场 · CMS 振动诊断 客户版 · 2026-03-16 → 202 | /cms 内的嵌套页 (从入口页发现) |
 | 有输出 | `/cms/overview.html` | 200 | 294,769 | 有输出 | 如东海上风电场 全场总览 如东海上风电场 · CMS 振动诊断 全场总览表 · 38 台状态等级与测点矩阵 固定界面 工 | CMS 总览 |
-| 有输出 | `/cms/report.html` | 200 | 81,718 | 有输出 | 评估报告 如东海上风电场 · CMS 振动诊断 标准模版报告 · 结构化层生成 固定界面 工作台 交互 报告 ← 返回观 | /cms 内的嵌套页 (从入口页发现) |
-| 有输出 | `/cms/report.md` | 200 | 8,133 | 有输出 | # 如东海上风电场 CMS 振动诊断 · 自动报告(结构化层)

+| 有输出 | `/cms/report.html` | 200 | 82,481 | 有输出 | 评估报告 如东海上风电场 · CMS 振动诊断 标准模版报告 · 结构化层生成 · w0316 2026-03-16 → | /cms 内的嵌套页 (从入口页发现) |
+| 有输出 | `/cms/report.md` | 200 | 8,223 | 有输出 | # 如东海上风电场 CMS 振动诊断 · 自动报告(结构化层)

 

 机型:SWT-4.0-130 (鼠笼异步 JGRA | CMS 结构化层报告 |
-| 有输出 | `/cms/turbines/WTG01.html` | 200 | 321,348 | 有输出 | WTG01 · 如东海上风电场 如东海上风电场 · CMS 振动诊断 WTG01 逐台页 · SWT-4.0-130 ( | CMS 逐台页 |
+| 有输出 | `/cms/turbines/WTG01.html` | 200 | 321,394 | 有输出 | WTG01 · 如东海上风电场 如东海上风电场 · CMS 振动诊断 WTG01 逐台页 · 本台数据 2026-03- | CMS 逐台页 |
 | 有输出 | `/cms/workbench.html` | 200 | 58,923 | 有输出 | 工作台 如东海上风电场 · CMS 振动诊断 万物可插件 · 即用即抛 固定界面 工作台 交互 报告 ← 返回观澜门户  | /cms 内的嵌套页 (从入口页发现) |
 | 有输出 | `/detail/api/curves` | 200 | 23,913 | 有输出 | {"figs": [{"kind": "multiline", "title": "L1 功率曲线 (风速-功率)",  | 特性曲线页 |
 | 有输出 | `/detail/api/fleet?win=2026%E5%B9%B4` | 200 | 54,509 | 有输出 | {"win": "2026年", "months": ["2026-01", "2026-02", "2026-03", | 全部页签底数: windscada/*.parquet + ontology |
 | 有输出 | `/detail/api/maint_survey` | 200 | 7,498 | 有输出 | {"rows": [{"层": "机理", "名": "决策链进度", "覆盖": "objects.json", "条 | 系统自查页: ontology/objects.json |
 | 有输出 | `/detail/api/ont_chain?kind=tree&system=%E9%BD%BF%E8%BD%AE%E7%AE%B1` | 200 | 5,154 | 有输出 | {"text": "== 故障树 齿轮箱 (7 个系统级失效模式, 按实证量排) ==\n[failmode/齿轮箱/液 | 决策链页 |
 | 有输出 | `/detail/api/turbine?t=WTG01&win=2026%E5%B9%B4` | 200 | 14,417 | 有输出 | {"problems": [{"sys": "偏航", "状态": "报警", "依据": "四维:偏航优秀/驱动优秀/ | 逐台下钻浮层 |
-| 有输出 | `/detail/api/vibcms` | 200 | 6,752 | 有输出 | {"date": "2026-09-19", "overall": "全场 38 台:报警 3 台,良好 3 台,优秀  | 振动评估页: windcms/报告_CMS*.md |
+| 有输出 | `/detail/api/vibcms` | 200 | 6,883 | 有输出 | {"date": "2026-09-19", "overall": "全场 38 台:报警 3 台,良好 3 台,优秀  | 振动评估页: windcms/报告_CMS*.md |
 | 有输出 | `/detail/problem/WTG01/%E5%8F%98%E6%A1%A8%E7%B3%BB%E7%BB%9F` | 200 | 211,487 | 有输出 | WTG01 变桨系统 · windscada WTG01 · 变桨系统 ← 总览 本台全部问题 ← 返回观澜门户 分析总 | 问题页 (经典) |
 | 有输出 | `/detail/turbine/WTG01` | 200 | 212,932 | 有输出 | WTG01 · windscada WTG01 ← 工作台 只显示有问题的系统; 无问题不出图 ← 返回观澜门户 分析总 | 逐台页 (经典) |
-| 有输出 | `/detail/windcms/index.html` | 200 | 404,706 | 有输出 | 如东海上风电场 振动诊断 · 客户版 如东海上风电场 · CMS 振动诊断 客户版 · 证据窗末 2026-04-21  | /detail 内的嵌套页 (从入口页发现) |
-| 有输出 | `/healthz` | 200 | 1,320 | 有输出 | {
+| 有输出 | `/detail/windcms/index.html` | 200 | 416,645 | 有输出 | 如东海上风电场 振动诊断 · 客户版 如东海上风电场 · CMS 振动诊断 客户版 · 2026-03-16 → 202 | /detail 内的嵌套页 (从入口页发现) |
+| 有输出 | `/healthz` | 200 | 1,322 | 有输出 | {
  "status": "degraded",
  "mode": "offline",
  "checked": "20 | 模块探活 |
@@ -48,4 +48,4 @@
 | 有输出 | `/viewer/` | 200 | 4,986 | 有输出 | 整台风机 · 单元拆装工作台 W 如东 · 西门子风机 单元拆装工作台 × 全部单元 如海结构树 关闭 显示更多 全部单 | 三维拆装工作台 (随包资产) |
 | 有输出(单页壳) | `/` | 200 | 20,227,343 | 依赖人裁底稿(非机械可算) | 观澜中文系统 · 详细分析 ≋ 观澜 WIND ASSET INTELLIGENCE 总览 系统架构 方法 经验发现 案 | 门户单文件 (release/portal.html), 内嵌结论段由产物渲染 |
 | 空(可见文本极少) | `/cms/chat.html` | 200 | 52,856 | 依赖件不在位(放原始件后重算) | 交互 如东海上风电场 · CMS 振动诊断 推理无界 · 结论受闸 固定界面 工作台 交互 报告 ← 返回观澜门户 CM | /cms 内的嵌套页 (从入口页发现) |
-| 有输出(单页壳) | `/detail/` | 200 | 229,643 | 依赖件不在位(放原始件后重算) | 观澜 · 风电数据分析与决策支持 | v2 工作台外壳 (10 页签) |
+| 有输出(单页壳) | `/detail/` | 200 | 229,979 | 依赖件不在位(放原始件后重算) | 观澜 · 风电数据分析与决策支持 | v2 工作台外壳 (10 页签) |

+ 10 - 0
guanlan.py

@@ -145,6 +145,16 @@ def cmd_check(c):
         for it in w:
             if issubclass(it.category, SyntaxWarning): bad.append(f"{Path(str(it.filename)).name}:{it.lineno} {it.message}")
     row(f"源码可编译 ({len(srcs)} 个文件, 无非法转义/语法错)", not bad, "; ".join(bad[:3]))
+    # 语言包闸前移 (2026-09-19 实逮): `src/windscada/ui/build.py` 在**出页之前**会跑 lang.check(),
+    # 不过就抛 RuntimeError —— 设计是对的(不会把中文残留发给用户), 但代价是**页面 500**:
+    # 实测我加了一条英文措辞里含 'spectra'(36 条内部审核黑话之一), `/v2` 与 `/detail/` 当场全 500。
+    # 这类错误在部署前就该报出来, 所以在这里也跑一遍(与出页同一个 check(), 不是另写一套)。
+    try:
+        from src.windscada import lang as _lang
+        _lb = _lang.check()
+        row(f"语言包 (前后端界面文案 zh/en 成对, {len(_lang.L)} 条)", not _lb, "; ".join(_lb[:3]))
+    except Exception as e:                       # 语言包读不出来同样要报, 不静默
+        row("语言包", False, f"{type(e).__name__}: {e}")
     # 子进程口径自检 (2026-09-16 加): 这三条是**回归守卫** —— 它们各自都真炸过一次, 而炸法都是"静默":
     #   ① capture_output=True 与显式 stdout 互斥 → 异常被 except 吞成 alive=False ⇒ 在跑的任务被
     #      误判成"被强杀", 页面显示完成、重算按钮可再点(可能并发重算);

+ 6 - 4
src/windscada/lang.py

@@ -856,10 +856,12 @@ _add({
     'fus.cms_note':    ('状态管理判级, 不代表确诊数量; 判据/谱线/计算过程不在本页 — 深潜走底部独立系统。',
                         'Condition-management ratings, not a count of confirmed faults; criteria, detailed signal markers and calculations are not on this page — use the standalone system linked below.'),
     # ★2026-09-19: 页面上原来只有"出件日 + 证据窗末", 没有**起始日** ⇒ 用户拿 2026-03~04 的导出
-    #   只看到 4 月的谱时会问"3 月的数据呢"。窗名(w0316)只是起始日代号, 这里把实算区间摆出来并说明
-    #   为什么页面上的谱多显示末期日期 (末窗状态=取窗内最新记录, 是口径不是缺数据)。
-    'fus.cms_window':  ('数据窗 {r} —— 本窗**实算**覆盖区间 (窗名只是起始日代号); 页面上的谱与"末窗"状态取自窗内最新记录, 故多显示末期日期。',
-                        'Data window {r} — the measured coverage of this window (the window name is only its start-date code). Spectra and "latest-window" states come from the newest record inside the window, so later dates dominate the display.'),
+    #   只看到 4 月的记录时会问"3 月的数据呢"。窗名(w0316)只是起始日代号, 这里把实算区间摆出来并说明
+    #   为什么图上多显示末期日期 (末窗状态=取窗内最新记录, 是口径不是缺数据)。
+    #   ★英文措辞要过 lang.audit 的语言包闸: 'spectra'/'waveforms'/'characteristic frequency' 等 36 条
+    #   内部审核黑话**禁用**(2026-09-19 实逮: 首版写 spectra 直接让 /v2 出页 500)。
+    'fus.cms_window':  ('数据窗 {r} —— 本窗**实算**覆盖区间 (窗名只是起始日代号); 页面上的图谱与"末窗"状态取自窗内最新记录, 故多显示末期日期。',
+                        'Data window {r} — the measured coverage of this window (the name is only its start-date code). Charts and "latest-window" states come from the newest record inside the window, so later dates dominate the display.'),
     'fus.cms_action':  ('需行动机组 (报警 / 不可判)', 'Units needing action (alarm / undeterminable)'),
     'fus.cms_focus': ('状态焦点', 'Focus'), 'fus.cms_focus_note': ('(传动链: 主承前 · 主承后 · 齿轮箱 · 发电机两端)', '(drivetrain: main bearing fore / aft · gearbox · generator both ends)'),
     'fus.cms_evidence': ('证据强度', 'Evidence strength'), 'fus.cms_act': ('行动', 'Action'),