mirror of
https://github.com/thecyberlearn/quantum-ai-v3.git
synced 2026-08-18 11:12:57 +00:00
## Complete Scalable Architecture Implementation **Problem Solved**: CyberSec Career Navigator was broken (empty form → JotForm URL webhook) **Solution**: Built generic direct access architecture for unlimited external form agents ## New Architecture Features **🎯 Direct Access Agents (External Forms):** - Generic view functions work for ANY direct access agent - Database-driven routing via access_url_name/display_url_name fields - Template automatically detects and redirects to external forms - Zero code changes needed for new direct access agents **🔧 Webhook Agents (Dynamic Processing):** - Existing webhook agents work exactly as before (unchanged) - Dynamic form generation and N8N processing preserved - Zero impact on current functionality ## Files Added/Modified **Views** (): - `direct_access_handler()` - Generic payment & access processing - `direct_access_display()` - Generic external form display **URLs** (): - Generic routing: `<slug>/access/` and `<slug>/display/` - Works for any agent with access_url_name configured **Template** (): - Conditional logic: `{% if agent.access_url_name %}` - Direct access → "Start Consultation" button → External form - Webhook → Dynamic form (unchanged) **Migration** (): - Adds access_url_name and display_url_name fields to Agent model **Agent Config** (): - Updated to use generic direct access URLs ## Scalability Achievement **Ready for 100+ Agents:** - ✅ New webhook agent: Database record with empty access_url_name - ✅ New direct access agent: Database record with generic access_url_name - ✅ Zero code changes needed for new agents - ✅ Template automatically handles both types - ✅ Database-driven routing eliminates hardcoded URLs ## Expected Results **After Railway Deployment:** - CyberSec Career Navigator: "Start Consultation (FREE)" → Direct JotForm - All webhook agents: Continue working exactly as before - System ready for unlimited agents of both types 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
36 lines
1.7 KiB
Python
36 lines
1.7 KiB
Python
from django.urls import path
|
|
from . import views
|
|
|
|
app_name = 'agents'
|
|
|
|
urlpatterns = [
|
|
# Web interface
|
|
path('', views.agents_marketplace, name='marketplace'),
|
|
|
|
# Direct access routes
|
|
path('career-navigator/', views.career_navigator_view, name='career_navigator'),
|
|
path('career-navigator/access/', views.career_navigator_access, name='career_navigator_access'),
|
|
|
|
# API endpoints - specific URLs first to avoid slug conflicts
|
|
path('api/execute/', views.execute_agent, name='execute_agent'),
|
|
path('api/executions/', views.execution_list, name='execution_list'),
|
|
path('api/executions/<uuid:execution_id>/', views.execution_detail, name='execution_detail'),
|
|
|
|
# Chat API endpoints
|
|
path('api/chat/start/', views.start_chat_session, name='start_chat_session'),
|
|
path('api/chat/send/', views.send_chat_message, name='send_chat_message'),
|
|
path('api/chat/history/<str:session_id>/', views.get_chat_history, name='get_chat_history'),
|
|
path('api/chat/session/<str:session_id>/status/', views.get_session_status, name='get_session_status'),
|
|
path('api/chat/end/', views.end_chat_session, name='end_chat_session'),
|
|
path('api/chat/export/<str:session_id>/', views.export_chat, name='export_chat'),
|
|
|
|
path('api/', views.agent_list, name='agent_list'),
|
|
path('api/<slug:slug>/', views.agent_detail, name='agent_detail_api'),
|
|
|
|
# Generic direct access routes (must be before agent detail)
|
|
path('<slug:slug>/access/', views.direct_access_handler, name='direct_access_handler'),
|
|
path('<slug:slug>/display/', views.direct_access_display, name='direct_access_display'),
|
|
|
|
# Agent detail page (must be last to avoid conflicts)
|
|
path('<slug:slug>/', views.agent_detail_view, name='detail'),
|
|
] |