4.1 KiB
4.1 KiB
Phase 2 Module Activation Guide
Reference document for activating disabled modules (Linker, Optimizer, SiteBuilder)
Current Status (as of December 2025)
| Module | Status | Backend Flag | Migration |
|---|---|---|---|
| SiteBuilder | ❌ DEPRECATED | site_builder_enabled |
Disabled via 0011 |
| Linker | ⏸️ Phase 2 | linker_enabled |
Disabled via 0011 |
| Optimizer | ⏸️ Phase 2 | optimizer_enabled |
Disabled via 0011 |
How Module Disabling Works
1. Database Flag (GlobalIntegrationSettings)
# backend/igny8_core/modules/system/global_settings_models.py
site_builder_enabled = models.BooleanField(default=False)
linker_enabled = models.BooleanField(default=False)
optimizer_enabled = models.BooleanField(default=False)
2. Migration Set Defaults
# backend/igny8_core/modules/system/migrations/0011_disable_phase2_modules.py
# Sets all three modules to disabled for existing records
3. API Returns Settings
# backend/igny8_core/modules/system/settings_views.py
# GET /api/module-settings/ returns enabled/disabled status
4. Frontend Checks Settings
// frontend/src/store/moduleStore.ts
// useModuleStore.isModuleEnabled('linker') → checks API response
5. Sidebar Hides Menu Items
// frontend/src/layout/AppSidebar.tsx
if (isModuleEnabled('linker')) {
// Add menu item
}
Activation Steps for Phase 2
Option A: Via Django Admin (Recommended)
- Log into Django Admin (
/admin/) - Navigate to System → Global Integration Settings
- Edit the singleton record
- Set
linker_enabledoroptimizer_enabledtoTrue - Save
Option B: Via Database
UPDATE system_globalintegrationsettings
SET linker_enabled = TRUE
WHERE id = 1;
Option C: Via Management Command (TBD)
python manage.py enable_module linker
python manage.py enable_module optimizer
Pre-Activation Checklist
Before enabling a Phase 2 module:
Linker Module
- Verify
modules/linker/views.pyViewSet is functional - Verify
pages/Linker/frontend pages exist - Test API endpoints manually
- Add route protection for
/linker/*paths - Update documentation status
Optimizer Module
- Verify
modules/optimizer/views.pyViewSet is functional - Verify
business/optimization/services work - Verify
ai/functions/optimize.pyAI function - Verify
pages/Optimizer/frontend pages exist - Test API endpoints manually
- Add route protection for
/optimizer/*paths - Update documentation status
Route Protection (TODO for Phase 2)
Currently, direct URL access (e.g., /linker) still works even when module is disabled.
Recommended Implementation:
// frontend/src/components/common/ModuleGuard.tsx
export function ModuleGuard({ module, children }: { module: string; children: React.ReactNode }) {
const { isModuleEnabled } = useModuleStore();
if (!isModuleEnabled(module)) {
return <Navigate to="/" replace />;
}
return <>{children}</>;
}
// In routes:
<Route path="/linker/*" element={
<ModuleGuard module="linker">
<LinkerPage />
</ModuleGuard>
} />
SiteBuilder (DEPRECATED)
Do NOT activate SiteBuilder. This module is deprecated and code is being removed.
Removed Items (Task 5.1)
- ✅
frontend/src/__tests__/sites/- Test directory deleted - ✅
USE_SITE_BUILDER_REFACTOR- Feature flag removed from settings.py - ✅ Feature flag checks - Removed from clustering_service.py, validation_service.py, serializers.py
- ✅ Tasks.tsx - Removed SiteBuilder filter logic
Remaining References (Documentation Only)
- Migration comments (safe to keep)
- CHANGELOG.md entries (historical)
- IGNY8-APP.md (documents deprecated status)
- Database field (kept for backward compatibility)
Related Documentation
- LINKER.md - Full Linker module docs
- OPTIMIZER.md - Full Optimizer module docs
- SYSTEM-SETTINGS.md - Settings model reference