00466a9801
Introduces a manifest contract so feature containers self-describe their settings (JSON Schema + access rules). Backend and frontend gain generic plugin proxy and dynamic Extensions UI with zero feature-specific code. Doc-service is the first plugin consumer: exposes /plugin/manifest and /plugin/settings, adds a watchdog-based file watcher that auto-ingests PDFs from a mounted directory, maps subfolders to categories, supports AI-suggested folder/filename (user-confirmed), and enforces a no-remove policy. Access is gated by is_superuser or doc-service-admin group. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
37 lines
682 B
TOML
37 lines
682 B
TOML
[build-system]
|
|
requires = ["setuptools>=45"]
|
|
build-backend = "setuptools.build_meta"
|
|
|
|
[project]
|
|
name = "doc-service"
|
|
version = "0.1.0"
|
|
requires-python = ">=3.11"
|
|
dependencies = [
|
|
"fastapi>=0.111",
|
|
"uvicorn[standard]>=0.29",
|
|
"sqlalchemy[asyncio]>=2.0",
|
|
"asyncpg>=0.29",
|
|
"alembic>=1.13",
|
|
"pydantic-settings>=2.2",
|
|
"httpx>=0.27",
|
|
"pdfplumber>=0.11",
|
|
"aiofiles>=23.0",
|
|
"python-multipart>=0.0.9",
|
|
"watchdog>=4.0",
|
|
]
|
|
|
|
[project.optional-dependencies]
|
|
dev = [
|
|
"pytest>=8",
|
|
"pytest-asyncio>=0.23",
|
|
"httpx>=0.27",
|
|
"aiosqlite>=0.20",
|
|
"ruff>=0.4",
|
|
]
|
|
|
|
[tool.pytest.ini_options]
|
|
asyncio_mode = "auto"
|
|
|
|
[tool.ruff]
|
|
line-length = 100
|