物理正确性校验体系(common/conv_check.rs +494 行) - 新增 5 类硬门槛:能量守恒(.6)、温度结构(.7)、emflux 积分校验(.emflux,含全 NaN 判失败)、假收敛排查(itek 轨迹首末比)、b 因子合理性(.bfac) - runner 在 TLUSTY 阶段结束后执行全部校验,任一失败判 final_converged=false - GridConfig 新增 8 个可配阈值,经 scheduler→executor→runner 全链路透传 输入文件配置结构化重构(config.rs +1453 行) - TlustyInput 拆为 dot5/nst 分层结构,字段名严格映射 tlusty208.f READ 语句;SynspecInput 重构为 9 个 Fort55Line 子结构体 - 移除 ChainStep.metals 字段,元素集改由 dot5.atoms/ions 显式声明(gen_input5/nst_writer 同步重写为三源融合 / 分层覆盖) - fort.55 修复行结构 bug:补全分子表行(7→9 行),IDSTD 50→0 错位修正(影响全部光谱线强归一化,需重算 SYNSPEC 阶段) conv 诊断 DB 化与阶段归因修复(server) - 单点详情 conv 面板从磁盘 conv.json 改读 DB grid_points.summary_json;grid_points 新增 summary_json/last_elapsed_sec 两列(旧库幂等 ALTER) - record_task_report 阶段归因列加 CASE 守卫 + clear_synspec 对称处理,修复 synspec-only/TLUSTY-only 重跑污染统计 - 新增 summary_merge.rs 点级增量合并,避免重跑覆盖诊断字段 收敛性 ORELAX 修复与 seed_chain 可配(sdB_cno.yaml + node) - nl 阶段加 orelax=0.5、seed_nc 加 orelax=0.3,阻尼中温区 relc 振荡发散 - seed_chain 块可配,executor 优先采用用户配置而非内置默认链 导入工具下线 - 删除 import_results 客户端工具及 Windows 推送脚本;移除 /admin/import_seed 端点 - 改为服务端临时 migrate_conv 端点(扫 conv.json 增量合并入库,迁移后可删) 文档与分析 - 新增 1305 失败点根因分析、fort.14 全 NaN 物理含义分析两份深度文档 - spectrum_correctness_analysis 两次修订标注已修复项;fetch_results.sh 修 trap RETURN 的 set -u 报错
72 lines
2.6 KiB
Markdown
72 lines
2.6 KiB
Markdown
# 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 # 示例网格工作流配置
|
||
├── 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`)。
|