85 lines
3.0 KiB
Markdown
85 lines
3.0 KiB
Markdown
# Implementation Plan: Backup Scheduler & Unified Task UI
|
|
|
|
**Branch**: `009-backup-scheduler` | **Date**: 2025-12-30 | **Spec**: [link](spec.md)
|
|
**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)
|
|
|
|
```text
|
|
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)
|
|
|
|
```text
|
|
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 |
|
|
|-----------|------------|-------------------------------------|
|
|
| | | |
|