262 lines
8.5 KiB
Markdown
262 lines
8.5 KiB
Markdown
# Implementation Plan
|
|
|
|
- [x] 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**
|
|
|
|
- [x] 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_
|
|
|
|
- [ ]* 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**
|
|
|
|
- [x] 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_
|
|
|
|
- [ ]* 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**
|
|
|
|
- [x] 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.
|
|
|
|
- [x] 7. Frontend ShotDetailPanel Component Optimization
|
|
|
|
|
|
|
|
|
|
|
|
- Modify `ShotDetailPanel.vue` to use embedded `task_details` data
|
|
- 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_
|
|
|
|
- [ ]* 7.1 Write property test for API call efficiency
|
|
- **Property 2: API Call Efficiency**
|
|
- **Validates: Requirements 1.2**
|
|
|
|
- [x] 8. Frontend AssetDetailPanel Component Optimization
|
|
|
|
|
|
|
|
|
|
|
|
- Modify `AssetDetailPanel.vue` to use embedded `task_details` data (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_
|
|
|
|
- [x] 9. Frontend TaskBrowser Component Optimization
|
|
|
|
|
|
|
|
|
|
|
|
- Modify `TaskBrowser.vue` to 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_
|
|
|
|
- [x] 10. Frontend TasksStore Optimization
|
|
|
|
|
|
|
|
|
|
|
|
- Modify `TasksStore.ts` to 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_
|
|
|
|
- [ ]* 10.1 Write property test for table-optimized data format
|
|
- **Property 13: Table-Optimized Data Format**
|
|
- **Validates: Requirements 4.4**
|
|
|
|
- [x] 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**
|
|
|
|
- [x] 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**
|
|
|
|
- [x] 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**
|
|
|
|
- [x] 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 |