Files
igny8/docs/ai-docs/AI_FUNCTIONS_AUDIT_REPORT.md
2025-11-11 21:16:37 +05:00

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.