Files
DCTS/docs/contributing.md
T
fmq cd370d88e7 feat(all): 任务引擎双阶段解耦、僵尸涡旋修复、动态 CPU 配额与前端详情页重构
将 TLUSTY/SYNSPEC 拆为各自独立的 enabled/policy/strategies 阶段,
以策略链自动弹栈取代单级 seed_step 布尔回退;定向修复 2026-08-02
僵尸任务涡旋事故;新增节点并发配额热调;前端详情页从 1412 行巨型
视图拆为薄控制器 + detail 子模块,并补齐工具层与单测。

引擎与调度(task_engine_decoupling_design.md)
- models.rs: 新增 StagePolicy / EngineStageConfig / TaskSpec 阶段字段、
  normalize_compat() 校正旧版在途消息策略链、failed_stage 归因
- scheduler.rs: resolve_dispatchable_chain 派发门控、
  trigger_strategy_fallback 按 failed_stage 精确弹栈;启动期
  force_recompute/skip_converged(默认)/skip_failed 三策略
- db.rs: tasks 表 +7 列持久化阶段配置;终态守卫
  (mark_grid_point_running 仅 pending/queued→running;
  record_task_report 拒绝迟到失败翻黑 converged);策略弹栈快照

僵尸涡旋修复(runbook-20260802-zombie-vortex-fix.md)
- 全链路跨库活性交叉校验:派发/claim/孤儿回收/回退统一查 MQ 队列活性,
  活则放行、死则清僵尸,结构性消除"每点重复派发"
- stop/重启卫生:清队列同步 delete_tasks_by_ids,杜绝遗留 pending 行
- report_task: 幂等吸收 + 409 区分迟到冗余结果,仅 state_changed 时回退
- MQ: NULL workflow_name 回填 __legacy__、requeue 后迟到上报被 403 竞态修复

动态 CPU 配额(dynamic_cpu_slots_design.md)
- admin.rs: POST /admin/nodes/:id/quota(Option<Option<i32>> 区分
  缺字段/显式 null);nodes 表 +admin_max_slots
- worker.rs: effective_max_slots = min(admin, physical),心跳下发原子生效

科学产物保全(tlusty_result_artifacts.md)
- runner.rs: SYNSPEC 启动前快照 fort.12/fort.14 → .bfac/.emflux 防覆盖
- 半失败点(大气收敛+光谱失败)改判 Failed 并写入 note;仅 SYNSPEC
  场景不再恒判失败;撤销归档 LRU 200 上限改为永久保留
- executor.rs: 透传 synspec_params 数值参数(此前固定 None)

前端(dashboard/)
- workflowDetail.js 1412→328 行,拆出 views/detail/{ctx,overview,
  pointsTable,parSets,pointPanel}.js,AbortController 治理监听/请求生命周期
- 删除 wfActions.js,新增 wfEnginePanel.js(双阶段三维配置编辑面板)
- 新增 utils/{errors,format,icons,polling,yamlStage}.js 纯函数模块
- 路由级动态 import 代码分割;节点配额三点菜单 + Modal 管理
- 首次引入 node:test 单测(format/polling/yamlStage/psCache,644 行)
- 系统性补齐 a11y:skip-link、ARIA、Tab 键盘漫游、toast 关闭、退出动画

文档与工具
- 新增 6 篇设计/调研:引擎解耦、动态配额、涡旋 runbook、
  光谱正确性分析、收敛判断、产物归档
- PIPELINE/design/api/database 等协同重写为分布式 C/S 架构口径
- scripts/fetch_results.sh 跨节点产物备份;import_results 按 cno 升序导入
- workflows/sdB_cno.yaml: 新增 tlusty/synspec_stage 配置块,修正 wstart 笔误
2026-08-04 23:40:52 +08:00

74 lines
2.8 KiB
Markdown
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.
# DCTS 开发者与参与贡献指南 (Contributing Guide)
> 感谢关注并参与 DCTS (Distributed Computing TLUSTY/SYNSPEC) 的开发!本文档为开发者提供本地环境配置、代码库结构说明及测试规范。
---
## 1. 本地开发环境准备
### 必备依赖
- **Rust 工具链**1.75+ (推荐使用 `rustup` 安装)
- **C/Fortran 编译器**(计算节点模拟调试需 `gfortran` 或预编译好的二进制)
- **SQLite 3**开发库(嵌入在 Rust dependencies 中,无需额外安装系统库)
### 克隆与编译
```bash
cd dcts
cargo check --workspace --all-targets
cargo build
```
---
## 2. 代码库结构 (Workspace Layout)
```
dcts/
├── Cargo.toml # Workspace 根配置
├── crates/
│ ├── common/ # [Library] 物理计算引擎、子进程管理、收敛检测、种子匹配与归档白名单
│ ├── server/ # [Binary] Axum HTTP REST 服务端与 Scheduler
│ ├── node/ # [Binary] Worker 节点 Daemon 与任务抢占回路
│ └── mq/ # [Library] SQLite 事务型分布式任务队列
├── dashboard/ # [Web] ESM 模块化运维看板(Vite
├── workflows/sdB_cno.yaml # 示例网格工作流配置
├── tools/
│ └── import_results/ # [Binary] 历史计算结果导入工具(旧版网格结果 → 种子/收敛入库)
├── scripts/ # 结果拉取等运维脚本
└── docs/ # 分主题架构与规格技术文档
```
---
## 3. 测试与规范 (Testing & Guidelines)
### 3.1 运行单元测试与集成测试
```bash
# 运行 Workspace 内所有单元测试
cargo test --workspace
# 针对核心物理解析模块独立测试
cargo test -p common
```
### 3.2 代码风格与 Linting
提交 PR 前请确保以下命令无 error 和 warning
```bash
# 代码格式化
cargo fmt --all -- --check
# Rust 官方 Linter 静态检查
cargo clippy --workspace --all-targets -- -D warnings
```
---
## 4. 提交 Code Review 规范
1. **分支策略**:从 `main` 切出特性分支,推荐命名如 `feature/seed-optimizer``fix/stale-node-leak`
2. **Commit Message 规范**:遵循 Conventional Commits,格式为 `<type>(<scope>): <description>`,如:
- `feat(common): 有向 CNO 距离种子匹配`
- `fix(server): 修复调度竞态与僵尸任务自愈`
- `type``feat` / `fix` / `refactor` / `docs` / `test` / `chore` / `perf` / `ci``scope` 常用 `common` / `server` / `node` / `mq` / `dashboard` / `all`
3. **保持文档更新**:若修改了 API 接口定义或数据库 Schema,请同步更新 `docs/api.md``docs/database.md`,以及物理/调度设计文档(`docs/design.md``docs/task_engine_decoupling_design.md`)。