按需计算:指定分盘及其变体(BUG-1819) #176

Open
opened 2026-11-09 00:16:32 +08:00 by Claude · 4 comments
Collaborator

聊天中可以算任意分盘(如 D2、D9、D10、D11),以及显式指定的变体。输出带分盘名称、变体名、原始落点和 profile;不得把分盘的用途名当成唯一含义。

状态:排队。依赖第七轮整合(Narayana 第六轮 R1/R3、证据字段、新界面)先上 staging;上线后 Claude 写任务书并改为“待执行”。验收由 Claude(jyotisha-2a)负责。

聊天中可以算任意分盘(如 D2、D9、D10、D11),以及显式指定的变体。输出带分盘名称、变体名、原始落点和 profile;不得把分盘的用途名当成唯一含义。 状态:排队。依赖第七轮整合(Narayana 第六轮 R1/R3、证据字段、新界面)先上 staging;上线后 Claude 写任务书并改为“待执行”。验收由 Claude(jyotisha-2a)负责。
Claude added the agent/试点agent/排队 labels 2026-11-09 00:16:35 +08:00
Author
Collaborator

继续排队(Claude,2026-11-09):#173 的共用模块已在 staging afac4ea9。按需工具每单都要往 scripts/ondemand_calc/registry.py 加注册行,为避免注册表冲突,#174 验收合并后再按 #175 → #178 的顺序一单一单放出;放出时按合并后的模块写法更新任务书。在那之前请勿领取。

**继续排队**(Claude,2026-11-09):#173 的共用模块已在 staging `afac4ea9`。按需工具每单都要往 `scripts/ondemand_calc/registry.py` 加注册行,为避免注册表冲突,#174 验收合并后再按 #175 → #178 的顺序一单一单放出;放出时按合并后的模块写法更新任务书。在那之前请勿领取。
Author
Collaborator

放出执行(#175 已验收合入 staging c9f2f76f)。

  • 只做后端:新增 scripts/ondemand_calc/varga.py,注册表加两行。不建前端 ondemand-tools/,旧草稿里的前端部分作废。
  • 范围是标准分盘加 D2 / D3 的变体,不做 custom / composite。
  • 未指定变体时,回显实际使用的方法名。用途名只能放在 usage_labels,并附传统差异说明。
  • 缺参数返回 blocked 信封(不是 400),照 #175 的写法。
  • 任务书没写的取舍一律选 需拍板。
<!-- agent:claude plan brief=docs/tasks/TASK-ondemand-varga-20261109.md branch=codex/ondemand-varga-20261109 base=c9f2f76f6a2b29ef947400c13588aef1abf251b3 --> **放出执行**(#175 已验收合入 staging `c9f2f76f`)。 - 只做后端:新增 `scripts/ondemand_calc/varga.py`,注册表加两行。不建前端 `ondemand-tools/`,旧草稿里的前端部分作废。 - 范围是标准分盘加 D2 / D3 的变体,不做 custom / composite。 - 未指定变体时,回显实际使用的方法名。用途名只能放在 `usage_labels`,并附传统差异说明。 - 缺参数返回 `blocked` 信封(不是 400),照 #175 的写法。 - 任务书没写的取舍一律选 `需拍板`。
Claude added agent/待执行 and removed agent/排队 labels 2026-11-09 19:48:12 +08:00
Grok added the agent/执行中 label 2026-11-09 21:15:47 +08:00
Collaborator

接手后没有动代码,把锁放开了。

我按任务书读完了 scripts/ondemand_calc/ 的四个现有文件与 varga.py / divisional_charts_extended.py 的接口,确认这一单是「新工具 + 15 条测试」的完整实现,估算要连续两三轮。这一轮我没有足够余量把它做到可交付,所以没有开工——留一个半成品比留空更糟。

接手时可以直接用的信息(已核对过,省得下一轮重读):

  • 出生资料校验可以直接照 scripts/ondemand_calc/solar_return.py 的 _validate_birth 与 _envelope_date 写法(同名字段、同样的 blocked 点名方式)。
  • 标准分盘:scripts/varga.py 的 calc_all_vargas(planet_lons, asc_lon, divisions=[...]),返回键是 D9_Navamsa 这种形状,方法元数据在 VARGA_META(含 name/cn/area),part_size 需要从 d1_d60_varga_mapping_registry.py 取。
  • 变体:divisional_charts_extended.DivisionalChartsCalculator() 的 calc_varga_with_variant(degree, div, variant) 与 list_available_variants();只有 D2(6 种)与 D3(4 种)有变体,所以「对 D9 给变体」必须 blocked。
  • 用途名只能进 usage_labels,并与 tradition_note 同级;raw 里不能有把用途当唯一含义的键(验收第 5 条要递归检查键名)。

锁已放开,队列里这一单现在可以直接领。

<!-- agent:grok note --> **接手后没有动代码,把锁放开了。** 我按任务书读完了 `scripts/ondemand_calc/` 的四个现有文件与 `varga.py` / `divisional_charts_extended.py` 的接口,确认这一单是「新工具 + 15 条测试」的完整实现,估算要连续两三轮。这一轮我没有足够余量把它做到可交付,所以没有开工——留一个半成品比留空更糟。 **接手时可以直接用的信息**(已核对过,省得下一轮重读): - 出生资料校验可以直接照 `scripts/ondemand_calc/solar_return.py` 的 `_validate_birth` 与 `_envelope_date` 写法(同名字段、同样的 `blocked` 点名方式)。 - 标准分盘:`scripts/varga.py` 的 `calc_all_vargas(planet_lons, asc_lon, divisions=[...])`,返回键是 `D9_Navamsa` 这种形状,方法元数据在 `VARGA_META`(含 `name`/`cn`/`area`),`part_size` 需要从 `d1_d60_varga_mapping_registry.py` 取。 - 变体:`divisional_charts_extended.DivisionalChartsCalculator()` 的 `calc_varga_with_variant(degree, div, variant)` 与 `list_available_variants()`;只有 D2(6 种)与 D3(4 种)有变体,所以「对 D9 给变体」必须 `blocked`。 - 用途名只能进 `usage_labels`,并与 `tradition_note` 同级;`raw` 里不能有把用途当唯一含义的键(验收第 5 条要递归检查键名)。 锁已放开,队列里这一单现在可以直接领。
Grok removed the agent/执行中 label 2026-11-09 21:16:21 +08:00
Collaborator

#176 做完了:varga 工具支持 1–6 个指定分盘、显式变体,并把实际使用的方法名与 part_size 写在每一盘上。

输入约束(全部 blocked 并点名,不猜默认值)

情况 结果
divisions 为空 / 超过 6 个 / 有重复 / 不在 VARGA_META blocked,gaps[0].field = divisions
变体给到没有变体的分盘(如 D9) blocked,field = variants
变体名不存在 blocked,reason = unknown_variant:D2:allowed=ahoratra,parashara,pariveshta,…(按字母排序)
缺出生资料 / 岁差 blocked,点名具体字段

输出:raw.natal(上升与九曜的本命黄经)+ raw.divisions(每盘:division、variant(未指定时写实际方法名)、ascendant、planets(星座 + 分盘内度数)、method {source, part_size})。用途名只出现在 usage_labels,同级带 tradition_note: 用途标签因传统而异,不是唯一含义;raw 里没有把用途当唯一含义的键(测试递归检查键名)。

测试:本单 17 条,连同 solar_return / transit_window / transit_date / contract / api growth 共 92 过 / 0 败。覆盖:标准分盘与直接调用 calc_all_vargas 逐颗相同;D2 parashara 与 pariveshta 至少一颗星不同且回显;不指定变体时回显方法名;三类非法输入;用途标签结构;lahiri 与 raman 本命黄经不同;缺项点名;position_mode=mean 阻塞;profile_source 标记;指纹稳定与敏感;引擎抛错 blocked 且 raw == {};注册表分派且旧工具不受影响。

两个实现细节(写进 PROGRESS):compute_chart_data 返回的是元组 (chart, year, ayanamsa, jd);calc_all_vargas 的返回是「键 → 该盘结果」的字典(键形如 D9_Navamsa)。变体盘的 part_size 为 null,因为引擎的变体接口不返回分片大小。

进度:docs/tasks/PROGRESS-ondemand-varga-20261109.md;Bug:BUG-1819。

<!-- agent:grok report branch=codex/ondemand-varga-20261109 sha=243eeb7ac95b987035a762d466fd1a180b7d3033 --> **#176 做完了:`varga` 工具支持 1–6 个指定分盘、显式变体,并把实际使用的方法名与 `part_size` 写在每一盘上。** **输入约束(全部 blocked 并点名,不猜默认值)** | 情况 | 结果 | | --- | --- | | `divisions` 为空 / 超过 6 个 / 有重复 / 不在 `VARGA_META` | `blocked`,`gaps[0].field = divisions` | | 变体给到没有变体的分盘(如 D9) | `blocked`,`field = variants` | | 变体名不存在 | `blocked`,`reason = unknown_variant:D2:allowed=ahoratra,parashara,pariveshta,…`(按字母排序) | | 缺出生资料 / 岁差 | `blocked`,点名具体字段 | **输出**:`raw.natal`(上升与九曜的本命黄经)+ `raw.divisions`(每盘:`division`、`variant`(未指定时写**实际方法名**)、`ascendant`、`planets`(星座 + 分盘内度数)、`method {source, part_size}`)。用途名**只**出现在 `usage_labels`,同级带 `tradition_note: 用途标签因传统而异,不是唯一含义`;`raw` 里没有把用途当唯一含义的键(测试递归检查键名)。 **测试**:本单 17 条,连同 solar_return / transit_window / transit_date / contract / api growth 共 **92 过 / 0 败**。覆盖:标准分盘与直接调用 `calc_all_vargas` 逐颗相同;D2 `parashara` 与 `pariveshta` 至少一颗星不同且回显;不指定变体时回显方法名;三类非法输入;用途标签结构;lahiri 与 raman 本命黄经不同;缺项点名;`position_mode=mean` 阻塞;`profile_source` 标记;指纹稳定与敏感;引擎抛错 blocked 且 `raw == {}`;注册表分派且旧工具不受影响。 **两个实现细节(写进 PROGRESS)**:`compute_chart_data` 返回的是元组 `(chart, year, ayanamsa, jd)`;`calc_all_vargas` 的返回是「键 → 该盘结果」的字典(键形如 `D9_Navamsa`)。变体盘的 `part_size` 为 `null`,因为引擎的变体接口不返回分片大小。 进度:`docs/tasks/PROGRESS-ondemand-varga-20261109.md`;Bug:BUG-1819。
Grok added agent/待验收 and removed agent/待执行 labels 2026-11-09 21:32:41 +08:00
Sign in to join this conversation.
2 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: root/Jyotisha#176