Commit Graph

11 Commits

Author SHA1 Message Date
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
13789cc0b4 fix: remove duplicate /health route, escape extracted text, validate uploads, handle binary decode
- main.py: remove duplicate /health endpoint definition
- text_extract.py: HTML-escape extracted plain text before indexing so raw
  markup in uploaded documents can't render as live HTML via search snippets
  (stored XSS fix)
- document_service.py: base64-encode content when UTF-8 decoding fails
  instead of raising UnicodeDecodeError (500) on binary files; add upload
  validation for file extension (allowlist) and size (10MB max)
- routers/documents.py: map new validation errors to HTTP 400 with a clear
  detail message instead of letting them 500
- add/extend tests covering escaping, binary get_document, and upload
  validation rejection + acceptance paths
2026-08-01 08:59:34 +08:00
448a5cbe56 feat: wire documents and search routers into FastAPI app with e2e smoke test 2026-08-01 02:36:58 +08:00
d758500548 feat: add search route forwarding queries to SearchClient 2026-08-01 02:35:00 +08:00
6633cab98e chore: wire documents router into main.py for testing 2026-08-01 02:32:51 +08:00
5b4bc4e719 feat: add documents router for list/get/save/delete/upload 2026-08-01 02:32:42 +08:00
6a286d422d feat: add DocumentService coordinating MinIO writes and search indexing 2026-08-01 02:28:58 +08:00
c931b870ed feat: add SearchClient wrapper for index/delete/search operations 2026-08-01 02:25:48 +08:00
f4126ff3ec feat: add MinioClient wrapper for list/get/put/delete object operations 2026-08-01 02:24:15 +08:00
2a7a197b95 feat: add stdlib-only markdown and html text extraction for indexing 2026-08-01 02:21:38 +08:00
f9c612927a feat: scaffold FastAPI backend with config and health endpoint 2026-08-01 02:15:01 +08:00