tpl-governance-2.html.html 49 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383
  1. <!doctype html><html lang="zh-CN" data-theme="light"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"></head><body><nav class="book-nav"><button onclick="parent.document.getElementById('ovx').click()">← 返回交付文档</button><button onclick="openBook('governance-0.html')">分册总目录</button></nav><title>如东变桨执行治理清单</title>
  2. <link rel="preconnect" href="https://fonts.googleapis.com">
  3. <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
  4. <link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Noto+Serif+SC:wght@500;700&family=Noto+Sans+SC:wght@400;500;700&family=IBM+Plex+Mono:wght@400;500;600&display=swap">
  5. <style>
  6. :root{
  7. --ground:#EEF1F3; --surface:#FBFCFD; --surface-2:#F4F7F9;
  8. --ink:#0F1A22; --ink-2:#33454F; --muted:#5B6C78; --faint:#8C9AA4;
  9. --rule:#C6D0D8; --rule-strong:#9DACB7;
  10. --accent:#14385A; --accent-soft:#DCE6EE;
  11. --st-swap:#C2352C; --st-done:#1F7A55; --st-check:#9A7A0A; --st-open:#2A6BB8;
  12. --st-swap-bg:#F7E4E2; --st-done-bg:#E0EFE7; --st-check-bg:#F4EDD8; --st-open-bg:#E1EAF6;
  13. --band:#E3EBF1;
  14. --shadow:0 1px 0 rgba(15,26,34,.05);
  15. }
  16. @media (prefers-color-scheme: dark){
  17. :root:not([data-theme="light"]){
  18. --ground:#0D1418; --surface:#141C22; --surface-2:#1A242B;
  19. --ink:#E7EDF1; --ink-2:#C2CED6; --muted:#8A99A4; --faint:#6A7883;
  20. --rule:#28343C; --rule-strong:#3E4E58;
  21. --accent:#6FA9D4; --accent-soft:#1D2C38;
  22. --st-swap:#DE5A4C; --st-done:#2E9A6C; --st-check:#AE9128; --st-open:#4785D6;
  23. --st-swap-bg:#2E1A18; --st-done-bg:#122A20; --st-check-bg:#2A2412; --st-open-bg:#152435;
  24. --band:#1B2932;
  25. --shadow:none;
  26. }
  27. }
  28. :root[data-theme="dark"]{
  29. --ground:#0D1418; --surface:#141C22; --surface-2:#1A242B;
  30. --ink:#E7EDF1; --ink-2:#C2CED6; --muted:#8A99A4; --faint:#6A7883;
  31. --rule:#28343C; --rule-strong:#3E4E58;
  32. --accent:#6FA9D4; --accent-soft:#1D2C38;
  33. --st-swap:#DE5A4C; --st-done:#2E9A6C; --st-check:#AE9128; --st-open:#4785D6;
  34. --st-swap-bg:#2E1A18; --st-done-bg:#122A20; --st-check-bg:#2A2412; --st-open-bg:#152435;
  35. --band:#1B2932;
  36. --shadow:none;
  37. }
  38. *{box-sizing:border-box}
  39. body{
  40. margin:0; background:var(--ground); color:var(--ink);
  41. font-family:"Noto Sans SC","PingFang SC","Hiragino Sans GB",system-ui,sans-serif;
  42. font-size:15px; line-height:1.75; -webkit-font-smoothing:antialiased;
  43. }
  44. .sheet{max-width:1120px;margin:0 auto;padding:0 20px 96px}
  45. h1,h2,h3,h4{font-family:"Noto Serif SC","Songti SC",serif;font-weight:700;text-wrap:balance;margin:0}
  46. .mono{font-family:"IBM Plex Mono",ui-monospace,monospace;font-variant-numeric:tabular-nums;overflow-wrap:anywhere}
  47. .num{font-family:"IBM Plex Mono",ui-monospace,monospace;font-variant-numeric:tabular-nums;font-weight:500}
  48. /* ── 图纸标题栏 ───────────────────────────── */
  49. .titleblock{
  50. margin-top:36px;border:1.5px solid var(--rule-strong);background:var(--surface);
  51. }
  52. .tb-head{padding:26px 28px 20px;border-bottom:1.5px solid var(--rule-strong)}
  53. .tb-eyebrow{
  54. font-family:"IBM Plex Mono",monospace;font-size:11px;letter-spacing:.22em;
  55. text-transform:uppercase;color:var(--muted);margin-bottom:14px
  56. }
  57. .tb-head h1{font-size:clamp(30px,4.6vw,46px);line-height:1.12;letter-spacing:.01em}
  58. .tb-sub{margin-top:12px;color:var(--ink-2);font-size:15px;max-width:60ch}
  59. .tb-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(168px,1fr))}
  60. .tb-cell{padding:13px 18px;border-right:1px solid var(--rule);border-bottom:1px solid var(--rule)}
  61. .tb-cell:last-child{border-right:none}
  62. .tb-k{font-family:"IBM Plex Mono",monospace;font-size:10.5px;letter-spacing:.14em;color:var(--muted);text-transform:uppercase}
  63. .tb-v{font-size:14.5px;font-weight:500;margin-top:3px;font-variant-numeric:tabular-nums}
  64. /* ── 边界声明 ─────────────────────────────── */
  65. .scope{
  66. margin-top:28px;background:var(--surface);border:1px solid var(--rule);
  67. border-left:4px solid var(--accent);padding:22px 26px;
  68. }
  69. .scope h3{font-size:17px;margin-bottom:10px}
  70. .scope p{margin:0 0 10px;color:var(--ink-2);font-size:14.5px}
  71. .scope p:last-child{margin-bottom:0}
  72. .cut{
  73. display:inline-block;padding:1px 8px;margin:0 2px;border:1px solid var(--rule-strong);
  74. border-radius:2px;font-size:13px;color:var(--muted);text-decoration:line-through;
  75. text-decoration-color:var(--st-swap);text-decoration-thickness:1.5px;
  76. }
  77. /* ── 系统索引 ─────────────────────────────── */
  78. .idx{margin-top:44px}
  79. .idx-head{display:flex;align-items:baseline;justify-content:space-between;gap:16px;flex-wrap:wrap;margin-bottom:16px}
  80. .idx-head h2{font-size:22px}
  81. .idx-note{font-size:13px;color:var(--muted)}
  82. .idx-list{display:grid;gap:0;border-top:1px solid var(--rule)}
  83. .idx-row{
  84. display:grid;grid-template-columns:44px 1fr auto auto;gap:16px;align-items:center;
  85. padding:11px 6px;border-bottom:1px solid var(--rule);background:transparent;
  86. }
  87. .idx-row.on{background:var(--surface)}
  88. .idx-n{font-family:"IBM Plex Mono",monospace;font-size:13px;color:var(--muted);font-weight:600}
  89. .idx-row.on .idx-n{color:var(--accent)}
  90. .idx-name{font-weight:500}
  91. .idx-row.on .idx-name{font-weight:700}
  92. .idx-cnt{font-family:"IBM Plex Mono",monospace;font-size:13px;color:var(--muted)}
  93. .idx-state{font-size:11.5px;letter-spacing:.08em;padding:2px 9px;border:1px solid var(--rule-strong);color:var(--muted);white-space:nowrap}
  94. .idx-row.on .idx-state{border-color:var(--accent);color:var(--accent);font-weight:600}
  95. /* ── 系统章节 ─────────────────────────────── */
  96. .sys{margin-top:64px;border-top:3px solid var(--ink);padding-top:22px}
  97. .sys-tag{
  98. font-family:"IBM Plex Mono",monospace;font-size:11.5px;letter-spacing:.2em;
  99. color:var(--muted);text-transform:uppercase
  100. }
  101. .sys h2{font-size:clamp(24px,3.2vw,32px);margin-top:6px}
  102. .sys-lead{margin-top:12px;color:var(--ink-2);max-width:66ch}
  103. .card{background:var(--surface);border:1px solid var(--rule);padding:22px 24px;margin-top:24px}
  104. .card h3{font-size:16px;margin-bottom:12px;display:flex;align-items:center;gap:9px}
  105. .card h3::before{content:"";width:9px;height:9px;background:var(--accent);flex:none}
  106. .formula{
  107. font-family:"IBM Plex Mono",monospace;font-size:15px;background:var(--surface-2);
  108. border:1px solid var(--rule);padding:12px 16px;margin:10px 0 14px;overflow-x:auto;white-space:nowrap
  109. }
  110. .gvb{display:grid;grid-template-columns:1fr 1fr;gap:0;border:1px solid var(--rule);margin-top:14px}
  111. .gvb>div{padding:14px 18px}
  112. .gvb .g{background:var(--st-done-bg);border-right:1px solid var(--rule)}
  113. .gvb .b{background:var(--st-swap-bg)}
  114. .gvb .lab{font-size:11.5px;letter-spacing:.14em;font-weight:700;text-transform:uppercase}
  115. .gvb .g .lab{color:var(--st-done)} .gvb .b .lab{color:var(--st-swap)}
  116. .gvb .val{font-family:"IBM Plex Mono",monospace;font-size:26px;font-weight:600;margin-top:4px;color:var(--ink)}
  117. .gvb .exp{font-size:13px;color:var(--ink-2);margin-top:4px}
  118. @media(max-width:640px){.gvb{grid-template-columns:1fr}.gvb .g{border-right:none;border-bottom:1px solid var(--rule)}}
  119. /* ── 图 ───────────────────────────────────── */
  120. figure{margin:28px 0 0;background:var(--surface);border:1px solid var(--rule);padding:22px 24px 18px}
  121. figcaption{font-size:13px;color:var(--muted);margin-top:14px;padding-top:12px;border-top:1px solid var(--rule)}
  122. figcaption b{color:var(--ink-2);font-weight:600}
  123. .fig-title{font-family:"Noto Serif SC",serif;font-weight:700;font-size:16px;margin-bottom:4px}
  124. .fig-sub{font-size:13px;color:var(--muted);margin-bottom:16px}
  125. .chartwrap{overflow-x:auto}
  126. .legend{display:flex;flex-wrap:wrap;gap:6px 20px;margin-top:14px;font-size:13px}
  127. .legend span{display:inline-flex;align-items:center;gap:7px;color:var(--ink-2)}
  128. .lg-dot{width:11px;height:11px;flex:none;border-radius:50%}
  129. .lg-sq{width:11px;height:11px;flex:none}
  130. /* ── 表 ───────────────────────────────────── */
  131. .tablewrap{overflow-x:auto;margin-top:22px;border:1px solid var(--rule);background:var(--surface)}
  132. table{border-collapse:collapse;width:100%;min-width:820px;font-size:14px}
  133. caption{
  134. text-align:left;padding:14px 18px 12px;font-family:"Noto Serif SC",serif;font-weight:700;
  135. font-size:15.5px;border-bottom:1px solid var(--rule);background:var(--surface-2)
  136. }
  137. caption .csub{display:block;font-family:"Noto Sans SC",sans-serif;font-weight:400;font-size:13px;color:var(--muted);margin-top:3px}
  138. th{
  139. text-align:left;font-size:11.5px;letter-spacing:.11em;text-transform:uppercase;color:var(--muted);
  140. font-weight:600;padding:10px 14px;border-bottom:1px solid var(--rule-strong);white-space:nowrap
  141. }
  142. td{padding:12px 14px;border-bottom:1px solid var(--rule);vertical-align:top}
  143. tbody tr:last-child td{border-bottom:none}
  144. td.tid{white-space:nowrap;font-family:"IBM Plex Mono",monospace;font-weight:600;font-size:14.5px}
  145. td.tid small{display:block;font-weight:400;color:var(--muted);font-size:11.5px;letter-spacing:.04em}
  146. td.part{white-space:nowrap;font-weight:500}
  147. td.act{min-width:190px}
  148. td.why{color:var(--ink-2);font-size:13.5px}
  149. .hl{color:var(--ink);font-weight:600;font-family:"IBM Plex Mono",monospace;font-variant-numeric:tabular-nums}
  150. tr.rank1 td{background:var(--surface-2)}
  151. .pill{
  152. display:inline-block;font-size:11.5px;font-weight:600;padding:2px 9px;white-space:nowrap;
  153. border:1px solid currentColor;letter-spacing:.03em
  154. }
  155. .p-swap{color:var(--st-swap);background:var(--st-swap-bg)}
  156. .p-done{color:var(--st-done);background:var(--st-done-bg)}
  157. .p-check{color:var(--st-check);background:var(--st-check-bg)}
  158. .p-open{color:var(--st-open);background:var(--st-open-bg)}
  159. .evid{font-family:"IBM Plex Mono",monospace;font-size:11.5px;color:var(--muted);white-space:nowrap}
  160. /* ── 待定 ─────────────────────────────────── */
  161. .hold{margin-top:30px;border:1.5px solid var(--st-open);background:var(--st-open-bg)}
  162. .hold-h{padding:14px 22px;border-bottom:1px solid var(--st-open);display:flex;align-items:center;gap:10px}
  163. .hold-h h3{font-size:16px;color:var(--st-open)}
  164. .hold-h .tagn{font-family:"IBM Plex Mono",monospace;font-size:12px;color:var(--st-open);border:1px solid var(--st-open);padding:1px 8px}
  165. .hold-b{padding:6px 22px 18px}
  166. .hold-item{padding:14px 0;border-bottom:1px dashed var(--st-open)}
  167. .hold-item:last-child{border-bottom:none}
  168. .hold-q{font-weight:700;margin-bottom:7px}
  169. .two{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:14px;margin-top:8px}
  170. @media(max-width:640px){.two{grid-template-columns:1fr}}
  171. .opt{background:var(--surface);border:1px solid var(--rule);padding:11px 14px;font-size:13.5px;min-width:0;overflow-wrap:anywhere}
  172. .opt .ol{font-family:"IBM Plex Mono",monospace;font-size:11px;letter-spacing:.12em;color:var(--muted);text-transform:uppercase;margin-bottom:4px}
  173. .rec{font-size:13.5px;margin-top:10px;color:var(--ink-2)}
  174. .rec b{color:var(--st-open)}
  175. .foot{margin-top:64px;padding-top:20px;border-top:1px solid var(--rule);font-size:13px;color:var(--muted)}
  176. .foot code{font-family:"IBM Plex Mono",monospace;font-size:12.5px;background:var(--surface-2);padding:1px 6px;border:1px solid var(--rule)}
  177. /* ── 偏离表 ─────────────────────────────── */
  178. table.dev{min-width:1000px}
  179. table.dev th{text-align:center}
  180. table.dev th:first-child,table.dev td:first-child{text-align:left}
  181. table.dev th:last-child,table.dev td:last-child{text-align:left}
  182. td.v{text-align:center;font-family:"IBM Plex Mono",monospace;font-variant-numeric:tabular-nums;font-size:13.5px;font-weight:500;white-space:nowrap}
  183. td.v small{display:block;font-size:10.5px;font-weight:400;color:var(--muted);letter-spacing:0;margin-top:2px;font-family:"Noto Sans SC",sans-serif}
  184. td.v.bad{background:var(--st-swap-bg);color:var(--st-swap);font-weight:600}
  185. td.v.bad small{color:var(--st-swap);opacity:.8}
  186. td.v.warn{background:var(--st-check-bg);color:var(--st-check);font-weight:600}
  187. td.v.warn small{color:var(--st-check);opacity:.85}
  188. td.v.ok{color:var(--st-done);font-weight:600}
  189. td.v.na{color:var(--faint)}
  190. tr.base td{background:var(--surface-2);border-bottom:2px solid var(--rule-strong);font-weight:600}
  191. tr.base td.v{color:var(--ink)}
  192. tr.done td{opacity:.86}
  193. /* ── 现场第一步 ─────────────────────────── */
  194. .step{margin-top:26px;border:1.5px solid var(--accent);background:var(--surface)}
  195. .step-h{padding:15px 22px;background:var(--accent-soft);border-bottom:1px solid var(--accent);display:flex;align-items:center;gap:11px;flex-wrap:wrap}
  196. .step-h h3{font-size:16.5px}
  197. .step-h .tagn{font-family:"IBM Plex Mono",monospace;font-size:11.5px;letter-spacing:.14em;color:var(--accent);border:1px solid var(--accent);padding:2px 9px}
  198. .step-b{padding:18px 22px}
  199. .three{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-top:14px}
  200. @media(max-width:760px){.three{grid-template-columns:1fr}}
  201. .br{border:1px solid var(--rule);padding:13px 15px;background:var(--surface-2);min-width:0;overflow-wrap:anywhere}
  202. .br .rd{font-family:"IBM Plex Mono",monospace;font-size:15px;font-weight:600;margin-bottom:5px}
  203. .br .ac{font-size:13.5px;color:var(--ink-2)}
  204. .br.b1{border-top:3px solid var(--st-swap)} .br.b1 .rd{color:var(--st-swap)}
  205. .br.b2{border-top:3px solid var(--st-check)} .br.b2 .rd{color:var(--st-check)}
  206. .br.b3{border-top:3px solid var(--st-open)} .br.b3 .rd{color:var(--st-open)}
  207. /* tooltip */
  208. #tip{
  209. position:fixed;pointer-events:none;opacity:0;transition:opacity .12s;z-index:50;
  210. background:var(--ink);color:var(--ground);padding:8px 11px;font-size:12.5px;line-height:1.5;
  211. font-family:"IBM Plex Mono",monospace;max-width:240px;
  212. }
  213. @media (prefers-reduced-motion: reduce){*{animation:none!important;transition:none!important}}
  214. :focus-visible{outline:2px solid var(--accent);outline-offset:2px}
  215. @media print{
  216. @page{size:A4 portrait;margin:11mm 9mm}
  217. html,body{background:#fff}
  218. body{-webkit-print-color-adjust:exact;print-color-adjust:exact;font-size:11.5px}
  219. .sheet{max-width:none;padding:0}
  220. svg[id]{width:100%!important;height:auto!important;max-width:100%}
  221. .chartwrap,.tablewrap{overflow-x:visible!important}
  222. table{min-width:0!important;font-size:10.5px}
  223. table{table-layout:auto}
  224. table th:last-child,table td:last-child{width:34%}
  225. table.dev th:not(:first-child):not(:last-child),table.dev td:not(:first-child):not(:last-child){width:9%}
  226. caption{font-size:11.5px}
  227. .dev{min-width:0!important}
  228. .formula{white-space:pre-wrap!important;overflow-x:visible!important;word-break:break-word;font-size:12px}
  229. .mono,.opt,.br{overflow-wrap:anywhere}
  230. .card,.tablewrap,.chartwrap,.hold,.three>.br,.gvb>.b,figure{break-inside:avoid}
  231. tr{break-inside:avoid}
  232. thead{display:table-header-group}
  233. h1,h2,h3,caption{break-after:avoid}
  234. section.sys{break-before:page}
  235. section.titleblock{break-after:avoid}
  236. a[href^="http"]::after{content:""}
  237. }
  238. </style>
  239. <div class="sheet">
  240. <section class="titleblock">
  241. <div class="tb-head">
  242. <div class="tb-eyebrow">Governance Register · 治理登记册 · 分册</div>
  243. <h1>变桨执行治理清单</h1>
  244. <p class="tb-sub">位置反馈 · 旋转接头 · 变桨锁 · 润滑。列出<strong>治理对象、处置内容与依据</strong>,报告与治理清单</p>
  245. </div>
  246. <div class="tb-grid">
  247. <div class="tb-cell"><div class="tb-k">项目</div><div class="tb-v">项目 R-01(如海)海上</div></div>
  248. <div class="tb-cell"><div class="tb-k">机型 / 台数</div><div class="tb-v">SWT-4.0-130 · 38 台</div></div>
  249. <div class="tb-cell"><div class="tb-k">范围</div><div class="tb-v">系统② 变桨执行</div></div>
  250. <div class="tb-cell"><div class="tb-k">证据窗</div><div class="tb-v">运行 →2026-07-07</div></div>
  251. <div class="tb-cell"><div class="tb-k">版本</div><div class="tb-v">v1.0 · 2026-09-05</div></div>
  252. <div class="tb-cell"><div class="tb-k">部件命名</div><div class="tb-v">按上海电气设备结构树</div></div>
  253. </div>
  254. </section>
  255. <section class="scope">
  256. <h3>本分册的范围</h3>
  257. <p>本册只出<strong>变桨执行</strong>一节(位置反馈 · 旋转接头 · 变桨锁 · 润滑)。其余系统各有分册;发电机轴承、主轴承、齿轮箱轴承与轮齿、叶根连接螺栓不在治理清单范围,见《跨系统危险级风险与联合处置总册》。</p>
  258. <p><strong>部件名一律按</strong>《上海电气 SWT4.0-130 设备结构树》<strong>写</strong>。引用故障处置手册、SCADA 告警文本、备件库名称时照录原文并标明出处。</p>
  259. <p style="font-size:13.5px;color:var(--muted);border-top:1px solid var(--rule);padding-top:12px;margin-top:14px"><strong>本册统计术语(逐个中文释义,避免误读):</strong><br><span class="mono">p50</span> = <strong>中位数(50 百分位)</strong>;<span class="mono">p90 / p95</span> = <strong>90 / 95 百分位数</strong>,<b>不是概率</b>。把该量的取值从小到大排,"p95 = 53.79%"意思是 <b>95% 的数据小于等于 53.79%</b>;<b>中位数不被极端值拉走</b> —— 一次传感器 rail 或一次风暴尖峰能把平均值拉高一大截,却几乎不动中位数,所以本册一律用中位不用平均。<br><span class="mono">fleet</span> = <strong>同型机群</strong>(本场 38 台)。"fleet 中位"= 38 台各自算出一个数后再取中位。<br><span class="mono">z</span> = <strong>稳健标准分</strong>(偏离机群中位多少个稳健标准差)。<b>z 大不等于偏得多</b> —— 机群本身极密集时,很小的绝对差也会算出很大的 z,<b>本册所有 z 都另过了绝对幅度闸</b>。<br><span class="mono">MAD</span> = <strong>中位绝对偏差</strong>,机群离散程度的稳健度量,作 z 的分母。<br><span class="mono">CI</span> = <strong>置信区间</strong>;<span class="mono">MDC</span> = <strong>最小可检出变化</strong>(小于它的变化在本通道分辨率下读不出来)。<br><span class="mono">同一时间窗</span> = 各台取<b>同一段时间</b>的数据比较(避免拿不同时段互比);<span class="mono">现窗</span> = 数据窗末段,与"全窗"相对 —— <b>判"现在坏不坏"只看现窗</b>。</p>
  260. <p style="font-size:13.5px;color:var(--muted)">口径承 SOP §0.2 六枚举。本册所列<strong>全部为候选级及以下</strong>,用于安排复核与处置顺序,<strong>不替代现场停机标准</strong>。</p>
  261. </section>
  262. <section class="sys">
  263. <div class="sys-tag">System 02 · U2</div>
  264. <h2>变桨执行<span style="font-size:.55em;font-weight:500;color:var(--muted)"> 位置反馈 · 旋转接头 · 变桨锁 · 润滑</span></h2>
  265. <p class="sys-lead">油路:<strong>变桨泵站</strong>(机舱) → <strong>旋转接头</strong>(P 25×3 / T 38×3 / 泄漏线 10×1.5;与电气滑环是两个部件)→ 轮毂<strong>分配块</strong> → 三个叶片块(各含蓄能器 + 比例阀 + 缸)。</p>
  266. <p class="sys-lead" style="margin-top:8px;font-size:13.5px;color:var(--muted)"><strong>本节不含:</strong>变桨泵站蓄能器(70 号)已在<strong>系统①</strong>;叶根连接螺栓在<strong>《联合处置总册》</strong>(窗内 18 单 / 9 台,12F 最多 5 单)。</p>
  267. <!-- 跨系统冲突 -->
  268. <div class="hold" style="border-color:var(--st-swap);background:var(--st-swap-bg)">
  269. <div class="hold-h" style="border-bottom-color:var(--st-swap)">
  270. <span class="tagn" style="color:var(--st-swap);border-color:var(--st-swap)">⚠ 回改系统①</span>
  271. <h3 style="color:var(--st-swap)">三条跨系统核对结果</h3>
  272. </div>
  273. <div class="hold-b">
  274. <div class="hold-item" style="border-bottom-color:var(--st-swap)">
  275. <div class="hold-q">① <b>32# 的部件归属已澄清:换的就是 70 号</b>(现场交流确认)</div>
  276. <div style="font-size:13.5px;color:var(--ink-2)">该台触发码是 <span class="mono">3225 轮毂侧</span>、工单故障名称写"高压报警叶片X",曾据此怀疑换的是叶片块蓄能器。<b>现场交流确认:换的是 70 号。</b></div>
  277. <div class="rec" style="color:var(--ink-2)"><b>⇒ 这与仿真台的连锁模型完全自洽:</b>70 号垮塌 → 循环尖峰 → 棘轮抬升 → <b>118 单向阀恒闭 → 轮毂被退出循环</b> ⇒ <b>轮毂侧压力异常(3225)是 70 号失效的下游表现,不是叶片块自身故障</b>。<br><b>因此 3225 风暴台(2# / 8# / 10#)的部件归属同为 70 号蓄能器</b>,与系统① 一致,无需"两侧分辨"。</div>
  278. </div>
  279. <div class="hold-item" style="border-bottom-color:var(--st-swap)">
  280. <div class="hold-q">② <b>4# 那张工单不能算"针对性处置"</b> —— 系统①把它说重了</div>
  281. <div style="font-size:13.5px;color:var(--ink-2)">U2 档案对同一张单(04E 2026-06-09「70蓄能器更换,电气滑环清洗」)的判读:<b>该单 loss=0,且落在 2026-06 全场迎峰度夏批量维护内</b>(17 行 / 16 台,统一写"滑环清洗/迎峰度夏");"70蓄能器压力补气"这个措辞<b>也出现在 08F 2025-02 的全年维护里 = 例行项名</b>。U2 据此<b>已撤回"站侧闭环链"候选</b>。<br><b>但要分清:</b>4# 那单写的是"更换",08F 那条写的是"补气",<b>不是同一动作</b>;且 V<sub>cyc</sub> 在换件当周由 0.53 跳到 4.39 L 是独立观测,不依赖工单措辞。</div>
  282. <div class="rec" style="color:var(--ink-2)"><b>改法:</b>4# 仍作 V<sub>cyc</sub> 判据的正样本(指标确实在换件当周跳回),但<b>不可称"针对性处置",也不可据它建"站侧闭环链"</b>。系统①措辞已回改。</div>
  283. </div>
  284. <div class="hold-item">
  285. <div class="hold-q">③ <b>16# 液压油位"慢漏"已撤</b> —— 是急性管路破裂,不是慢漏</div>
  286. <div style="font-size:13.5px;color:var(--ink-2)">2026-07-01 工单故障原因逐字为"主液压站 <b>55 号油管破裂</b>导致漏油",处置=更换 55 号油管。<b>急性破裂 ≠ 慢漏</b>,处置方向完全不同。系统① E 类里"16B 慢漏排查"一项作废,已删。</div>
  287. </div>
  288. </div>
  289. </div>
  290. <!-- 安全首位 -->
  291. <div class="card" style="border-left:4px solid var(--st-swap)">
  292. <h3>38# B 叶片顺桨不可确认(P0)</h3>
  293. <p style="margin:0 0 10px;font-size:14.5px;color:var(--ink-2)"><strong>事实:</strong>窗内 <span class="hl">6 起</span>(≥0.5 h,NaN 桥接后),首起 <span class="hl">2025-05-14</span>,最长单次 <span class="hl">80.3 h</span>。事件窗内 <span class="mono">4741/4786</span> 行显示 B 叶未顺桨;告警码 <span class="mono">3145</span> 全场 30 条中 <b>28 条在本台</b>;B 叶单叶独家 NaN 占比 <span class="hl">0.0455%</span> 而 fleet 最大仅 <span class="mono">0.0042%</span>(10.8 倍)。</p>
  294. <p style="margin:0 0 10px;font-size:14.5px;color:var(--ink-2)"><strong>机制判断已修订:</strong>由"执行机构侧"改判 <strong>位置反馈 / 信号链故障【候选·强】</strong> —— 决定性证据是油压签名:该台事件期油压中位 <span class="hl">28.5 bar</span> vs 标定 <span class="hl">38.0 bar</span>,两次恢复跳变仅 −1.0 / +6.0 bar,<strong>不是执行机构失力的形态</strong>。措辞同步收紧为"顺桨<strong>不可确认</strong>"——"顺桨不可执行"证据不足。</p>
  295. <div class="gvb">
  296. <div class="b">
  297. <div class="lab">⛔ 待核实量 · 补充现场角度测量</div>
  298. <div class="val">读数 vs 实际</div>
  299. <div class="exp"><b>登机后、动缸/复位/断电<u>之前</u>,先用量角器实测 B 叶实际角度并同步读 SCADA 显示值。</b>若实测 ≈0°(真已顺桨)⇒ 机制翻回执行机构侧;若实测 ≈88.6° 而 SCADA 读 −1.7° ⇒ 位置反馈机制证实升定论。<b>复位上电会永久销毁该证据。</b></div>
  300. </div>
  301. <div class="g" style="background:var(--st-check-bg)">
  302. <div class="lab" style="color:var(--st-check)">现有处置与复发观察</div>
  303. <div class="val" style="color:var(--st-check)">17.9 天</div>
  304. <div class="exp">该台 <b>2026-06-26 已处置</b>(A6 柜传感器线 + 液压油缸),数据窗末<b>零复发 17.9 天</b>(告警层)/ 10.3 天(10min 层)。<b>今天派队去健康机组量角,只会得到"两读一致",闭不了案。</b>而该故障曾<b>静默 104 天后复发</b>,真复发时来不及走审批。</div>
  305. </div>
  306. </div>
  307. <p style="margin:16px 0 0;font-size:14.5px;color:var(--ink-2)"><strong>⇒ 正解 = 把卡片、量角工具、交底<u>现在预置进 38# 作业包</u></strong>,触发时直接执行;当前正常状态下顺带做一次<strong>基线量角作正常态对照</strong>。交付物已有:<span class="mono">_deliverable/现场处置单.md</span>(382 行 / 37 勾选项 / 17 处 ⛔)。<br><strong>处置顺序:</strong>第 0 步量角 → 第 1 步 A6 柜 MTS-B 通路带电分段测量 + 机械扰动复现间歇 → 第 2 步开轮毂查异物 → 第 3 步 MTS 本体/接插件/屏蔽/CAN → 缸/阀/蓄能器 → 第 4 步索要三次实际换件记录。</p>
  308. <p style="margin:12px 0 0;font-size:13.5px;color:var(--muted)"><strong>同型物理先例就在这台自己身上:</strong>38# 2022-11-03 工单原文「叶片A第49号螺栓断裂…<b>另外发现叶片C液压油缸位置传感器接线掉落重新紧固</b>」。<br><strong>⚠ 口径更正:</strong>"2026 年 MTS 升温"这个叙事<b>不成立</b> —— 告警侧前推近一年:12F MTS-A 自 <b>2025-05-30</b> 起、38B 自 <b>2026-01-30</b> 起,工单月(12F 03 / 38B 06)只是记录滞后。</p>
  309. </div>
  310. <!-- 执行面 -->
  311. <div class="tablewrap">
  312. <table>
  313. <caption>表 B1 · 执行面 —— 变桨执行派工表<span class="csub">按价值排序。<b>压力尖峰型码(3225 轮毂 / 3224 站侧)中位数(50 百分位)仅 2 s、单条不停机 = 状态信号非停机故障</b>。手册原文:<span class="mono">3225</span> =「叶片高压报警」· <span class="mono">3224</span> =「液压站高压报警」,<b>3224 的首选处置项就写着「蓄能器70」</b> —— 与系统① 的 70 号换件序列同指,不可按条数直接派工;真正吃电量的是停机故障型(跟踪 / 电磁阀 / MTS / 压力开关)。</span></caption>
  314. <thead><tr><th>机组</th><th>部件</th><th>处理方案</th><th>好 vs 坏</th><th>等级</th></tr></thead>
  315. <tbody>
  316. <tr class="rank1"><td class="tid">38#<small>38B</small></td><td class="part">MTS-B 缸位置传感器<br><span style="font-size:11.5px;font-weight:400;color:var(--muted)">A6 柜传感器线 / 接插件 / 屏蔽</span></td><td class="act"><b>作业包预置</b>:量角卡片 + 量角器 + 交底进 38# 包;当前正常时做基线量角正常态对照。<b>不单独派航次</b></td><td class="why">6 起顺桨不可确认,最长 80.3 h;<span class="mono">3145</span> 全场 30 条本台占 28。已于 2026-06-26 处置,零复发 17.9 天 —— <b>但曾静默 104 天后复发</b>。</td><td><span class="pill p-swap">P0 预置</span></td></tr>
  317. <tr><td class="tid">12#<small>12F</small></td><td class="part">MTS-A 缸位置传感器</td><td class="act">复查 MTS-A 通路;并入<b>雷击史整机体检</b>同次做</td><td class="why">2026-03-14 工单"MTS-A 传感器无反馈 + 叶ABC阀错误";<b>告警侧自 2025-05-30 起已有</b>。该台<b>全场问题密度第一</b>:螺栓×5 + 无润滑 + 油位 141.5 h + 松动物体并发。<br><b>MTS 三码实测涉 3 台,但机制不同:</b>12# <span class="mono">3144</span>(A 叶)为主 17 条 / 174 h / 跨 10 个月 · 38# <span class="mono">3145</span>(B 叶)28 条 / 116.5 h / 跨 5 个月 —— 两台均为<b>单叶片持续型</b>;而 23# 三码各 1 条,<b>起报落在 2026-05-26 的 92 秒内</b>(16:00:55 / 16:00:55 / 16:02:27),各持续 14–15 min,<b>16:16:2x 三条一起结束</b>;<b>该时段全场无第二台报任何码</b> ⇒ 不是场级事件,是<b>该台轮毂侧的共模</b>,<b>非同机制</b>。<br><b>已查证不是螺栓断裂:</b>23# 三次开轮毂三次都写明没断 —— 2021-10-11「检查发现<b>无</b>螺栓断裂,A 叶片集油瓶碎裂」· 2021-10-16「螺栓<b>未</b>断裂」<b>→ 更换 HUB 板 + 麦克风小板</b> · 2025-05-15「检查<b>未</b>发现断的螺栓,B 叶片集油瓶夹层内一垫片」。全场螺栓断裂四源并集 <b>18/38 台,23# 不在其中</b>。<br><b>可查的旧例反而指向轮毂通讯板:</b>2021-10-16 该台换过 <b>HUB 板</b>,与"轮毂侧共模"同指。另 <span class="mono">3118</span>「油脂水平低,轮毂」在 MTS 清除后 <b>6 秒</b>起报、连报 <b>3.9 天</b>,至 05-30 全年维护清除。<br><b>⇒ 同机制仍为 2 台,未达"≥3 台同机制"的升审门槛;双模审当前<u>未做</u>,亦不必然要做。</b><b>若 23# 复现为单叶片持续型,则升审条件成立。</b></td><td><span class="pill p-check">P0 现场核</span></td></tr>
  318. <tr><td class="tid">13#<small>13E</small></td><td class="part">轮毂压力开关 / 阀块 / 管路</td><td class="act">不派工 —— <b>现场已确认闭环</b></td><td class="why">2025-07/08 <b>螺栓断裂砸坏电磁阀</b>(已闭环)后,2026-05 曾再起:叶C低油压×10 + 轮毂压力开关错误(05-22)+ 蓄B检超时 2.4 天(05-26)+ 06-26 轮毂异物,三信号 05/06 连发。<br><b>现场已确认该轮处置闭环</b>,本条不再列派工。</td><td><span class="pill p-done">已闭环</span></td></tr>
  319. <tr><td class="tid">7#<small>07F</small><br>4#<small>04E</small></td><td class="part">变桨锁<small>手册作「变桨爪」</small><br><span style="font-size:11.5px;font-weight:400;color:var(--muted)">3208「停机期间,叶片C桨距反馈」</span></td><td class="act">压力开关 / 变桨锁油缸 / 密封 逐项检查,结束"月月报无处置"状态</td><td class="why"><span class="mono">3208</span>(手册首选处置栏作 <b>变桨爪</b>,结构树正名 <b>变桨锁</b>)07F <span class="hl">78 条</span> / 04E <span class="hl">27 条</span>。</td><td><span class="pill p-check">P1 现场核</span></td></tr>
  320. <tr><td class="tid">22# 23# 21#<br>34# 6# 12# 25#</td><td class="part">轮毂润滑系统泵 / 分配器 / 脂位</td><td class="act"><b>已按判别器拆为四型 —— 见下方表 B3</b>,不再逐台同处置</td><td class="why">润滑告警时长大户 7 台(11F 553.1 h / 13E 524.6 / 34A 523.4 / 25D 508.9…)。<b>⚠ 族口径两处不一致:</b>3115/16/17 有 97.7% 精确落 13:10(每日润滑调度时刻,计数≈失败天数 ✓),但 <b>3118(占族内时长 51%)仅 19.0% 落 13 时、3200 仅 11%</b> ⇒ "计数≈失败天数"<b>不可推及全族</b>,引用须声明含不含 3200。</td><td><span class="pill p-check">P1</span></td></tr>
  321. <tr><td class="tid">19#<small>19C</small><br>31#<small>31A</small></td><td class="part">PitchTable 桨距参数表</td><td class="act"><b>19C 按 31# 同型处置</b>:重刷控制程序,必要时换主控板;<br><b>并同次测 70 号预充</b>(31# 的恢复含气容回升,单靠重刷程序可能不够);<br>现值导出与系统① 参数导出<b>同次现场作业</b>,留处置前后对照</td><td class="why">31A 最小桨距 <span class="hl">−1.1°</span> 历史偏差<b>已交叉闭环</b>(2025-07-02 换主控板重刷程序;换后最小桨距回到 fleet <b>0.810°</b>),<b>处置后运行正常</b>。<br>同月另有预充基线坡降(U7 档案记载,<b>无逐台数值 ⇒ 只作同向观察,不作第二独立证据</b>);19C 为<b>同型偏差</b>、2025 全年持续 ⇒ 按 31# 的处方执行。<b>⚠ 但 31# 的恢复经分解含气容回升(Δp 只解释 2.6× / 实际 4.7×)⇒ 该对照已降级,19C 须同次测 70 号预充。</b><br><b>换主控板/重刷程序会改桨距运行点</b> ⇒ 性能横比与建模跨该类工单必分段。</td><td><span class="pill p-swap">P1 同型处置</span></td></tr>
  322. <tr><td class="tid">全场</td><td class="part">月度自动筛查(0 备件)</td><td class="act">① <b>条数筛</b>:<span class="mono">3225</span>「叶片高压报警」/ <span class="mono">3224</span>「液压站高压报警」单台单月 >100 条 → 列为蓄能器候选<br>② <b>单缸筛</b>:某月只有一个油缸报事件 → 该缸单列<br>③ <b>充压超时筛</b>:先剔除停机闩锁造成的假计时,再看真超时</td><td class="why">单缸筛已用三台<b>已知结果</b>的机组回测,<b>3/3 与工单对得上</b>(23C / 28D / 13E);三缸油压持续偏差比对全期 m<1%,说明本场<b>不存在持续性的单缸偏压</b> —— 这是反例,证明筛子不会乱报。<br><b>判据已验证,但还没接进月度例行 —— 差的只是把它挂到每个月的数据上跑一遍。</b></td><td><span class="pill p-check">P2</span></td></tr>
  323. </tbody>
  324. </table>
  325. </div>
  326. <!-- 润滑分型 -->
  327. <div class="card" style="border-left:4px solid var(--st-check)">
  328. <h3>变桨润滑 7 台分型</h3>
  329. <p style="margin:0 0 10px;font-size:14.5px;color:var(--ink-2)">先把码义定清楚(全场实测条数):<span class="mono">3115/3116/3117 = 无润滑,叶片 A/B/C</span>(128/97/124 条)· <span class="mono">3118 = 轮毂润滑油脂油位错误</span>(84 条/20 台,<b>脂桶液位</b>)· <span class="mono">3200 = 轮毂润滑不可能</span>(18 条/仅 2 台,<b>装置本体失效</b>)· <span class="mono">3130 = 变桨润滑</span>(4114 条,<b>每台恒 6.3–7.4 h = 例行调度码,不是故障,不入分母</b>)。</p>
  330. <div class="formula">判别器:三码(A/B/C)是否<b>同秒</b>触发  ×  脂桶液位码 3118 是否同时报</div>
  331. <p style="margin:0 0 12px;font-size:13.5px;color:var(--ink-2)"><b>实测同秒重合率:</b>34# / 21# / 23# / 12# = <b>100%</b>(三码是同一事件的三个派生码,<b>算一条证据不是三条</b>);而 <b>22# 仅 4%</b>(3115=3 / 3116=10 / <b>3117=69</b>)⇒ <b>真·单叶片分化</b>。</p>
  332. <div class="tablewrap" style="margin-top:0">
  333. <table class="dev">
  334. <caption>表 B3 · 变桨润滑分型 —— 同一份告警,四种不同的现场动作<span class="csub">时长单位 h。<b>时长最高的 22# 反而只需修一条支路</b>,而条数最多的 12# 才是泵/主管问题 —— 按时长排名派工会派反。</span></caption>
  335. <thead><tr><th>机组</th><th>3115 叶A</th><th>3116 叶B</th><th>3117 叶C</th><th>三码同秒</th><th>3118 脂桶</th><th>分型 → 现场动作</th></tr></thead>
  336. <tbody>
  337. <tr class="rank1"><td class="tid">12#</td><td class="v bad">321.9<small>19 次</small></td><td class="v bad">107.8<small>19 次</small></td><td class="v bad">107.8<small>19 次</small></td><td class="v bad">100%</td><td class="v ok">0</td><td><b>★ 泵 / 主管型</b> —— 三叶同时无润滑 <b>19 次(全场最多)</b>,而<b>脂桶液位正常</b> ⇒ 脂是有的、送不出去。<b>查泵本体与主管,不是补脂</b></td></tr>
  338. <tr><td class="tid">6#</td><td class="v ok">4.1</td><td class="v warn">33.5</td><td class="v ok">3.3</td><td class="v na">—</td><td class="v bad">622.3<small>13 次 · 全场第一</small></td><td><b>脂桶液位型</b> —— 叶片侧几乎不报,全是脂桶低。<b>查脂桶更换周期与加注量,属耗材管理</b></td></tr>
  339. <tr><td class="tid">23#</td><td class="v warn">90.7<small>1 次</small></td><td class="v warn">90.7<small>1 次</small></td><td class="v warn">90.7<small>1 次</small></td><td class="v bad">100%</td><td class="v bad">700.4<small>8 次</small></td><td><b>脂桶液位型</b> —— 叶片侧仅 1 次且随脂桶空同时发。<b>先补脂,叶片码会跟着消</b></td></tr>
  340. <tr><td class="tid">21#</td><td class="v warn">216.8<small>2 次</small></td><td class="v warn">216.8<small>2 次</small></td><td class="v warn">73.9<small>2 次</small></td><td class="v bad">100%</td><td class="v bad">406.0<small>6 次</small></td><td><b>脂桶液位型</b> —— 同上</td></tr>
  341. <tr><td class="tid">34#</td><td class="v warn">171.1<small>2 次</small></td><td class="v warn">171.1<small>2 次</small></td><td class="v warn">171.1<small>2 次</small></td><td class="v bad">100%</td><td class="v bad">321.2</td><td><b>脂桶液位型</b> —— 三码时长<b>完全相等</b>,是同一事件的三份拷贝</td></tr>
  342. <tr><td class="tid">22#</td><td class="v warn">72.8<small>3 次</small></td><td class="v warn">154.2<small>10 次</small></td><td class="v bad">506.5<small>69 次</small></td><td class="v ok">仅 4%</td><td class="v warn">550.1<small>6 次</small></td><td><b>★ 单叶片型(C 叶)</b> —— 告警时长全场第一(1290 h),<b>但 69 次集中在 C 叶且与另两码不同步</b> ⇒ 只需查 <b>C 叶分配器 / 支管 / 注脂点</b>,不必动泵</td></tr>
  343. <tr><td class="tid">25#</td><td class="v bad">306.0</td><td class="v ok">0</td><td class="v ok">0</td><td class="v ok">—</td><td class="v warn">189.1</td><td><b>单叶片型(A 叶)</b> —— B/C 全零。查 A 叶支路</td></tr>
  344. <tr><td class="tid">38#</td><td class="v ok">0</td><td class="v ok">0</td><td class="v ok">0</td><td class="v ok">—</td><td class="v ok">0</td><td><b>★ 装置本体失效</b> —— 该台<b>只报 <span class="mono">3200 轮毂润滑不可能</span> 17 次 / 397.6 h</b>(全场仅 2 台报此码)⇒ 自动润滑装置本身坏了,叶片码根本不会亮。<b>与上面六台不是同一回事</b></td></tr>
  345. </tbody>
  346. </table>
  347. </div>
  348. <p style="margin:14px 0 0;font-size:13.5px;color:var(--muted)"><b>本块推翻了原先那一行派工:</b>原写"7 台逐台核泵、脂位、管路"。实测分型后 —— <b>4 台只是脂桶该补</b>(耗材)、<b>2 台是单叶片支路</b>(小修)、<b>1 台(12#)才是泵/主管</b>、<b>1 台(38#)是装置本体</b>。<b>按告警时长排名会把 22# 排第一,而它恰恰是最轻的那类。</b></p>
  349. </div>
  350. </section>
  351. <div class="foot">
  352. <p><strong>数据时效:</strong>cnt 计数层止 2026-07-07 · 事件层止 2026-07-13 · 油样止 2025-08(约 12 个月前,只作历史回测不作现时判据)。</p>
  353. </div>
  354. </div>
  355. <div id="tip" role="status"></div>
  356. <style id="guanlan-booklet">html{color-scheme:light}:root{--ground:#eef6f8;--surface:#fff;--surface-2:#f4f9fa;--ink:#173647;--ink-2:#466777;--muted:#587786;--rule:#d0e2e8;--rule-strong:#aacbd6;--accent:#087e8c;--accent-soft:#e2f2f5}.titleblock{border-radius:18px;overflow:hidden}.tb-head{background:linear-gradient(115deg,#0b293a,#125264);color:white}.tb-head .tb-eyebrow,.tb-head .tb-sub{color:#c1dee5}.scope,.card{border-radius:12px}.book-nav{position:sticky;top:0;z-index:20;display:flex;gap:10px;flex-wrap:wrap;padding:12px 20px;background:#e6f2f6;border-bottom:1px solid #c9e0e8}.book-nav button{min-height:44px;padding:9px 16px;border:1px solid #adcdd8;border-radius:8px;background:white;color:#18566a;font:600 14px system-ui;cursor:pointer}.book-nav button:first-child{background:#087e8c;color:white;border-color:#087e8c}.idx-row{min-height:54px}.sheet{overflow-wrap:anywhere}table{max-width:100%}@media(max-width:650px){.sheet{padding:0 12px 48px}.tb-head{padding:24px 18px}.tb-head h1{font-size:27px}.idx-row{grid-template-columns:30px minmax(0,1fr);gap:8px}.idx-row>*{min-width:0}}
  357. </style><script>const bookLinks={"00_总目录.html": "governance-0.html", "01_如东_液压系统治理清单_v1.0_2026-09-05.html": "governance-1.html", "02_如东_变桨执行治理清单_v1.0_2026-09-05.html": "governance-2.html", "03_如东_偏航系统治理清单_v1.0_2026-09-05.html": "governance-3.html", "04_如东_变流器治理清单_v1.0_2026-09-05.html": "governance-4.html", "05_如东_主控与传感网治理清单_v1.0_2026-09-05.html": "governance-5.html", "06_如东_电气并网治理清单_v1.0_2026-09-05.html": "governance-6.html", "07_如东_塔架与基础治理清单_v1.0_2026-09-05.html": "governance-7.html", "08_如东_润滑与冷却辅助治理清单_v1.0_2026-09-05.html": "governance-8.html", "09_如东_CMS-TCM监测面治理清单_v1.0_2026-09-05.html": "governance-9.html", "10_如东_参数与管理治理清单_v1.0_2026-09-05.html": "governance-10.html", "11_如东_故障负担榜_v1.0_2026-09-05.html": "governance-11.html"};function openBook(key){const a=parent.document.querySelector('a[data-open="'+key+'"]');if(a)a.click()}document.addEventListener('click',e=>{const a=e.target.closest('a[href]');if(!a)return;const file=decodeURIComponent(a.getAttribute('href').split('/').pop());if(bookLinks[file]){e.preventDefault();openBook(bookLinks[file])}});</script></body></html>