docs ready
This commit is contained in:
84
specs/009-backup-scheduler/plan.md
Normal file
84
specs/009-backup-scheduler/plan.md
Normal file
@@ -0,0 +1,84 @@
|
||||
# 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 |
|
||||
|-----------|------------|-------------------------------------|
|
||||
| | | |
|
||||
Reference in New Issue
Block a user