From f63bc5542aa0bc1216bda3e1e943b4a4def89edf Mon Sep 17 00:00:00 2001 From: Christian Moellmann Date: Sat, 23 May 2026 12:00:09 +0200 Subject: [PATCH] chore(interviews): add deps and pytest scaffold for interview subsystem Co-Authored-By: Claude Opus 4.7 (1M context) --- backend/pyproject.toml | 5 +++++ backend/pytest.ini | 8 ++++++++ backend/tests/__init__.py | 0 backend/tests/conftest.py | 17 +++++++++++++++++ backend/uv.lock | 10 ++++++++++ 5 files changed, 40 insertions(+) create mode 100644 backend/pytest.ini create mode 100644 backend/tests/__init__.py create mode 100644 backend/tests/conftest.py diff --git a/backend/pyproject.toml b/backend/pyproject.toml index 4f5361d5..093f5040 100644 --- a/backend/pyproject.toml +++ b/backend/pyproject.toml @@ -32,6 +32,11 @@ dependencies = [ # 工具库 "python-dotenv>=1.0.0", "pydantic>=2.0.0", + "PyYAML>=6.0", + "scikit-learn>=1.4", + "scipy>=1.12", + "numpy>=1.26", + "pandas>=2.1", ] [project.optional-dependencies] diff --git a/backend/pytest.ini b/backend/pytest.ini new file mode 100644 index 00000000..60f69ff1 --- /dev/null +++ b/backend/pytest.ini @@ -0,0 +1,8 @@ +[pytest] +testpaths = tests +python_files = test_*.py +python_classes = Test* +python_functions = test_* +addopts = -ra --strict-markers +markers = + integration: marks integration tests (deselect with -m 'not integration') diff --git a/backend/tests/__init__.py b/backend/tests/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/backend/tests/conftest.py b/backend/tests/conftest.py new file mode 100644 index 00000000..2ba3931d --- /dev/null +++ b/backend/tests/conftest.py @@ -0,0 +1,17 @@ +import os +import sys +import pathlib +import pytest + +ROOT = pathlib.Path(__file__).resolve().parents[1] +sys.path.insert(0, str(ROOT)) + +os.environ.setdefault("LLM_API_KEY", "test") +os.environ.setdefault("LLM_BASE_URL", "https://example.invalid") +os.environ.setdefault("LLM_MODEL_NAME", "test-model") +os.environ.setdefault("ZEP_API_KEY", "test") + +@pytest.fixture +def tmp_uploads(tmp_path, monkeypatch): + monkeypatch.setenv("UPLOADS_DIR", str(tmp_path)) + return tmp_path diff --git a/backend/uv.lock b/backend/uv.lock index f1ce4b60..b5f8c6b4 100644 --- a/backend/uv.lock +++ b/backend/uv.lock @@ -1248,10 +1248,15 @@ dependencies = [ { name = "charset-normalizer" }, { name = "flask" }, { name = "flask-cors" }, + { name = "numpy" }, { name = "openai" }, + { name = "pandas" }, { name = "pydantic" }, { name = "pymupdf" }, { name = "python-dotenv" }, + { name = "pyyaml" }, + { name = "scikit-learn" }, + { name = "scipy" }, { name = "zep-cloud" }, ] @@ -1276,13 +1281,18 @@ requires-dist = [ { name = "charset-normalizer", specifier = ">=3.0.0" }, { name = "flask", specifier = ">=3.0.0" }, { name = "flask-cors", specifier = ">=6.0.0" }, + { name = "numpy", specifier = ">=1.26" }, { name = "openai", specifier = ">=1.0.0" }, + { name = "pandas", specifier = ">=2.1" }, { name = "pipreqs", marker = "extra == 'dev'", specifier = ">=0.5.0" }, { name = "pydantic", specifier = ">=2.0.0" }, { name = "pymupdf", specifier = ">=1.24.0" }, { name = "pytest", marker = "extra == 'dev'", specifier = ">=8.0.0" }, { name = "pytest-asyncio", marker = "extra == 'dev'", specifier = ">=0.23.0" }, { name = "python-dotenv", specifier = ">=1.0.0" }, + { name = "pyyaml", specifier = ">=6.0" }, + { name = "scikit-learn", specifier = ">=1.4" }, + { name = "scipy", specifier = ">=1.12" }, { name = "zep-cloud", specifier = "==3.13.0" }, ] provides-extras = ["dev"]