147 lines
5.5 KiB
Markdown
147 lines
5.5 KiB
Markdown
# Refactoring Status - Modular Architecture
|
|
|
|
## ✅ Completed
|
|
|
|
### Core Infrastructure
|
|
- [x] Created `core/` directory structure
|
|
- [x] Created `core/modifiers.py` - All dataclass definitions (11 types)
|
|
- [x] Created `core/orchestrator.py` - Main PromptOrchestrator with lazy loading
|
|
- [x] Created `core/__init__.py` - Module exports
|
|
|
|
### Modifiers Infrastructure
|
|
- [x] Created `modifiers/` directory structure
|
|
- [x] Created `modifiers/__init__.py` - Module definition
|
|
- [x] Created `modifiers/lighting_modifiers.py` - 20 lighting modifiers (COMPLETE)
|
|
- [x] Created `modifiers/seasonal_modifiers.py` - 20 seasonal modifiers (COMPLETE)
|
|
- [x] Created `modifiers/location_modifiers.py` - 20 location modifiers (COMPLETE)
|
|
|
|
### Nodes Infrastructure
|
|
- [x] Created `nodes/` directory structure (ready for node files)
|
|
|
|
## 🚧 In Progress / To Do
|
|
|
|
### Remaining Modifier Files (8 new types - 160 modifiers total)
|
|
- [ ] `modifiers/weather_modifiers.py` - 20 weather conditions
|
|
- [ ] `modifiers/mood_modifiers.py` - 20 mood/atmosphere settings
|
|
- [ ] `modifiers/camera_modifiers.py` - 20 camera techniques
|
|
- [ ] `modifiers/color_grading_modifiers.py` - 20 color grades
|
|
- [ ] `modifiers/action_modifiers.py` - 20 action states
|
|
- [ ] `modifiers/era_modifiers.py` - 20 time periods
|
|
- [ ] `modifiers/detail_modifiers.py` - 20 detail levels
|
|
- [ ] `modifiers/composition_modifiers.py` - 20 composition techniques
|
|
|
|
### Node Files (Split from prompt_orchestration_nodes.py)
|
|
- [ ] `nodes/__init__.py` - Node registration
|
|
- [ ] `nodes/lighting_node.py` - Lighting modifier node
|
|
- [ ] `nodes/seasonal_node.py` - Seasonal modifier node
|
|
- [ ] `nodes/location_node.py` - Location modifier node
|
|
- [ ] `nodes/style_node.py` - Style transform node
|
|
- [ ] `nodes/batch_node.py` - Batch variation node
|
|
- [ ] `nodes/utility_nodes.py` - Combiner, Info, Random, etc.
|
|
- [ ] Plus 8 new node files for new modifiers
|
|
|
|
### Integration & Testing
|
|
- [ ] Update main `__init__.py` to use new modular structure
|
|
- [ ] Test existing nodes work with new structure
|
|
- [ ] Create test files for new modules
|
|
- [ ] Backward compatibility verification
|
|
- [ ] Performance testing (lazy loading benefits)
|
|
|
|
### Documentation
|
|
- [ ] Update README with new structure
|
|
- [ ] Create ARCHITECTURE.md explaining modular design
|
|
- [ ] Update NODE_REFERENCE.md with new nodes
|
|
- [ ] Migration guide for users
|
|
|
|
### Cleanup
|
|
- [ ] Archive old `prompt_orchestrator.py` (after migration)
|
|
- [ ] Archive old `prompt_orchestration_nodes.py` (after migration)
|
|
- [ ] Remove duplicate code
|
|
- [ ] Final validation
|
|
|
|
## Benefits Achieved So Far
|
|
|
|
✅ **Maintainability**: Each modifier type in its own ~60-line file instead of 1000+ line monolith
|
|
✅ **Performance**: Lazy loading means only used modifiers are loaded
|
|
✅ **Clarity**: Clear separation of concerns
|
|
✅ **Scalability**: Easy to add new modifier types
|
|
|
|
## Next Steps - Recommendation
|
|
|
|
### Option A: Complete Implementation (Full 8 new node types)
|
|
Continue implementing all 8 new modifier files and their corresponding nodes. This adds 160 modifiers across all variation dimensions.
|
|
|
|
**Time**: ~2-3 hours
|
|
**Benefit**: Complete system with all variation dimensions
|
|
|
|
### Option B: Test & Validate Current Structure (Recommended)
|
|
1. Create nodes for existing 3 modifiers (lighting, seasonal, location)
|
|
2. Update main `__init__.py` to use new structure
|
|
3. Test in ComfyUI to ensure everything works
|
|
4. Then proceed with remaining 8 new types
|
|
|
|
**Time**: ~30 minutes
|
|
**Benefit**: Validate architecture before continuing
|
|
|
|
### Option C: Incremental Phases
|
|
1. **Phase 1**: Weather + Mood (40 modifiers) - Most requested
|
|
2. **Phase 2**: Camera + Color (40 modifiers) - Professional tools
|
|
3. **Phase 3**: Action + Era (40 modifiers) - Narrative
|
|
4. **Phase 4**: Detail + Composition (40 modifiers) - Advanced
|
|
|
|
**Time**: ~30 minutes per phase
|
|
**Benefit**: Gradual rollout with testing between phases
|
|
|
|
## Current File Structure
|
|
|
|
```
|
|
ComfyUI_Variationator/
|
|
├── core/
|
|
│ ├── __init__.py ✅
|
|
│ ├── modifiers.py ✅ (11 dataclasses)
|
|
│ └── orchestrator.py ✅ (Lazy loading orchestrator)
|
|
├── modifiers/
|
|
│ ├── __init__.py ✅
|
|
│ ├── lighting_modifiers.py ✅ (20 modifiers)
|
|
│ ├── seasonal_modifiers.py ✅ (20 modifiers)
|
|
│ ├── location_modifiers.py ✅ (20 modifiers)
|
|
│ └── [8 more files pending]
|
|
├── nodes/
|
|
│ └── [All node files pending]
|
|
├── __init__.py (needs update)
|
|
├── batch_processor.py (keep as-is)
|
|
├── prompt_orchestrator.py (to be archived)
|
|
└── prompt_orchestration_nodes.py (to be archived)
|
|
```
|
|
|
|
## Architecture Highlights
|
|
|
|
### Lazy Loading Pattern
|
|
```python
|
|
@property
|
|
def weather_modifiers(self):
|
|
if self._weather_modifiers is None:
|
|
from modifiers.weather_modifiers import get_weather_modifiers
|
|
self._weather_modifiers = {m.id: m for m in get_weather_modifiers()}
|
|
return self._weather_modifiers
|
|
```
|
|
|
|
This means modifiers are only loaded when actually used, improving startup time.
|
|
|
|
### Clean Separation
|
|
- **Core**: Base classes and orchestration logic
|
|
- **Modifiers**: Pure data (modifier definitions)
|
|
- **Nodes**: ComfyUI integration layer
|
|
|
|
### Easy Extension
|
|
Adding a new node type requires:
|
|
1. Create `modifiers/new_type_modifiers.py` with 20 modifiers
|
|
2. Add property to `core/orchestrator.py` for lazy loading
|
|
3. Create `nodes/new_type_node.py` for ComfyUI integration
|
|
4. Register in `nodes/__init__.py`
|
|
|
|
---
|
|
|
|
**Last Updated**: 2025-11-24
|
|
**Status**: Core infrastructure complete, migration in progress
|