You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
42 lines
2.3 KiB
Markdown
42 lines
2.3 KiB
Markdown
|
4 weeks ago
|
# Relative Upload Storage Implementation Plan
|
||
|
|
|
||
|
|
> **For agentic workers:** REQUIRED SUB-SKILL: Use superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (`- [ ]`) syntax for tracking.
|
||
|
|
|
||
|
|
**Goal:** Store new uploads under a relative `file/年/月/日` directory beside the running JAR and persist `file/...` paths.
|
||
|
|
|
||
|
|
**Architecture:** Resolve `file.path: file` against the Java working directory, create it during file utility initialization, and keep the resource handler rooted there. Normalize both new `file/...` and legacy `/年/月/日/...` records before file-system access and public URL creation.
|
||
|
|
|
||
|
|
**Tech Stack:** Spring Boot 2.7, Java, JUnit 5, Windows deployment script.
|
||
|
|
|
||
|
|
## Global Constraints
|
||
|
|
|
||
|
|
- Do not hard-code a drive or server-specific path.
|
||
|
|
- New database paths must start with `file/`; existing date-only paths must remain readable.
|
||
|
|
- The public URL must contain exactly one `/file/` segment.
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
### Task 1: Relative local storage and compatibility
|
||
|
|
|
||
|
|
**Files:**
|
||
|
|
- Modify: `src/main/resources/application-dev.yml`
|
||
|
|
- Modify: `src/main/java/com/sztzjy/linkCommerce/util/file/LocalFileUtil.java`
|
||
|
|
- Modify: `src/main/java/com/sztzjy/linkCommerce/config/security/WebConfigurerAdapter.java`
|
||
|
|
- Modify: upload URL call sites that concatenate `file.url` and stored paths
|
||
|
|
- Test: `src/test/java/com/sztzjy/linkCommerce/util/file/LocalFileUtilTest.java`
|
||
|
|
|
||
|
|
- [ ] Write a failing test that constructs `LocalFileUtil("file")` in a temporary working directory and expects the `file` root plus `file/2026/8/3/example.pdf` logical path.
|
||
|
|
- [ ] Implement relative-root resolution, root creation, date-directory creation, and normalization for new and legacy paths.
|
||
|
|
- [ ] Update the resource mapping and public URL construction so a stored `file/2026/8/3/example.pdf` is served as `/file/2026/8/3/example.pdf`.
|
||
|
|
- [ ] Run the focused test, then the complete Maven test suite and package build.
|
||
|
|
- [ ] Commit the implementation.
|
||
|
|
|
||
|
|
### Task 2: Server release verification
|
||
|
|
|
||
|
|
**Files:**
|
||
|
|
- Deploy: packaged backend release
|
||
|
|
|
||
|
|
- [ ] Publish the verified backend through the existing SSH deployment script.
|
||
|
|
- [ ] Confirm the JAR-adjacent `file` directory is created on the server and the backend starts successfully.
|
||
|
|
- [ ] Upload a test file and verify its disk path, returned URL, and persisted `file/...` path.
|