feat: expose chara dasha in frontend workbench
This commit is contained in:
@@ -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,
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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',
|
||||
|
||||
@@ -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"]
|
||||
|
||||
Reference in New Issue
Block a user