Files
2025-12-29 10:13:37 +03:00

6.0 KiB

Implementation Plan: Migration UI Improvements

Branch: 008-migration-ui-improvements | Date: 2025-12-27 | Spec: spec.md Input: Feature specification from /specs/008-migration-ui-improvements/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 aims to improve the migration UI by:

  1. Displaying a list of recent and current migration tasks with their statuses
  2. Allowing users to view detailed logs for each task
  3. Handling database password errors interactively by prompting users to provide missing passwords

The technical approach involves extending the existing TaskManager and MigrationPlugin to support new task states, adding API endpoints for task history and logs, and creating UI components for task visualization and password prompts.

Technical Context

Language/Version: Python 3.9+, Node.js 18+ Primary Dependencies: FastAPI, SvelteKit, Tailwind CSS, Pydantic, SQLAlchemy, Superset API Storage: SQLite (optional for job history), existing database for mappings Testing: pytest, ruff check Target Platform: Linux server (backend), Web browser (frontend) Project Type: web (backend + frontend) Performance Goals: Basic pagination support (limit/offset), real-time status updates Constraints: Configurable retention period for task history, hybrid task persistence approach Scale/Scope: Small to medium migration tasks, 10-50 concurrent users

Constitution Check

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

Compliance Gates

  1. Causal Validity (Contracts First): PASS

    • All new entities defined in data-model.md with contracts
    • API contracts documented in contracts/api.md
    • TaskManager extensions have clear @PRE/@POST conditions defined
  2. Immutability of Architecture: PASS

    • Existing architectural layers maintained (Domain/Infra/UI)
    • New components follow established patterns
    • Web application structure preserved
  3. Semantic Format Compliance: PASS

    • All new code will use [DEF] / [/DEF] anchor syntax
    • Proper metadata tags (@KEY) defined in data model
    • Graph relations (@RELATION) documented
  4. Design by Contract (DbC): PASS

    • All new functions/classes have defined contracts
    • API endpoints have clear specifications and constraints
    • Implementation will strictly satisfy contracts
  5. Belief State Logging: PASS

    • Context Manager pattern documented for Python
    • Proper [ANCHOR_ID][STATE] format maintained
    • Logging integrated into task state transitions
  6. Fractal Complexity Limit: PASS

    • Modules designed to stay under ~300 lines
    • Functions designed for ~30-50 lines max
    • Complex logic decomposed into helpers

Post-Design Validation

Design Artifacts Created:

  • research.md - Phase 0 research findings
  • data-model.md - Entity definitions and relationships
  • contracts/api.md - API contracts and specifications
  • quickstart.md - Usage documentation

Constitution Compliance:

  • All contracts defined before implementation
  • Architectural decisions respect existing structure
  • Semantic format compliance maintained
  • Design by Contract principles applied
  • Complexity limits respected

Potential Violations

None identified. The design phase has successfully addressed all constitutional requirements and the feature is ready for implementation.

Project Structure

Documentation (this feature)

specs/008-migration-ui-improvements/
├── 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/
│   ├── models/
│   ├── services/
│   ├── core/
│   │   ├── task_manager.py       # Extended with new task states
│   │   └── migration_engine.py   # Enhanced error handling
│   ├── api/
│   │   └── routes/
│   │       └── tasks.py           # New API endpoints
│   └── plugins/
│       └── migration.py          # Enhanced password handling
└── tests/
    ├── test_task_manager.py     # New tests for task states
    └── test_migration_plugin.py  # New tests for password prompts

frontend/
├── src/
│   ├── components/
│   │   ├── TaskHistory.svelte    # New component for task list
│   │   ├── TaskLogViewer.svelte  # New component for log viewing
│   │   └── PasswordPrompt.svelte # New component for password input
│   ├── pages/
│   │   └── migration/
│   │       └── +page.svelte       # Enhanced migration page
│   └── services/
│       └── taskService.js        # New service for task API
└── tests/
    ├── TaskHistory.spec.js      # New component tests
    └── taskService.spec.js      # New service tests

Structure Decision: Web application structure (Option 2) is selected as this feature involves both backend API extensions and frontend UI components. The existing backend/frontend separation will be maintained, with new components added to their respective directories.

Complexity Tracking

Fill ONLY if Constitution Check has violations that must be justified

Violation Why Needed Simpler Alternative Rejected Because
[e.g., 4th project] [current need] [why 3 projects insufficient]
[e.g., Repository pattern] [specific problem] [why direct DB access insufficient]