Files
Jyotisha/docs/tasks/PROGRESS-qizheng-native-chart-20260915.md
T
jesse-ux e776cf9d83
Independent Staging Quality Gate / validate (push) Canceled after 4m51s
Independent Staging Quality Gate / publish (push) Canceled after 0s
fix(qizheng): copy vendored stem-branch files from local upstream checkout
Read G:/Ferti/yinduzhanxing-codex-add-birth-time-rectification-skill (a911c890) and copy the listed vendor files by content. Rebuild the adapter from the 168-line CLI wrapper, then apply school parameters, boundary rewrite, and sanitized errors.
2026-09-15 16:21:04 +08:00

5.5 KiB
Raw Blame History

PROGRESS · TASK-qizheng-native-chart-20260915

分支:codex/qizheng-native-chart-20260915
开工基线:4cacea8e(任务书四份已在 staging;代码基线仍是 2d7698ea 之后的 staging 全量)
本机:Windows。Python 用 Anaconda 3.11.7pytest + pyswisseph 已装)。仓库 .venv 是指向 /workspace/Jyotisha/.venv 的 git symlinkWindows 上不是可用目录。

开工核对

结果
git status -sb codex/qizheng-native-chart-20260915...origin/staging
scripts/jyotish_api_server.py 行数 开工 11313;上限 11363
docs/BUG_HISTORY.md 最大号 开工时 BUG-699。本单按预分配写入 700703。rebase 时发现 3e58e85fTASK-rectification-tiebreak-card-loss-20260915.md 把 702–704 写进了另一份任务书(尚未写入 BUG_HISTORY)。本单记录已落盘,另一单须整体后移,不得覆盖 700–703
Skill 6.9.16未 bump
pre_work_check.py python_runtime / fragment_scan / external_engine_adapters / remote_visibility 均 ok。focused_tests 两条 test_preflight_fragment_scan.py 红:本机没有 .workbuddy/skills/jyotish-vedic-astrology 镜像路径,且 fragment candidate_count 5 < residue 14。与本单改动无关,未修

任务 1 · vendored 归档与镜像 Node

  • 上游不从 GitHub 拉。本机 G:\Ferti\yinduzhanxing-codex-add-birth-time-rectification-skill = 任务书 /workspace/yinduzhanxinga911c890)。已按内容拷贝 vendor/stem-branch/{LICENSE,README.md,package.json,dist/cli.cjs} 到本仓同名路径。cli.cjs 45,963 行 / 2,682,464 Bsha256 前缀 cf1bca10507ffcc9,与上游文件逐字节相同。
  • scripts/qizheng_chart_engine.py 以上游 168 行适配器为起点(calculate_qizheng_chart + CLI --seven-governors --json),再按任务 2 改派别参数、boundary、坐标系和错误路径。默认走 cli.cjs;覆盖 ketu_mode / sidereal_mode 时用同包 dist/index.cjsCLI 无对应旗标)。
  • 仓库根 NOTICE:包名、0.8.0、Apache-2.0、上游地址、取入方式。
  • deploy/railway-api.Dockerfilenodejs 运行时(不装 npm/构建链),COPY vendor ./vendor
  • deploy/gated-paths.txt:新增 vendor/**
  • 镜像构建 / 容器内 node --version:无 Docker,未跑,不写成通过。 宿主机 node --version = v22.23.2。镜像体积变化:未知。

任务 2 · 适配器

scripts/qizheng_chart_engine.py:只调 getSevenGovernorsChart;禁止 --pillars 等子命令。ketu_mode / sidereal_mode 从请求读取并回写。coordinate_system=qizheng_mansion_degrees_from_jiao。boundary 无「神煞」,庙旺 unclosed。五种错误路径结构化,不 500、不外泄 stderr。

实跑虚构资料 1990-04-09T13:24:00+08:00 / 31.19N 121.44E

太阳 宿度 177.94 奎 7.44° 亥宮 陷
罗睺 宿度 112.09 女 5.09° 丑宮
计都(apogee 宿度 27.46 亢 15.46°(近月孛,非罗睺对点)
紫炁 宿度 33.34 房 0.34° 卯宮
命宫 星 · 午宮
宫 / 相位 / 神煞 12 / 27 / 0

任务 3 · 三个只读端点

scripts/jyotish_api_server.py 净增 21 行11313 → 11334,预算 32,上限 11363)。三个 handler 各 ≤ 8 行。已纳入 JYOTISH_HEAVY_COMPUTE_CONCURRENCY

  • /api/qizheng 见上。
  • /api/westernbuild_tropical_natal_charthouse_system 默认 P 可覆盖;回归黄道边界句含 Raman 岁差差值。
  • /api/ephemeris_events90 天 Raman 窗口 14 条(ingress 8 + station 6),Lahiri 同窗 16 条且不同;>730 天 400。

本地 POST http://127.0.0.1:5200/api/qizheng(与任务书 curl 等价;PowerShell 下 curl.exe -d 引号被吃掉,改用 Python urllibstatus 200):

{"success": true, "endpoint": "qizheng", "coordinate_system": "qizheng_mansion_degrees_from_jiao", "calculation": {"engine": "@4n6h4x0r/stem-branch", "engine_version": "0.8.0", "ketu_mode": "apogee", "sidereal_mode": {"type": "modern"}, "engine_ketu_mode": "apogee", "engine_sidereal_mode": {"type": "modern"}, "iso_local": "1990-04-09T13:24:00+08:00", "timeout_seconds": 20}, "ascendant": {"mansion": "星", "palace": "午宮"}, "bodies.sun": {"siderealLon": 177.94225865978694, "mansion": "奎", "mansionDegree": 7.442258659786944, "palace": "亥宮"}}

GET /api/healthstatus=okswisseph_available=true。本地 git_commit 为 unknown(未部署)。

任务 4 · Bug

状态
BUG-700 blocked(不调用 --pillars
BUG-701 resolved(派别参数化)
BUG-702 resolvedboundary / 庙旺 unclosed
BUG-703 investigatingpanchanga Lahiri,本轮不修)

测试

Anaconda python -m pytest

  • tests/test_qizheng_chart_engine.py
  • tests/test_qizheng_api_productization.py
  • tests/test_readonly_chart_endpoints.py
  • tests/test_ephemeris_events.py
  • tests/test_api_server_growth_contract.py
  • tests/test_api_heavy_compute_gate.py
  • tests/test_western_chart_engine.py

36 passed

run_quality_gate.py --profile quick:本机无 Dockernpm test 预期仍是既有 27 条 DB 失败,不得写成全绿。Python 段另缺 timezonefinder / mcp(见根 BLOCKED.md)。上述定向测试已绿。新测试已列入 CORE_PYTEST_TARGETS

让步

无。3b/3c 已交付。限流已接入。raw_engine_output 已落地并去掉路径键。

合入

本单最先合入 staging。不提升 main、不改 workflow、不动 DNS。