Files
PlantAI-rag-new/vstore/tests/conftest.py
T
jerryandClaude Fable 5 5db3ead73e feat(docgen): doc_writer 能力全链——vstore 独立服务 + BFF docgen 路由 + 前端文档工作台
- 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>
2026-09-03 21:13:37 +08:00

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