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.
5.5 KiB
PROGRESS · TASK-qizheng-native-chart-20260915
分支:codex/qizheng-native-chart-20260915
开工基线:4cacea8e(任务书四份已在 staging;代码基线仍是 2d7698ea 之后的 staging 全量)
本机:Windows。Python 用 Anaconda 3.11.7(pytest + pyswisseph 已装)。仓库 .venv 是指向 /workspace/Jyotisha/.venv 的 git symlink,Windows 上不是可用目录。
开工核对
| 项 | 结果 |
|---|---|
git status -sb |
codex/qizheng-native-chart-20260915...origin/staging |
scripts/jyotish_api_server.py 行数 |
开工 11313;上限 11363 |
docs/BUG_HISTORY.md 最大号 |
开工时 BUG-699。本单按预分配写入 700–703。rebase 时发现 3e58e85f 的 TASK-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/yinduzhanxing(a911c890)。已按内容拷贝vendor/stem-branch/{LICENSE,README.md,package.json,dist/cli.cjs}到本仓同名路径。cli.cjs45,963 行 / 2,682,464 B,sha256 前缀cf1bca10507ffcc9,与上游文件逐字节相同。 scripts/qizheng_chart_engine.py以上游 168 行适配器为起点(calculate_qizheng_chart+ CLI--seven-governors --json),再按任务 2 改派别参数、boundary、坐标系和错误路径。默认走cli.cjs;覆盖ketu_mode/sidereal_mode时用同包dist/index.cjs(CLI 无对应旗标)。- 仓库根
NOTICE:包名、0.8.0、Apache-2.0、上游地址、取入方式。 deploy/railway-api.Dockerfile:nodejs运行时(不装 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/western→build_tropical_natal_chart;house_system默认P可覆盖;回归黄道边界句含 Raman 岁差差值。/api/ephemeris_events:90 天 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 urllib,status 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/health:status=ok,swisseph_available=true。本地 git_commit 为 unknown(未部署)。
任务 4 · Bug
| 号 | 状态 |
|---|---|
| BUG-700 | blocked(不调用 --pillars) |
| BUG-701 | resolved(派别参数化) |
| BUG-702 | resolved(boundary / 庙旺 unclosed) |
| BUG-703 | investigating(panchanga Lahiri,本轮不修) |
测试
Anaconda python -m pytest:
tests/test_qizheng_chart_engine.pytests/test_qizheng_api_productization.pytests/test_readonly_chart_endpoints.pytests/test_ephemeris_events.pytests/test_api_server_growth_contract.pytests/test_api_heavy_compute_gate.pytests/test_western_chart_engine.py
36 passed。
run_quality_gate.py --profile quick:本机无 Docker,npm test 预期仍是既有 27 条 DB 失败,不得写成全绿。Python 段另缺 timezonefinder / mcp(见根 BLOCKED.md)。上述定向测试已绿。新测试已列入 CORE_PYTEST_TARGETS。
让步
无。3b/3c 已交付。限流已接入。raw_engine_output 已落地并去掉路径键。
合入
本单最先合入 staging。不提升 main、不改 workflow、不动 DNS。