Initial project import
This commit is contained in:
@@ -0,0 +1,105 @@
|
||||
from __future__ import annotations
|
||||
|
||||
import sys
|
||||
from pathlib import Path
|
||||
|
||||
|
||||
ROOT = Path(__file__).resolve().parents[2]
|
||||
sys.path.insert(0, str(ROOT / "scripts"))
|
||||
|
||||
import embed_1c_code_vectors as worker # noqa: E402
|
||||
|
||||
|
||||
def test_embed_pending_code_vectors_upserts_with_precondition(monkeypatch) -> None:
|
||||
calls: list[tuple[str, dict]] = []
|
||||
|
||||
def fake_adapter_call(
|
||||
adapter_url: str,
|
||||
method: str,
|
||||
payload: dict,
|
||||
*,
|
||||
timeout_seconds: int = 180,
|
||||
) -> dict:
|
||||
calls.append((method, payload))
|
||||
if method == "metadata.code_vector.pending":
|
||||
assert payload["embedding_model"] == "local-hashing-v1"
|
||||
assert payload["chunk_kinds"] == ["routine"]
|
||||
assert payload["max_text_chars"] == 4000
|
||||
return {
|
||||
"status": "ok",
|
||||
"chunks": [
|
||||
{
|
||||
"chunk_id": "chunk-1",
|
||||
"text_sha1": "a" * 40,
|
||||
"text": "Процедура РассчитатьНалог()",
|
||||
}
|
||||
],
|
||||
}
|
||||
if method == "metadata.code_vector.embedding.upsert":
|
||||
assert payload["chunk_id"] == "chunk-1"
|
||||
assert payload["text_sha1"] == "a" * 40
|
||||
assert payload["embedding_model"] == "local-hashing-v1"
|
||||
assert len(payload["embedding"]) == 16
|
||||
return {"status": "ok", "dimensions": 16}
|
||||
raise AssertionError(method)
|
||||
|
||||
monkeypatch.setattr(worker, "adapter_call", fake_adapter_call)
|
||||
|
||||
result = worker.embed_pending_code_vectors(
|
||||
adapter_url="http://adapter/rpc",
|
||||
base_id="upo_test",
|
||||
limit=1,
|
||||
dimensions=16,
|
||||
)
|
||||
|
||||
assert result["status"] == "ok"
|
||||
assert result["embedding"]["dimensions"] == 16
|
||||
assert result["counts"] == {
|
||||
"pending": 1,
|
||||
"processed": 1,
|
||||
"stored": 1,
|
||||
"conflicts": 0,
|
||||
"skipped": 0,
|
||||
"errors": 0,
|
||||
}
|
||||
assert [method for method, _payload in calls] == [
|
||||
"metadata.code_vector.pending",
|
||||
"metadata.code_vector.embedding.upsert",
|
||||
]
|
||||
|
||||
|
||||
def test_embed_pending_code_vectors_dry_run_does_not_upsert(monkeypatch) -> None:
|
||||
calls: list[str] = []
|
||||
|
||||
def fake_adapter_call(
|
||||
adapter_url: str,
|
||||
method: str,
|
||||
payload: dict,
|
||||
*,
|
||||
timeout_seconds: int = 180,
|
||||
) -> dict:
|
||||
calls.append(method)
|
||||
return {
|
||||
"status": "ok",
|
||||
"chunks": [
|
||||
{
|
||||
"chunk_id": "chunk-1",
|
||||
"text_sha1": "b" * 40,
|
||||
"text": "Функция НайтиОбъект()",
|
||||
}
|
||||
],
|
||||
}
|
||||
|
||||
monkeypatch.setattr(worker, "adapter_call", fake_adapter_call)
|
||||
|
||||
result = worker.embed_pending_code_vectors(
|
||||
adapter_url="http://adapter/rpc",
|
||||
base_id="upo_test",
|
||||
dimensions=8,
|
||||
dry_run=True,
|
||||
)
|
||||
|
||||
assert result["counts"]["processed"] == 1
|
||||
assert result["counts"]["stored"] == 0
|
||||
assert result["upserts"][0]["status"] == "dry_run"
|
||||
assert calls == ["metadata.code_vector.pending"]
|
||||
Reference in New Issue
Block a user