278 lines
10 KiB
Markdown
278 lines
10 KiB
Markdown
# AI Functions Deep Audit Report
|
|
## Clustering, Idea Generation, and Content Generation
|
|
|
|
**Date:** 2025-01-XX
|
|
**Scope:** Complete audit of AI functions for clustering, idea generation, and content generation to identify unused code and files safe to remove.
|
|
|
|
---
|
|
|
|
## Executive Summary
|
|
|
|
This audit identifies **legacy code, deprecated functions, and unused implementations** that are safe to remove from the codebase. The current system uses a unified AI framework through `run_ai_task` → `AIEngine` → `BaseAIFunction` implementations.
|
|
|
|
---
|
|
|
|
## 1. CURRENT ACTIVE ARCHITECTURE
|
|
|
|
### 1.1 Active Flow (What's Actually Used)
|
|
|
|
```
|
|
Frontend API Call
|
|
↓
|
|
views.py (auto_cluster/auto_generate_ideas/auto_generate_content)
|
|
↓
|
|
run_ai_task (ai/tasks.py) - Unified Celery task entrypoint
|
|
↓
|
|
AIEngine (ai/engine.py) - Orchestrator
|
|
↓
|
|
BaseAIFunction implementations:
|
|
- AutoClusterFunction (ai/functions/auto_cluster.py)
|
|
- GenerateIdeasFunction (ai/functions/generate_ideas.py)
|
|
- GenerateContentFunction (ai/functions/generate_content.py)
|
|
↓
|
|
AICore (ai/ai_core.py) - Centralized AI request handler
|
|
↓
|
|
AIProvider (OpenAI/Runware)
|
|
```
|
|
|
|
### 1.2 Active Files (KEEP)
|
|
|
|
#### Core Framework
|
|
- ✅ `backend/igny8_core/ai/tasks.py` - Unified Celery task (`run_ai_task`)
|
|
- ✅ `backend/igny8_core/ai/engine.py` - AIEngine orchestrator
|
|
- ✅ `backend/igny8_core/ai/base.py` - BaseAIFunction abstract class
|
|
- ✅ `backend/igny8_core/ai/ai_core.py` - AICore centralized handler
|
|
- ✅ `backend/igny8_core/ai/registry.py` - Function registry
|
|
- ✅ `backend/igny8_core/ai/prompts.py` - PromptRegistry
|
|
- ✅ `backend/igny8_core/ai/settings.py` - Model configurations
|
|
- ✅ `backend/igny8_core/ai/constants.py` - AI constants
|
|
- ✅ `backend/igny8_core/ai/tracker.py` - Progress tracking
|
|
- ✅ `backend/igny8_core/ai/validators.py` - Validation functions
|
|
|
|
#### Function Implementations
|
|
- ✅ `backend/igny8_core/ai/functions/auto_cluster.py` - AutoClusterFunction
|
|
- ✅ `backend/igny8_core/ai/functions/generate_ideas.py` - GenerateIdeasFunction
|
|
- ✅ `backend/igny8_core/ai/functions/generate_content.py` - GenerateContentFunction
|
|
- ✅ `backend/igny8_core/ai/functions/__init__.py` - Exports
|
|
|
|
#### API Endpoints
|
|
- ✅ `backend/igny8_core/modules/planner/views.py` - KeywordViewSet.auto_cluster(), ClusterViewSet.auto_generate_ideas()
|
|
- ✅ `backend/igny8_core/modules/writer/views.py` - TasksViewSet.auto_generate_content()
|
|
|
|
---
|
|
|
|
## 2. DEPRECATED / UNUSED CODE (SAFE TO REMOVE)
|
|
|
|
### 2.1 Legacy Wrapper Functions (NOT USED)
|
|
|
|
#### ❌ `generate_ideas_core()` - **SAFE TO REMOVE**
|
|
- **Location:** `backend/igny8_core/ai/functions/generate_ideas.py:234`
|
|
- **Status:** Legacy wrapper function for backward compatibility
|
|
- **Usage:** ❌ **NOT CALLED ANYWHERE** (only in commented test code)
|
|
- **Purpose:** Was meant for direct calls without Celery, but all calls now go through `run_ai_task`
|
|
- **Action:** **REMOVE** - Function and export from `__init__.py`
|
|
|
|
#### ❌ `generate_content_core()` - **SAFE TO REMOVE**
|
|
- **Location:** `backend/igny8_core/ai/functions/generate_content.py:303`
|
|
- **Status:** Legacy wrapper function for backward compatibility
|
|
- **Usage:** ❌ **NOT CALLED ANYWHERE** (only in commented test code)
|
|
- **Purpose:** Was meant for direct calls without Celery, but all calls now go through `run_ai_task`
|
|
- **Action:** **REMOVE** - Function and export from `__init__.py`
|
|
|
|
### 2.2 AIProcessor Deprecated Methods (NOT USED)
|
|
|
|
#### ❌ `AIProcessor.cluster_keywords()` - **SAFE TO REMOVE**
|
|
- **Location:** `backend/igny8_core/utils/ai_processor.py:1049-1282`
|
|
- **Status:** ⚠️ **DEPRECATED** (marked with deprecation warning)
|
|
- **Usage:** ❌ **NOT CALLED ANYWHERE**
|
|
- **Lines:** ~233 lines of code
|
|
- **Action:** **REMOVE** entire method
|
|
|
|
#### ❌ `AIProcessor.generate_ideas()` - **SAFE TO REMOVE**
|
|
- **Location:** `backend/igny8_core/utils/ai_processor.py:1284-1363`
|
|
- **Status:** Legacy method
|
|
- **Usage:** ❌ **NOT CALLED ANYWHERE**
|
|
- **Lines:** ~80 lines of code
|
|
- **Action:** **REMOVE** entire method
|
|
|
|
#### ❌ `AIProcessor.generate_content()` - **SAFE TO REMOVE**
|
|
- **Location:** `backend/igny8_core/utils/ai_processor.py:433-531`
|
|
- **Status:** Legacy method
|
|
- **Usage:** ❌ **NOT CALLED ANYWHERE** (only called internally by `extract_image_prompts`, which is also unused)
|
|
- **Lines:** ~98 lines of code
|
|
- **Action:** **REMOVE** entire method
|
|
|
|
#### ❌ `AIProcessor.extract_image_prompts()` - **SAFE TO REMOVE**
|
|
- **Location:** `backend/igny8_core/utils/ai_processor.py:471-580`
|
|
- **Status:** Legacy method
|
|
- **Usage:** ❌ **NOT CALLED ANYWHERE** (new framework uses `GenerateImagesFunction` which uses `AICore.run_ai_request` directly)
|
|
- **Lines:** ~110 lines of code
|
|
- **Action:** **REMOVE** entire method
|
|
|
|
**Note:** `AIProcessor.generate_image()` is **STILL USED** in `integration_views.py` for image generation, so keep the class and that method.
|
|
|
|
### 2.3 Unused Exports
|
|
|
|
#### ❌ `generate_ideas_core` export - **SAFE TO REMOVE**
|
|
- **Location:** `backend/igny8_core/ai/functions/__init__.py:5,12`
|
|
- **Action:** Remove from imports and `__all__`
|
|
|
|
#### ❌ `generate_content_core` export - **SAFE TO REMOVE**
|
|
- **Location:** `backend/igny8_core/ai/functions/__init__.py:6,14`
|
|
- **Action:** Remove from imports and `__all__`
|
|
|
|
### 2.4 Test File Cleanup
|
|
|
|
#### ⚠️ `backend/igny8_core/ai/tests/test_run.py`
|
|
- **Status:** Contains commented-out code referencing removed functions
|
|
- **Action:** Clean up commented code (lines 16, 63, 75, 126-127)
|
|
|
|
---
|
|
|
|
## 3. AIProcessor - PARTIAL CLEANUP
|
|
|
|
### 3.1 What to KEEP in AIProcessor
|
|
|
|
✅ **KEEP:**
|
|
- `AIProcessor.__init__()` - Initialization
|
|
- `AIProcessor._get_api_key()` - API key retrieval
|
|
- `AIProcessor._get_model()` - Model retrieval
|
|
- `AIProcessor._call_openai()` - OpenAI API calls (used by generate_image)
|
|
- `AIProcessor._extract_json_from_response()` - JSON extraction
|
|
- `AIProcessor.generate_image()` - **STILL USED** in `integration_views.py`
|
|
- `AIProcessor.get_prompt()` - May be used by generate_image
|
|
- Constants imports (MODEL_RATES, etc.) - Used by AICore
|
|
|
|
### 3.2 What to REMOVE from AIProcessor
|
|
|
|
❌ **REMOVE:**
|
|
- `AIProcessor.cluster_keywords()` - ~233 lines
|
|
- `AIProcessor.generate_ideas()` - ~80 lines
|
|
- `AIProcessor.generate_content()` - ~98 lines
|
|
- `AIProcessor.extract_image_prompts()` - ~110 lines
|
|
- **Total:** ~521 lines of unused code
|
|
|
|
---
|
|
|
|
## 4. FILES ALREADY DELETED (Good!)
|
|
|
|
✅ **Already Removed:**
|
|
- `backend/igny8_core/modules/planner/tasks.py` - ✅ Already deleted
|
|
- `backend/igny8_core/modules/writer/tasks.py` - ✅ Already deleted
|
|
|
|
---
|
|
|
|
## 5. SUMMARY OF REMOVALS
|
|
|
|
### 5.1 Functions to Remove
|
|
|
|
| Function | Location | Lines | Status |
|
|
|----------|----------|-------|--------|
|
|
| `generate_ideas_core()` | `ai/functions/generate_ideas.py:234` | ~100 | ❌ Remove |
|
|
| `generate_content_core()` | `ai/functions/generate_content.py:303` | ~85 | ❌ Remove |
|
|
| `AIProcessor.cluster_keywords()` | `utils/ai_processor.py:1049` | ~233 | ❌ Remove |
|
|
| `AIProcessor.generate_ideas()` | `utils/ai_processor.py:1284` | ~80 | ❌ Remove |
|
|
| `AIProcessor.generate_content()` | `utils/ai_processor.py:433` | ~98 | ❌ Remove |
|
|
| `AIProcessor.extract_image_prompts()` | `utils/ai_processor.py:471` | ~110 | ❌ Remove |
|
|
|
|
**Total Lines to Remove:** ~706 lines
|
|
|
|
### 5.2 Exports to Remove
|
|
|
|
| Export | Location |
|
|
|--------|----------|
|
|
| `generate_ideas_core` | `ai/functions/__init__.py:5,12` |
|
|
| `generate_content_core` | `ai/functions/__init__.py:6,14` |
|
|
|
|
### 5.3 Test Cleanup
|
|
|
|
| File | Action |
|
|
|------|--------|
|
|
| `ai/tests/test_run.py` | Remove commented code (lines 16, 63, 75, 126-127) |
|
|
|
|
---
|
|
|
|
## 6. VERIFICATION CHECKLIST
|
|
|
|
Before removing, verify:
|
|
|
|
- [ ] ✅ No imports of `generate_ideas_core` or `generate_content_core` anywhere
|
|
- [ ] ✅ No calls to `AIProcessor.cluster_keywords()`, `generate_ideas()`, or `generate_content()`
|
|
- [ ] ✅ All active code paths use `run_ai_task` → `AIEngine` → `BaseAIFunction`
|
|
- [ ] ✅ `AIProcessor.generate_image()` is still used (verify in `integration_views.py`)
|
|
- [ ] ✅ Constants from `ai_processor.py` are still imported by `AICore` (verify)
|
|
|
|
---
|
|
|
|
## 7. RECOMMENDED REMOVAL ORDER
|
|
|
|
1. **Phase 1: Remove Legacy Wrapper Functions**
|
|
- Remove `generate_ideas_core()` from `generate_ideas.py`
|
|
- Remove `generate_content_core()` from `generate_content.py`
|
|
- Remove exports from `__init__.py`
|
|
|
|
2. **Phase 2: Remove AIProcessor Deprecated Methods**
|
|
- Remove `AIProcessor.cluster_keywords()`
|
|
- Remove `AIProcessor.generate_ideas()`
|
|
- Remove `AIProcessor.generate_content()`
|
|
- Remove `AIProcessor.extract_image_prompts()` (depends on generate_content, so remove after)
|
|
|
|
3. **Phase 3: Cleanup Tests**
|
|
- Clean up commented code in `test_run.py`
|
|
|
|
4. **Phase 4: Verification**
|
|
- Run full test suite
|
|
- Verify all AI functions still work
|
|
- Check for any broken imports
|
|
|
|
---
|
|
|
|
## 8. IMPACT ANALYSIS
|
|
|
|
### 8.1 No Breaking Changes Expected
|
|
|
|
- ✅ All active code paths use the new framework
|
|
- ✅ No external dependencies on removed functions
|
|
- ✅ Views only use `run_ai_task` (verified)
|
|
|
|
### 8.2 Benefits
|
|
|
|
- 🎯 **~706 lines of dead code removed**
|
|
- 🎯 **Clearer codebase** - Only active code remains
|
|
- 🎯 **Easier maintenance** - No confusion about which path to use
|
|
- 🎯 **Reduced technical debt**
|
|
|
|
---
|
|
|
|
## 9. FILES TO MODIFY
|
|
|
|
### 9.1 Files to Edit
|
|
|
|
1. `backend/igny8_core/ai/functions/generate_ideas.py`
|
|
- Remove `generate_ideas_core()` function (lines 234-333)
|
|
|
|
2. `backend/igny8_core/ai/functions/generate_content.py`
|
|
- Remove `generate_content_core()` function (lines 303-386)
|
|
|
|
3. `backend/igny8_core/ai/functions/__init__.py`
|
|
- Remove `generate_ideas_core` import and export
|
|
- Remove `generate_content_core` import and export
|
|
|
|
4. `backend/igny8_core/utils/ai_processor.py`
|
|
- Remove `cluster_keywords()` method (lines 1049-1282)
|
|
- Remove `generate_ideas()` method (lines 1284-1363)
|
|
- Remove `generate_content()` method (lines 433-531)
|
|
- Remove `extract_image_prompts()` method (lines 471-580)
|
|
|
|
5. `backend/igny8_core/ai/tests/test_run.py`
|
|
- Remove commented code referencing removed functions
|
|
|
|
---
|
|
|
|
## 10. CONCLUSION
|
|
|
|
This audit identifies **~706 lines of unused legacy code** that can be safely removed without impacting functionality. All active code paths use the unified AI framework (`run_ai_task` → `AIEngine` → `BaseAIFunction`), making these legacy functions obsolete.
|
|
|
|
**Recommendation:** Proceed with removal in phases as outlined above, with thorough testing after each phase.
|
|
|