[tool.poetry] name = "s2f-backend" version = "0.1.0" description = "财务 AI 助手后端服务,当前第一模块为薪酬财务对账 MVP。" authors = ["S2F Team"] readme = "../README.md" packages = [{ include = "app" }] [tool.poetry.dependencies] python = "^3.11" fastapi = "0.110.0" uvicorn = { version = "0.27.0", extras = ["standard"] } pydantic = "2.6.0" pydantic-settings = "2.1.0" sqlalchemy = "2.0.25" asyncpg = "0.29.0" alembic = "1.13.0" python-jose = { version = "3.3.0", extras = ["cryptography"] } passlib = { version = "1.7.4", extras = ["bcrypt"] } python-multipart = "0.0.6" openpyxl = "3.1.2" pandas = "2.2.0" openai = "1.10.0" python-dotenv = "1.0.0" structlog = "24.1.0" [tool.poetry.group.dev.dependencies] pytest = "7.4.4" pytest-asyncio = "0.23.4" httpx = "0.26.0" ruff = "0.1.15" black = "23.12.1" mypy = "1.8.0" [tool.black] line-length = 100 target-version = ["py311"] [tool.ruff] line-length = 100 target-version = "py311" select = ["E", "F", "I", "UP", "B"] ignore = [] [tool.pytest.ini_options] asyncio_mode = "auto" testpaths = ["tests"] python_files = ["test_*.py"] pythonpath = ["."] [build-system] requires = ["poetry-core"] build-backend = "poetry.core.masonry.api"