feat: add explicit chara dasha api alias
This commit is contained in:
@@ -0,0 +1,160 @@
|
||||
# Antigravity AI 副手任务单 Round 32(2026-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`
|
||||
@@ -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'},
|
||||
|
||||
@@ -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'})
|
||||
|
||||
Reference in New Issue
Block a user