Spaces:
Sleeping
Sleeping
| # API Design | |
| ## Purpose | |
| The `api` directory owns the HTTP boundary of the backend. Routers should stay thin and delegate business logic to `services`, `chat`, `extraction`, and `database`. | |
| ## Files | |
| ### `deps.py` | |
| Provides FastAPI dependencies for configuration, database access, request-scoped services, and shared validation helpers. | |
| ### `errors.py` | |
| Maps domain exceptions to HTTP responses. Expected error families include missing documents, missing chunks, invalid cursors, failed extraction, unavailable models, and unavailable search. | |
| ### `v1/router.py` | |
| Combines all versioned endpoint routers under `/api/v1`. | |
| ### `v1/endpoints/health.py` | |
| Owns health endpoints for the API, database, local models, and optional external services. | |
| ### `v1/endpoints/documents.py` | |
| Owns document upload, document listing, document detail, and deletion routes. Delegates lifecycle work to `services.documents` and ingestion startup to `services.ingestion`. | |
| ### `v1/endpoints/chunks.py` | |
| Owns sequential reading endpoints. It should expose current, next, previous, and windowed chunk retrieval without performing raw SQL itself. | |
| ### `v1/endpoints/ask.py` | |
| Owns the `/ask` HTTP endpoint. It validates request data and delegates routing, retrieval, model calls, and citation formatting to `chat.orchestrator`. | |
| ### `v1/endpoints/search.py` | |
| Optional debugging and developer-facing endpoint group for local vector search, sequential lookup, and external SearXNG search. | |
| ## Data Dependencies | |
| `api` imports `schemas` for request and response models, `services` for document and retrieval workflows, `chat` for `/ask`, and `core` for app settings. | |
| `api` must not directly call MinerU, Ollama, SearXNG, raw PostgreSQL SQL, or pgvector queries. | |