fix(web): stop rectification interview when remaining minutes no longer split

Coverage-complete ties stayed in discrimination because whole-window D9/D24 follow-ups were treated as probes, and restated dates inserted duplicate evidence. Skip encoded remaining layers, ask leftover D4 or offer a provisional range, and dedupe dated rows by kind and date.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Jesse_Chen
2026-08-25 19:02:35 +08:00
parent 946f11185e
commit a658ef8d2b
18 changed files with 1019 additions and 141 deletions
+32
View File
@@ -288,6 +288,38 @@ class EventProbesTest(unittest.TestCase):
self.assertTrue(any(item["source"] in {"dasha_activation", "dasha_boundary"} for item in probes))
self.assertTrue(any(item["domain"] == "relocation" for item in probes))
def test_enrollment_skips_adjacent_education_existence_year(self) -> None:
built = {
"static_contexts": [
{"feature": {"time": "05:13", "varga_ascendants": {"D4": 1, "D9": 1, "D10": 1, "D5": 1}}},
{"feature": {"time": "05:14", "varga_ascendants": {"D4": 2, "D9": 1, "D10": 1, "D5": 2}}},
]
}
probes = discriminating_event_probes(
_request(
birth_date="1998-08-08",
events=[{
"id": "00000000-0000-4000-8000-000000000001",
"domain": "education",
"summary": "2016年9月进入大学",
"date": "2016-09-01",
"precision": "month",
}],
),
built,
scan=window_scan(built),
candidate_times=["05:13", "05:14"],
representative_time="05:13",
precision_current="d5_refine",
today=date(2026, 8, 22),
)
existence = [
item for item in probes
if item["domain"] == "education" and item["source"] != "known_event_quality"
]
self.assertFalse(any(item["year"] in {2015, 2016, 2017} for item in existence))
self.assertFalse(any("高考是 2015" in str(item.get("user_meaning") or "") for item in probes))
def test_representatives_prefer_remaining_candidate_times(self) -> None:
built = {
"static_contexts": [