fix(web): keep career quality off the gate and let the agent write stems
Independent Staging Quality Gate / validate (push) Successful in 11m41s
Independent Staging Quality Gate / publish (push) Successful in 15m44s

Exam-quality cards may still jump ahead of adoption, but career years stay on method rotation. Server stamps only period and family; spoken questions remain model-authored.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Jesse_Chen
2026-08-26 12:39:05 +08:00
co-authored by Cursor
parent 7416e02fa9
commit 7718317d69
14 changed files with 435 additions and 46 deletions
+34
View File
@@ -119,6 +119,40 @@ class EventProbesTest(unittest.TestCase):
self.assertNotIn("05:14", quality["user_meaning"])
self.assertNotIn("points", str(probes))
def test_career_events_do_not_emit_quality_probes(self) -> None:
built = {
"static_contexts": [
_context("05:13", d4_asc=1, sun_house=10, sun_varga_sign=9),
_context("05:14", d4_asc=2, sun_house=10, sun_varga_sign=9),
]
}
probes = discriminating_event_probes(
_request(events=[
{
"id": "00000000-0000-4000-8000-000000000001",
"domain": "career",
"summary": "2020 年 4 月开始实习(第一份工作)",
"date": "2020-04-01",
"precision": "month",
},
{
"id": "00000000-0000-4000-8000-000000000002",
"domain": "career",
"summary": "2020 年 10 月实习结束离职",
"date": "2020-10-01",
"precision": "month",
},
]),
built,
scan=window_scan(built),
candidate_times=["05:13", "05:14"],
representative_time="05:13",
precision_current="d10_refine",
today=date(2026, 8, 22),
)
self.assertFalse(any(item["source"] == "known_event_quality" for item in probes))
self.assertFalse(any("高考" in str(item.get("user_meaning") or "") for item in probes))
def test_spoken_exam_anomaly_encodes_quality(self) -> None:
built = {
"static_contexts": [