[project] name = "zhibaotong-s3-backend" version = "0.3.0" description = "智保通第三阶段智能保全与退款编排统一后端" requires-python = ">=3.12,<3.13" dependencies = [ "alembic>=1.16,<2", "asyncmy>=0.2,<1", "fastapi>=0.116,<1", "httpx>=0.28,<1", "pydantic>=2.11,<3", "pydantic-settings>=2.10,<3", "pwdlib[argon2]>=0.2,<1", "pyjwt[crypto]>=2.10,<3", "redis>=6,<8", "sqlalchemy>=2.0,<3", "ulid-py>=1.1,<2", "uvicorn[standard]>=0.35,<1", "pymysql>=1.1,<2", "langchain>=1.0,<2", "langgraph>=1.0,<2", "langchain-openai>=1.0,<2", "langsmith[otel]>=0.4.25,<1", "mcp>=1.27,<2", "pymilvus>=2.6,<3", "flagembedding>=1.3,<2", "transformers>=4.44.2,<5", "python-multipart>=0.0.20,<1", "pypdf>=6,<7", "pillow>=11,<13", ] [project.scripts] zbt-serve = "zbt.commands.serve:main" zbt-refund-worker = "zbt.commands.run_refund_worker:main" zbt-seed-surrenders = "zbt.commands.seed_surrender_scenarios:main" zbt-seed-surrender-policies = "zbt.commands.seed_surrender_test_policies:main" zbt-settle-pending-refunds = "zbt.commands.settle_submitted_refunds:main" [build-system] requires = ["hatchling>=1.27,<2"] build-backend = "hatchling.build" [dependency-groups] dev = [ "coverage[toml]>=7.9,<8", "mypy>=1.16,<2", "pytest>=8.4,<10", "pytest-asyncio>=1.0,<2", "ruff>=0.12,<1", "types-pymysql>=1.1,<2", ] [tool.uv] package = true [[tool.uv.index]] url = "https://mirrors.aliyun.com/pypi/simple/" default = true [tool.hatch.build.targets.wheel] packages = ["src/zbt"] [tool.pytest.ini_options] addopts = "-q" testpaths = ["tests"] [tool.ruff] line-length = 100 target-version = "py312" [tool.ruff.lint] select = ["E", "F", "I", "UP", "B", "SIM"] [tool.mypy] python_version = "3.12" strict = true plugins = ["pydantic.mypy"]