LinkDesk/.kiro/specs/recovery-management-rename/design.md

8.3 KiB

Recovery Management Rename - Design Document

Overview

This design document outlines the approach for renaming "Deleted Items Management" to "Recovery Management" throughout the VFX Project Management System. The change focuses on updating user-facing text and labels while preserving all existing functionality, file names, and API endpoints to maintain backward compatibility and minimize code changes.

Architecture

The rename operation will be implemented as a pure UI/UX change that affects only the presentation layer. The underlying architecture remains unchanged:

  • Frontend Components: Update display text, labels, and messages in Vue components
  • Navigation System: Modify sidebar navigation labels while preserving route paths
  • Page Titles: Update browser tab titles and page headers
  • User Messages: Revise loading states, empty states, and notification text

Components and Interfaces

Affected Components

  1. AppSidebar.vue

    • Update navigation item title from "Deleted Items" to "Recovery Management"
    • Preserve existing URL path /admin/deleted-items for backward compatibility
  2. DeletedItemsManagementView.vue

    • Update page title from "Deleted Items Management" to "Recovery Management"
    • Revise page description to use recovery-focused language
    • Update loading messages, empty states, and filter labels
    • Add permanent delete actions for individual items
    • Add bulk permanent delete functionality
    • Add confirmation dialogs for permanent deletion
    • Maintain all existing functionality and component structure
  3. RecoveryManagementPanel.vue (if exists)

    • Apply consistent terminology updates
    • Ensure alignment with main management view

New Components

  1. PermanentDeleteConfirmDialog.vue
    • Confirmation dialog for permanent deletion operations
    • Warning messages about irreversible data loss
    • Support for both individual and bulk operations

Backend Services

  1. Recovery Service Extensions
    • Add permanent delete methods for shots and assets
    • Implement cascading deletion for related data
    • Add file system cleanup for associated files
    • Ensure transactional integrity during deletion

Interface Preservation

All existing interfaces will be preserved:

  • Component props and events remain unchanged
  • Service method signatures stay the same
  • API endpoints maintain existing paths
  • Database queries and models are unaffected

Data Models

Existing Models (Preserved)

All existing models remain unchanged for backward compatibility:

  • DeletedShot interface preserved
  • DeletedAsset interface preserved
  • RecoveryInfo interface preserved
  • Database tables and columns unchanged
  • API response formats maintained

New Interfaces

PermanentDeleteRequest

interface PermanentDeleteRequest {
  itemType: 'shot' | 'asset'
  itemIds: number[]
  confirmationToken: string
}

PermanentDeleteResult

interface PermanentDeleteResult {
  successful_deletions: number
  failed_deletions: number
  deleted_items: Array<{
    id: number
    name: string
    type: 'shot' | 'asset'
  }>
  errors: Array<{
    id: number
    error: string
  }>
  files_deleted: number
  database_records_deleted: number
}

Database Operations

Permanent deletion will involve cascading deletes across multiple tables:

  • Primary item record (shots/assets)
  • Related tasks and their submissions
  • Attachments and associated files
  • Notes and reviews
  • Activity records
  • File system cleanup

Correctness Properties

A property is a characteristic or behavior that should hold true across all valid executions of a system-essentially, a formal statement about what the system should do. Properties serve as the bridge between human-readable specifications and machine-verifiable correctness guarantees.

Property Reflection

After reviewing the acceptance criteria, several properties can be consolidated:

  • Multiple criteria test similar text display functionality (page titles, labels, messages)
  • Navigation and routing properties can be combined into comprehensive tests
  • Terminology consistency can be verified through systematic text validation

Property 1: Navigation displays recovery terminology For any admin user viewing the navigation menu, the menu should display "Recovery Management" and not display "Deleted Items" Validates: Requirements 1.1

Property 2: Navigation functionality preserved For any valid navigation interaction, clicking the recovery management menu item should navigate to the correct interface and maintain existing route functionality Validates: Requirements 1.2, 1.3

Property 3: Page content uses recovery terminology For any text element on the recovery management page, the content should use recovery-focused language and not contain deletion-focused terms Validates: Requirements 1.4, 2.2, 2.5, 3.2, 3.3, 3.4, 3.5

Property 4: API endpoints remain functional For any existing API endpoint used by the recovery management system, the endpoint should continue to return expected responses with unchanged functionality Validates: Requirements 4.2, 4.3

Property 5: Permanent deletion removes all related data For any soft-deleted item that is permanently deleted, all associated database records and files should be completely removed from the system Validates: Requirements 6.4, 7.1, 7.2, 7.3, 7.4

Property 6: Permanent deletion is transactional For any permanent deletion operation, either all related data is successfully removed or the entire operation is rolled back with no partial deletions Validates: Requirements 8.1, 8.4

Property 7: Permanent delete actions are available For any soft-deleted item displayed in the recovery interface, permanent delete actions should be available both individually and for bulk operations Validates: Requirements 6.1, 6.2

Property 8: Permanent deletion requires confirmation For any permanent deletion operation, a confirmation dialog with data loss warnings should be displayed before proceeding Validates: Requirements 6.3

Property 9: Permanent deletion provides feedback For any completed permanent deletion operation, the system should display success messages and update the interface to reflect the changes Validates: Requirements 6.5, 8.3

Error Handling

Error handling remains unchanged from the existing implementation:

  • Network Errors: Maintain existing error messages with updated terminology
  • Authentication Errors: Preserve existing auth error handling
  • Permission Errors: Keep existing permission validation
  • Data Loading Errors: Update error messages to use recovery terminology
  • Recovery Operation Errors: Maintain existing error handling with terminology updates

Testing Strategy

Unit Testing Approach

Unit tests will focus on:

  • Text Content Verification: Test that components render correct terminology
  • Navigation Behavior: Verify navigation items work correctly
  • Route Preservation: Ensure existing routes continue to function
  • Component Props: Verify component interfaces remain unchanged

Property-Based Testing Approach

Property-based tests will use Vitest with fast-check for JavaScript/TypeScript property testing. Each property-based test will run a minimum of 100 iterations.

Property Test Requirements:

  • Each property-based test must be tagged with a comment referencing the design document property
  • Tag format: **Feature: recovery-management-rename, Property {number}: {property_text}**
  • Tests will generate various UI states and verify terminology consistency
  • Navigation tests will verify route functionality across different scenarios

Dual Testing Approach:

  • Unit tests will verify specific examples of correct terminology display
  • Property tests will verify universal properties hold across all UI states
  • Together they provide comprehensive coverage: unit tests catch specific text issues, property tests verify systematic terminology consistency

Test Configuration

  • Framework: Vitest for unit and property-based testing
  • Property Testing Library: fast-check for generating test scenarios
  • Minimum Iterations: 100 iterations per property-based test
  • Coverage: Focus on UI text content, navigation behavior, and API compatibility