- Reverted to commit #10 (98e68f6) for stable AI function base
- Fixed database migrations: removed 0018-0019 that broke schema
- Fixed CreditCostConfig schema: restored credits_cost, unit fields
- Fixed historical table schema for django-simple-history
- Added debug system (staged for future use)
Changes:
- CreditCostConfig: Updated OPERATION_TYPE_CHOICES (10 ops, no duplicates)
- CreditUsageLog: Updated choices with legacy aliases marked
- Migration 0018_update_operation_choices: Applied successfully
- All AI operations working (clustering, ideas, content, optimization, etc.)
Test Results:
✓ CreditCostConfig save/load working
✓ Credit check passing for all operations
✓ AICore initialization successful
✓ AIEngine operation mapping functional
✓ Admin panel accessible without 500 errors
Future: AI-MODEL-COST-REFACTOR-PLAN.md created for token-based system
66 lines
2.2 KiB
Python
66 lines
2.2 KiB
Python
"""
|
|
System admin configuration
|
|
"""
|
|
from django.contrib import admin
|
|
from django.urls import reverse
|
|
from django.utils.html import format_html
|
|
from igny8_core.business.system.models import DebugConfiguration
|
|
|
|
|
|
@admin.register(DebugConfiguration)
|
|
class DebugConfigurationAdmin(admin.ModelAdmin):
|
|
"""Admin for debug configuration (singleton)"""
|
|
|
|
def has_add_permission(self, request):
|
|
# Only allow one instance
|
|
return not DebugConfiguration.objects.exists()
|
|
|
|
def has_delete_permission(self, request, obj=None):
|
|
# Don't allow deletion
|
|
return False
|
|
|
|
def changelist_view(self, request, extra_context=None):
|
|
# Redirect to edit view for singleton
|
|
if DebugConfiguration.objects.exists():
|
|
obj = DebugConfiguration.objects.first()
|
|
return self.changeform_view(request, str(obj.pk), '', extra_context)
|
|
return super().changelist_view(request, extra_context)
|
|
|
|
fieldsets = (
|
|
('Debug Logging Control', {
|
|
'fields': ('enable_debug_logging',),
|
|
'description': '⚠️ <strong>Master Switch:</strong> When DISABLED, all logging below is completely skipped (zero overhead). When ENABLED, logs appear in console output.'
|
|
}),
|
|
('Logging Categories', {
|
|
'fields': (
|
|
'log_ai_steps',
|
|
'log_api_requests',
|
|
'log_database_queries',
|
|
'log_celery_tasks',
|
|
),
|
|
'description': 'Fine-tune what gets logged when debug logging is enabled'
|
|
}),
|
|
('Audit', {
|
|
'fields': ('updated_at', 'updated_by'),
|
|
'classes': ('collapse',)
|
|
}),
|
|
)
|
|
|
|
readonly_fields = ('updated_at', 'updated_by')
|
|
|
|
def save_model(self, request, obj, form, change):
|
|
obj.updated_by = request.user
|
|
super().save_model(request, obj, form, change)
|
|
|
|
# Show message about cache clearing
|
|
if change:
|
|
self.message_user(request,
|
|
"Debug configuration updated. Cache cleared. Changes take effect immediately.",
|
|
level='success'
|
|
)
|
|
|
|
class Media:
|
|
css = {
|
|
'all': ('admin/css/forms.css',)
|
|
}
|