"""vstore/tests/conftest.py —— 测试公共配置。 - 固定 Fernet key(必须在 import vstore 前设置) - 假 embed(确定性向量,不依赖真 ollama) """ from __future__ import annotations import os # 固定测试密钥(必须在 import vstore.crypto 之前设置好环境变量) TEST_KEY = "3CW0cVSYhnDo-bwkrZL5ElLhNrCtl5zyuRZvATckirs=" os.environ.setdefault("VSTORE_KEY", TEST_KEY) import numpy as np # noqa: E402 import pytest # noqa: E402 import vstore.vault as vault # noqa: E402 def fake_embed(texts: list[str]) -> list[list[float]]: """假嵌入:文本首字符哈希 → 单位基向量方向,确定且可区分。""" dim = 1024 out: list[list[float]] = [] for text in texts: if not text or not text.strip(): out.append([0.0] * dim) continue # 用文本第一个字符的码点做种子,生成确定向量 seed = ord(text[0]) vec = np.zeros(dim, dtype=np.float32) vec[seed % dim] = 1.0 if seed % 7 == 0: vec[(seed + 1) % dim] = 0.5 out.append((vec / float(np.linalg.norm(vec))).tolist()) return out @pytest.fixture def embed_fn(monkeypatch): """注入假 embed 到 vault 模块(vault.add/search/rebuild 都走它)。""" monkeypatch.setattr(vault, "_EMBED_FN", fake_embed) return fake_embed