Normalize uploaded documents into structured markdown, add clearer parser errors for missing dependencies, and cover the ingestion flow with backend tests. This also replaces deprecated UTC timestamp helpers in the touched backend paths so the knowledge pipeline stays warning-free. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
82 lines
1.6 KiB
TOML
82 lines
1.6 KiB
TOML
[project]
|
|
name = "jarvis-backend"
|
|
version = "0.1.0"
|
|
description = "Jarvis Personal AI Assistant - Backend"
|
|
readme = "README.md"
|
|
requires-python = ">=3.12"
|
|
license = { text = "MIT" }
|
|
|
|
dependencies = [
|
|
# Web 框架
|
|
"fastapi>=0.115.0",
|
|
"uvicorn[standard]>=0.30.0",
|
|
"python-multipart>=0.0.12",
|
|
"websockets>=12.0",
|
|
"aiofiles>=24.0.0",
|
|
|
|
# Agent 框架
|
|
"langgraph>=0.2.36",
|
|
"langchain-anthropic>=0.3.14",
|
|
"langchain-openai>=0.3.18",
|
|
"langchain-core>=0.3.52",
|
|
"langchain-ollama>=0.4.0",
|
|
"langsmith>=0.1.0",
|
|
|
|
# 知识库框架
|
|
"llama-index>=0.12.0",
|
|
"llama-index-vector-stores-chroma>=0.3.0",
|
|
"chromadb>=0.5.0",
|
|
|
|
# 数据库
|
|
"sqlalchemy>=2.0.0",
|
|
"aiosqlite>=0.20.0",
|
|
"alembic>=1.13.0",
|
|
|
|
# 认证 & 安全
|
|
"python-jose[cryptography]>=3.3.0",
|
|
"passlib[bcrypt]>=1.7.4",
|
|
"bcrypt>=4.0.0,<5.0.0",
|
|
|
|
# 配置 & 验证
|
|
"pydantic>=2.0.0",
|
|
"pydantic-settings>=2.0.0",
|
|
"email-validator>=2.0.0",
|
|
|
|
# 定时任务
|
|
"APScheduler>=3.10.0",
|
|
|
|
# 工具
|
|
"python-dotenv>=1.0.0",
|
|
"httpx>=0.27.0",
|
|
"openpyxl>=3.1.0",
|
|
"python-docx>=1.1.0",
|
|
"mineru>=2.0.3",
|
|
"psutil>=6.1.0",
|
|
]
|
|
|
|
[project.optional-dependencies]
|
|
dev = [
|
|
"pytest>=8.0.0",
|
|
"pytest-asyncio>=0.23.0",
|
|
"pytest-cov>=4.1.0",
|
|
"ruff>=0.5.0",
|
|
"mypy>=1.10.0",
|
|
"pre-commit>=3.7.0",
|
|
]
|
|
|
|
[build-system]
|
|
requires = ["hatchling"]
|
|
build-backend = "hatchling.build"
|
|
|
|
[tool.hatch.build.targets.wheel]
|
|
packages = ["app"]
|
|
|
|
[tool.ruff]
|
|
target-version = "py312"
|
|
line-length = 100
|
|
select = ["E", "F", "I", "N", "W", "UP"]
|
|
|
|
[tool.pytest.ini_options]
|
|
asyncio_mode = "auto"
|
|
testpaths = ["tests"]
|