feat(all): 数据库模块化拆分与版本化迁移、任务引擎命名体系收敛、物理输出校验加固与用户配置接通

- server/db: 拆 4929 行 db.rs 单体为 db/ 目录,migrations.rs 引入 PRAGMA user_version
    版本化迁移运行器(M1~M13)
  - 任务引擎 Phase 6/7b/7c 改名收敛:EngineStageConfig→PhaseConfig、StagePolicy→ResumePolicy、
    Converged→Completed、删除 task_type 列、success_method 拆 tlusty_/synspec_ 双列、
    新增 tlusty_status/synspec_status 半失败阶段守卫
  - 科学正确性加固:conv_check 任意行 NaN/Inf/溢出判无效(0 行容忍)、新增 spec_is_valid
    校验 SYNSPEC 脏谱、itek_history 逐次迭代全量保真、fmt_abn powf 溢出饱和
  - 用户配置真正接通:tlusty_chain/tlusty_input 由死字段经 调度器→TaskSpec→executor→runner
    透传生效;config 加载期 validate + deny_unknown_fields + 解析失败记 warn
  - 调度修复:H1 活锁(pending_strategies 跳过已失败策略)、种子查找错误不再静默降级冷启动
  - dashboard: 阶段配置面板 tlusty_stage/synspec_stage、"已完成"标签、迭代诊断展示
  - docs: 新增 database_refactor_design.md,同步 database/api/PIPELINE/workflow_detail
This commit is contained in:
fmq
2026-08-06 20:51:21 +08:00
parent cd370d88e7
commit d16b3d3cdc
61 changed files with 10268 additions and 5881 deletions
+4 -8
View File
@@ -32,11 +32,7 @@ const TOKEN_KEY = 'dcts_admin_token';
* @property {number} [occupied_slots]
* @property {number} [total_max_slots]
* @property {Array} [nodes]
* @property {object} [grid_stats] - { pending, queued, running, converged, failed }
* @property {number} [pending_points]
* @property {number} [running_points]
* @property {number} [converged_points]
* @property {number} [failed_points]
* @property {object} [grid_stats] - { pending, queued, running, completed, failed }
*/
/**
@@ -69,7 +65,7 @@ const TOKEN_KEY = 'dcts_admin_token';
* @property {number} pending
* @property {number} queued
* @property {number} running
* @property {number} converged
* @property {number} completed
* @property {number} failed
* @property {number} [eta_sec]
* @property {Array<{label:string,count:number}>} [waves]
@@ -250,8 +246,8 @@ export async function deleteWorkflowApi(name) {
return apiFetch(`/api/workflows/${encodeURIComponent(name)}`, { method: 'DELETE' });
}
export async function getWorkflowDetailApi(name) {
return apiFetch(`/api/workflows/${encodeURIComponent(name)}`);
export async function getWorkflowDetailApi(name, opts = {}) {
return apiFetch(`/api/workflows/${encodeURIComponent(name)}`, opts);
}
// ===== 工作流执行观测 API(详情页数据源) =====