DocHub/backend/app
Tianyang 9ef22f9f0a Fix wave 2: CORS default, path traversal, delete UI, shared clients, bucket check
- Default CORS_ORIGINS to http://localhost:5173 instead of "*" (still overridable)
- Reject ".." and leading "/" in document keys/paths across get/save/delete/upload,
  mapped to HTTP 400 via new InvalidPathError
- Add a delete button to DocumentEditor wired to deleteDocument + onDeleted,
  giving the existing DELETE API an actual UI entry point
- Share a single lru_cache'd Meilisearch (and Minio) SDK client instance instead
  of constructing duplicates in dependencies.py
- Add a startup check that creates the MinIO bucket if missing, tolerating
  MinIO being unreachable at boot without crashing the app
2026-08-01 09:15:16 +08:00
..
routers Fix wave 2: CORS default, path traversal, delete UI, shared clients, bucket check 2026-08-01 09:15:16 +08:00
__init__.py feat: scaffold FastAPI backend with config and health endpoint 2026-08-01 02:15:01 +08:00
config.py Fix wave 2: CORS default, path traversal, delete UI, shared clients, bucket check 2026-08-01 09:15:16 +08:00
dependencies.py Fix wave 2: CORS default, path traversal, delete UI, shared clients, bucket check 2026-08-01 09:15:16 +08:00
document_service.py Fix wave 2: CORS default, path traversal, delete UI, shared clients, bucket check 2026-08-01 09:15:16 +08:00
main.py Fix wave 2: CORS default, path traversal, delete UI, shared clients, bucket check 2026-08-01 09:15:16 +08:00
minio_client.py feat: add MinioClient wrapper for list/get/put/delete object operations 2026-08-01 02:24:15 +08:00
search_client.py feat: add SearchClient wrapper for index/delete/search operations 2026-08-01 02:25:48 +08:00
text_extract.py fix: remove duplicate /health route, escape extracted text, validate uploads, handle binary decode 2026-08-01 08:59:34 +08:00