fix(HEL-461): CLI/后台强制重发改为整组边界切换
eod-refresh --force 与管理后台补数不再单数据集发布, 统一走 force_republish_boundary,避免绕过 A/B 完整边界。 Co-authored-by: Cursor <cursoragent@cursor.com> Co-authored-by: multica-agent <github@multica.ai>
This commit is contained in:
co-authored by
Cursor
multica-agent
parent
32f565ecb9
commit
75c2e33b68
@@ -228,25 +228,34 @@ class GateRetryInterplayTests(unittest.TestCase):
|
||||
|
||||
|
||||
class ForceRepublishTests(unittest.TestCase):
|
||||
def test_run_dataset_over_published_keeps_prev_for_rollback(self) -> None:
|
||||
def test_force_boundary_republish_keeps_prev_for_rollback(self) -> None:
|
||||
transport = ValuationTransport()
|
||||
pipe, db = make_pipe(transport)
|
||||
pipe.ingest_reference(TRADE_DATE)
|
||||
first = pipe.run_dataset("valuation", TRADE_DATE)
|
||||
first = pipe.run_eod_batch_a(TRADE_DATE)
|
||||
first_val = first["valuation"]["batch_id"]
|
||||
first_daily = first["daily"]["batch_id"]
|
||||
transport.mode = "vr_all_null"
|
||||
with self.assertRaises(QualityError):
|
||||
pipe.run_dataset("valuation", TRADE_DATE) # gate holds: bad re-publish refused
|
||||
blocked = pipe.force_republish_boundary("valuation", TRADE_DATE)
|
||||
self.assertEqual(blocked["valuation"]["state"], "failed")
|
||||
self.assertEqual(pipe.active_batch("valuation", TRADE_DATE), first_val)
|
||||
self.assertEqual(pipe.active_batch("daily", TRADE_DATE), first_daily)
|
||||
transport.mode = "ok"
|
||||
second = pipe.run_dataset("valuation", TRADE_DATE) # CLI --force path
|
||||
self.assertNotEqual(first["batch_id"], second["batch_id"])
|
||||
pub = db.fetchone(
|
||||
"SELECT * FROM publications WHERE dataset='valuation' AND trade_date=?",
|
||||
second = pipe.force_republish_boundary("valuation", TRADE_DATE)
|
||||
self.assertEqual(second["valuation"]["state"], "published")
|
||||
self.assertNotEqual(second["valuation"]["batch_id"], first_val)
|
||||
self.assertNotEqual(second["daily"]["batch_id"], first_daily)
|
||||
pubs = db.fetchall(
|
||||
"SELECT dataset, active_batch, prev_batch, published_at FROM publications WHERE trade_date=?",
|
||||
(TRADE_DATE,),
|
||||
)
|
||||
self.assertEqual(pub["active_batch"], second["batch_id"])
|
||||
self.assertEqual(pub["prev_batch"], first["batch_id"])
|
||||
by_ds = {str(row["dataset"]): row for row in pubs}
|
||||
a_times = {by_ds[name]["published_at"] for name in ("daily", "valuation", "moneyflow", "auction", "stocks")}
|
||||
self.assertEqual(len(a_times), 1)
|
||||
self.assertEqual(by_ds["valuation"]["active_batch"], second["valuation"]["batch_id"])
|
||||
self.assertEqual(by_ds["valuation"]["prev_batch"], first_val)
|
||||
rolled = pipe.rollback("valuation", TRADE_DATE, actor="cli")
|
||||
self.assertEqual(rolled["active_batch"], first["batch_id"])
|
||||
self.assertEqual(rolled["active_batch"], first_val)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
|
||||
Reference in New Issue
Block a user