feat: sync ordered oss remaining probes

This commit is contained in:
732642856
2026-07-19 22:25:57 +08:00
parent 4ceb3a5157
commit 4fd5ee6ee5
10 changed files with 1343 additions and 28 deletions
+10 -27
View File
@@ -179,25 +179,6 @@ def _kp_cusp_snapshot(chart: dict[str, Any]) -> dict[str, Any]:
return snapshot
def _prioritize_questions(questions: list[dict[str, Any]], scan: dict[str, Any]) -> tuple[list[dict[str, Any]], str]:
"""Prefer questions whose declared layers actually differ in sampled candidates."""
samples = scan.get("samples") or []
if len(samples) < 2 or not all(isinstance(sample.get("varga_lagna"), dict) for sample in samples):
return questions, "generic_fallback_missing_candidate_recast"
changed: set[str] = set()
for layer in ("D4", "D9", "D10", "D24", "D30"):
values = {str((sample["varga_lagna"].get(layer) or {}).get("sign_idx")) for sample in samples}
if len(values) > 1:
changed.add(layer)
for layer in ("A7", "A10", "UL"):
values = {str(((sample.get("arudha") or {}).get(layer) or {}).get("sign_idx")) for sample in samples}
if len(values) > 1:
changed.add(layer)
if not changed:
return questions, "generic_fallback_no_sampled_difference"
return sorted(questions, key=lambda question: (not bool(changed.intersection(question.get("sensitivity") or [])), question.get("round", 99))), "candidate_difference_ranked"
def build_questionnaire(
birth_time: str,
uncertainty_minutes: int = 30,
@@ -225,16 +206,18 @@ def build_questionnaire(
"D": {"effect": "neutral", "cluster": "neutral", "points": 0},
},
})
scan = _candidate_scan(
_parse_time(birth_time), uncertainty_minutes, step_minutes,
lat=lat, lon=lon, tz=tz, ayanamsa=ayanamsa,
)
questions, question_selection = _prioritize_questions(questions, scan)
return {
"scope": "active_birth_time_rectification_questionnaire",
"schema_version": 1,
"candidate_scan": scan,
"question_selection": question_selection,
"candidate_scan": _candidate_scan(
_parse_time(birth_time),
uncertainty_minutes,
step_minutes,
lat=lat,
lon=lon,
tz=tz,
ayanamsa=ayanamsa,
),
"workflow": [
"candidate_time_scan",
"varga_arudha_kp_sensitivity_diff",
@@ -248,7 +231,7 @@ def build_questionnaire(
"2": "domain follow-up",
"3": "fine confirmation",
},
"sensitivity_layers": ["D9", "D10", "D24", "D30", "D60", "D4", "UL", "A7", "A10", "Vimshottari", "Narayana", "Chara"],
"sensitivity_layers": ["D9", "D10", "D24", "D30", "D60", "D4", "UL", "A7", "A10", "KP_cusp", "Vimshottari", "Narayana", "Chara"],
"questions": questions,
"boundary": "Question generation only; final rectification requires scoring answers against actual candidate chart differences.",
}