- vstore 独立安装包(8094):解析/嵌入/加密 vault/faiss 检索,存储路径支持本地 file 与 http(s):// URL,启动握手校验,集群化预留(embed 独立模块) - BFF docgen 路由:上传入库/generate/编辑/导出/下载/主库管理,意图护栏(与前端同词典),vstore 失败兜底,quota 507 与 TTL 惰性清理 - 前端:自然触发意图路由、拖拽上传 chips、能力徽标、右侧文档 TAB(WYSIWYG 编辑/prompt 修改/PDF+DOCX 导出下载)、右栏拖宽+手柄仿左栏 - 批量导入工具 docgen_import.py(并发 8、导入即加密+删源明文) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
43 lines
1.3 KiB
Python
43 lines
1.3 KiB
Python
"""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
|