feat(all): 源精度命名体系、工作流可观测台、节点停用管理与白名单归档

核心变更:

  1. GridAxisValue 源精度命名
     - 新增 GridAxisValue 类型,携带 f64 数值 + YAML 源书写文本(Deref 透明兼容算术)
     - config.rs 绕过 serde_yaml 归一化,逐 token 捕获轴值原文(logg: 5.0 → g5.0)
     - runner/executor/scheduler 全链路改用 DB TEXT 列权威 point_name,
       修复 REAL 列回读丢精度导致的 model_name 错配

  2. 工作流执行可观测台
     - 新增 stats/progress/points 三组 API(进度时间序列、经验速率 ETA、
       停滞预警、逐点明细分页、收敛性热力图数据)
     - 新增 workflow_progress_snapshots 表 + tasks/grid_points 耗时列
     - runner 携带 last_iter/worst_depth/n_depths 进 conv.json
     - 前端新增 hash 路由、工作流详情页(概览/网格点/收敛分析三 Tab)、YAML 编辑器

  3. 节点停用/启用管理
     - 新增 disabled 状态 + disable/enable API;停用节点保持心跳但停止分发,
       worker 空闲待命而非退出;移除 revoke API,token 失效统一走重发覆盖;
       移除 host_name 字段

  4. 白名单结果归档
     - 新增 result_filter 模块,只归档有语义产物,丢弃 Tlusty 中间单元(~2MB/模型)
     - executor 原子写入归档 + 200 点 LRU 上限

  5. 历史数据导入
     - sync_seeds 重写为 import_results:经 /admin/import_seed 标记 converged +
       按新版命名迁移产物树

  6. 部署与目录重规划
     - data/results→seeds、data/archive→result + migrate_data_dirs.sh
     - deploy.sh 增强(SSH 复用、Profile、远程 env);Dockerfile 瘦身

  7. 文档同步更新 api/database/architecture/deployment
This commit is contained in:
fmq
2026-07-31 01:34:05 +08:00
parent b91f1e4fa5
commit 1bfa240cb0
73 changed files with 12332 additions and 1608 deletions
+17 -12
View File
@@ -30,19 +30,21 @@ services:
- .env
environment:
- DCTS_PORT=8090
- TZ=Asia/Shanghai
- DCTS_DB_PATH=/app/data/dcts.db
- DCTS_QUEUE_DB_PATH=/app/data/dcts_queue.db
- DCTS_RESULTS_DIR=/app/data/results
- DCTS_SEEDS_DIR=/app/data/seeds
- DCTS_BACKUP_DIR=/app/data/backups
- DCTS_ASSETS_DIR=/app/assets
- LOG_DIR=/app/data/logs
- DCTS_LOG=info,server=debug
volumes:
- ./assets:/app/assets:ro
- ./workflows:/app/workflows:ro
- ./data:/app/data
- ./logs/server:/app/logs
healthcheck:
test: ["CMD", "wget", "-q", "--spider", "http://localhost:8090/healthz"]
test: ["CMD", "wget", "-q", "--spider", "http://127.0.0.1:8090/healthz"]
interval: 15s
timeout: 5s
retries: 3
@@ -55,23 +57,26 @@ services:
context: .
dockerfile: Dockerfile.node
image: dcts-node:latest
container_name: dcts-node
restart: unless-stopped
depends_on:
server:
condition: service_healthy
env_file:
- .env
environment:
# DCTS_NODE_ID 留空:由 config.rs 对空串/缺失回退为随机 UUIDnode-<uuid>),
# 这样 `docker compose --scale node=N` 时每个副本各得独立身份。
- DCTS_SERVER_URL=http://dcts-server:8090
- DCTS_MAX_SLOTS=4
- DCTS_HEARTBEAT_SEC=15
- DCTS_LOG=info,node=debug
- TZ=Asia/Shanghai
- DCTS_SERVER_URL=${DCTS_SERVER_URL:-http://dcts-server:8090}
- DCTS_MAX_SLOTS=${DCTS_MAX_SLOTS:-4}
- DCTS_HEARTBEAT_SEC=${DCTS_HEARTBEAT_SEC:-15}
- LOG_DIR=${LOG_DIR:-/app/data/logs}
- DCTS_LOG=${DCTS_LOG:-info,node=debug}
# 完整计算结果归档目录:科学产物(.spec/.cont/.iden/各阶段快照/日志)落盘位置,
# 上报成功后从沙盒拷贝至此避免丢失。挂载在 ./data 下,已随卷持久化。
# DCTS_ARCHIVE_DIR 为旧名,向后兼容回退(node 代码优先读 DCTS_RESULT_DIR)。
- DCTS_RESULT_DIR=${DCTS_RESULT_DIR:-${DCTS_ARCHIVE_DIR:-/app/data/result}}
volumes:
- ./assets:/app/assets:ro
- ./data/node_work:/app/data/work
- ./logs/node:/app/logs
- ./data:/app/data
# 持久化卷(Caddy 证书与配置)
volumes: