Files
ss-tools/specs/014-file-storage-ui/research.md
busya ec6421de35 rename ss-tools to superset-tools across the entire project
- Replace all occurrences of 'ss-tools' with 'superset-tools' in 104 files
- Rename git bundle file ss-tools.bundle → superset-tools.bundle
- Update .gitignore pattern accordingly
- Preserve variable names (hasSsTools etc.) and code identifiers
2026-06-16 11:15:19 +03:00

17 lines
1.2 KiB
Markdown

# Research: File Storage Management & UI
**Decision**: Use Python's built-in `pathlib` and `shutil` for filesystem operations.
**Rationale**: Standard library, robust, cross-platform (though target is Linux), and sufficient for local file management. No external dependencies needed.
**Alternatives considered**: `os` module (lower level, less ergonomic), `pyfilesystem2` (external dependency, unnecessary overhead for simple local storage).
**Decision**: Use `pydantic` for configuration and file metadata models.
**Rationale**: Already used in the project, provides validation and serialization.
**Decision**: Use `multipart/form-data` for file uploads.
**Rationale**: Standard web practice for file uploads. FastAPI supports `UploadFile` natively.
**Decision**: Default storage path strategy.
**Rationale**: The default path will be `../superset-tools-storage` (relative to workspace root) or similar to ensure it sits outside the git repository by default, but allows configuration override.
**Decision**: Path Traversal Prevention.
**Rationale**: Will use `os.path.commonpath` or `pathlib.Path.resolve()` to strictly validate that any accessed file path is a child of the configured storage root.