Compare commits

...
Author SHA1 Message Date
ClaudeandClaude Opus 5.5 8feabcc588 docs(task): brief for dasha-dates-engine-only-20261109
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DbBXoyn7Hj3LCW3BUs5bZ8
2026-11-09 00:14:47 +08:00
@@ -0,0 +1,65 @@
# TASK:所有大运日期只取引擎原值,前后端不再自己按年数比例重算(2026-11-09)
- 分支:`codex/dasha-dates-engine-only-20261109`(基于 staging `04b49609`)
- Bug 编号:BUG-1811
- 负责验收:Claude(jyotisha-2a)
## 背景
占星师 2026-11-08 第五轮裁定第 5 条:所有大运日期必须由原生大运引擎生成,任何显示层都不能重新计算;显示时的裁剪也不能改变子运边界。
星盘页已在 BUG-1752 中修复,改为直接用后端给的起止时间,同时带父段起点 `parent_period_start` 与可见起点 `visible_period_start`。本任务排查并修复**其余所有地方**。
## 第一步:排查(先做,结果写进 PROGRESS)
逐个打开下列文件,判断它们是否在**自己计算**大运、小运、细运的起止日期(按年数比例、`/120`、`365.25`、`.days` 等方式),而不是使用引擎或后端给出的日期:
- 前端:`frontend/src/lib/dasha-span.ts`、`frontend/src/lib/chart-view-labels.ts`、`frontend/src/lib/chart-view-mapper.ts`,以及全仓搜索 `/ 120`、`VIMSHOTTARI_YEARS`、`DASHA_YEARS`、`365.25` 的其他命中。
- 后端:`scripts/dasha_calculator_enhanced.py`、`scripts/dasha_registry.py`、`scripts/dasha_reference_audit.py`。`scripts/dasha_analyzer.py` 是冻结文件,不改,只确认还有谁在调用它的 `build_antardasha`。
每个命中归为以下三类之一,写成一张表放进 PROGRESS:
1. 只是显示(格式化已有日期):不改。
2. 自己算了日期,而且用户能看到:要改。
3. 研究脚本(`scripts/research/**`):不改,只记录。
## 第二步:修复第 2 类
- 改为使用后端或引擎已经给出的起止时间。参照星盘页的做法,搜索 BUG-1752 的提交。
- 如果某处拿不到引擎日期,就由后端接口补上这个字段,前端直接读,不在前端计算。
- 区间一律左闭右开。0 年的段保留在数据里,但不显示为“当前”。
## 不要碰
- 冻结文件 `scripts/dasha_analyzer.py`、`scripts/domain_calculation_service.py`。
- `scripts/narayana_rath.py`、`scripts/narayana_dasha.py`:另一分支正在改。
- `frontend/src/lib/consultation-*.ts`、`frontend/src/mastra/**`、`references/**`。
- 不改引擎本身的计算公式。
## 验收标准
1. PROGRESS 里有完整的排查表:文件、行号、类别、处理方式。
2. 每个修复点都有测试,断言显示的日期等于引擎给出的日期,并覆盖以下四种情况:
- 跨午夜的边界;
- 出生时所在大运的余额(父段被出生时刻裁剪);
- 第二轮大运;
- 0 年段不显示为“当前”(Narayana 或 Chara)。
3. 改既有断言时写“原值 / 新值 / 原因”三栏注释。原因写:`占星师 2026-11-08 第五轮裁定 5:日期只取原生引擎`。
4. 在 `docs/BUG_HISTORY.md` 末尾追加 BUG-1811,关联 BUG-1752。
5. 测试只用公开名人盘或合成数据,不写任何个人出生资料。
## 自测命令(Windows / PowerShell)
- `frontend\node_modules\.bin\tsc --noEmit -p frontend`
- 在 `frontend` 下运行 `npm run lint`
- `node node_modules/tsx/dist/cli.mjs --test tests/<改到或新建的测试文件>`
- `.venv\Scripts\python -m pytest tests/<改到或新建的测试文件> -q`
## 进度记录
`docs/tasks/PROGRESS-dasha-dates-engine-only-20261109.md`
## 何时停下来选“需拍板”
- 某个显示用户能看到,但后端没有对应日期,补字段需要改动数据库表或迁移时。
- 发现引擎本身给出的日期就有问题时(不要自己改引擎公式)。