feat: release 2.4.2 with batch human review badges

This commit is contained in:
chenmingxuan committed 2026-10-28 20:40:56 +08:00
1 parent ac3d8cf54a
commit b53ca18595
14 files changed
+192 -14

No files matched your search

@@ -57,15 +57,16 @@ def manifest_payload():
}
def install(plugins, original_case=False):
def install(plugins, original_case=False, plugin_id="review"):
package = BytesIO()
manifest = manifest_payload()
manifest["id"] = plugin_id
if original_case:
manifest["workspace"]["panels"][0]["kind"] = "original_case"
with zipfile.ZipFile(package, "w") as archive:
archive.writestr("plugin.json", json.dumps(manifest))
install_archive(plugins, package.getvalue())
plugins.set_enabled("review", True)
plugins.set_enabled(plugin_id, True)
@pytest.fixture
@@ -108,6 +109,71 @@ def save(client, values, revision=0, request_id=None):
)
def test_batch_review_badge_tracks_current_values_and_plugin_lifecycle(context, monkeypatch):
from apps.admin_console.routers import automation
store, plugins, client = context
monkeypatch.setattr(automation, "store", store)
result = {"status": "inconclusive", "source": "execution"}
monkeypatch.setattr(automation, "read_reviewed_result", lambda *args, **kwargs: result)
client.app.include_router(automation.router)
store.create_batch({"id": "review-batch", "status": "completed"}, [], {})
store.save_job(
{"session_id": "batch-task", "batch_id": "review-batch", "status": "completed", "case": {}}
)
store.save_job(
{"session_id": "new-run", "batch_id": "review-batch", "status": "completed", "case": {}}
)
def badge():
response = client.get("/api/automation/batches/review-batch")
assert response.status_code == 200
jobs = {job["session_id"]: job for job in response.json()["jobs"]}
assert "batch-task" in jobs, response.json()
assert jobs["batch-task"]["test_result"] == result
assert jobs["new-run"]["human_reviewed"] is False
return jobs["batch-task"]["human_reviewed"]
assert badge() is False
install(plugins)
assert (
client.put(
"/api/task-extensions/batch-task/review",
json={
"values": {"accuracy": "Pass"},
"expected_revision": 0,
"request_id": str(uuid4()),
},
).status_code
== 200
)
assert badge() is False # Other workspace plugins are not the human review plugin.
install(plugins, plugin_id="task-review")
assert badge() is False
for revision, (values, expected) in enumerate(
[
({}, False),
({"accuracy_note": " \n"}, False),
({"accuracy": "Pass"}, True),
({"accuracy": "Failed"}, True),
({"accuracy": "", "accuracy_note": ""}, False),
({"accuracy_note": "人工核对了截图"}, True),
]
):
response = client.put(
"/api/task-extensions/batch-task/task-review",
json={"values": values, "expected_revision": revision, "request_id": str(uuid4())},
)
assert response.status_code == 200
assert badge() is expected
plugins.set_enabled("task-review", False)
assert badge() is False
plugins.set_enabled("task-review", True)
assert badge() is True
plugins.uninstall("task-review")
assert badge() is False
def test_original_case_import_requires_enabled_plugin_and_keeps_execution_prompt(context):
from apps.admin_console.services import task_import