Refactor domain structure to business layer
- Renamed `domain/` to `business/` to better reflect the organization of code by business logic. - Updated all relevant file paths and references throughout the project to align with the new structure. - Ensured that all models and services are now located under the `business/` directory, maintaining existing functionality while improving clarity.
This commit is contained in:
@@ -72,7 +72,7 @@
|
||||
|
||||
| Task | Files | Dependencies | Risk |
|
||||
|------|-------|--------------|------|
|
||||
| **Add Module Enable/Disable** | `domain/system/models.py` | EXISTING (ModuleSettings) | LOW - Extend existing |
|
||||
| **Add Module Enable/Disable** | `business/system/models.py` | EXISTING (ModuleSettings) | LOW - Extend existing |
|
||||
| **Module Settings API** | `modules/system/views.py` | EXISTING | LOW - Extend existing |
|
||||
| **Module Settings UI** | `frontend/src/pages/Settings/Modules.tsx` | EXISTING (placeholder) | LOW - Implement UI |
|
||||
| **Frontend Module Loader** | `frontend/src/config/modules.config.ts` | None | MEDIUM - Conditional loading |
|
||||
@@ -100,18 +100,18 @@
|
||||
|------|-------|--------------|------|
|
||||
| **Remove Plan Limit Fields** | `core/auth/models.py` | None | LOW - Add migration to set defaults |
|
||||
| **Update Plan Model** | `core/auth/models.py` | None | LOW - Keep only monthly_credits, support_level |
|
||||
| **Update CreditService** | `domain/billing/services/credit_service.py` | None | MEDIUM - Add credit cost constants |
|
||||
| **Add Credit Costs** | `domain/billing/constants.py` | None | LOW - Define credit costs per operation |
|
||||
| **Update CreditService** | `business/billing/services/credit_service.py` | None | MEDIUM - Add credit cost constants |
|
||||
| **Add Credit Costs** | `business/billing/constants.py` | None | LOW - Define credit costs per operation |
|
||||
| **Update AI Engine** | `infrastructure/ai/engine.py` | CreditService | MEDIUM - Check credits before AI calls |
|
||||
| **Update Content Generation** | `domain/content/services/` | CreditService | MEDIUM - Check credits before generation |
|
||||
| **Update Content Generation** | `business/content/services/` | CreditService | MEDIUM - Check credits before generation |
|
||||
| **Update Image Generation** | `infrastructure/ai/functions/generate_images.py` | CreditService | MEDIUM - Check credits before generation |
|
||||
| **Remove Limit Checks** | All services | None | MEDIUM - Remove all plan limit validations |
|
||||
| **Update Usage Logging** | `domain/billing/models.py` | None | LOW - Ensure all operations log credits |
|
||||
| **Update Usage Logging** | `business/billing/models.py` | None | LOW - Ensure all operations log credits |
|
||||
| **Update Frontend Limits UI** | `frontend/src/pages/Billing/` | Backend API | LOW - Replace limits with credit display |
|
||||
|
||||
**Credit Cost Constants**:
|
||||
```python
|
||||
# domain/billing/constants.py
|
||||
# business/billing/constants.py
|
||||
CREDIT_COSTS = {
|
||||
'clustering': 10,
|
||||
'idea_generation': 15,
|
||||
@@ -156,16 +156,16 @@ CREDIT_COSTS = {
|
||||
|
||||
**Goal**: Extract business logic from ViewSets into services, preserving all existing functionality.
|
||||
|
||||
### 1.1 Create Domain Structure
|
||||
### 1.1 Create Business Structure
|
||||
|
||||
| Task | Files | Dependencies |
|
||||
|------|-------|--------------|
|
||||
| **Create domain/ folder** | `backend/igny8_core/domain/` | None |
|
||||
| **Move Content models** | `domain/content/models.py` | Phase 0 |
|
||||
| **Move Planning models** | `domain/planning/models.py` | Phase 0 |
|
||||
| **Create ContentService** | `domain/content/services/content_generation_service.py` | Existing Writer logic |
|
||||
| **Create PlanningService** | `domain/planning/services/clustering_service.py` | Existing Planner logic |
|
||||
| **Create IdeasService** | `domain/planning/services/ideas_service.py` | Existing Planner logic |
|
||||
| **Create business/ folder** | `backend/igny8_core/business/` | None |
|
||||
| **Move Content models** | `business/content/models.py` | Phase 0 |
|
||||
| **Move Planning models** | `business/planning/models.py` | Phase 0 |
|
||||
| **Create ContentService** | `business/content/services/content_generation_service.py` | Existing Writer logic |
|
||||
| **Create PlanningService** | `business/planning/services/clustering_service.py` | Existing Planner logic |
|
||||
| **Create IdeasService** | `business/planning/services/ideas_service.py` | Existing Planner logic |
|
||||
|
||||
### 1.2 Refactor ViewSets (Keep APIs Working)
|
||||
|
||||
@@ -199,18 +199,18 @@ CREDIT_COSTS = {
|
||||
|
||||
| Task | Files | Dependencies |
|
||||
|------|-------|--------------|
|
||||
| **AutomationRule Model** | `domain/automation/models.py` | Phase 1 |
|
||||
| **ScheduledTask Model** | `domain/automation/models.py` | Phase 1 |
|
||||
| **Automation Migrations** | `domain/automation/migrations/` | Phase 1 |
|
||||
| **AutomationRule Model** | `business/automation/models.py` | Phase 1 |
|
||||
| **ScheduledTask Model** | `business/automation/models.py` | Phase 1 |
|
||||
| **Automation Migrations** | `business/automation/migrations/` | Phase 1 |
|
||||
|
||||
### 2.2 Automation Service
|
||||
|
||||
| Task | Files | Dependencies |
|
||||
|------|-------|--------------|
|
||||
| **AutomationService** | `domain/automation/services/automation_service.py` | Phase 1 services |
|
||||
| **Rule Execution Engine** | `domain/automation/services/rule_engine.py` | Phase 1 services |
|
||||
| **Condition Evaluator** | `domain/automation/services/condition_evaluator.py` | None |
|
||||
| **Action Executor** | `domain/automation/services/action_executor.py` | Phase 1 services |
|
||||
| **AutomationService** | `business/automation/services/automation_service.py` | Phase 1 services |
|
||||
| **Rule Execution Engine** | `business/automation/services/rule_engine.py` | Phase 1 services |
|
||||
| **Condition Evaluator** | `business/automation/services/condition_evaluator.py` | None |
|
||||
| **Action Executor** | `business/automation/services/action_executor.py` | Phase 1 services |
|
||||
|
||||
### 2.3 Celery Beat Tasks
|
||||
|
||||
@@ -256,8 +256,8 @@ CREDIT_COSTS = {
|
||||
|
||||
| Task | Files | Dependencies |
|
||||
|------|-------|--------------|
|
||||
| **Site File Management Service** | `domain/site_building/services/file_management_service.py` | Phase 1 |
|
||||
| **User Site Access Check** | `domain/site_building/services/file_management_service.py` | EXISTING (SiteUserAccess) |
|
||||
| **Site File Management Service** | `business/site_building/services/file_management_service.py` | Phase 1 |
|
||||
| **User Site Access Check** | `business/site_building/services/file_management_service.py` | EXISTING (SiteUserAccess) |
|
||||
| **File Upload API** | `modules/site_builder/views.py` | File Management Service |
|
||||
| **File Browser UI** | `site-builder/src/components/files/FileBrowser.tsx` | NEW |
|
||||
| **Storage Quota Check** | `infrastructure/storage/file_storage.py` | Phase 1 |
|
||||
@@ -286,16 +286,16 @@ CREDIT_COSTS = {
|
||||
|
||||
| Task | Files | Dependencies |
|
||||
|------|-------|--------------|
|
||||
| **SiteBlueprint Model** | `domain/site_building/models.py` | Phase 1 |
|
||||
| **PageBlueprint Model** | `domain/site_building/models.py` | Phase 1 |
|
||||
| **Site Builder Migrations** | `domain/site_building/migrations/` | Phase 1 |
|
||||
| **SiteBlueprint Model** | `business/site_building/models.py` | Phase 1 |
|
||||
| **PageBlueprint Model** | `business/site_building/models.py` | Phase 1 |
|
||||
| **Site Builder Migrations** | `business/site_building/migrations/` | Phase 1 |
|
||||
|
||||
### 3.2 Site Structure Generation
|
||||
|
||||
| Task | Files | Dependencies |
|
||||
|------|-------|--------------|
|
||||
| **Structure Generation AI Function** | `infrastructure/ai/functions/generate_site_structure.py` | Existing AI framework |
|
||||
| **Structure Generation Service** | `domain/site_building/services/structure_generation_service.py` | Phase 1, AI framework |
|
||||
| **Structure Generation Service** | `business/site_building/services/structure_generation_service.py` | Phase 1, AI framework |
|
||||
| **Site Structure Prompts** | `infrastructure/ai/prompts.py` | Existing prompt system |
|
||||
|
||||
### 3.3 Site Builder API
|
||||
@@ -361,8 +361,8 @@ frontend/src/components/shared/
|
||||
|
||||
| Task | Files | Dependencies |
|
||||
|------|-------|--------------|
|
||||
| **Extend ContentService** | `domain/content/services/content_generation_service.py` | Phase 1 |
|
||||
| **Add Site Page Type** | `domain/content/models.py` | Phase 1 |
|
||||
| **Extend ContentService** | `business/content/services/content_generation_service.py` | Phase 1 |
|
||||
| **Add Site Page Type** | `business/content/models.py` | Phase 1 |
|
||||
| **Page Generation Prompts** | `infrastructure/ai/prompts.py` | Existing prompt system |
|
||||
|
||||
### 3.6 Testing
|
||||
@@ -437,11 +437,11 @@ Entry Point 4: Manual Selection → Linker/Optimizer
|
||||
|
||||
| Task | Files | Dependencies |
|
||||
|------|-------|--------------|
|
||||
| **Add source field** | `domain/content/models.py` | Phase 1 |
|
||||
| **Add sync_status field** | `domain/content/models.py` | Phase 1 |
|
||||
| **Add external_id field** | `domain/content/models.py` | Phase 1 |
|
||||
| **Add sync_metadata field** | `domain/content/models.py` | Phase 1 |
|
||||
| **Content Migrations** | `domain/content/migrations/` | Phase 1 |
|
||||
| **Add source field** | `business/content/models.py` | Phase 1 |
|
||||
| **Add sync_status field** | `business/content/models.py` | Phase 1 |
|
||||
| **Add external_id field** | `business/content/models.py` | Phase 1 |
|
||||
| **Add sync_metadata field** | `business/content/models.py` | Phase 1 |
|
||||
| **Content Migrations** | `business/content/migrations/` | Phase 1 |
|
||||
|
||||
**Content Model Extensions**:
|
||||
```python
|
||||
@@ -481,26 +481,26 @@ class Content(SiteSectorBaseModel):
|
||||
|
||||
| Task | Files | Dependencies |
|
||||
|------|-------|--------------|
|
||||
| **InternalLink Model** | `domain/linking/models.py` | Phase 1 |
|
||||
| **LinkGraph Model** | `domain/linking/models.py` | Phase 1 |
|
||||
| **Linker Migrations** | `domain/linking/migrations/` | Phase 1 |
|
||||
| **InternalLink Model** | `business/linking/models.py` | Phase 1 |
|
||||
| **LinkGraph Model** | `business/linking/models.py` | Phase 1 |
|
||||
| **Linker Migrations** | `business/linking/migrations/` | Phase 1 |
|
||||
|
||||
### 4.3 Linker Service
|
||||
|
||||
| Task | Files | Dependencies |
|
||||
|------|-------|--------------|
|
||||
| **LinkerService** | `domain/linking/services/linker_service.py` | Phase 1, ContentService |
|
||||
| **Link Candidate Engine** | `domain/linking/services/candidate_engine.py` | Phase 1 |
|
||||
| **Link Injection Engine** | `domain/linking/services/injection_engine.py` | Phase 1 |
|
||||
| **LinkerService** | `business/linking/services/linker_service.py` | Phase 1, ContentService |
|
||||
| **Link Candidate Engine** | `business/linking/services/candidate_engine.py` | Phase 1 |
|
||||
| **Link Injection Engine** | `business/linking/services/injection_engine.py` | Phase 1 |
|
||||
|
||||
### 4.4 Content Sync Service (For WordPress/3rd Party)
|
||||
|
||||
| Task | Files | Dependencies |
|
||||
|------|-------|--------------|
|
||||
| **ContentSyncService** | `domain/integration/services/content_sync_service.py` | Phase 1, Phase 6 |
|
||||
| **WordPress Content Sync** | `domain/integration/services/wordpress_sync.py` | Phase 6 |
|
||||
| **3rd Party Content Sync** | `domain/integration/services/external_sync.py` | Phase 6 |
|
||||
| **Content Import Logic** | `domain/integration/services/import_service.py` | Phase 1 |
|
||||
| **ContentSyncService** | `business/integration/services/content_sync_service.py` | Phase 1, Phase 6 |
|
||||
| **WordPress Content Sync** | `business/integration/services/wordpress_sync.py` | Phase 6 |
|
||||
| **3rd Party Content Sync** | `business/integration/services/external_sync.py` | Phase 6 |
|
||||
| **Content Import Logic** | `business/integration/services/import_service.py` | Phase 1 |
|
||||
|
||||
**Sync Service Flow**:
|
||||
```python
|
||||
@@ -530,17 +530,17 @@ class ContentSyncService:
|
||||
|
||||
| Task | Files | Dependencies |
|
||||
|------|-------|--------------|
|
||||
| **OptimizationTask Model** | `domain/optimization/models.py` | Phase 1 |
|
||||
| **OptimizationScores Model** | `domain/optimization/models.py` | Phase 1 |
|
||||
| **Optimizer Migrations** | `domain/optimization/migrations/` | Phase 1 |
|
||||
| **OptimizationTask Model** | `business/optimization/models.py` | Phase 1 |
|
||||
| **OptimizationScores Model** | `business/optimization/models.py` | Phase 1 |
|
||||
| **Optimizer Migrations** | `business/optimization/migrations/` | Phase 1 |
|
||||
|
||||
### 4.6 Optimizer Service (Multiple Entry Points)
|
||||
|
||||
| Task | Files | Dependencies |
|
||||
|------|-------|--------------|
|
||||
| **OptimizerService** | `domain/optimization/services/optimizer_service.py` | Phase 1, ContentService |
|
||||
| **Content Analyzer** | `domain/optimization/services/analyzer.py` | Phase 1 |
|
||||
| **Entry Point Handler** | `domain/optimization/services/entry_handler.py` | Phase 1 |
|
||||
| **OptimizerService** | `business/optimization/services/optimizer_service.py` | Phase 1, ContentService |
|
||||
| **Content Analyzer** | `business/optimization/services/analyzer.py` | Phase 1 |
|
||||
| **Entry Point Handler** | `business/optimization/services/entry_handler.py` | Phase 1 |
|
||||
| **Optimization AI Function** | `infrastructure/ai/functions/optimize_content.py` | Existing AI framework |
|
||||
| **Optimization Prompts** | `infrastructure/ai/prompts.py` | Existing prompt system |
|
||||
|
||||
@@ -578,8 +578,8 @@ class OptimizerService:
|
||||
|
||||
| Task | Files | Dependencies |
|
||||
|------|-------|--------------|
|
||||
| **OptimizerService** | `domain/optimization/services/optimizer_service.py` | Phase 1, ContentService |
|
||||
| **Content Analyzer** | `domain/optimization/services/analyzer.py` | Phase 1 |
|
||||
| **OptimizerService** | `business/optimization/services/optimizer_service.py` | Phase 1, ContentService |
|
||||
| **Content Analyzer** | `business/optimization/services/analyzer.py` | Phase 1 |
|
||||
| **Optimization AI Function** | `infrastructure/ai/functions/optimize_content.py` | Existing AI framework |
|
||||
| **Optimization Prompts** | `infrastructure/ai/prompts.py` | Existing prompt system |
|
||||
|
||||
@@ -587,9 +587,9 @@ class OptimizerService:
|
||||
|
||||
| Task | Files | Dependencies |
|
||||
|------|-------|--------------|
|
||||
| **ContentPipelineService** | `domain/content/services/content_pipeline_service.py` | LinkerService, OptimizerService |
|
||||
| **Pipeline Orchestration** | `domain/content/services/pipeline_service.py` | Phase 1 services |
|
||||
| **Workflow State Machine** | `domain/content/services/workflow_state.py` | Phase 1 services |
|
||||
| **ContentPipelineService** | `business/content/services/content_pipeline_service.py` | LinkerService, OptimizerService |
|
||||
| **Pipeline Orchestration** | `business/content/services/pipeline_service.py` | Phase 1 services |
|
||||
| **Workflow State Machine** | `business/content/services/workflow_state.py` | Phase 1 services |
|
||||
|
||||
**Pipeline Workflow States**:
|
||||
```
|
||||
@@ -711,7 +711,7 @@ class ContentPipelineService:
|
||||
|
||||
| Task | Files | Dependencies |
|
||||
|------|-------|--------------|
|
||||
| **Layout Configuration** | `domain/site_building/models.py` | Phase 3 |
|
||||
| **Layout Configuration** | `business/site_building/models.py` | Phase 3 |
|
||||
| **Layout Selector UI** | `site-builder/src/components/layouts/LayoutSelector.tsx` | Phase 3 |
|
||||
| **Layout Renderer** | `sites/src/utils/layoutRenderer.ts` | Phase 5 |
|
||||
| **Layout Preview** | `site-builder/src/components/preview/LayoutPreview.tsx` | Phase 3 |
|
||||
@@ -729,17 +729,17 @@ class ContentPipelineService:
|
||||
|
||||
| Task | Files | Dependencies |
|
||||
|------|-------|--------------|
|
||||
| **PublisherService** | `domain/publishing/services/publisher_service.py` | Phase 1 |
|
||||
| **SitesRendererAdapter** | `domain/publishing/services/adapters/sites_renderer_adapter.py` | Phase 3 |
|
||||
| **DeploymentService** | `domain/publishing/services/deployment_service.py` | Phase 3 |
|
||||
| **PublisherService** | `business/publishing/services/publisher_service.py` | Phase 1 |
|
||||
| **SitesRendererAdapter** | `business/publishing/services/adapters/sites_renderer_adapter.py` | Phase 3 |
|
||||
| **DeploymentService** | `business/publishing/services/deployment_service.py` | Phase 3 |
|
||||
|
||||
### 5.3 Publishing Models
|
||||
|
||||
| Task | Files | Dependencies |
|
||||
|------|-------|--------------|
|
||||
| **PublishingRecord Model** | `domain/publishing/models.py` | Phase 1 |
|
||||
| **DeploymentRecord Model** | `domain/publishing/models.py` | Phase 3 |
|
||||
| **Publishing Migrations** | `domain/publishing/migrations/` | Phase 1 |
|
||||
| **PublishingRecord Model** | `business/publishing/models.py` | Phase 1 |
|
||||
| **DeploymentRecord Model** | `business/publishing/models.py` | Phase 3 |
|
||||
| **Publishing Migrations** | `business/publishing/migrations/` | Phase 1 |
|
||||
|
||||
### 5.4 Publisher API
|
||||
|
||||
@@ -767,32 +767,32 @@ class ContentPipelineService:
|
||||
|
||||
| Task | Files | Dependencies |
|
||||
|------|-------|--------------|
|
||||
| **SiteIntegration Model** | `domain/integration/models.py` | Phase 1 |
|
||||
| **Integration Migrations** | `domain/integration/migrations/` | Phase 1 |
|
||||
| **SiteIntegration Model** | `business/integration/models.py` | Phase 1 |
|
||||
| **Integration Migrations** | `business/integration/migrations/` | Phase 1 |
|
||||
|
||||
### 6.2 Integration Service
|
||||
|
||||
| Task | Files | Dependencies |
|
||||
|------|-------|--------------|
|
||||
| **IntegrationService** | `domain/integration/services/integration_service.py` | Phase 1 |
|
||||
| **SyncService** | `domain/integration/services/sync_service.py` | Phase 1 |
|
||||
| **IntegrationService** | `business/integration/services/integration_service.py` | Phase 1 |
|
||||
| **SyncService** | `business/integration/services/sync_service.py` | Phase 1 |
|
||||
|
||||
### 6.3 Publishing Adapters
|
||||
|
||||
| Task | Files | Dependencies |
|
||||
|------|-------|--------------|
|
||||
| **BaseAdapter** | `domain/publishing/services/adapters/base_adapter.py` | Phase 5 |
|
||||
| **WordPressAdapter** | `domain/publishing/services/adapters/wordpress_adapter.py` | EXISTING (refactor) |
|
||||
| **SitesRendererAdapter** | `domain/publishing/services/adapters/sites_renderer_adapter.py` | Phase 5 |
|
||||
| **ShopifyAdapter** | `domain/publishing/services/adapters/shopify_adapter.py` | Phase 5 (future) |
|
||||
| **BaseAdapter** | `business/publishing/services/adapters/base_adapter.py` | Phase 5 |
|
||||
| **WordPressAdapter** | `business/publishing/services/adapters/wordpress_adapter.py` | EXISTING (refactor) |
|
||||
| **SitesRendererAdapter** | `business/publishing/services/adapters/sites_renderer_adapter.py` | Phase 5 |
|
||||
| **ShopifyAdapter** | `business/publishing/services/adapters/shopify_adapter.py` | Phase 5 (future) |
|
||||
|
||||
### 6.4 Multi-Destination Publishing
|
||||
|
||||
| Task | Files | Dependencies |
|
||||
|------|-------|--------------|
|
||||
| **Extend PublisherService** | `domain/publishing/services/publisher_service.py` | Phase 5 |
|
||||
| **Multi-destination Support** | `domain/publishing/services/publisher_service.py` | Phase 5 |
|
||||
| **Update PublishingRecord** | `domain/publishing/models.py` | Phase 5 |
|
||||
| **Extend PublisherService** | `business/publishing/services/publisher_service.py` | Phase 5 |
|
||||
| **Multi-destination Support** | `business/publishing/services/publisher_service.py` | Phase 5 |
|
||||
| **Update PublishingRecord** | `business/publishing/models.py` | Phase 5 |
|
||||
|
||||
### 6.5 Site Model Extensions
|
||||
|
||||
@@ -867,7 +867,7 @@ class ContentPipelineService:
|
||||
| Task | Files | Dependencies |
|
||||
|------|-------|--------------|
|
||||
| **WordPress Sync Endpoints** | `modules/integration/views.py` | IntegrationService |
|
||||
| **Two-way Sync Logic** | `domain/integration/services/sync_service.py` | Phase 6.2 |
|
||||
| **Two-way Sync Logic** | `business/integration/services/sync_service.py` | Phase 6.2 |
|
||||
| **WordPress Webhook Handler** | `modules/integration/views.py` | Phase 6.2 |
|
||||
|
||||
**Note**: WordPress plugin itself is built separately. Only API endpoints for plugin connection are built here.
|
||||
@@ -1036,10 +1036,10 @@ const isModuleEnabled = (moduleName: string) => {
|
||||
|
||||
| Task | Files | Dependencies |
|
||||
|------|-------|--------------|
|
||||
| **Add entity_type field** | `domain/content/models.py` | Phase 1 |
|
||||
| **Add json_blocks field** | `domain/content/models.py` | Phase 1 |
|
||||
| **Add structure_data field** | `domain/content/models.py` | Phase 1 |
|
||||
| **Content Migrations** | `domain/content/migrations/` | Phase 1 |
|
||||
| **Add entity_type field** | `business/content/models.py` | Phase 1 |
|
||||
| **Add json_blocks field** | `business/content/models.py` | Phase 1 |
|
||||
| **Add structure_data field** | `business/content/models.py` | Phase 1 |
|
||||
| **Content Migrations** | `business/content/migrations/` | Phase 1 |
|
||||
|
||||
### 8.2 Content Type Prompts
|
||||
|
||||
@@ -1053,18 +1053,18 @@ const isModuleEnabled = (moduleName: string) => {
|
||||
|
||||
| Task | Files | Dependencies |
|
||||
|------|-------|--------------|
|
||||
| **Product Content Generation** | `domain/content/services/content_generation_service.py` | Phase 1 |
|
||||
| **Service Page Generation** | `domain/content/services/content_generation_service.py` | Phase 1 |
|
||||
| **Taxonomy Generation** | `domain/content/services/content_generation_service.py` | Phase 1 |
|
||||
| **Product Content Generation** | `business/content/services/content_generation_service.py` | Phase 1 |
|
||||
| **Service Page Generation** | `business/content/services/content_generation_service.py` | Phase 1 |
|
||||
| **Taxonomy Generation** | `business/content/services/content_generation_service.py` | Phase 1 |
|
||||
|
||||
### 8.4 Linker & Optimizer Extensions
|
||||
|
||||
| Task | Files | Dependencies |
|
||||
|------|-------|--------------|
|
||||
| **Product Linking** | `domain/linking/services/linker_service.py` | Phase 4 |
|
||||
| **Taxonomy Linking** | `domain/linking/services/linker_service.py` | Phase 4 |
|
||||
| **Product Optimization** | `domain/optimization/services/optimizer_service.py` | Phase 4 |
|
||||
| **Taxonomy Optimization** | `domain/optimization/services/optimizer_service.py` | Phase 4 |
|
||||
| **Product Linking** | `business/linking/services/linker_service.py` | Phase 4 |
|
||||
| **Taxonomy Linking** | `business/linking/services/linker_service.py` | Phase 4 |
|
||||
| **Product Optimization** | `business/optimization/services/optimizer_service.py` | Phase 4 |
|
||||
| **Taxonomy Optimization** | `business/optimization/services/optimizer_service.py` | Phase 4 |
|
||||
|
||||
### 8.5 Testing
|
||||
|
||||
|
||||
Reference in New Issue
Block a user