fix(rectification): split D4/D5 stages and recast after adopt
Keep family on D12+D7 instead of mixing it into D4, score D5 on education, and show a natal recast plus technique audit after adopt without unique-minute claims. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -113,11 +113,19 @@ def _split_track_points(rule_ids: Sequence[str], points: float) -> tuple[float,
|
||||
return points * vim / total, points * narayana / total
|
||||
|
||||
|
||||
_LAYER_LABEL = {"d1": "本命上升", "d9": "D9", "d10": "D10", "d4": "D4", "d12": "D12"}
|
||||
_LAYER_LABEL = {
|
||||
"d1": "本命上升",
|
||||
"d9": "D9",
|
||||
"d10": "D10",
|
||||
"d4": "D4",
|
||||
"d5": "D5",
|
||||
"d7": "D7",
|
||||
"d12": "D12",
|
||||
}
|
||||
|
||||
|
||||
def window_scan(built: dict[str, Any]) -> dict[str, Any]:
|
||||
"""D1/D9/D10/D4 diversity plus change minutes. Indices only; never sign names."""
|
||||
"""D1/D9/D10/D4/D5/D7/D12 diversity plus change minutes. Indices only; never sign names."""
|
||||
counts: dict[str, set[int]] = {layer: set() for layer in _LAYER_LABEL}
|
||||
transitions: list[dict[str, Any]] = []
|
||||
previous: dict[str, int | None] | None = None
|
||||
@@ -128,6 +136,8 @@ def window_scan(built: dict[str, Any]) -> dict[str, Any]:
|
||||
"d9": vargas.get("D9") if isinstance(vargas.get("D9"), int) else None,
|
||||
"d10": vargas.get("D10") if isinstance(vargas.get("D10"), int) else None,
|
||||
"d4": vargas.get("D4") if isinstance(vargas.get("D4"), int) else None,
|
||||
"d5": vargas.get("D5") if isinstance(vargas.get("D5"), int) else None,
|
||||
"d7": vargas.get("D7") if isinstance(vargas.get("D7"), int) else None,
|
||||
"d12": vargas.get("D12") if isinstance(vargas.get("D12"), int) else None,
|
||||
}
|
||||
for layer, bucket in counts.items():
|
||||
@@ -154,11 +164,15 @@ def window_scan(built: dict[str, Any]) -> dict[str, Any]:
|
||||
"d9_lagna_count": len(counts["d9"]),
|
||||
"d10_lagna_count": len(counts["d10"]),
|
||||
"d4_lagna_count": len(counts["d4"]),
|
||||
"d5_lagna_count": len(counts["d5"]),
|
||||
"d7_lagna_count": len(counts["d7"]),
|
||||
"d12_lagna_count": len(counts["d12"]),
|
||||
"d1_candidates_differ": len(counts["d1"]) > 1,
|
||||
"d9_candidates_differ": len(counts["d9"]) > 1,
|
||||
"d10_candidates_differ": len(counts["d10"]) > 1,
|
||||
"d4_candidates_differ": len(counts["d4"]) > 1,
|
||||
"d5_candidates_differ": len(counts["d5"]) > 1,
|
||||
"d7_candidates_differ": len(counts["d7"]) > 1,
|
||||
"d12_candidates_differ": len(counts["d12"]) > 1,
|
||||
"transitions": transitions,
|
||||
}
|
||||
@@ -360,14 +374,17 @@ def precision_stage(scan: dict[str, Any], event_count: int) -> dict[str, Any]:
|
||||
current = "d10_refine"
|
||||
meaning = "关系盘已较稳,事业盘仍会换升。可再补一件记得时间的工作变化。"
|
||||
elif scan.get("d4_candidates_differ"):
|
||||
current = "theme_refine"
|
||||
meaning = "核心分盘已较稳。若还想收窄,可再补一件记得时间的家人或住处变化;也可以先采用代表性时间。"
|
||||
current = "d4_refine"
|
||||
meaning = "事业盘已较稳,居所盘仍会换升。可再补一件记得时间的搬家或住处变化。"
|
||||
elif scan.get("d5_candidates_differ"):
|
||||
current = "d5_refine"
|
||||
meaning = "居所盘已较稳,成就盘仍会换升。可再补一件记得时间的学业、考试或被委以责任的变化;不要贴类型标签。"
|
||||
else:
|
||||
current = "ready_to_adopt"
|
||||
meaning = "核心分盘已不再换升。可以采用代表性时间看盘,也可以再补主题经历。"
|
||||
return {
|
||||
"current": current,
|
||||
"can_stop": current in {"d9_refine", "d10_refine", "theme_refine", "ready_to_adopt"},
|
||||
"can_stop": current in {"d9_refine", "d10_refine", "d4_refine", "d5_refine", "theme_refine", "ready_to_adopt"},
|
||||
"user_meaning": meaning,
|
||||
"unique_minute_claim": False,
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user