feat: release 2.4.2 with batch human review badges
This commit is contained in:
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
|
||||
|
||||
|
||||
Reference in new issue
Block a user