Files
ss-tools/specs/009-backup-scheduler/plan.md
2025-12-30 21:30:37 +03:00

3.0 KiB

Implementation Plan: Backup Scheduler & Unified Task UI

Branch: 009-backup-scheduler | Date: 2025-12-30 | Spec: link Input: Feature specification from /specs/009-backup-scheduler/spec.md

Note: This template is filled in by the /speckit.plan command. See .specify/templates/commands/plan.md for the execution workflow.

Summary

Implement a robust backup scheduling system using APScheduler and a unified "Tasks" UI in SvelteKit to manage and monitor all background operations (backups, migrations).

Technical Context

Language/Version: Python 3.9+, Node.js 18+ Primary Dependencies: FastAPI, APScheduler, SQLAlchemy, SvelteKit, Tailwind CSS Storage: SQLite (tasks.db), JSON (config.json) Testing: pytest Target Platform: Linux server Project Type: Web application Performance Goals: UI latency < 200ms, Backup trigger < 1s Constraints: Minimal resource footprint for background scheduler Scale/Scope: ~10 environments, ~1000 historical tasks

Constitution Check

GATE: Must pass before Phase 0 research. Re-check after Phase 1 design.

  • Library-First: N/A (Feature integration)
  • CLI Interface: N/A (Web UI focus)
  • Test-First: Mandatory for Scheduler logic and API endpoints. PASS.
  • Integration Testing: Required for Scheduler -> TaskManager interaction. PASS.

Result: PASS

Project Structure

Documentation (this feature)

specs/009-backup-scheduler/
├── plan.md              # This file (/speckit.plan command output)
├── research.md          # Phase 0 output (/speckit.plan command)
├── data-model.md        # Phase 1 output (/speckit.plan command)
├── quickstart.md        # Phase 1 output (/speckit.plan command)
├── contracts/           # Phase 1 output (/speckit.plan command)
└── tasks.md             # Phase 2 output (/speckit.tasks command - NOT created by /speckit.plan)

Source Code (repository root)

backend/
├── src/
│   ├── api/
│   │   └── routes/
│   │       └── tasks.py        # NEW: Task management endpoints
│   ├── core/
│   │   ├── scheduler.py        # NEW: APScheduler integration
│   │   └── task_manager/       # EXISTING: Updates for DB persistence
│   ├── models/
│   │   └── task.py             # NEW: SQLAlchemy model
│   └── services/
└── tests/

frontend/
├── src/
│   ├── components/
│   │   └── TaskList.svelte     # NEW: Task display component
│   │   └── TaskLogViewer.svelte # NEW: Detailed log view
│   ├── routes/
│   │   └── tasks/              # NEW: Tasks page
│   │       └── +page.svelte
│   └── types/

Structure Decision: Standard FastAPI + SvelteKit structure.

Complexity Tracking

Fill ONLY if Constitution Check has violations that must be justified

Violation Why Needed Simpler Alternative Rejected Because