8.5 KiB
Implementation Plan
-
1. Database Schema and Index Optimization
- Create database indexes to optimize task status queries for shots and assets
- Add composite indexes for common query patterns (shot_id + status, asset_id + status)
- Test index performance with sample data
- Requirements: 3.1, 3.2
-
* 1.1 Write property test for database index performance
- Property 7: Scalable Query Performance
- Validates: Requirements 3.2
-
2. Backend Shot Router Optimization
- Replace N+1 query pattern in
list_shots()endpoint with single JOIN query - Modify shot query to include task status aggregation using SQLAlchemy joins
- Update
get_shot()endpoint to fetch task data in single query - Ensure backward compatibility with existing response format
- Requirements: 1.1, 1.3, 3.1
- Replace N+1 query pattern in
-
* 2.1 Write property test for single query shot data fetching
- Property 1: Single Query Data Fetching
- Validates: Requirements 1.1
-
* 2.2 Write property test for complete shot task status aggregation
- Property 3: Complete Task Status Aggregation
- Validates: Requirements 1.3
-
3. Backend Asset Router Optimization
- Replace N+1 query pattern in
list_assets()endpoint with single JOIN query - Modify asset query to include task status aggregation using SQLAlchemy joins
- Update
get_asset()endpoint to fetch task data in single query - Ensure backward compatibility with existing response format
- Requirements: 2.1, 2.3, 3.1
- Replace N+1 query pattern in
-
* 3.1 Write property test for single query asset data fetching
- Property 1: Single Query Data Fetching
- Validates: Requirements 2.1
-
* 3.2 Write property test for complete asset task status aggregation
- Property 3: Complete Task Status Aggregation
- Validates: Requirements 2.3
-
4. Backend Custom Status Support
- Ensure optimized queries include both default and custom task statuses
- Test with projects that have custom task statuses defined
- Verify aggregated data includes all status types
- Requirements: 1.4, 2.4
-
* 4.1 Write property test for custom status support
- Property 4: Custom Status Support
- Validates: Requirements 1.4, 2.4
-
5. Backend Performance Validation
- Test optimized queries with datasets of 100+ shots/assets
- Measure query execution time and ensure sub-500ms performance
- Validate database-level aggregation is being used
- Requirements: 1.5, 2.5, 3.5
-
* 5.1 Write property test for performance threshold compliance
- Property 5: Performance Threshold Compliance
- Validates: Requirements 1.5, 2.5
-
* 5.2 Write property test for database-level aggregation
- Property 10: Database-Level Aggregation
- Validates: Requirements 3.5
-
6. Checkpoint - Backend Optimization Complete
- Ensure all backend tests pass, ask the user if questions arise.
-
7. Frontend ShotDetailPanel Component Optimization
- Modify
ShotDetailPanel.vueto use embeddedtask_detailsdata - Remove redundant
taskService.getTasks({ shotId })API call - Update
loadTasks()function to use shot.task_details - Test component functionality with embedded data
- Requirements: 1.2, 4.4
- Modify
-
* 7.1 Write property test for API call efficiency
- Property 2: API Call Efficiency
- Validates: Requirements 1.2
-
8. Frontend AssetDetailPanel Component Optimization
- Modify
AssetDetailPanel.vueto use embeddedtask_detailsdata (if component exists) - Remove redundant
taskService.getTasks({ assetId })API call - Update
loadTasks()function to use asset.task_details - Test component functionality with embedded data
- Requirements: 2.2, 4.4
- Modify
-
9. Frontend TaskBrowser Component Optimization
- Modify
TaskBrowser.vueto extract tasks from shot/asset embedded data - Replace separate
taskService.getTasks()call with shot/asset data extraction - Update
fetchTasks()to use Promise.all for shots and assets - Combine task data from both shots and assets
- Requirements: 1.2, 2.2, 4.4
- Modify
-
10. Frontend TasksStore Optimization
- Modify
TasksStore.tsto use embedded task data from shots/assets - Update
fetchTasks()method to get data from shot/asset services - Combine task data from both shots and assets into single array
- Maintain existing store interface and computed properties
- Requirements: 1.2, 2.2, 4.4
- Modify
-
* 10.1 Write property test for table-optimized data format
- Property 13: Table-Optimized Data Format
- Validates: Requirements 4.4
-
11. Frontend Custom Task Status Optimization
- Create shared store/cache for custom task statuses to eliminate N+1 API calls
- Modify EditableTaskStatus components to use cached custom status data
- Implement single API call per project for custom task statuses
- Update all components that call
customTaskStatusService.getAllStatuses() - Requirements: 1.2, 2.2, 4.4
-
* 11.1 Write property test for custom status API call optimization
- Property 2: API Call Efficiency (Custom Status Variant)
- Validates: Requirements 1.2, 2.2
-
12. Frontend Response Format Validation
- Verify all optimized endpoints return embedded task_statuses field
- Ensure task status data includes task type, status, assignee, and updated info
- Test frontend components can consume optimized data format
- Requirements: 4.1, 4.2, 4.3
-
* 12.1 Write property test for embedded task status response
- Property 11: Embedded Task Status Response
- Validates: Requirements 4.1, 4.2
-
* 12.2 Write property test for complete task status information
- Property 12: Complete Task Status Information
- Validates: Requirements 4.3
-
13. Backward Compatibility Testing
- Run existing API tests against optimized backend
- Verify existing frontend components work with optimized data
- Test legacy task query endpoints still function
- Ensure no breaking changes in response formats
- Requirements: 5.1, 5.2, 5.3
-
* 13.1 Write property test for backward compatibility preservation
- Property 15: Backward Compatibility Preservation
- Validates: Requirements 5.1
-
* 13.2 Write property test for legacy query support
- Property 16: Legacy Query Support
- Validates: Requirements 5.2
-
* 13.3 Write property test for frontend component compatibility
- Property 17: Frontend Component Compatibility
- Validates: Requirements 5.3
-
14. Data Consistency and Real-time Updates
- Implement data consistency checks between individual task updates and aggregated views
- Test real-time update propagation to aggregated data
- Ensure task status changes reflect in embedded data
- Requirements: 3.3, 4.5
-
* 14.1 Write property test for data consistency maintenance
- Property 8: Data Consistency Maintenance
- Validates: Requirements 3.3
-
* 14.2 Write property test for real-time aggregated updates
- Property 14: Real-Time Aggregated Updates
- Validates: Requirements 4.5
-
15. Dynamic Task Type Support
- Test that new task types are automatically included in aggregated queries
- Verify custom task types appear in optimized responses
- Test with projects that add new task types after optimization
- Requirements: 3.4
-
* 15.1 Write property test for dynamic task type inclusion
- Property 9: Dynamic Task Type Inclusion
- Validates: Requirements 3.4
-
16. Configuration and Deployment Options
- Add optional configuration to enable/disable optimized queries
- Implement fallback to legacy query patterns if needed
- Create deployment configuration for testing purposes
- Requirements: 5.5
-
* 16.1 Write property test for configuration flexibility
- Property 19: Configuration Flexibility
- Validates: Requirements 5.5
-
17. Integration Testing and Performance Validation
- Test end-to-end performance with 100+ shots and assets
- Measure total page load time improvements
- Validate network request reduction in browser dev tools
- Test concurrent user scenarios
- Requirements: 1.5, 2.5
-
* 17.1 Write property test for optimized SQL join usage
- Property 6: Optimized SQL Join Usage
- Validates: Requirements 3.1
-
18. Final Checkpoint - Complete System Validation
- Ensure all tests pass, ask the user if questions arise.
- Verify both backend and frontend optimizations work together
- Confirm performance improvements meet requirements
- Validate backward compatibility is maintained