Repository navigation
[AI Generated][FIX] 落地标准审查十项整改:口径契约、测试标准与文档对账(#521 至 #531) - #532
Merged
Merged
Conversation
viz_adapter 的月球 SPICE 查询失败与 et2utc 不可用、facade_bridge 的工具清单自省失败,三处 except Exception 降级原本完全静默,坏数据与编程错误不可区分。各补一行日志,降级语义与返回值不变,级别按影响取 warning 或 debug。
synodic_to_gcrs_km 的实现先旋转后加 (μ,0,0),与自身 docstring(R(θ)·(r_syn+(μ,0,0))·DU)、e2m2e 参考实现及前端 idealizedInertialGeometry 均不一致,θ 转过半圈时最大偏差约 9350 km(2μ·DU)。实现改为先平移后旋转,并在 test_viz_adapter 补三例对照:与前端公式逐点一致、月球特例 (1-μ,0,0) 落在 approx_moon_gcrs_km 正圆轨道、标量 theta 广播。修正后 frontend/trajectoryParsing.ts 中“完全同口径”的注释声明重新成立。该函数此前在仓内无调用方,属硬契约 4(#477)口径被破坏的潜在问题。
export_tool_schemas 与 import_baseline 两处入口在 import e2m2e 前未设 SPICE_KERNEL_DIR,违反硬契约 1(e2m2e 在 import 期读该变量搜闰秒内核)。比照 tests/conftest.py 的缺省链(detect_kernel_dir 探测后 setdefault)补齐,import_baseline 原“本脚本不写环境变量”的注释收窄为只覆盖 catalog 变量。真跑 export_tool_schemas 验证:21 个 schema 全部重导、与库存零漂移。
smoke_pi_rpc 与 smoke_mcp_serve 共 20 处 print(过程进度、FAIL 诊断与最终结论行)全部改走 logging,两脚本补 basicConfig(stderr);download_kernels 的 --kernel-dir 补 help,smoke_mcp_serve 的 --cwd 与 smoke_pi_rpc 的 --app 在 help 写明默认值,三问口径对齐。发布闸只依赖退出码,输出通道变化不影响流水线。
src/ 十个生产模块中仅有的两处缺模块级 docstring(AGENTS.md 要求 Google style)。按仓库双语惯例补:Artifact 讲产物描述与懒填充数组的边界,Project 讲清单持有与谱系判定语义。
Python 侧 test_facade_bridge_family 的八处浮点直接 == 改 pytest.approx(member_parameters 结构改逐键断言),test_catalog_service 的 mu 断言同步;assert_allclose 两处显式写 rtol/atol,保持既有 1e-7/1e-8 严格度并注释说明严于标准的原因。Rust 侧 cmd.rs 测试新增 assert_close_f32 辅助(绝对 1e-6 按量值放缩以覆盖 km 级大数,其 f32 ULP 大于绝对 1e-6),jacobi、period、delta_v 与转移段帧值共 11 处改容差断言;frames.rs 的 f64 帧与 host_tools.rs 的 playback 数值字段同理。
units.py 是硬契约 2 的唯一换算来源却没有直接单测:补 test_units(常量取自 e2m2e 模板、换算往返闭合、TU 字面值 375190.26 防口径漂移)与 test_constants(硬编码常量可用、惰性 CR3BP 常量与 units 对齐,其中 TU 以天计,乘 86400 后与 TU_SECONDS 同源)。test_integration.py 不镜像任何模块,改名 test_facade_bridge_integration.py 并入 facade_bridge 测试族。写测试时发现 units.py 行内注释与 docstring 的 TU 与 CHAR_PERIOD 值过期(实际 375190.26 s / 2357389.9 s),一并修正,AGENTS.md 引用值随 #528 对账。
目录表的 22 个 Tauri command 实为 23(cmd.rs 11、assistant_cmd.rs 9、update.rs 3,与 invoke_handler 注册一致);硬契约 4 的旋转三处实际只剩 viz_adapter 与 trajectoryParsing 两处(cr3bp.ts 已不含旋转实现,随 #521 修函数拍板改两处)。硬契约 2 引用的 TU_SECONDS≈375676.97 是过期值,units.py 实际算出 375190.26(即 cr3bp.ts 口径;paramOverlay 的 375676.97 是 BCR4BP 27.32 天口径)。assistant_cmd.rs 文件头的命令面枚举补上 open_pi_setup。
RecordDetailPanel 两处 Card 的 bodyStyle 是 antd 6 弃用属性(vitest 渲染链有弃用警告),改 styles={{ body: ... }},内边距不变,tsc 与 vitest 全绿。
按 AGENTS.md 标准(describe 与 it 用中文并带 issue 号)治理全部 37 个前端测试文件:纯英文的 describe 与 it 按断言语义译为中文,顶层 describe 经 git log 逐文件考古补来源 issue 号,双号 commit 经 gh 核实取 issue 号;无法追溯的(如 ParamsPanel.test、filterByRole 一族)不编造号。it 级不强求逐条带号,与既有合规样本(picking、sidecarApi)口径一致。测试逻辑、断言、导入零改动。
评审发现两处非阻塞问题。其一,assert_allclose 的既有默认是 rtol 1e-7、atol 0(纯相对比较),此前注释写“既有默认 atol 1e-8”失实,改为如实说明显式阈值的用意(防近零元素误报)。其二,host_tools 的 playback 整体比较改逐字段容差后丢了“无多余键”的结构检查,两处补键集合恰为三键的断言。
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
本 PR 由 AI 生成(ZCode,GLM)。
Closes #521
Closes #522
Closes #523
Closes #524
Closes #525
Closes #526
Closes #527
Closes #528
Closes #530
Closes #531
解决什么问题
#521 至 #531 十个 issue(治理拍板项 #529 除外)来自一轮按 AGENTS.md 标准的全仓审查,其中两个是 BUG 级(旋转口径被破坏、硬契约 1 缺内核注入),其余八项是测试、脚本与文档的标准符合度整改。本 PR 把十项一次落地,每项一个主题提交。
为什么这样做
各 issue 的方案在开单时已给出并带代码行证据,本 PR 按 issue 落地。与 issue 方案存在落法差异的三处单独交代。#521 的待拍板项(修函数还是删函数)取修:函数被 frontend/trajectoryParsing.ts 第 138 行的同口径注释引用,删除要动前端注释,修复则让该声明重新成立,改动面更小。#523 的待拍板项(结论行保留 print 还是入 logging)取一并入 logging,与标准字面一致,发布闸只依赖退出码不受影响。#527 的待拍板项(存量补齐还是只约束增量)取补齐存量,但 issue 号采用文件级考古口径:顶层 describe 标各自追溯到的号,it 级不强求逐条带号(与既有合规样本 picking、sidecarApi 一致),追溯不到的不编造(ParamsPanel.test 等 4 个文件保持无号)。
做了什么
按协作者阅读顺序讲脉络,细节见各提交与 issue。
如何验证
只报事实。uv run pytest tests/ -m "not spice":170 通过、17 跳过,含新增 11 个用例。npm --prefix frontend run test:39 个文件 398 个通过,bodyStyle 弃用警告消失。cargo test:全部通过。ruff check、ruff format --check、pyright、tsc -b:零告警。tools/export_tool_schemas.py 真跑:21 个 schema 重导零漂移。smoke_mcp_serve 的完整真链路(design_orbit 收敛)未跑,本 PR 对它的改动仅涉输出通道,退出码语义不变。
协作者从哪里继续读
旋转口径看 src/engine/viz_adapter.py 与 tests/engine/test_viz_adapter.py 的 TestSynodicToGcrs。TU 口径的来龙去脉(units.py 实际值 375190.26,paramOverlay 注释声称的出处与事实矛盾)见 #528,paramOverlay 是否保留 375676.97 待维护者确认。#529(写作要求治理)是拍板项,不在本 PR 范围。