Add reviewer, artifact store, and paginated queries
This commit is contained in:
@@ -0,0 +1,86 @@
|
||||
from pathlib import Path
|
||||
|
||||
from ai_orchestrator.application.ports import (
|
||||
ArtifactRecord,
|
||||
ModelInvocationRecord,
|
||||
ToolInvocationRecord,
|
||||
)
|
||||
from ai_orchestrator.config import AppSettings
|
||||
from ai_orchestrator.domain.events import DomainEvent
|
||||
from ai_orchestrator.infrastructure.storage.factory import create_storage_bundle
|
||||
|
||||
|
||||
def test_sqlite_paginated_event_and_invocation_queries(tmp_path: Path) -> None:
|
||||
db_path = tmp_path / "queries.sqlite3"
|
||||
storage = create_storage_bundle(
|
||||
AppSettings(storage_backend="sqlite", database_url=f"sqlite:///{db_path.as_posix()}")
|
||||
)
|
||||
for index in range(5):
|
||||
storage.event_store.append(
|
||||
DomainEvent(event_type="test_event", task_id="task_1", payload={"index": index})
|
||||
)
|
||||
storage.invocation_store.save_model_invocation(
|
||||
ModelInvocationRecord(
|
||||
invocation_id=f"minv_{index}",
|
||||
task_id="task_1",
|
||||
node_id=None,
|
||||
slot="weak",
|
||||
provider="local",
|
||||
model="mock",
|
||||
status="success",
|
||||
request={},
|
||||
response={"message": {"content": "ok"}},
|
||||
)
|
||||
)
|
||||
storage.invocation_store.save_tool_invocation(
|
||||
ToolInvocationRecord(
|
||||
invocation_id=f"tinv_{index}",
|
||||
task_id="task_1",
|
||||
node_id=None,
|
||||
source_type="mcp",
|
||||
source_id="one_c",
|
||||
tool_name="one_c.run_sql",
|
||||
status="success",
|
||||
request={},
|
||||
response={"content": {"rows": []}},
|
||||
)
|
||||
)
|
||||
|
||||
events_page = storage.event_store.list_by_task_paginated("task_1", limit=2, offset=1)
|
||||
model_page = storage.invocation_store.list_model_invocations_paginated(
|
||||
"task_1", limit=2, offset=2
|
||||
)
|
||||
tool_page = storage.invocation_store.list_tool_invocations_paginated(
|
||||
"task_1", limit=3, offset=1
|
||||
)
|
||||
|
||||
assert events_page.total == 5
|
||||
assert len(events_page.items) == 2
|
||||
assert model_page.total == 5
|
||||
assert len(model_page.items) == 2
|
||||
assert tool_page.total == 5
|
||||
assert len(tool_page.items) == 3
|
||||
|
||||
|
||||
def test_sqlite_artifact_store_persists_and_paginates(tmp_path: Path) -> None:
|
||||
db_path = tmp_path / "artifacts.sqlite3"
|
||||
storage = create_storage_bundle(
|
||||
AppSettings(storage_backend="sqlite", database_url=f"sqlite:///{db_path.as_posix()}")
|
||||
)
|
||||
for index in range(4):
|
||||
storage.artifact_store.save_artifact(
|
||||
ArtifactRecord(
|
||||
artifact_id=f"art_{index}",
|
||||
task_id="task_1",
|
||||
node_id=None,
|
||||
artifact_type="file",
|
||||
storage_uri=f"file:///artifact/{index}",
|
||||
metadata={"index": index},
|
||||
)
|
||||
)
|
||||
|
||||
page = storage.artifact_store.list_by_task_paginated("task_1", limit=2, offset=1)
|
||||
|
||||
assert page.total == 4
|
||||
assert len(page.items) == 2
|
||||
assert page.items[0].storage_uri == "file:///artifact/1"
|
||||
Reference in New Issue
Block a user