tasks ready
This commit is contained in:
@@ -29,6 +29,8 @@ Auto-generated from all feature plans. Last updated: 2025-12-19
|
|||||||
- LocalStorage (for language preference) (013-unify-frontend-css)
|
- LocalStorage (for language preference) (013-unify-frontend-css)
|
||||||
- Python 3.9+ (Backend), Node.js 18+ (Frontend) + FastAPI (Backend), SvelteKit (Frontend) (014-file-storage-ui)
|
- Python 3.9+ (Backend), Node.js 18+ (Frontend) + FastAPI (Backend), SvelteKit (Frontend) (014-file-storage-ui)
|
||||||
- Local Filesystem (for artifacts), Config (for storage path) (014-file-storage-ui)
|
- Local Filesystem (for artifacts), Config (for storage path) (014-file-storage-ui)
|
||||||
|
- Python 3.9+ (Backend), Node.js 18+ (Frontend) + FastAPI (Backend), SvelteKit + Tailwind CSS (Frontend) (015-frontend-nav-redesign)
|
||||||
|
- N/A (UI reorganization and API integration) (015-frontend-nav-redesign)
|
||||||
|
|
||||||
- Python 3.9+ (Backend), Node.js 18+ (Frontend Build) (001-plugin-arch-svelte-ui)
|
- Python 3.9+ (Backend), Node.js 18+ (Frontend Build) (001-plugin-arch-svelte-ui)
|
||||||
|
|
||||||
@@ -49,9 +51,9 @@ cd src; pytest; ruff check .
|
|||||||
Python 3.9+ (Backend), Node.js 18+ (Frontend Build): Follow standard conventions
|
Python 3.9+ (Backend), Node.js 18+ (Frontend Build): Follow standard conventions
|
||||||
|
|
||||||
## Recent Changes
|
## Recent Changes
|
||||||
|
- 015-frontend-nav-redesign: Added Python 3.9+ (Backend), Node.js 18+ (Frontend) + FastAPI (Backend), SvelteKit + Tailwind CSS (Frontend)
|
||||||
- 014-file-storage-ui: Added Python 3.9+ (Backend), Node.js 18+ (Frontend) + FastAPI (Backend), SvelteKit (Frontend)
|
- 014-file-storage-ui: Added Python 3.9+ (Backend), Node.js 18+ (Frontend) + FastAPI (Backend), SvelteKit (Frontend)
|
||||||
- 013-unify-frontend-css: Added Node.js 18+ (Frontend Build), Svelte 5.x + SvelteKit, Tailwind CSS, `date-fns` (existing)
|
- 013-unify-frontend-css: Added Node.js 18+ (Frontend Build), Svelte 5.x + SvelteKit, Tailwind CSS, `date-fns` (existing)
|
||||||
- 011-git-integration-dashboard: Added Python 3.9+ (Backend), Node.js 18+ (Frontend) + FastAPI, SvelteKit, GitPython (or CLI git), Pydantic, SQLAlchemy, Superset API
|
|
||||||
|
|
||||||
|
|
||||||
<!-- MANUAL ADDITIONS START -->
|
<!-- MANUAL ADDITIONS START -->
|
||||||
|
|||||||
@@ -1,11 +1,10 @@
|
|||||||
<!--
|
<!--
|
||||||
SYNC IMPACT REPORT
|
SYNC IMPACT REPORT
|
||||||
Version: 1.7.1 (Simplified Workflow)
|
Version: 1.8.0 (Frontend Unification)
|
||||||
Changes:
|
Changes:
|
||||||
- Simplified Generation Workflow to a single phase: Code Generation from `tasks.md`.
|
- Added Principle VIII: Unified Frontend Experience (Mandating Design System & i18n).
|
||||||
- Removed multi-phase Architecture/Implementation split to streamline development.
|
|
||||||
Templates Status:
|
Templates Status:
|
||||||
- .specify/templates/plan-template.md: ✅ Aligned (Dynamic check).
|
- .specify/templates/plan-template.md: ✅ Aligned.
|
||||||
- .specify/templates/spec-template.md: ✅ Aligned.
|
- .specify/templates/spec-template.md: ✅ Aligned.
|
||||||
- .specify/templates/tasks-template.md: ✅ Aligned.
|
- .specify/templates/tasks-template.md: ✅ Aligned.
|
||||||
-->
|
-->
|
||||||
@@ -37,6 +36,11 @@ To maintain semantic coherence, code must adhere to the complexity limits (Modul
|
|||||||
### VII. Everything is a Plugin
|
### VII. Everything is a Plugin
|
||||||
All functional extensions, tools, or major features must be implemented as modular Plugins inheriting from `PluginBase`. Logic should not reside in standalone services or scripts unless strictly necessary for core infrastructure. This ensures a unified execution model via the `TaskManager`, consistent logging, and modularity.
|
All functional extensions, tools, or major features must be implemented as modular Plugins inheriting from `PluginBase`. Logic should not reside in standalone services or scripts unless strictly necessary for core infrastructure. This ensures a unified execution model via the `TaskManager`, consistent logging, and modularity.
|
||||||
|
|
||||||
|
### VIII. Unified Frontend Experience
|
||||||
|
To ensure a consistent and accessible user experience, all frontend implementations must strictly adhere to the unified design and localization standards.
|
||||||
|
- **Component Reusability**: All UI elements MUST utilize the standardized Svelte component library (`src/lib/ui`) and centralized design tokens. Ad-hoc styling and hardcoded values are prohibited.
|
||||||
|
- **Internationalization (i18n)**: All user-facing text MUST be extracted to the translation system (`src/lib/i18n`). Hardcoded strings in the UI are prohibited.
|
||||||
|
|
||||||
## File Structure Standards
|
## File Structure Standards
|
||||||
Refer to **Section III (File Structure Standard)** in `semantic_protocol.md` for the authoritative definitions of:
|
Refer to **Section III (File Structure Standard)** in `semantic_protocol.md` for the authoritative definitions of:
|
||||||
- Python Module Headers (`.py`)
|
- Python Module Headers (`.py`)
|
||||||
@@ -64,4 +68,4 @@ This Constitution establishes the "Semantic Code Generation Protocol" as the sup
|
|||||||
- **Amendments**: Changes to core principles require a Constitution amendment. Changes to technical syntax require a Protocol update.
|
- **Amendments**: Changes to core principles require a Constitution amendment. Changes to technical syntax require a Protocol update.
|
||||||
- **Compliance**: Failure to adhere to the Protocol constitutes a build failure.
|
- **Compliance**: Failure to adhere to the Protocol constitutes a build failure.
|
||||||
|
|
||||||
**Version**: 1.7.1 | **Ratified**: 2025-12-19 | **Last Amended**: 2026-01-13
|
**Version**: 1.8.0 | **Ratified**: 2025-12-19 | **Last Amended**: 2026-01-26
|
||||||
|
|||||||
BIN
backend/tasks.db
BIN
backend/tasks.db
Binary file not shown.
@@ -35,7 +35,7 @@
|
|||||||
|
|
||||||
## Final Phase: Polish & Cross-cutting concerns
|
## Final Phase: Polish & Cross-cutting concerns
|
||||||
- [ ] T022 Implement task cleanup/retention policy (e.g., delete tasks older than 30 days)
|
- [ ] T022 Implement task cleanup/retention policy (e.g., delete tasks older than 30 days)
|
||||||
- [ ] T023 Add real-time updates for task status using WebSockets (optional/refinement)
|
- [x] T023 Add real-time updates for task status using WebSockets (optional/refinement)
|
||||||
- [x] T024 Ensure consistent error handling and logging across scheduler and task manager
|
- [x] T024 Ensure consistent error handling and logging across scheduler and task manager
|
||||||
|
|
||||||
## Dependencies
|
## Dependencies
|
||||||
|
|||||||
34
specs/015-frontend-nav-redesign/checklists/requirements.md
Normal file
34
specs/015-frontend-nav-redesign/checklists/requirements.md
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
# Specification Quality Checklist: Frontend Navigation Redesign
|
||||||
|
|
||||||
|
**Purpose**: Validate specification completeness and quality before proceeding to planning
|
||||||
|
**Created**: 2026-01-26
|
||||||
|
**Feature**: [specs/015-frontend-nav-redesign/spec.md](../spec.md)
|
||||||
|
|
||||||
|
## Content Quality
|
||||||
|
|
||||||
|
- [x] No implementation details (languages, frameworks, APIs)
|
||||||
|
- [x] Focused on user value and business needs
|
||||||
|
- [x] Written for non-technical stakeholders
|
||||||
|
- [x] All mandatory sections completed
|
||||||
|
|
||||||
|
## Requirement Completeness
|
||||||
|
|
||||||
|
- [x] No [NEEDS CLARIFICATION] markers remain
|
||||||
|
- [x] Requirements are testable and unambiguous
|
||||||
|
- [x] Success criteria are measurable
|
||||||
|
- [x] Success criteria are technology-agnostic (no implementation details)
|
||||||
|
- [x] All acceptance scenarios are defined
|
||||||
|
- [x] Edge cases are identified
|
||||||
|
- [x] Scope is clearly bounded
|
||||||
|
- [x] Dependencies and assumptions identified
|
||||||
|
|
||||||
|
## Feature Readiness
|
||||||
|
|
||||||
|
- [x] All functional requirements have clear acceptance criteria
|
||||||
|
- [x] User scenarios cover primary flows
|
||||||
|
- [x] Feature meets measurable outcomes defined in Success Criteria
|
||||||
|
- [x] No implementation details leak into specification
|
||||||
|
|
||||||
|
## Notes
|
||||||
|
|
||||||
|
- Items marked incomplete require spec updates before `/speckit.clarify` or `/speckit.plan`
|
||||||
@@ -0,0 +1,19 @@
|
|||||||
|
# Backup Contracts
|
||||||
|
|
||||||
|
## Component: BackupManager
|
||||||
|
|
||||||
|
### Props
|
||||||
|
None (Top-level page component)
|
||||||
|
|
||||||
|
### Events
|
||||||
|
- `on:backup-create`: Triggered when user requests a new backup.
|
||||||
|
- `on:backup-restore`: Triggered when user requests a restore.
|
||||||
|
|
||||||
|
### Data Dependencies
|
||||||
|
- `GET /api/backups`: Fetch list of backups.
|
||||||
|
- Response: `Array<BackupConfiguration>`
|
||||||
|
- `POST /api/backups`: Create new backup.
|
||||||
|
- Body: `{ type: string, target: string }`
|
||||||
|
- `POST /api/backups/{id}/restore`: Restore a backup.
|
||||||
|
|
||||||
|
*(Note: Actual endpoints depend on Feature 009 implementation; these are the frontend's expected contracts)*
|
||||||
81
specs/015-frontend-nav-redesign/plan.md
Normal file
81
specs/015-frontend-nav-redesign/plan.md
Normal file
@@ -0,0 +1,81 @@
|
|||||||
|
# Implementation Plan: Frontend Navigation Redesign
|
||||||
|
|
||||||
|
**Branch**: `015-frontend-nav-redesign` | **Date**: 2026-01-26 | **Spec**: [specs/015-frontend-nav-redesign/spec.md](../spec.md)
|
||||||
|
**Input**: Feature specification from `specs/015-frontend-nav-redesign/spec.md`
|
||||||
|
|
||||||
|
**Note**: This template is filled in by the `/speckit.plan` command. See `.specify/templates/commands/plan.md` for the execution workflow.
|
||||||
|
|
||||||
|
## Summary
|
||||||
|
|
||||||
|
This feature redesigns the frontend navigation to shift from a Navbar-heavy approach to a Dashboard-centric model. Key changes include moving tool access (Mapper, Storage, Backups) to the Dashboard, simplifying the Navbar to global contexts (Tasks, Settings), removing deprecated features (Dataset Search, Environments), and implementing a dedicated Backup Management UI based on backend capabilities from feature 009.
|
||||||
|
|
||||||
|
## Technical Context
|
||||||
|
|
||||||
|
**Language/Version**: Python 3.9+ (Backend), Node.js 18+ (Frontend)
|
||||||
|
**Primary Dependencies**: FastAPI (Backend), SvelteKit + Tailwind CSS (Frontend)
|
||||||
|
**Storage**: N/A (UI reorganization and API integration)
|
||||||
|
**Testing**: Playwright (E2E - if available), Vitest (Unit)
|
||||||
|
**Target Platform**: Web Browser
|
||||||
|
**Project Type**: Web Application (Frontend + Backend)
|
||||||
|
**Performance Goals**: Instant navigation (<100ms), fast dashboard load
|
||||||
|
**Constraints**: Must maintain responsive design; Backup UI must interface with existing backend endpoints
|
||||||
|
**Scale/Scope**: ~5-10 file modifications, 1 new major component (BackupManager)
|
||||||
|
|
||||||
|
## Constitution Check
|
||||||
|
|
||||||
|
*GATE: Must pass before Phase 0 research. Re-check after Phase 1 design.*
|
||||||
|
|
||||||
|
- [x] **Semantic Protocol Compliance**: All new components will follow Svelte component header standards.
|
||||||
|
- [x] **Causal Validity**: Contracts (props/events) will be defined before implementation.
|
||||||
|
- [x] **Immutability of Architecture**: No core architectural changes; only UI reorganization.
|
||||||
|
- [x] **Design by Contract**: New Backup component will define clear interface contracts.
|
||||||
|
- [x] **Everything is a Plugin**: N/A (Frontend changes primarily, backend remains plugin-based).
|
||||||
|
- [x] **Unified Frontend Experience**: All new UI components will use standardized components and internationalization (i18n).
|
||||||
|
|
||||||
|
## Project Structure
|
||||||
|
|
||||||
|
### Documentation (this feature)
|
||||||
|
|
||||||
|
```text
|
||||||
|
specs/015-frontend-nav-redesign/
|
||||||
|
├── plan.md # This file
|
||||||
|
├── research.md # Phase 0 output
|
||||||
|
├── data-model.md # Phase 1 output
|
||||||
|
├── quickstart.md # Phase 1 output
|
||||||
|
├── contracts/ # Phase 1 output
|
||||||
|
└── tasks.md # Phase 2 output
|
||||||
|
```
|
||||||
|
|
||||||
|
### Source Code (repository root)
|
||||||
|
|
||||||
|
```text
|
||||||
|
backend/
|
||||||
|
├── src/
|
||||||
|
│ └── api/routes/ # (Verify backup routes exist)
|
||||||
|
|
||||||
|
frontend/
|
||||||
|
├── src/
|
||||||
|
│ ├── components/
|
||||||
|
│ │ ├── Navbar.svelte # (Modify: Simplify items)
|
||||||
|
│ │ ├── DashboardGrid.svelte # (Modify: Add tool links)
|
||||||
|
│ │ └── backups/ # (New: Backup UI)
|
||||||
|
│ │ ├── BackupManager.svelte
|
||||||
|
│ │ └── BackupList.svelte
|
||||||
|
│ ├── pages/
|
||||||
|
│ │ └── Dashboard.svelte # (Modify: Layout updates)
|
||||||
|
│ └── routes/
|
||||||
|
│ ├── +layout.svelte # (Check global nav injection)
|
||||||
|
│ └── tools/
|
||||||
|
│ └── backups/ # (New Route)
|
||||||
|
│ └── +page.svelte
|
||||||
|
```
|
||||||
|
|
||||||
|
**Structure Decision**: Standard SvelteKit structure. New `backups` component directory for the complex backup UI. Route added under `tools/` to match existing pattern (mapper, storage).
|
||||||
|
|
||||||
|
## Complexity Tracking
|
||||||
|
|
||||||
|
> **Fill ONLY if Constitution Check has violations that must be justified**
|
||||||
|
|
||||||
|
| Violation | Why Needed | Simpler Alternative Rejected Because |
|
||||||
|
|-----------|------------|-------------------------------------|
|
||||||
|
| N/A | | |
|
||||||
29
specs/015-frontend-nav-redesign/quickstart.md
Normal file
29
specs/015-frontend-nav-redesign/quickstart.md
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
# Quickstart: Frontend Navigation Redesign
|
||||||
|
|
||||||
|
## Overview
|
||||||
|
This feature reorganizes the application navigation to be dashboard-centric and introduces a dedicated UI for Backup Management.
|
||||||
|
|
||||||
|
## New Routes
|
||||||
|
- `/tools/backups`: The new Backup Management interface.
|
||||||
|
- `/`: Dashboard (updated with new tool links).
|
||||||
|
|
||||||
|
## Removed Routes
|
||||||
|
- `/tools/search`: Deprecated and removed.
|
||||||
|
- `/settings/environments`: Deprecated and removed.
|
||||||
|
|
||||||
|
## Development
|
||||||
|
|
||||||
|
### Running the Backup UI
|
||||||
|
1. Ensure the backend is running: `cd backend && uvicorn src.app:app --reload`
|
||||||
|
2. Start the frontend: `cd frontend && npm run dev`
|
||||||
|
3. Navigate to `http://localhost:5173/tools/backups`
|
||||||
|
|
||||||
|
### Key Components
|
||||||
|
- `frontend/src/components/backups/BackupManager.svelte`: Main container for backup operations.
|
||||||
|
- `frontend/src/components/DashboardGrid.svelte`: Updated grid with new tool cards.
|
||||||
|
- `frontend/src/components/Navbar.svelte`: Simplified navigation bar.
|
||||||
|
|
||||||
|
## Verification
|
||||||
|
1. Check Dashboard: Should see cards for Mapper, Storage, and Backups.
|
||||||
|
2. Check Navbar: Should ONLY show Tasks and Settings.
|
||||||
|
3. Check Backup Tool: Should load and display backup status/controls.
|
||||||
23
specs/015-frontend-nav-redesign/research.md
Normal file
23
specs/015-frontend-nav-redesign/research.md
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
# Research: Frontend Navigation Redesign
|
||||||
|
|
||||||
|
## Decisions
|
||||||
|
|
||||||
|
### 1. Backup Management UI Strategy
|
||||||
|
**Decision**: Create a dedicated `BackupManager` component in `frontend/src/components/backups/`.
|
||||||
|
**Rationale**: The requirement is to have a "full component" accessible from the dashboard. Separating it into its own directory ensures modularity and keeps the Dashboard component clean. It will consume the existing backup APIs (likely `/api/tasks` with specific backup types or a dedicated backup endpoint if one exists - *to be verified in Phase 1*).
|
||||||
|
**Alternatives considered**: Embedding backup controls directly in the Dashboard (rejected: clutters the main view), reusing the TaskRunner component (rejected: need specific backup context/history view).
|
||||||
|
|
||||||
|
### 2. Navigation State Management
|
||||||
|
**Decision**: Use SvelteKit's layout system (`+layout.svelte`) and simple component props for Navbar state.
|
||||||
|
**Rationale**: The Navbar changes are global. Removing items is a static change to the `Navbar.svelte` component. No complex state management (stores) is needed for this structural change.
|
||||||
|
**Alternatives considered**: Dynamic config-based menu (rejected: overkill for this specific redesign).
|
||||||
|
|
||||||
|
### 3. Deprecation Strategy
|
||||||
|
**Decision**: Hard removal of "Dataset Search" and "Deployment Environments" components and routes.
|
||||||
|
**Rationale**: The spec explicitly calls for removal. Keeping dead code increases maintenance burden.
|
||||||
|
**Alternatives considered**: Hiding behind a feature flag (rejected: requirement is explicit removal).
|
||||||
|
|
||||||
|
### 4. Dashboard Grid Layout
|
||||||
|
**Decision**: Update `DashboardGrid.svelte` to include new cards for Mapper, Storage, and Backups.
|
||||||
|
**Rationale**: Reusing the existing grid component maintains consistency.
|
||||||
|
**Alternatives considered**: Creating a separate "Tools" page (rejected: spec requires access from main Dashboard).
|
||||||
95
specs/015-frontend-nav-redesign/spec.md
Normal file
95
specs/015-frontend-nav-redesign/spec.md
Normal file
@@ -0,0 +1,95 @@
|
|||||||
|
# Feature Specification: Frontend Navigation Redesign
|
||||||
|
|
||||||
|
**Feature Branch**: `015-frontend-nav-redesign`
|
||||||
|
**Created**: 2026-01-26
|
||||||
|
**Status**: Draft
|
||||||
|
**Input**: User description: "Я хочу провести редизайн фронта в части навигации. 1. Удалить Dataset Search (из Navbar и дашборда), Deployment Environments 2. Вкладку Tasks оставить для просмотра всех задач - убрать оттуда кнопку Run backup 3. Должен быть полноценный компонент бэкапов, как мы разрабатывали в 009-backup-scheduler. Доступ - из дашборда главного 4. Перенести ссылку на Dataset mapper из Navbar на дашборд 5. Перенести ссылку на Storage manager на дашборд Общая логика - на дашборде должны быть ссылки на полноценные инструменты, навбар - для настроек и общей Tasks"
|
||||||
|
|
||||||
|
## Clarifications
|
||||||
|
|
||||||
|
### Session 2026-01-26
|
||||||
|
- Q: Do I need to build the Backup Management UI from scratch? → A: Yes, create the UI for backup using data from task 009-backup-scheduler.
|
||||||
|
|
||||||
|
## User Scenarios & Testing *(mandatory)*
|
||||||
|
|
||||||
|
### User Story 1 - Centralized Tool Access via Dashboard (Priority: P1)
|
||||||
|
|
||||||
|
As a user, I want to access all main tools (Backups, Mapper, Storage) from the main Dashboard so that I have a central hub for operations.
|
||||||
|
|
||||||
|
**Why this priority**: This is the core of the redesign, shifting the navigation paradigm to a dashboard-centric model for tools.
|
||||||
|
|
||||||
|
**Independent Test**: Can be tested by verifying the Dashboard contains links/cards for Backups, Mapper, and Storage, and that clicking them navigates to the correct full-page tools.
|
||||||
|
|
||||||
|
**Acceptance Scenarios**:
|
||||||
|
|
||||||
|
1. **Given** I am on the main Dashboard, **When** I look at the available tools, **Then** I see options for "Backup Manager", "Dataset Mapper", and "Storage Manager".
|
||||||
|
2. **Given** I am on the Dashboard, **When** I click "Backup Manager", **Then** I am taken to the full Backup management interface.
|
||||||
|
3. **Given** I am on the Dashboard, **When** I click "Dataset Mapper", **Then** I am taken to the Mapper tool.
|
||||||
|
4. **Given** I am on the Dashboard, **When** I click "Storage Manager", **Then** I am taken to the Storage tool.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### User Story 2 - Simplified Navigation Bar (Priority: P1)
|
||||||
|
|
||||||
|
As a user, I want a clean Navbar containing only global context items (Tasks, Settings) so that the interface is less cluttered and navigation is distinct from tool usage.
|
||||||
|
|
||||||
|
**Why this priority**: Enforces the separation of concerns between "Global Status/Settings" (Navbar) and "Operational Tools" (Dashboard).
|
||||||
|
|
||||||
|
**Independent Test**: Can be tested by inspecting the Navbar across the application to ensure removed items (Search, Mapper, Environments) are gone and only Tasks and Settings remain.
|
||||||
|
|
||||||
|
**Acceptance Scenarios**:
|
||||||
|
|
||||||
|
1. **Given** I am on any page, **When** I view the Navbar, **Then** I do NOT see links for "Dataset Search", "Dataset Mapper", or "Deployment Environments".
|
||||||
|
2. **Given** I am on any page, **When** I view the Navbar, **Then** I see links for "Tasks" and "Settings".
|
||||||
|
3. **Given** I am on the Tasks page, **When** I look for the "Run backup" button, **Then** it is NOT present (as it belongs in the Backup tool).
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### User Story 3 - Deprecation of Unused Features (Priority: P2)
|
||||||
|
|
||||||
|
As a user, I want removed features (Dataset Search, Deployment Environments) to be inaccessible so that I don't use deprecated workflows.
|
||||||
|
|
||||||
|
**Why this priority**: Cleans up the UI and prevents confusion with features that are being removed or hidden.
|
||||||
|
|
||||||
|
**Independent Test**: Verify that UI elements for Dataset Search and Deployment Environments are removed from both Navbar and Dashboard.
|
||||||
|
|
||||||
|
**Acceptance Scenarios**:
|
||||||
|
|
||||||
|
1. **Given** I am on the Dashboard, **When** I look for "Dataset Search", **Then** it is not visible.
|
||||||
|
2. **Given** I am on the Dashboard or Navbar, **When** I look for "Deployment Environments", **Then** it is not visible.
|
||||||
|
|
||||||
|
### Edge Cases
|
||||||
|
|
||||||
|
- **Direct URL Access**: If a user attempts to access the URL of a removed page (e.g., `/search` or `/environments`) via bookmark or history, they should be redirected to the Dashboard or shown a 404 page (standard app behavior).
|
||||||
|
- **Mobile View**: The simplified Navbar must remain responsive; with fewer items, it should likely avoid collapsing into a hamburger menu unless necessary on very small screens.
|
||||||
|
|
||||||
|
### Assumptions
|
||||||
|
|
||||||
|
- The backend logic and UI components for the "Backup Scheduler" (Feature 009) are available and ready to be integrated into the main Dashboard view.
|
||||||
|
- Existing tools (Dataset Mapper, Storage Manager) function independently of the Navbar context and will work correctly when accessed via the Dashboard.
|
||||||
|
|
||||||
|
## Requirements *(mandatory)*
|
||||||
|
|
||||||
|
### Functional Requirements
|
||||||
|
|
||||||
|
- **FR-001**: System MUST display "Dataset Mapper" entry point on the main Dashboard.
|
||||||
|
- **FR-002**: System MUST display "Storage Manager" entry point on the main Dashboard.
|
||||||
|
- **FR-003**: System MUST display "Backup Scheduler" (or similar name) entry point on the main Dashboard.
|
||||||
|
- **FR-004**: System MUST provide access to the full Backup Management component (newly created based on feature 009 data) via the Dashboard link.
|
||||||
|
- **FR-005**: Navbar MUST NOT contain links to "Dataset Search", "Dataset Mapper", or "Deployment Environments".
|
||||||
|
- **FR-006**: Dashboard MUST NOT contain "Dataset Search" widget or link.
|
||||||
|
- **FR-007**: Tasks page MUST NOT show the "Run backup" button (backup initiation moves to Backup tool).
|
||||||
|
- **FR-008**: Navbar MUST retain "Tasks" and "Settings" links.
|
||||||
|
|
||||||
|
### Key Entities
|
||||||
|
|
||||||
|
- **Dashboard**: The main landing page serving as the registry for tools.
|
||||||
|
- **Navbar**: The persistent top navigation for global application state/config.
|
||||||
|
|
||||||
|
## Success Criteria *(mandatory)*
|
||||||
|
|
||||||
|
### Measurable Outcomes
|
||||||
|
|
||||||
|
- **SC-001**: Users can navigate to Dataset Mapper, Storage Manager, and Backup Manager within 1 click from the Dashboard.
|
||||||
|
- **SC-002**: Navbar contains strictly 0 links to operational tools (Mapper, Search, Storage), containing only Tasks and Settings.
|
||||||
|
- **SC-003**: "Run backup" action is successfully performed via the new Dashboard -> Backup route.
|
||||||
112
specs/015-frontend-nav-redesign/tasks.md
Normal file
112
specs/015-frontend-nav-redesign/tasks.md
Normal file
@@ -0,0 +1,112 @@
|
|||||||
|
# Tasks: Frontend Navigation Redesign
|
||||||
|
|
||||||
|
**Feature Branch**: `015-frontend-nav-redesign`
|
||||||
|
**Spec**: [specs/015-frontend-nav-redesign/spec.md](../spec.md)
|
||||||
|
**Plan**: [specs/015-frontend-nav-redesign/plan.md](../plan.md)
|
||||||
|
|
||||||
|
## Phase 1: Setup
|
||||||
|
|
||||||
|
*Goal: Initialize project structure for the new feature.*
|
||||||
|
|
||||||
|
- [ ] T001 Create backup component directory structure
|
||||||
|
- Path: `frontend/src/components/backups/`
|
||||||
|
- [ ] T002 Create backup page route directory
|
||||||
|
- Path: `frontend/src/routes/tools/backups/`
|
||||||
|
|
||||||
|
## Phase 2: Foundational
|
||||||
|
|
||||||
|
*Goal: Prepare core components for integration and verify backend connectivity.*
|
||||||
|
|
||||||
|
- [ ] T003 Verify backend API endpoints for backups (via `009-backup-scheduler`)
|
||||||
|
- Path: `backend/src/api/routes/tasks.py` (or relevant backup route)
|
||||||
|
- [ ] T004 Define Backup types and interfaces in frontend
|
||||||
|
- Path: `frontend/src/types/backup.ts`
|
||||||
|
|
||||||
|
## Phase 3: User Story 1 - Centralized Tool Access via Dashboard
|
||||||
|
|
||||||
|
*Goal: Update the main dashboard to include all tool entry points.*
|
||||||
|
|
||||||
|
**User Story**: As a user, I want to access all main tools (Backups, Mapper, Storage) from the main Dashboard so that I have a central hub for operations. (P1)
|
||||||
|
|
||||||
|
- [ ] T005 [US1] Update DashboardGrid to include "Backup Manager" card
|
||||||
|
- Path: `frontend/src/components/DashboardGrid.svelte`
|
||||||
|
- [ ] T006 [US1] Update DashboardGrid to ensure "Dataset Mapper" and "Storage Manager" cards are present
|
||||||
|
- Path: `frontend/src/components/DashboardGrid.svelte`
|
||||||
|
- [ ] T007 [US1] Remove "Dataset Search" card from DashboardGrid
|
||||||
|
- Path: `frontend/src/components/DashboardGrid.svelte`
|
||||||
|
|
||||||
|
## Phase 4: User Story 2 - Simplified Navigation Bar
|
||||||
|
|
||||||
|
*Goal: Clean up the Navbar to show only global context items.*
|
||||||
|
|
||||||
|
**User Story**: As a user, I want a clean Navbar containing only global context items (Tasks, Settings) so that the interface is less cluttered and navigation is distinct from tool usage. (P1)
|
||||||
|
|
||||||
|
- [ ] T008 [US2] Remove "Dataset Search" link from Navbar
|
||||||
|
- Path: `frontend/src/components/Navbar.svelte`
|
||||||
|
- [ ] T009 [US2] Remove "Dataset Mapper" link from Navbar
|
||||||
|
- Path: `frontend/src/components/Navbar.svelte`
|
||||||
|
- [ ] T010 [US2] Remove "Deployment Environments" link from Navbar
|
||||||
|
- Path: `frontend/src/components/Navbar.svelte`
|
||||||
|
- [ ] T011 [US2] Verify "Tasks" and "Settings" links remain in Navbar
|
||||||
|
- Path: `frontend/src/components/Navbar.svelte`
|
||||||
|
- [ ] T012 [US2] Remove "Run backup" button from Tasks page
|
||||||
|
- Path: `frontend/src/routes/tasks/+page.svelte` (or relevant component)
|
||||||
|
|
||||||
|
## Phase 5: Backup Management UI
|
||||||
|
|
||||||
|
*Goal: Implement the dedicated Backup Management interface.*
|
||||||
|
|
||||||
|
**User Story**: (Implicit P1 from FR-004) System MUST provide access to the full Backup Management component via the Dashboard link.
|
||||||
|
|
||||||
|
- [ ] T013 [US1] Create BackupList component to display existing backups (Must use `src/lib/ui` components and `src/lib/i18n`)
|
||||||
|
- Path: `frontend/src/components/backups/BackupList.svelte`
|
||||||
|
- [ ] T014 [US1] Create BackupManager main component (container) (Must use `src/lib/ui` components and `src/lib/i18n`)
|
||||||
|
- Path: `frontend/src/components/backups/BackupManager.svelte`
|
||||||
|
- [ ] T015 [US1] Implement "Create Backup" functionality in BackupManager (Must use `src/lib/ui` components and `src/lib/i18n`)
|
||||||
|
- Path: `frontend/src/components/backups/BackupManager.svelte`
|
||||||
|
- [ ] T016 [US1] Implement "Restore Backup" functionality (if supported by backend) (Must use `src/lib/ui` components and `src/lib/i18n`)
|
||||||
|
- Path: `frontend/src/components/backups/BackupManager.svelte`
|
||||||
|
- [ ] T017 [US1] Create Backup page to host the manager (Must use `src/lib/ui` components and `src/lib/i18n`)
|
||||||
|
- Path: `frontend/src/routes/tools/backups/+page.svelte`
|
||||||
|
|
||||||
|
## Phase 6: User Story 3 - Deprecation
|
||||||
|
|
||||||
|
*Goal: Remove deprecated routes and code.*
|
||||||
|
|
||||||
|
**User Story**: As a user, I want removed features (Dataset Search, Deployment Environments) to be inaccessible so that I don't use deprecated workflows. (P2)
|
||||||
|
|
||||||
|
- [ ] T018 [US3] Delete Dataset Search route
|
||||||
|
- Path: `frontend/src/routes/tools/search/` (delete directory)
|
||||||
|
- [ ] T019 [US3] Delete Deployment Environments route
|
||||||
|
- Path: `frontend/src/routes/settings/environments/` (delete directory)
|
||||||
|
- [ ] T020 [US3] Delete Dataset Search component (if not used elsewhere)
|
||||||
|
- Path: `frontend/src/components/tools/SearchTool.svelte`
|
||||||
|
- [ ] T021 [US3] Delete EnvSelector component (if not used elsewhere)
|
||||||
|
- Path: `frontend/src/components/EnvSelector.svelte`
|
||||||
|
|
||||||
|
## Phase 7: Polish & Cross-Cutting
|
||||||
|
|
||||||
|
*Goal: Final verification and cleanup.*
|
||||||
|
|
||||||
|
- [ ] T022 Verify all navigation links work correctly
|
||||||
|
- Path: `frontend/src/components/Navbar.svelte`
|
||||||
|
- [ ] T023 Verify responsive layout of new Dashboard grid
|
||||||
|
- Path: `frontend/src/components/DashboardGrid.svelte`
|
||||||
|
- [ ] T024 Ensure i18n strings are extracted for new Backup UI
|
||||||
|
- Path: `frontend/src/lib/i18n/` (or relevant locale files)
|
||||||
|
- [ ] T025 Verify "Run backup" action successfully triggers backup job (Manual/E2E check)
|
||||||
|
- Path: `frontend/src/components/backups/BackupManager.svelte`
|
||||||
|
|
||||||
|
## Dependencies
|
||||||
|
|
||||||
|
1. **Phase 1 & 2** must be completed first.
|
||||||
|
2. **Phase 3 (Dashboard)** and **Phase 4 (Navbar)** can be done in parallel.
|
||||||
|
3. **Phase 5 (Backup UI)** depends on Phase 1 & 2.
|
||||||
|
4. **Phase 6 (Deprecation)** should be done last to ensure no regressions before removal.
|
||||||
|
|
||||||
|
## Implementation Strategy
|
||||||
|
|
||||||
|
1. **Setup**: Create the new directory structure.
|
||||||
|
2. **Dashboard & Navbar**: Quick wins to reshape the navigation.
|
||||||
|
3. **Backup UI**: The core development effort. Connect to existing backend.
|
||||||
|
4. **Cleanup**: Remove old code once the new flows are verified.
|
||||||
Reference in New Issue
Block a user