feat: add data backup/import, goal step ordering, and PostgreSQL migration

- Add GET /api/backup/export and POST /api/backup/import endpoints for full data backup
- Add drag-and-drop reorder for goal steps with PUT /api/goals/{id}/steps/reorder
- Auto-assign sort_order on step creation (preserves creation order)
- Fix duplicate milestone rendering in goal detail page
- Add category management button in goal dialog
- Migrate database default from SQLite to PostgreSQL
- Fix router guard redirect loop for logged-in users on setup/login pages
- Fix ALTER TABLE ADD COLUMN crash on callable defaults (uuid.uuid4)
- Add auth status rate limiter and token version caching
- Update CLAUDE.md to reflect current architecture

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
祀梦
2026-05-18 00:02:18 +08:00
parent 0ab719500b
commit 5048de4fa1
21 changed files with 543 additions and 225 deletions

View File

@@ -1,14 +1,30 @@
services:
elysia-todo:
build: .
container_name: elysia-todo
restart: unless-stopped
ports:
- "23994:23994"
volumes:
# 挂载前端编译产物,本地修改后可立即生效
- ./api/webui:/app/api/webui:ro
# 挂载数据库文件,持久化数据
- ./api/data:/app/api/data
# 挂载日志目录,方便查看日志
- ./api/logs:/app/api/logs
services:
db:
image: postgres:18-alpine
container_name: elysia-todo-db
restart: unless-stopped
environment:
POSTGRES_USER: ToDoList
POSTGRES_PASSWORD: 53N2PTSjMBPDy6zY
POSTGRES_DB: ToDoList
ports:
- "5432:5432"
volumes:
- pgdata:/var/lib/postgresql/data
elysia-todo:
build: .
container_name: elysia-todo
restart: unless-stopped
ports:
- "23994:23994"
environment:
DATABASE_URL: "postgresql://ToDoList:53N2PTSjMBPDy6zY@db:5432/ToDoList"
depends_on:
- db
volumes:
- ./api/webui:/app/api/webui:ro
- ./api/logs:/app/api/logs
volumes:
pgdata: