@agility/cli
Version:
Agility CLI for working with your content. (Public Beta)
202 lines (155 loc) • 7.14 kB
Markdown
# Cross-Service Dependencies Analysis - Phase 19.2
## 🔄 **SERVICE DEPENDENCY MATRIX**
### **🎯 KEY FINDINGS:**
1. **Heavy Cross-Service Usage**: Many services depend on AssetReferenceExtractor, ContainerReferenceExtractor, and DependencyFinder
2. **Utility Services are Heavily Used**: Extractor services are used by multiple analyzer services
3. **ComprehensiveAnalysisRunner Methods**: Only `runComprehensiveAnalysis()` is called externally
4. **Dependency Injection Pattern**: Services initialize their dependencies properly
## 📊 **Cross-Service Method Usage**
### **1. AssetReferenceExtractor** (Heavily Used Utility Service)
```
USED BY:
📦 ContainerChainAnalyzer:
- this.assetExtractor.showContentAssetDependencies() - Line 197
- this.assetExtractor.extractAssetReferences() - Line 170
🔍 DependencyFinder:
- this.assetExtractor.findMissingAssetsForContent() - Lines 112, 158, 211
📊 NonChainedItemsAnalyzer:
- this.assetExtractor.extractAssetReferences() - Lines 226, 273
📄 PageChainAnalyzer:
- this.assetExtractor.showContentAssetDependencies() - Line 172
CROSS-SERVICE USAGE: ✅ HIGH (4 services depend on it)
REMOVAL IMPACT: ❌ CANNOT REMOVE - Critical utility service
```
### **2. ContainerReferenceExtractor** (Heavily Used Utility Service)
```
USED BY:
📐 ModelChainAnalyzer:
- this.containerExtractor.collectContainersFromPageZones() - Line 105
- this.containerExtractor.extractNestedContainerReferences() - Line 141
🔍 DependencyFinder:
- this.containerExtractor.extractNestedContainerReferences() - Lines 148, 201
📦 ContainerChainAnalyzer:
- this.containerExtractor.collectContainersFromPageZones() - Line 60
- this.containerExtractor.extractNestedContainerReferences() - Line 131
🔴 BrokenChainDetector:
- this.containerExtractor.collectContainersFromPageZones() - Line 59
🔍 ReconciliationReporter:
- this.containerExtractor.collectContainersFromPageZones() - Line 151
📊 NonChainedItemsAnalyzer:
- this.containerExtractor.collectContainersFromPageZones() - Line 244
METHODS CALLED CROSS-SERVICE:
✅ collectContainersFromPageZones() - called by 5 services
✅ extractNestedContainerReferences() - called by 3 services
🗑️ getContainerIdsFromPageZones() - UNUSED across all services
🗑️ findMissingContainerDependencies() - UNUSED across all services
CROSS-SERVICE USAGE: ✅ VERY HIGH (6 services depend on it)
REMOVAL IMPACT: Only 2 unused methods can be removed
```
### **3. DependencyFinder** (Heavily Used Utility Service)
```
USED BY:
📦 ContainerChainAnalyzer:
- this.dependencyFinder.findMissingDependenciesForContainer() - Line 77
🔴 BrokenChainDetector:
- this.dependencyFinder.findMissingDependenciesForContainer() - Line 68
- this.dependencyFinder.findMissingDependenciesForModel() - Line 82
🔍 ReconciliationReporter:
- this.dependencyFinder.findMissingDependenciesForPage() - Line 139
- this.dependencyFinder.findMissingDependenciesForContainer() - Line 160
- this.dependencyFinder.findMissingDependenciesForModel() - Line 174
📄 PageChainAnalyzer:
- this.dependencyFinder.findMissingDependenciesForPage() - Line 187
CROSS-SERVICE USAGE: ✅ HIGH (4 services depend on it)
REMOVAL IMPACT: ❌ CANNOT REMOVE - Critical dependency validation service
```
### **4. ModelChainAnalyzer** (Used by Other Analyzers)
```
USED BY:
🔴 BrokenChainDetector:
- this.modelAnalyzer.findModelToModelChains() - Line 80
- this.modelAnalyzer.collectModelsFromPageChains() - Line 151
🔍 ReconciliationReporter:
- this.modelAnalyzer.findModelToModelChains() - Line 172
- this.modelAnalyzer.collectModelsFromPageChains() - Line 191
📊 NonChainedItemsAnalyzer:
- this.modelAnalyzer.findModelToModelChains() - Line 287
- this.modelAnalyzer.collectModelsFromPageChains() - Line 310
CROSS-SERVICE USAGE: ✅ MEDIUM (3 services depend on it)
REMOVAL IMPACT: ❌ CANNOT REMOVE - Core analyzer service
```
### **5. NonChainedItemsAnalyzer** (Used by ReconciliationReporter)
```
USED BY:
🔍 ReconciliationReporter:
- this.nonChainedAnalyzer.collectAllEntitiesInChains() - Line 77
CROSS-SERVICE USAGE: ✅ LOW (1 service depends on it)
REMOVAL IMPACT: ❌ CANNOT REMOVE - Method is used
```
## 🏃 **ComprehensiveAnalysisRunner Method Usage**
### **External Usage Analysis:**
```
✅ runComprehensiveAnalysis() - called by TwoPassSync.syncInstance()
🗑️ runStep() - NEVER called externally
🗑️ runSteps() - NEVER called externally
🗑️ getCoordinator() - NEVER called externally
ADDITIONAL REMOVAL CANDIDATES:
🗑️ ComprehensiveAnalysisRunner.runStep()
🗑️ ComprehensiveAnalysisRunner.runSteps()
🗑️ ComprehensiveAnalysisRunner.getCoordinator()
```
### **AnalysisStepCoordinator Method Usage:**
```
✅ executeStep() - called by ComprehensiveAnalysisRunner
✅ registerService() - called by ComprehensiveAnalysisRunner
✅ initialize() - called by ComprehensiveAnalysisRunner
🗑️ executeSteps() - NEVER called
🗑️ getRegisteredSteps() - NEVER called
🗑️ hasStep() - NEVER called
🗑️ executeAllSteps() - NEVER called
ADDITIONAL REMOVAL CANDIDATES:
🗑️ AnalysisStepCoordinator.executeSteps()
🗑️ AnalysisStepCoordinator.getRegisteredSteps()
🗑️ AnalysisStepCoordinator.hasStep()
🗑️ AnalysisStepCoordinator.executeAllSteps()
```
## 🗑️ **UPDATED REMOVAL TARGET LIST**
### **Service Methods (Previously Identified):**
1. `PageChainAnalyzer.isPageBroken()`
2. `PageChainAnalyzer.showPageDependencyHierarchy()`
3. `ContainerReferenceExtractor.getContainerIdsFromPageZones()`
4. `ContainerReferenceExtractor.findMissingContainerDependencies()`
5. `SourceDataLoader.loadSourceData()`
6. `SourceDataLoader.hasNoContent()`
7. `SourceDataLoader.validateRequiredEntities()`
### **Coordinator/Runner Methods (Newly Identified):**
8. `ComprehensiveAnalysisRunner.runStep()`
9. `ComprehensiveAnalysisRunner.runSteps()`
10. `ComprehensiveAnalysisRunner.getCoordinator()`
11. `AnalysisStepCoordinator.executeSteps()`
12. `AnalysisStepCoordinator.getRegisteredSteps()`
13. `AnalysisStepCoordinator.hasStep()`
14. `AnalysisStepCoordinator.executeAllSteps()`
### **🎯 TOTAL REMOVAL TARGETS: 14 methods**
## ⚠️ **SERVICES THAT CANNOT BE REMOVED**
### **Critical Utility Services:**
- **AssetReferenceExtractor**: Used by 4 services
- **ContainerReferenceExtractor**: Used by 6 services
- **DependencyFinder**: Used by 4 services
- **ModelChainAnalyzer**: Used by 3 services
- **NonChainedItemsAnalyzer**: Used by 1 service (ReconciliationReporter)
### **Chain Analysis Services:**
All chain analysis services are registered with the coordinator and cannot be removed.
## 📈 **REVISED CLEANUP IMPACT**
### **Total Methods for Removal: 14**
- **Service utility methods**: 7 methods
- **Coordinator/Runner methods**: 7 methods
- **Estimated line reduction**: 300-500 lines
- **SourceDataLoader**: Entire service still removable (153 lines)
### **Cross-Service Dependencies Preserved:**
All critical utility services and their used methods will be preserved to maintain service coordination.