feat: add explicit chara dasha api alias

This commit is contained in:
732642856
2026-06-26 12:03:04 +08:00
parent 888d09a76e
commit bee20ef266
3 changed files with 224 additions and 0 deletions
@@ -0,0 +1,160 @@
# Antigravity AI 副手任务单 Round 322026-06-26
## 本轮目标
Round 32 不再重复做能力清点。
这一轮只做三类“直接减轻 Codex 主线算力和注意力负担”的重任务:
1. 把已有报告压缩成 **代码可执行清单**,尤其是 API / CLI / 前端 / 同步 / oracle 五条线。
2. 按“本地立即可测准确率”优先级,给出 **最短开发路径与最短人工验证路径**
3. 继续全网检索和本机复用,找出 **可以合法直接复制** 的高 ROI 常量、数据表、接口设计与非 GPL 文档结构。
## 严格边界
禁止:
- 不要修改任何 `scripts/``tests/``jyotish-app/``README.md``SKILL.md``references/``.gitignore`
- 不要 push / commit / rebase / reset / stash / 删除 / 移动任何文件。
- 不要输出任何 token、cookie、SSH 私钥、浏览器本地凭证、系统账号隐私。
- 不要把 GPL / AGPL / LGPL / 闭源代码列入可直接复制区。
允许:
- 只新增 `docs/research/antigravity_round32_*_2026_06_26.md`
- 运行只读命令、联网检索、license 检查、目录扫描、黑盒测试、对照分析。
## 必跑命令
```bash
git status --short --branch
git log --oneline --decorate -n 30
git ls-remote ssh://git@ssh.github.com:443/732642856/yinduzhanxing.git 'refs/heads/codex/release-hygiene-ci' 'refs/heads/main'
python3 scripts/audit_capabilities.py --mode validate
python3 scripts/local_accuracy_report.py --format json
python3 scripts/run_quality_gate.py --profile quick --skip-yoga-logic
find . -maxdepth 4 -type f \( -name 'SKILL.md' -o -path './references/technique_registry.json' -o -path './references/strict-workflow-router.md' -o -path './skills/*/SKILL.md' \) | sort
find /Users/wuyongnaren/.workbuddy -maxdepth 6 -type f \( -name 'SKILL.md' -o -name 'technique_registry.json' -o -name 'strict-workflow-router.md' \) 2>/dev/null | sort
find /Users/wuyongnaren -maxdepth 7 -type f \( -name 'SKILL.md' -o -name 'technique_registry.json' -o -name 'strict-workflow-router.md' \) 2>/dev/null | rg "jyotish|vedic|占星|印度占星|workbuddy|skill"
rg -n "Tajika|Varshaphala|Jaimini|Chara Dasha|Narayana|Kalachakra|KP|Prashna|Shadbala|Bhava Bala|Ashtakavarga|Yoga Pinda|Panchanga|Muhurta|Porutham|Synastry|Ayanamsa|oracle|external_verified|artifacts|table|tabulate|timezone|DST|polar" SKILL.md README.md references scripts tests jyotish-app docs/research
rg -n "MIT|Apache|BSD|ISC|CC0|GPL|AGPL|LGPL|license|License|quarantine|copy_allowed|benchmark_only" references/open_source_sources docs/research /Users/wuyongnaren/.workbuddy/skills/jyotish-vedic-astrology/references 2>/dev/null
git diff --check
```
## 本轮至少产出 18 份报告
全部写入 `docs/research/`,命名必须为:
- `docs/research/antigravity_round32_*_2026_06_26.md`
每份报告至少包含:
- 25 个检查点
- 10 条命令 / URL / 文件路径
- 10 条 Codex 可直接执行任务
- 3 条继续交给下一轮副手的任务
- 1 条必须人工外部 oracle / JHora / PyJHora / 真实截图参与的任务
- 1 个明确状态:`已成立` / `部分成立` / `未成立` / `需要人工外部工具` / `license_blocked`
## 指定工作包
### A. API 直接编码任务 Top 40
输出:`antigravity_round32_api_direct_coding_top40_2026_06_26.md`
要求:
- 每条都必须精确到 endpoint、payload、预期响应字段、对应测试文件。
- 特别关注 `/api/dasha/chara``/api/tajika``/api/muhurta``/api/varga_full``/api/jaimini`
### B. CLI 直接编码任务 Top 40
输出:`antigravity_round32_cli_direct_coding_top40_2026_06_26.md`
重点:
- 哪些命令最该补 `--table`
- 哪些 CLI 错误信息最该做人类可读化
- 哪些命令本地测试价值最高
### C. 前端直接编码任务 Top 40
输出:`antigravity_round32_frontend_direct_coding_top40_2026_06_26.md`
重点:
- 后端已存在、但前端还没暴露的高 ROI 技能
- 哪些最能让用户立刻感知“能力完整”
### D. 云端/本地/WorkBuddy 同步执行脚本建议
输出:`antigravity_round32_sync_script_blueprint_2026_06_26.md`
要求:
- 给出 `rsync` / `ln -sf` / 白名单同步建议
- 明确哪些文件必须同步,哪些必须排除
- 严禁建议同步源码缓存、日志、测试输出、dist 垃圾
### E. MIT 可直接搬运代码资产 Top 100
输出:`antigravity_round32_copy_allowed_assets_top100_2026_06_26.md`
要求:
- 精确到仓库、文件、函数、常量、数据表、API schema
- 每项都给出 license 判断和用途
### F. GPL/AGPL/LGPL 黑名单隔离复核
输出:`antigravity_round32_license_blacklist_recheck_2026_06_26.md`
### G. 本地立即测准确率最短链路终稿
输出:`antigravity_round32_local_accuracy_shortest_chain_final_2026_06_26.md`
要求:
- 只保留真正影响“今天就测”的事项
- 把无关项全部后移
### H. 真实 oracle 样本推进矩阵
输出:`antigravity_round32_oracle_sample_push_matrix_2026_06_26.md`
### I. JHora / PyJHora 截图与人工录入流程压缩版
输出:`antigravity_round32_jhora_pyjhora_fast_capture_pipeline_2026_06_26.md`
### J. 时区 / DST / 极地异常直接落地任务
输出:`antigravity_round32_timezone_dst_polar_direct_tasks_2026_06_26.md`
要求:
- 不要再泛讲风险
- 必须给出具体异常输入、预期防御、建议测试
### K. 传统技法真缺口再排序 Top 20
输出:`antigravity_round32_true_missing_techniques_rerank_top20_2026_06_26.md`
### L. 用户本地使用体验直接优化 Top 30
输出:`antigravity_round32_local_ux_direct_top30_2026_06_26.md`
### M. 可复用碎片第五轮排查
输出:`antigravity_round32_whole_machine_fragment_reuse_fifth_pass_2026_06_26.md`
### N. Codex Round 33 Top 200
输出:`antigravity_round32_codex_round33_top200_2026_06_26.md`
### O. 最终执行总板
输出:`antigravity_round32_final_execution_board_2026_06_26.md`
必须明确:
1. 今天最该写代码的前 20 项
2. 今天最该同步的前 10 项
3. 今天最该压给副手的前 20 项
4. 哪些必须等待人工 oracle
5. 哪些看起来热闹但应推迟
## 额外 4 份补充报告
副手还必须自选 4 份高影响补充报告,主题只能从以下范围选择:
- 本地离线模式 / API fallback
- 性能/内存/超大 JSON 压力
- 多语言/i18n/术语译名
- 真实用户的精度验证阻塞
## 状态定义
只有当报告真正能被 Codex “直接翻译成代码/同步命令/验证步骤”时,才能写:
`已成立`
否则只能写:
`部分成立` / `未成立` / `需要人工外部工具` / `license_blocked`
+21
View File
@@ -62,6 +62,7 @@ API_COMMAND_MAP = {
'synastry': '/api/synastry',
'ashtakoot': '/api/synastry',
'dasha': '/api/dasha',
'chara-dasha': '/api/dasha/chara',
'remedies': '/api/remedies',
'sade_sati': '/api/sade_sati',
'pancha_mahapurusha': '/api/pancha_mahapurusha',
@@ -100,6 +101,7 @@ TECHNIQUE_EXAMPLE_ENDPOINTS = {
'/api/career',
'/api/case_validation',
'/api/dasha',
'/api/dasha/chara',
'/api/divisional_yoga',
'/api/deep_varga_avastha',
'/api/jaimini',
@@ -229,6 +231,9 @@ class JyotishAPIHandler(BaseHTTPRequestHandler):
elif path == '/api/dasha':
result = self._compute_dasha_system(body)
self._json(result)
elif path == '/api/dasha/chara':
result = self._compute_chara_dasha(body)
self._json(result)
elif path == '/api/sade_sati':
result = self._compute_sade_sati(body)
self._json(result)
@@ -2944,6 +2949,16 @@ class JyotishAPIHandler(BaseHTTPRequestHandler):
'alias_of': 'annual',
}
def _compute_chara_dasha(self, body):
payload = dict(body or {})
payload['mode'] = 'dasha'
result = self._compute_jaimini(payload)
return {
**result,
'endpoint': 'chara_dasha',
'alias_of': 'jaimini',
}
def _compute_muhurta(self, body):
has_range = body.get('start_date') or body.get('end_date') or body.get('start') or body.get('end')
query_date = body.get('date') or datetime.now().strftime('%Y-%m-%d')
@@ -3747,6 +3762,8 @@ class JyotishAPIHandler(BaseHTTPRequestHandler):
for command in commands
if API_COMMAND_MAP.get(command) in api_endpoints
]
if technique.get('id') == 'jaimini_chara_dasha' and '/api/dasha/chara' in api_endpoints:
mapped.append('/api/dasha/chara')
runnable = [endpoint for endpoint in mapped if endpoint in TECHNIQUE_EXAMPLE_ENDPOINTS]
primary_endpoint = self._primary_catalog_endpoint(technique, mapped, runnable)
rows.append({
@@ -3787,6 +3804,7 @@ class JyotishAPIHandler(BaseHTTPRequestHandler):
('/api/relationship', ['relationship', 'spouse', '婚姻', '感情']),
('/api/career', ['career', '事业']),
('/api/dasha', ['dasha', 'vimshottari']),
('/api/dasha/chara', ['chara dasha', 'chara_dasha', 'jaimini dasha']),
('/api/yogas', ['yoga', 'dosha']),
('/api/shadbala', ['shadbala']),
('/api/deep_varga_avastha', ['deep_varga_avastha', 'deep varga', 'avastha', 'sayanadi', 'shayanadi', 'd24', 'd30', 'd60']),
@@ -3864,6 +3882,7 @@ class JyotishAPIHandler(BaseHTTPRequestHandler):
'/api/career': self._compute_career,
'/api/case_validation': self._compute_case_validation,
'/api/dasha': self._compute_dasha_system,
'/api/dasha/chara': self._compute_chara_dasha,
'/api/deep_varga_avastha': self._compute_deep_varga_avastha,
'/api/divisional_yoga': self._compute_divisional_yoga,
'/api/jaimini': self._compute_jaimini,
@@ -3985,6 +4004,7 @@ class JyotishAPIHandler(BaseHTTPRequestHandler):
'/api/career': 'Compute career analysis from planets and ascendant',
'/api/case_validation': 'Run case validation and MEVG gate status',
'/api/dasha': 'Compute Dasha periods and Vimshottari analysis layer',
'/api/dasha/chara': 'Compute explicit Jaimini Chara Dasha timing layer',
'/api/deep_varga_avastha': 'Compute Sayanadi/Shayanadi avastha and D24/D30/D60 templates',
'/api/divisional_yoga': 'Detect D9/D10/D12 divisional yogas',
'/api/jaimini': 'Compute Jaimini karaka, arudha, dasha, and karakamsha data',
@@ -4042,6 +4062,7 @@ class JyotishAPIHandler(BaseHTTPRequestHandler):
'/api/career': {'planets': SAMPLE_PLANETS, 'asc_sign': 'Aries'},
'/api/case_validation': {**base, 'current_md': 'Jupiter', 'predicted_events': ['事业巅峰', '关系发展'], 'transit_desc': 'Double Jupiter Saturn activation'},
'/api/dasha': {**base, **birth, 'dasha': 'vimshottari'},
'/api/dasha/chara': {**base, **birth, 'antardasha': True},
'/api/deep_varga_avastha': base,
'/api/divisional_yoga': {**base, 'divisions': ['D9', 'D10', 'D12']},
'/api/jaimini': {**base, **birth, 'mode': 'all'},
+43
View File
@@ -627,6 +627,49 @@ def test_technique_catalog_exposes_runnable_api_examples() -> None:
handler._compute_technique_example({'endpoint': '/api/report_artifact'})
def test_chara_dasha_endpoint_alias_returns_jaimini_dasha_payload() -> None:
handler = _handler()
result = handler._compute_chara_dasha({
'planets': jyotish_api_server.SAMPLE_PLANETS,
'ascendant': jyotish_api_server.SAMPLE_ASCENDANT,
'year': 1990,
'month': 1,
'day': 1,
'hour': 12,
'minute': 0,
'lat': 28.6,
'lon': 77.2,
'tz': 5.5,
'antardasha': True,
})
assert result['success'] is True
assert result['endpoint'] == 'chara_dasha'
assert result['alias_of'] == 'jaimini'
assert result['mode'] == 'dasha'
assert result['result']['chara_dasha']
def test_capability_audit_lists_chara_dasha_endpoint() -> None:
handler = _handler()
audit = handler._capability_audit()
assert '/api/dasha/chara' in audit['surfaces']['api_endpoints']
def test_technique_catalog_exposes_chara_dasha_example() -> None:
handler = _handler()
catalog = handler._technique_catalog()
assert '/api/dasha/chara' in catalog['filters']['api_endpoints']
assert catalog['example_payloads']['/api/dasha/chara']['antardasha'] is True
result = handler._compute_technique_example({'endpoint': '/api/dasha/chara'})
assert result['success'] is True
assert result['target_endpoint'] == '/api/dasha/chara'
assert result['result']['result']['chara_dasha']
def test_thematic_report_declares_orchestrator_fragments() -> None:
handler = _handler()
result = handler._compute_thematic_report({'theme': 'marriage'})