記錄 RAG 人工審核者 hash
All checks were successful
CD Pipeline / deploy (push) Successful in 58s

This commit is contained in:
OoO
2026-05-13 09:13:29 +08:00
parent bb65ba71ba
commit f2b91beb61
4 changed files with 78 additions and 9 deletions

View File

@@ -303,6 +303,24 @@ class TestPromote:
assert fake_session.execute.call_count >= 2
fake_session.commit.assert_called_once()
def test_promote_records_human_approver_hash(self, monkeypatch):
from services.learning_pipeline import PromotionGate
ep = _fake_episode(quality_score=0.9, weight=0.5)
_patch_load_episode(monkeypatch, ep)
fake_row = MagicMock()
fake_row.__getitem__.return_value = 555
fake_session = MagicMock()
fake_session.execute.return_value.fetchone.return_value = fake_row
monkeypatch.setattr('database.manager.get_session', lambda: fake_session)
gate = PromotionGate()
assert gate.promote(1, human_approver='abc123ef') == 555
update_params = fake_session.execute.call_args_list[1].args[1]
assert update_params['human_approver'] == 'abc123ef'
def test_promote_episode_not_found_returns_none(self, monkeypatch):
from services.learning_pipeline import PromotionGate
_patch_load_episode(monkeypatch, None)
@@ -337,6 +355,24 @@ class TestRejectAndMark:
assert ok is True
fake_session.commit.assert_called_once()
def test_reject_records_human_approver_hash(self, monkeypatch):
from services.learning_pipeline import PromotionGate
fake_session = MagicMock()
monkeypatch.setattr('database.manager.get_session', lambda: fake_session)
gate = PromotionGate()
ok = gate.reject(
1,
'rejected_human',
detail='manual reject',
human_approver='abc123ef',
)
assert ok is True
params = fake_session.execute.call_args.args[1]
assert params['human_approver'] == 'abc123ef'
def test_reject_invalid_reason_returns_false(self):
from services.learning_pipeline import PromotionGate
gate = PromotionGate()