Files
ss-tools/specs/011-git-integration-dashboard/tasks.md
2026-01-22 23:59:16 +03:00

5.1 KiB

Tasks: Git Integration Plugin for Dashboard Development

Feature: 011-git-integration-dashboard

Phase 1: Setup

Goal: Initialize project structure and dependencies.

  • T001 Add GitPython to backend/requirements.txt
  • T002 Create git plugin directory structure in backend/src/plugins/git/ and frontend/src/components/git/

Phase 2: Foundational

Goal: Define data models and base classes for Git integration.

  • T003 [P] Create SQLAlchemy models for GitServerConfig and GitRepository in backend/src/models/git.py
  • T004 [P] Create Pydantic schemas for Git entities in backend/src/api/routes/git_schemas.py
  • T005 Implement GitService base logic (init, clone) in backend/src/services/git_service.py
  • T006 Implement GitPlugin(PluginBase) skeleton in backend/src/plugins/git_plugin.py

Phase 3: User Story 1 - Configure Git Server Connection (P1)

Goal: Enable connection to Git servers (GitHub, GitLab, Gitea) via PAT. Independent Test: Configure a Git server connection and verify "Test Connection" succeeds.

  • T007 [US1] Implement Git provider connection validation logic in backend/src/services/git_service.py
  • T008 [US1] Implement /api/git/config and /api/git/config/test endpoints in backend/src/api/routes/git.py
  • T009 [P] [US1] Create Git configuration service in frontend/src/services/gitService.js
  • T010 [US1] Implement Git server settings page in frontend/src/routes/settings/git/+page.svelte

Phase 4: User Story 2 - Dashboard Branch Management (P1)

Goal: Manage branches for dashboard repositories. Independent Test: Create a new branch, switch to it, and verify the local repository state updates.

  • T011 [US2] Implement branch listing and creation logic in backend/src/services/git_service.py
  • T012 [US2] Implement branch checkout logic in backend/src/services/git_service.py
  • T013 [US2] Implement branch management endpoints in backend/src/api/routes/git.py
  • T014 [P] [US2] Create BranchSelector component in frontend/src/components/git/BranchSelector.svelte
  • T015 [US2] Integrate branch management into Dashboard view in frontend/src/pages/Dashboard.svelte

Phase 5: User Story 3 - Dashboard Synchronization with Git (P1)

Goal: Commit, push, and pull dashboard changes. Independent Test: Modify a dashboard, commit changes, push to remote, and verify changes on the Git server.

  • T016 [US3] Implement Superset export unpacking logic (YAML files) in backend/src/plugins/git_plugin.py
  • T017 [US3] Implement commit, push, and pull logic in backend/src/services/git_service.py
  • T018 [US3] Implement sync endpoints (commit, push, pull) in backend/src/api/routes/git.py
  • T019 [P] [US3] Create CommitModal component in frontend/src/components/git/CommitModal.svelte
  • T020 [US3] Implement sync controls (Commit/Push/Pull) in frontend/src/pages/Dashboard.svelte
  • T021 [US3] Implement conflict detection and resolution logic in backend/src/services/git_service.py
  • T022 [US3] Implement conflict resolution endpoints in backend/src/api/routes/git.py
  • T023 [P] [US3] Create ConflictResolver component in frontend/src/components/git/ConflictResolver.svelte

Phase 6: User Story 4 - Environment Deployment (P2)

Goal: Deploy dashboard changes to target environments. Independent Test: Select a target environment and trigger deployment, verifying the dashboard is updated on the target Superset instance.

  • T024 [P] [US4] Implement DeploymentEnvironment model in backend/src/models/git.py
  • T025 [US4] Implement deployment logic (Superset Import API) in backend/src/plugins/git_plugin.py
  • T026 [US4] Implement deployment endpoints in backend/src/api/routes/git.py
  • T027 [US4] Create environment management UI in frontend/src/routes/settings/environments/+page.svelte
  • T028 [US4] Implement deployment trigger in frontend/src/pages/Dashboard.svelte

Phase 7: User Story 5 - Git History and Change Tracking (P3)

Goal: View dashboard commit history and changes. Independent Test: Open the history view and verify the list of commits matches the Git repository history.

  • T029 [US5] Implement commit history retrieval in backend/src/services/git_service.py
  • T030 [US5] Implement history endpoint in backend/src/api/routes/git.py
  • T031 [P] [US5] Create CommitHistory component in frontend/src/components/git/CommitHistory.svelte

Phase 8: Polish & Cross-cutting Concerns

  • T032 Add error handling and loading states to all Git UI components
  • T033 Implement offline mode checks for Git operations
  • T034 Final integration testing of the complete Git workflow

Dependencies

  • US1 is a prerequisite for all other stories.
  • US2 and US3 are closely related; US2 (branches) should precede US3 (sync).
  • US4 depends on US3 (changes must be committed to be deployed).
  • US5 is independent but requires commits to exist.

Implementation Strategy

  1. MVP: Complete Phase 1-3 (Setup, Foundational, and US1) to allow Git server configuration.
  2. Core Workflow: Complete Phase 4-5 (Branches and Sync) to enable version control.
  3. Extension: Complete Phase 6-7 (Deployment and History).