feat: expose chara dasha in frontend workbench

This commit is contained in:
732642856
2026-06-26 12:09:41 +08:00
parent bee20ef266
commit c6e819b5e5
4 changed files with 26 additions and 0 deletions
+5
View File
@@ -144,6 +144,10 @@ async function computeDashaSystem(payload) {
return postJson('/api/dasha', payload);
}
async function computeCharaDasha(payload) {
return postJson('/api/dasha/chara', payload);
}
async function computeRemedies(payload) {
return postJson('/api/remedies', payload);
}
@@ -434,6 +438,7 @@ window.JyotishAPI = {
computePrashna,
computeKP,
computeDashaSystem,
computeCharaDasha,
computeRemedies,
computeSadeSati,
computePanchaMahapurusha,
+5
View File
@@ -144,6 +144,10 @@ async function computeDashaSystem(payload) {
return postJson('/api/dasha', payload);
}
async function computeCharaDasha(payload) {
return postJson('/api/dasha/chara', payload);
}
async function computeRemedies(payload) {
return postJson('/api/remedies', payload);
}
@@ -434,6 +438,7 @@ window.JyotishAPI = {
computePrashna,
computeKP,
computeDashaSystem,
computeCharaDasha,
computeRemedies,
computeSadeSati,
computePanchaMahapurusha,
+13
View File
@@ -55,6 +55,7 @@ const TECHNIQUE_API_ENDPOINTS = {
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',
@@ -96,6 +97,7 @@ const TECHNIQUE_COMMAND_ACTIONS = {
sudarshana: 'sudarshana',
'nakshatra-full': 'nakshatra',
jaimini: 'jaimini',
'chara-dasha': 'charaDasha',
ashtakavarga: 'ashtakavarga',
shadbala: 'shadbala',
yoga: 'yogas',
@@ -272,6 +274,7 @@ function renderTechniqueWorkbench(container, context = {}) {
['sudarshana', 'Sudarshana', '三重Lagna'],
['nakshatra', 'Nakshatra+', '星宿深层'],
['jaimini', 'Jaimini', 'Karaka/Arudha'],
['charaDasha', 'Chara Dasha', 'Jaimini 应期'],
['ashtakavarga', 'Ashtakavarga', 'SAV/BAV'],
['shadbala', 'Shadbala', '六重力量'],
['yogas', 'Yogas', '格局检测'],
@@ -387,6 +390,13 @@ async function runTechniqueAction(action, context) {
mode: 'all',
});
}
if (action === 'charaDasha') {
return window.JyotishAPI.computeCharaDasha({
...base,
...buildBirthPayload(context),
antardasha: true,
});
}
if (action === 'ashtakavarga') {
return window.JyotishAPI.computeAshtakavarga(base);
}
@@ -1935,6 +1945,7 @@ function buildTechniqueExplorerPayload(action, context = {}) {
if (action === 'bhava') return { ...base, ...buildBirthPayload(context), mode: 'compare', house_system: resolveBhavaHouseSystem(context) };
if (action === 'nakshatra') return { ...base, age: estimateAge(context) };
if (action === 'jaimini') return { ...base, ...buildBirthPayload(context), mode: 'all' };
if (action === 'charaDasha') return { ...base, ...buildBirthPayload(context), antardasha: true };
if (action === 'shadbala') return { ...base, ...buildBirthPayload(context) };
if (action === 'yogas') return { ...base, current_dasha: chartData.dasha?.current_md || chartData.dasha_lord || '' };
if (action === 'dasha') return { ...base, ...buildBirthPayload(context), dasha: 'vimshottari' };
@@ -1992,6 +2003,7 @@ function actionForEndpoint(endpoint) {
'/api/sudarshana': 'sudarshana',
'/api/nakshatra_full': 'nakshatra',
'/api/jaimini': 'jaimini',
'/api/dasha/chara': 'charaDasha',
'/api/ashtakavarga': 'ashtakavarga',
'/api/shadbala': 'shadbala',
'/api/yogas': 'yogas',
@@ -2025,6 +2037,7 @@ function endpointForAction(action) {
sudarshana: '/api/sudarshana',
nakshatra: '/api/nakshatra_full',
jaimini: '/api/jaimini',
charaDasha: '/api/dasha/chara',
ashtakavarga: '/api/ashtakavarga',
shadbala: '/api/shadbala',
yogas: '/api/yogas',
+3
View File
@@ -1222,6 +1222,7 @@ def test_api_bridge_exports_productized_backend_actions() -> None:
"computeKP",
"computePrashna",
"computeSynastry",
"computeCharaDasha",
"computeRemedies",
"computeSadeSati",
"computePanchaMahapurusha",
@@ -2347,8 +2348,10 @@ def test_frontend_backend_contracts_with_api_handler() -> None:
assert catalog["summary"]["technique_count"] == audit["registry"]["technique_count"]
assert catalog["summary"]["runnable_count"] >= 20
assert "/api/ashtakavarga" in catalog["filters"]["api_endpoints"]
assert "/api/dasha/chara" in catalog["filters"]["api_endpoints"]
assert "/api/thematic_report" in catalog["filters"]["api_endpoints"]
assert catalog["example_payloads"]["/api/ashtakavarga"]["planets"]
assert catalog["example_payloads"]["/api/dasha/chara"]["antardasha"] is True
assert catalog["example_payloads"]["/api/thematic_report"]["theme"] == "marriage"
assert catalog["api_docs"]["/api/thematic_report"]["method"] == "POST"
assert "curl -sS -X POST" in catalog["api_docs"]["/api/thematic_report"]["curl"]