Files
igny8/docs/fixes/phase2-module-activation.md
IGNY8 VPS (Salman) 6953343026 imp part 5
2025-12-30 14:37:28 +00:00

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

  1. Log into Django Admin (/admin/)
  2. Navigate to System → Global Integration Settings
  3. Edit the singleton record
  4. Set linker_enabled or optimizer_enabled to True
  5. 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.py ViewSet 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.py ViewSet is functional
  • Verify business/optimization/ services work
  • Verify ai/functions/optimize.py AI 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.

// 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)