Files
DCTS/dashboard/src/views/detail/ctx.js
T
fmq b058e66722 feat(all): NaN 伪收敛否决与 nl_tight 能量回退、emflux 检验 4π 修正、nst 行宽与种子边界修复、gfATO 谱线表接通与网格加密 9216 点、阶段分项统计与跳板机部署
物理修复(400 失败点归因,见 docs/failed400_nan_pseudo_convergence_2026_08_17.md):
- runner: 阶段 converged 后复查 fort.7,含 NaN/Inf 即否决(fort.9 全零伪收敛,
  曾致 261 点误跳过 nl_direct 回退);否决阶段不产出种子,阻断污染传播
- runner: nl_tight 回退——仅能量边际失败时以 CHMAX 收紧 10× 从自身模型续迭代,
  残差降幅 ~10×;execute_tlusty_stage 抽取供主链与回退共用
- conv_check: fort.14 为 Eddington 通量 Hλ,积分需乘 4π 再比 σTeff⁴
  (旧版 ratio 稳定 0.0796=1/4π,全点系统性假阳性)+ 回归测试
- nst_writer: 单行超 80 字符被 TLUSTY 静默截断,IFALI/JALI/TRAD 等从未生效;
  按 75 字符自动换行
- seed_finder: Teff 容忍度改含边界 <=,相邻 5000K 档恢复互为种子 + 回归测试

谱线表与网格:
- 默认线表 gfVIS99 → gfATO(全波段 18-23000Å),TaskSpec.linelist 支持工作流
  级覆盖,节点按需下载(进程互斥锁防并发重复下载 238MB)
- sdB_cno Teff 加密至 5000K 步长,432 → 9216 点;tlusty/synspec 静态二进制更新

统计与部署:
- grid 汇总改按 tlusty_status/synspec_status 分项计数,新增 tlusty_failed/
  synspec_failed/synspec_pending,前端详情页双视图适配
- deploy/fetch_results 支持跳板机 ProxyJump 与 SSH 主连接复用,fetch 新增 --force;
- Docker 构建支持 CARGO_MIRROR/USE_MIRRORS 国内镜像参数;移除 tools/ 拷贝
- 新增 tlusty-synspec-test skill 与 6 篇根因分析/验证文档
2026-08-17 23:55:26 +08:00

58 lines
2.4 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/* 工作流详情页共享上下文(detail ctx)
*
* workflowDetail.js 拆分后,各 detail 子模块需要访问当前工作流名、AbortController、
* 最新统计、进度曲线、点表过滤、Parallel Sets 状态等共享可变状态。这些原本是
* workflowDetail.js 顶部的 15+ 个模块级 let(跨工作流切换须手动逐字段 reset,
* 是历史遗留的泄漏/残留 bug 源头),现收敛到本模块:
*
* 生命周期:mount 时 createDetailCtx(name) 新建 → 子模块经参数读写 ctx →
* unmount 后整体丢弃(含 abort 在途请求)。
*
* 子模块以 ctx 为第一参数接收,直接读写字段(vanilla JS 下的务实选择——
* 避免 getter/setter 样板;这些字段本就属于同一挂载作用域)。
*/
/**
* 创建详情页上下文。
* @param {string} name 工作流名
*/
export function createDetailCtx(name) {
return {
name,
// 本轮作用域轮询的 AbortControllerunmount / 换工作流时 abort 在途请求)
abortCtl: new AbortController(),
// ===== Tab1 执行概览 =====
activeTab: 'overview',
// 阶段视图切换('tlusty' 大气 / 'synspec' 光谱):概览分段进度条/指标卡 + parSets 状态轴共用。
// 切换按钮在详情页顶部 strip,默认 TLUSTY 视图。
phaseView: 'tlusty',
latestStats: null,
overviewBuilt: false, // 概览骨架仅首次构建,其后轮询原位 diff
lastWavesSig: null,
lastActivitySig: null,
knownActivityKeys: new Set(), // 已在 feed 中的条目指纹(点名|完成时间)
// 进度曲线(30s 节流拉取,DOM 跨轮询保留)
lastProgressAt: 0,
lastProgress: null,
sparkBuilt: false,
lastSparkSig: null,
sparkHoverCtx: null, // 悬停上下文:mousemove 读取、数据刷新时写入
sparkKbIdx: -1, // 键盘十字线索引(-1=无)
// ===== Tab2 网格点明细 =====
pointsBuilt: false,
pointsFilter: { status: '', method: '', wave: '', q: '', sort: 'wave', order: 'asc', limit: 100, offset: 0 },
// ===== Tab3 收敛性分析(Parallel Sets 平行集合图) =====
psBuilt: false,
psState: { points: [], hover: null, layout: null, dimX: null, segY: null, ts: null }, // ts: 数据快照时间(epoch ms)
// ===== 浮层单例(unmount 时清理) =====
psTooltipEl: null,
psPointListEl: null,
pointPanelEl: null,
};
}