feat: add project-scoped operations
Generic Container CI/CD / test-build-publish (push) Failing after 6s
Server CI/CD v2 / build-test-publish-and-deploy (push) Failing after 6s

This commit is contained in:
2026-10-22 18:40:20 +08:00
parent d320972d57
commit 1d061f6099
73 changed files with 4384 additions and 228 deletions
+39
View File
@@ -1803,3 +1803,42 @@ async def test_repository_task_update_rejects_a_stale_revision():
await repository.update_task(task)
assert exc.value.code == "VERSION_CONFLICT"
@pytest.mark.anyio
async def test_interactive_report_publication_is_idempotent_and_versioned_with_evidence():
from tests.unit.test_report_ui import rich_report
now = datetime(2026, 10, 20, 8, tzinfo=timezone.utc)
context = _context()
task = _task_document(context, now, lease=now + timedelta(minutes=1))
repository = RunTaskRepository(task, _active_run(task, now))
service = OperationalTaskService(repository, context, set(), clock=lambda: now)
report = {**rich_report(), "stage": "final"}
command = AgentArtifactsCommand(
request_id=uuid4(), source_session_id="session-1", report=report,
evidence=[{"evidence_id": "demo-1", "kind": "synthetic", "summary": "演练压力记录",
"source_label": "演练监测", "observed_at": now.isoformat()}],
)
first = await service.publish_artifacts(task["task_id"], command)
replay = await service.publish_artifacts(task["task_id"], command)
assert first.report_revision == replay.report_revision == 1
report["ui_blocks"][0]["block"]["spec"]["elements"]["chart"]["props"]["series"][0]["data"] = [0.3, 0.29]
await service.publish_artifacts(task["task_id"], AgentArtifactsCommand(
request_id=uuid4(), source_session_id="session-1", report=report,
))
old = await service.report(task["task_id"], 1)
latest = await service.detail(task["task_id"])
history, _ = await service.list_reports(task["task_id"], 10, 0)
assert old.report.ui_blocks[0].block.spec.elements["chart"].props["series"][0]["data"] == [0.3, 0.27]
assert latest.latest_report.report.ui_blocks[0].block.spec.elements["chart"].props["series"][0]["data"] == [0.3, 0.29]
assert [item.revision for item in history] == [2, 1]
assert latest.latest_report.report.evidence_refs == ["demo-1"]
assert len(repository.notifications) == 2
report["evidence_refs"] = ["foreign"]
report["ui_blocks"][0]["evidence_refs"] = ["foreign"]
with pytest.raises(DomainError) as error:
await service.publish_artifacts(task["task_id"], AgentArtifactsCommand(
request_id=uuid4(), source_session_id="session-1", report=report,
))
assert error.value.code == "EVIDENCE_NOT_FOUND"