django-cfg 1.3.9__py3-none-any.whl → 1.3.13__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (188) hide show
  1. django_cfg/__init__.py +1 -1
  2. django_cfg/apps/accounts/admin/inlines.py +11 -5
  3. django_cfg/apps/payments/admin/networks_admin.py +12 -1
  4. django_cfg/apps/payments/admin/payments_admin.py +13 -0
  5. django_cfg/apps/payments/admin_interface/serializers/payment_serializers.py +62 -14
  6. django_cfg/apps/payments/admin_interface/templates/payments/components/payment_card.html +121 -0
  7. django_cfg/apps/payments/admin_interface/templates/payments/components/payment_qr_code.html +95 -0
  8. django_cfg/apps/payments/admin_interface/templates/payments/components/progress_bar.html +37 -0
  9. django_cfg/apps/payments/admin_interface/templates/payments/components/provider_stats.html +60 -0
  10. django_cfg/apps/payments/admin_interface/templates/payments/components/status_badge.html +41 -0
  11. django_cfg/apps/payments/admin_interface/templates/payments/components/status_overview.html +83 -0
  12. django_cfg/apps/payments/admin_interface/templates/payments/payment_detail.html +363 -0
  13. django_cfg/apps/payments/admin_interface/templates/payments/payment_form.html +33 -3
  14. django_cfg/apps/payments/admin_interface/views/api/payments.py +102 -0
  15. django_cfg/apps/payments/admin_interface/views/api/webhook_admin.py +96 -45
  16. django_cfg/apps/payments/admin_interface/views/forms.py +5 -1
  17. django_cfg/apps/payments/config/__init__.py +14 -15
  18. django_cfg/apps/payments/config/django_cfg_integration.py +59 -1
  19. django_cfg/apps/payments/config/helpers.py +8 -13
  20. django_cfg/apps/payments/migrations/0001_initial.py +33 -46
  21. django_cfg/apps/payments/migrations/0002_rename_payments_un_user_id_7f6e79_idx_payments_un_user_id_8ce187_idx_and_more.py +46 -0
  22. django_cfg/apps/payments/migrations/0003_universalpayment_status_changed_at.py +25 -0
  23. django_cfg/apps/payments/models/managers/payment_managers.py +142 -25
  24. django_cfg/apps/payments/models/payments.py +94 -0
  25. django_cfg/apps/payments/services/core/base.py +4 -4
  26. django_cfg/apps/payments/services/core/payment_service.py +265 -38
  27. django_cfg/apps/payments/services/providers/base.py +209 -3
  28. django_cfg/apps/payments/services/providers/models/__init__.py +2 -0
  29. django_cfg/apps/payments/services/providers/models/base.py +25 -2
  30. django_cfg/apps/payments/services/providers/nowpayments/models.py +2 -2
  31. django_cfg/apps/payments/services/providers/nowpayments/provider.py +57 -9
  32. django_cfg/apps/payments/services/providers/registry.py +5 -5
  33. django_cfg/apps/payments/services/types/requests.py +19 -7
  34. django_cfg/apps/payments/signals/payment_signals.py +31 -2
  35. django_cfg/apps/payments/static/payments/js/api-client.js +6 -1
  36. django_cfg/apps/payments/static/payments/js/payment-detail.js +167 -0
  37. django_cfg/apps/payments/static/payments/js/payment-form.js +35 -26
  38. django_cfg/apps/payments/templatetags/payment_tags.py +8 -0
  39. django_cfg/apps/payments/urls.py +3 -2
  40. django_cfg/apps/payments/views/api/currencies.py +3 -0
  41. django_cfg/apps/payments/views/serializers/currencies.py +18 -5
  42. django_cfg/apps/tasks/admin/tasks_admin.py +2 -2
  43. django_cfg/apps/tasks/static/tasks/css/dashboard.css +68 -217
  44. django_cfg/apps/tasks/static/tasks/js/api.js +40 -84
  45. django_cfg/apps/tasks/static/tasks/js/components/DataManager.js +24 -0
  46. django_cfg/apps/tasks/static/tasks/js/components/TabManager.js +85 -0
  47. django_cfg/apps/tasks/static/tasks/js/components/TaskRenderer.js +216 -0
  48. django_cfg/apps/tasks/static/tasks/js/dashboard/main.mjs +245 -0
  49. django_cfg/apps/tasks/static/tasks/js/dashboard/overview.mjs +123 -0
  50. django_cfg/apps/tasks/static/tasks/js/dashboard/queues.mjs +120 -0
  51. django_cfg/apps/tasks/static/tasks/js/dashboard/tasks.mjs +350 -0
  52. django_cfg/apps/tasks/static/tasks/js/dashboard/workers.mjs +169 -0
  53. django_cfg/apps/tasks/tasks/__init__.py +10 -0
  54. django_cfg/apps/tasks/tasks/demo_tasks.py +133 -0
  55. django_cfg/apps/tasks/templates/tasks/components/management_actions.html +42 -45
  56. django_cfg/apps/tasks/templates/tasks/components/{status_cards.html → overview_content.html} +30 -11
  57. django_cfg/apps/tasks/templates/tasks/components/queues_content.html +19 -0
  58. django_cfg/apps/tasks/templates/tasks/components/tab_navigation.html +16 -10
  59. django_cfg/apps/tasks/templates/tasks/components/tasks_content.html +51 -0
  60. django_cfg/apps/tasks/templates/tasks/components/workers_content.html +30 -0
  61. django_cfg/apps/tasks/templates/tasks/layout/base.html +117 -0
  62. django_cfg/apps/tasks/templates/tasks/pages/dashboard.html +82 -0
  63. django_cfg/apps/tasks/templates/tasks/partials/task_row_template.html +40 -0
  64. django_cfg/apps/tasks/templates/tasks/widgets/task_filters.html +37 -0
  65. django_cfg/apps/tasks/templates/tasks/widgets/task_footer.html +41 -0
  66. django_cfg/apps/tasks/templates/tasks/widgets/task_table.html +50 -0
  67. django_cfg/apps/tasks/urls.py +2 -2
  68. django_cfg/apps/tasks/urls_admin.py +2 -2
  69. django_cfg/apps/tasks/utils/__init__.py +1 -0
  70. django_cfg/apps/tasks/utils/simulator.py +356 -0
  71. django_cfg/apps/tasks/views/__init__.py +16 -0
  72. django_cfg/apps/tasks/views/api.py +569 -0
  73. django_cfg/apps/tasks/views/dashboard.py +58 -0
  74. django_cfg/core/integration/__init__.py +21 -0
  75. django_cfg/management/commands/rundramatiq_simulator.py +430 -0
  76. django_cfg/models/constance.py +0 -11
  77. django_cfg/models/payments.py +137 -3
  78. django_cfg/modules/django_tasks.py +54 -21
  79. django_cfg/registry/core.py +4 -9
  80. django_cfg/template_archive/django_sample.zip +0 -0
  81. {django_cfg-1.3.9.dist-info → django_cfg-1.3.13.dist-info}/METADATA +2 -2
  82. {django_cfg-1.3.9.dist-info → django_cfg-1.3.13.dist-info}/RECORD +85 -153
  83. django_cfg/apps/payments/config/constance/__init__.py +0 -22
  84. django_cfg/apps/payments/config/constance/config_service.py +0 -123
  85. django_cfg/apps/payments/config/constance/fields.py +0 -69
  86. django_cfg/apps/payments/config/constance/settings.py +0 -160
  87. django_cfg/apps/payments/migrations/0002_currency_usd_rate_currency_usd_rate_updated_at.py +0 -26
  88. django_cfg/apps/payments/migrations/0003_remove_provider_currency_fields.py +0 -28
  89. django_cfg/apps/payments/migrations/0004_add_reserved_usd_field.py +0 -30
  90. django_cfg/apps/tasks/static/tasks/js/dashboard.js +0 -614
  91. django_cfg/apps/tasks/static/tasks/js/modals.js +0 -452
  92. django_cfg/apps/tasks/static/tasks/js/notifications.js +0 -144
  93. django_cfg/apps/tasks/static/tasks/js/task-monitor.js +0 -454
  94. django_cfg/apps/tasks/static/tasks/js/theme.js +0 -77
  95. django_cfg/apps/tasks/templates/tasks/base.html +0 -96
  96. django_cfg/apps/tasks/templates/tasks/components/info_cards.html +0 -85
  97. django_cfg/apps/tasks/templates/tasks/components/overview_tab.html +0 -22
  98. django_cfg/apps/tasks/templates/tasks/components/queues_tab.html +0 -19
  99. django_cfg/apps/tasks/templates/tasks/components/task_details_modal.html +0 -103
  100. django_cfg/apps/tasks/templates/tasks/components/tasks_tab.html +0 -32
  101. django_cfg/apps/tasks/templates/tasks/components/workers_tab.html +0 -29
  102. django_cfg/apps/tasks/templates/tasks/dashboard.html +0 -29
  103. django_cfg/apps/tasks/views.py +0 -461
  104. django_cfg/management/commands/app_agent_diagnose.py +0 -470
  105. django_cfg/management/commands/app_agent_generate.py +0 -342
  106. django_cfg/management/commands/app_agent_info.py +0 -308
  107. django_cfg/management/commands/auto_generate.py +0 -486
  108. django_cfg/modules/django_app_agent/__init__.py +0 -87
  109. django_cfg/modules/django_app_agent/agents/__init__.py +0 -40
  110. django_cfg/modules/django_app_agent/agents/base/__init__.py +0 -24
  111. django_cfg/modules/django_app_agent/agents/base/agent.py +0 -354
  112. django_cfg/modules/django_app_agent/agents/base/context.py +0 -236
  113. django_cfg/modules/django_app_agent/agents/base/executor.py +0 -430
  114. django_cfg/modules/django_app_agent/agents/generation/__init__.py +0 -12
  115. django_cfg/modules/django_app_agent/agents/generation/app_generator/__init__.py +0 -15
  116. django_cfg/modules/django_app_agent/agents/generation/app_generator/config_validator.py +0 -147
  117. django_cfg/modules/django_app_agent/agents/generation/app_generator/main.py +0 -99
  118. django_cfg/modules/django_app_agent/agents/generation/app_generator/models.py +0 -32
  119. django_cfg/modules/django_app_agent/agents/generation/app_generator/prompt_manager.py +0 -290
  120. django_cfg/modules/django_app_agent/agents/interfaces.py +0 -376
  121. django_cfg/modules/django_app_agent/core/__init__.py +0 -33
  122. django_cfg/modules/django_app_agent/core/config.py +0 -300
  123. django_cfg/modules/django_app_agent/core/exceptions.py +0 -359
  124. django_cfg/modules/django_app_agent/models/__init__.py +0 -71
  125. django_cfg/modules/django_app_agent/models/base.py +0 -283
  126. django_cfg/modules/django_app_agent/models/context.py +0 -496
  127. django_cfg/modules/django_app_agent/models/enums.py +0 -481
  128. django_cfg/modules/django_app_agent/models/requests.py +0 -500
  129. django_cfg/modules/django_app_agent/models/responses.py +0 -585
  130. django_cfg/modules/django_app_agent/pytest.ini +0 -6
  131. django_cfg/modules/django_app_agent/services/__init__.py +0 -42
  132. django_cfg/modules/django_app_agent/services/app_generator/__init__.py +0 -30
  133. django_cfg/modules/django_app_agent/services/app_generator/ai_integration.py +0 -133
  134. django_cfg/modules/django_app_agent/services/app_generator/context.py +0 -40
  135. django_cfg/modules/django_app_agent/services/app_generator/main.py +0 -202
  136. django_cfg/modules/django_app_agent/services/app_generator/structure.py +0 -316
  137. django_cfg/modules/django_app_agent/services/app_generator/validation.py +0 -125
  138. django_cfg/modules/django_app_agent/services/base.py +0 -437
  139. django_cfg/modules/django_app_agent/services/context_builder/__init__.py +0 -34
  140. django_cfg/modules/django_app_agent/services/context_builder/code_extractor.py +0 -141
  141. django_cfg/modules/django_app_agent/services/context_builder/context_generator.py +0 -276
  142. django_cfg/modules/django_app_agent/services/context_builder/main.py +0 -272
  143. django_cfg/modules/django_app_agent/services/context_builder/models.py +0 -40
  144. django_cfg/modules/django_app_agent/services/context_builder/pattern_analyzer.py +0 -85
  145. django_cfg/modules/django_app_agent/services/project_scanner/__init__.py +0 -31
  146. django_cfg/modules/django_app_agent/services/project_scanner/app_discovery.py +0 -311
  147. django_cfg/modules/django_app_agent/services/project_scanner/main.py +0 -221
  148. django_cfg/modules/django_app_agent/services/project_scanner/models.py +0 -59
  149. django_cfg/modules/django_app_agent/services/project_scanner/pattern_detection.py +0 -94
  150. django_cfg/modules/django_app_agent/services/questioning_service/__init__.py +0 -28
  151. django_cfg/modules/django_app_agent/services/questioning_service/main.py +0 -273
  152. django_cfg/modules/django_app_agent/services/questioning_service/models.py +0 -111
  153. django_cfg/modules/django_app_agent/services/questioning_service/question_generator.py +0 -251
  154. django_cfg/modules/django_app_agent/services/questioning_service/response_processor.py +0 -347
  155. django_cfg/modules/django_app_agent/services/questioning_service/session_manager.py +0 -356
  156. django_cfg/modules/django_app_agent/services/report_service.py +0 -332
  157. django_cfg/modules/django_app_agent/services/template_manager/__init__.py +0 -18
  158. django_cfg/modules/django_app_agent/services/template_manager/jinja_engine.py +0 -236
  159. django_cfg/modules/django_app_agent/services/template_manager/main.py +0 -159
  160. django_cfg/modules/django_app_agent/services/template_manager/models.py +0 -36
  161. django_cfg/modules/django_app_agent/services/template_manager/template_loader.py +0 -100
  162. django_cfg/modules/django_app_agent/services/template_manager/templates/admin.py.j2 +0 -105
  163. django_cfg/modules/django_app_agent/services/template_manager/templates/apps.py.j2 +0 -31
  164. django_cfg/modules/django_app_agent/services/template_manager/templates/cfg_config.py.j2 +0 -44
  165. django_cfg/modules/django_app_agent/services/template_manager/templates/cfg_module.py.j2 +0 -81
  166. django_cfg/modules/django_app_agent/services/template_manager/templates/forms.py.j2 +0 -107
  167. django_cfg/modules/django_app_agent/services/template_manager/templates/models.py.j2 +0 -139
  168. django_cfg/modules/django_app_agent/services/template_manager/templates/serializers.py.j2 +0 -91
  169. django_cfg/modules/django_app_agent/services/template_manager/templates/tests.py.j2 +0 -195
  170. django_cfg/modules/django_app_agent/services/template_manager/templates/urls.py.j2 +0 -35
  171. django_cfg/modules/django_app_agent/services/template_manager/templates/views.py.j2 +0 -211
  172. django_cfg/modules/django_app_agent/services/template_manager/variable_processor.py +0 -200
  173. django_cfg/modules/django_app_agent/services/validation_service/__init__.py +0 -25
  174. django_cfg/modules/django_app_agent/services/validation_service/django_validator.py +0 -333
  175. django_cfg/modules/django_app_agent/services/validation_service/main.py +0 -242
  176. django_cfg/modules/django_app_agent/services/validation_service/models.py +0 -66
  177. django_cfg/modules/django_app_agent/services/validation_service/quality_validator.py +0 -352
  178. django_cfg/modules/django_app_agent/services/validation_service/security_validator.py +0 -272
  179. django_cfg/modules/django_app_agent/services/validation_service/syntax_validator.py +0 -203
  180. django_cfg/modules/django_app_agent/ui/__init__.py +0 -25
  181. django_cfg/modules/django_app_agent/ui/cli.py +0 -419
  182. django_cfg/modules/django_app_agent/ui/rich_components.py +0 -622
  183. django_cfg/modules/django_app_agent/utils/__init__.py +0 -38
  184. django_cfg/modules/django_app_agent/utils/logging.py +0 -360
  185. django_cfg/modules/django_app_agent/utils/validation.py +0 -417
  186. {django_cfg-1.3.9.dist-info → django_cfg-1.3.13.dist-info}/WHEEL +0 -0
  187. {django_cfg-1.3.9.dist-info → django_cfg-1.3.13.dist-info}/entry_points.txt +0 -0
  188. {django_cfg-1.3.9.dist-info → django_cfg-1.3.13.dist-info}/licenses/LICENSE +0 -0
@@ -1,481 +0,0 @@
1
- """
2
- Enumerations for Django App Agent Module.
3
-
4
- This module defines all enums used throughout the system:
5
- - Application features and types
6
- - Generation stages and complexity levels
7
- - Question types and impact levels
8
- - Validation severities and statuses
9
- """
10
-
11
- from enum import Enum, IntEnum
12
- from typing import List, Set
13
-
14
-
15
- class AppFeature(str, Enum):
16
- """Features that can be included in generated Django applications."""
17
-
18
- # Core Django features
19
- MODELS = "models"
20
- VIEWS = "views"
21
- URLS = "urls"
22
- ADMIN = "admin"
23
- FORMS = "forms"
24
- TEMPLATES = "templates"
25
- STATIC = "static"
26
-
27
- # API and serialization
28
- API = "api"
29
- SERIALIZERS = "serializers"
30
- VIEWSETS = "viewsets"
31
- FILTERS = "filters"
32
- PAGINATION = "pagination"
33
-
34
- # Testing and quality
35
- TESTS = "tests"
36
- FIXTURES = "fixtures"
37
-
38
- # Background processing
39
- TASKS = "tasks"
40
- SIGNALS = "signals"
41
-
42
- # Security and permissions
43
- SECURITY = "security"
44
- PERMISSIONS = "permissions"
45
- AUTHENTICATION = "authentication"
46
-
47
- # Configuration and management
48
- CONFIG = "config"
49
- MANAGEMENT_COMMANDS = "management_commands"
50
- MIDDLEWARE = "middleware"
51
- CONTEXT_PROCESSORS = "context_processors"
52
-
53
- # Database and migrations
54
- MIGRATIONS = "migrations"
55
- ROUTERS = "routers"
56
-
57
- # Documentation and development
58
- DOCS = "docs"
59
- SERVICES = "services" # Service layer pattern
60
-
61
- # Django-CFG specific
62
- CFG_CONFIG = "cfg_config"
63
- CFG_MODULES = "cfg_modules"
64
-
65
- @classmethod
66
- def get_core_features(cls) -> Set["AppFeature"]:
67
- """Get core features that are typically included."""
68
- return {cls.MODELS, cls.VIEWS, cls.ADMIN, cls.URLS}
69
-
70
- @classmethod
71
- def get_advanced_features(cls) -> Set["AppFeature"]:
72
- """Get advanced features for complex applications."""
73
- return {
74
- cls.API, cls.SERIALIZERS, cls.VIEWSETS, cls.TESTS, cls.FORMS,
75
- cls.SIGNALS, cls.MANAGEMENT_COMMANDS, cls.PERMISSIONS, cls.MIDDLEWARE,
76
- cls.TASKS, cls.SECURITY, cls.AUTHENTICATION, cls.SERVICES
77
- }
78
-
79
- @classmethod
80
- def get_ui_features(cls) -> Set["AppFeature"]:
81
- """Get UI-related features."""
82
- return {cls.TEMPLATES, cls.STATIC, cls.FORMS}
83
-
84
- @classmethod
85
- def get_api_features(cls) -> Set["AppFeature"]:
86
- """Get API-related features."""
87
- return {cls.API, cls.SERIALIZERS, cls.VIEWSETS, cls.FILTERS, cls.PAGINATION}
88
-
89
- @classmethod
90
- def get_django_cfg_features(cls) -> Set["AppFeature"]:
91
- """Get django-cfg specific features."""
92
- return {cls.CFG_CONFIG, cls.CFG_MODULES, cls.CONFIG, cls.SERVICES}
93
-
94
- def get_dependencies(self) -> Set["AppFeature"]:
95
- """Get features that this feature depends on."""
96
- dependencies = {
97
- # API features depend on models and views
98
- self.API: {self.MODELS, self.VIEWS},
99
- self.SERIALIZERS: {self.MODELS},
100
- self.VIEWSETS: {self.MODELS, self.VIEWS, self.SERIALIZERS},
101
- self.FILTERS: {self.MODELS, self.API},
102
- self.PAGINATION: {self.API},
103
-
104
- # Admin and forms depend on models
105
- self.ADMIN: {self.MODELS},
106
- self.FORMS: {self.MODELS},
107
-
108
- # Testing depends on models
109
- self.TESTS: {self.MODELS},
110
-
111
- # Signals and permissions depend on models
112
- self.SIGNALS: {self.MODELS},
113
- self.PERMISSIONS: {self.MODELS},
114
- self.AUTHENTICATION: {self.MODELS, self.PERMISSIONS},
115
-
116
- # Security depends on authentication and permissions
117
- self.SECURITY: {self.AUTHENTICATION, self.PERMISSIONS},
118
-
119
- # Tasks may depend on models
120
- self.TASKS: {self.MODELS},
121
-
122
- # Services depend on models
123
- self.SERVICES: {self.MODELS},
124
-
125
- # Django-CFG features
126
- self.CFG_MODULES: {self.CFG_CONFIG},
127
- }
128
- return dependencies.get(self, set())
129
-
130
- def supports_app_type(self, app_type: 'AppType') -> bool:
131
- """Check if this feature is supported by the given app type."""
132
- if app_type == AppType.DJANGO:
133
- # Django supports all features except django-cfg specific ones
134
- django_cfg_only = {self.CFG_CONFIG, self.CFG_MODULES}
135
- return self not in django_cfg_only
136
- elif app_type == AppType.DJANGO_CFG:
137
- # Django-CFG supports all features
138
- return True
139
- return False
140
-
141
-
142
- class AppComplexity(str, Enum):
143
- """Complexity levels for application generation."""
144
-
145
- SIMPLE = "simple"
146
- MODERATE = "moderate"
147
- ADVANCED = "advanced"
148
- ENTERPRISE = "enterprise"
149
-
150
- def get_recommended_features(self) -> Set[AppFeature]:
151
- """Get recommended features for this complexity level."""
152
- feature_sets = {
153
- self.SIMPLE: {
154
- AppFeature.MODELS,
155
- AppFeature.VIEWS,
156
- AppFeature.URLS
157
- },
158
- self.MODERATE: {
159
- AppFeature.MODELS,
160
- AppFeature.VIEWS,
161
- AppFeature.ADMIN,
162
- AppFeature.URLS,
163
- AppFeature.TESTS,
164
- AppFeature.FORMS
165
- },
166
- self.ADVANCED: {
167
- AppFeature.MODELS,
168
- AppFeature.VIEWS,
169
- AppFeature.ADMIN,
170
- AppFeature.API,
171
- AppFeature.SERIALIZERS,
172
- AppFeature.TESTS,
173
- AppFeature.FORMS,
174
- AppFeature.URLS,
175
- AppFeature.TEMPLATES,
176
- AppFeature.SIGNALS,
177
- AppFeature.PERMISSIONS
178
- },
179
- self.ENTERPRISE: {
180
- AppFeature.MODELS,
181
- AppFeature.VIEWS,
182
- AppFeature.ADMIN,
183
- AppFeature.API,
184
- AppFeature.SERIALIZERS,
185
- AppFeature.VIEWSETS,
186
- AppFeature.FILTERS,
187
- AppFeature.PAGINATION,
188
- AppFeature.TESTS,
189
- AppFeature.FORMS,
190
- AppFeature.URLS,
191
- AppFeature.TEMPLATES,
192
- AppFeature.SIGNALS,
193
- AppFeature.PERMISSIONS,
194
- AppFeature.AUTHENTICATION,
195
- AppFeature.SECURITY,
196
- AppFeature.MANAGEMENT_COMMANDS,
197
- AppFeature.MIDDLEWARE,
198
- AppFeature.TASKS,
199
- AppFeature.SERVICES,
200
- AppFeature.DOCS
201
- }
202
- }
203
- return feature_sets.get(self, set())
204
-
205
- def get_estimated_time_minutes(self) -> int:
206
- """Get estimated generation time in minutes."""
207
- time_estimates = {
208
- self.SIMPLE: 2,
209
- self.MODERATE: 5,
210
- self.ADVANCED: 8,
211
- self.ENTERPRISE: 12
212
- }
213
- return time_estimates.get(self, 5)
214
-
215
- def get_max_questions(self) -> int:
216
- """Get maximum number of questions for this complexity."""
217
- question_limits = {
218
- self.SIMPLE: 5,
219
- self.MODERATE: 10,
220
- self.ADVANCED: 15,
221
- self.ENTERPRISE: 20
222
- }
223
- return question_limits.get(self, 10)
224
-
225
-
226
- class AppType(str, Enum):
227
- """Types of Django applications that can be generated."""
228
-
229
- DJANGO = "django"
230
- DJANGO_CFG = "django_cfg"
231
-
232
- def get_base_patterns(self) -> Set[str]:
233
- """Get base architectural patterns for this app type."""
234
- patterns = {
235
- self.DJANGO: {
236
- "class_based_views",
237
- "model_forms",
238
- "django_admin"
239
- },
240
- self.DJANGO_CFG: {
241
- "service_layer",
242
- "pydantic_models",
243
- "async_views",
244
- "type_safety"
245
- }
246
- }
247
- return patterns.get(self, set())
248
-
249
- def supports_feature(self, feature: AppFeature) -> bool:
250
- """Check if this app type supports a specific feature."""
251
- # Django-CFG supports all features
252
- if self == self.DJANGO_CFG:
253
- return True
254
-
255
- # Standard Django has some limitations
256
- unsupported_for_django = {
257
- # All features are supported in standard Django
258
- }
259
- return feature not in unsupported_for_django
260
-
261
-
262
- class QuestionType(str, Enum):
263
- """Types of questions in the intelligent questioning system."""
264
-
265
- YES_NO = "yes_no"
266
- MULTIPLE_CHOICE = "multiple_choice"
267
- TEXT_INPUT = "text_input"
268
- NUMERIC_INPUT = "numeric_input"
269
- SELECTION = "selection"
270
- RANKING = "ranking"
271
-
272
- def get_validation_pattern(self) -> str:
273
- """Get validation pattern for this question type."""
274
- patterns = {
275
- self.YES_NO: r"^(yes|no|y|n)$",
276
- self.NUMERIC_INPUT: r"^\d+(\.\d+)?$",
277
- self.TEXT_INPUT: r"^.{1,500}$", # 1-500 characters
278
- }
279
- return patterns.get(self, r"^.*$")
280
-
281
- def requires_options(self) -> bool:
282
- """Check if this question type requires predefined options."""
283
- return self in {self.MULTIPLE_CHOICE, self.SELECTION, self.RANKING}
284
-
285
-
286
- class ImpactLevel(str, Enum):
287
- """Impact levels for questions and decisions."""
288
-
289
- LOW = "low"
290
- MEDIUM = "medium"
291
- HIGH = "high"
292
- CRITICAL = "critical"
293
-
294
- def get_priority_score(self) -> int:
295
- """Get numeric priority score for sorting."""
296
- scores = {
297
- self.LOW: 1,
298
- self.MEDIUM: 2,
299
- self.HIGH: 3,
300
- self.CRITICAL: 4
301
- }
302
- return scores.get(self, 1)
303
-
304
- def should_ask_early(self) -> bool:
305
- """Check if questions with this impact should be asked early."""
306
- return self in {self.HIGH, self.CRITICAL}
307
-
308
-
309
- class GenerationStage(str, Enum):
310
- """Stages in the application generation process."""
311
-
312
- INITIALIZATION = "initialization"
313
- ANALYSIS = "analysis"
314
- QUESTIONING = "questioning"
315
- PLANNING = "planning"
316
- GENERATION = "generation"
317
- VALIDATION = "validation"
318
- INTEGRATION = "integration"
319
- FINALIZATION = "finalization"
320
- COMPLETED = "completed"
321
- FAILED = "failed"
322
-
323
- def get_next_stage(self) -> "GenerationStage":
324
- """Get the next stage in the process."""
325
- stage_order = [
326
- self.INITIALIZATION,
327
- self.ANALYSIS,
328
- self.QUESTIONING,
329
- self.PLANNING,
330
- self.GENERATION,
331
- self.VALIDATION,
332
- self.INTEGRATION,
333
- self.FINALIZATION,
334
- self.COMPLETED
335
- ]
336
-
337
- try:
338
- current_index = stage_order.index(self)
339
- if current_index < len(stage_order) - 1:
340
- return stage_order[current_index + 1]
341
- except ValueError:
342
- pass
343
-
344
- return self.COMPLETED
345
-
346
- def is_terminal(self) -> bool:
347
- """Check if this is a terminal stage."""
348
- return self in {self.COMPLETED, self.FAILED}
349
-
350
- def get_progress_percentage(self) -> float:
351
- """Get progress percentage for this stage."""
352
- progress_map = {
353
- self.INITIALIZATION: 5.0,
354
- self.ANALYSIS: 15.0,
355
- self.QUESTIONING: 25.0,
356
- self.PLANNING: 35.0,
357
- self.GENERATION: 70.0,
358
- self.VALIDATION: 85.0,
359
- self.INTEGRATION: 95.0,
360
- self.FINALIZATION: 98.0,
361
- self.COMPLETED: 100.0,
362
- self.FAILED: 0.0
363
- }
364
- return progress_map.get(self, 0.0)
365
-
366
-
367
- class ValidationSeverity(str, Enum):
368
- """Severity levels for validation issues."""
369
-
370
- INFO = "info"
371
- WARNING = "warning"
372
- ERROR = "error"
373
- CRITICAL = "critical"
374
-
375
- def is_blocking(self) -> bool:
376
- """Check if this severity level blocks generation."""
377
- return self in {self.ERROR, self.CRITICAL}
378
-
379
- def get_priority(self) -> int:
380
- """Get numeric priority for sorting (higher = more severe)."""
381
- priorities = {
382
- self.INFO: 1,
383
- self.WARNING: 2,
384
- self.ERROR: 3,
385
- self.CRITICAL: 4
386
- }
387
- return priorities.get(self, 1)
388
-
389
-
390
- class AgentRole(str, Enum):
391
- """Roles for different AI agents in the system."""
392
-
393
- ORCHESTRATOR = "orchestrator"
394
- ANALYZER = "analyzer"
395
- GENERATOR = "generator"
396
- VALIDATOR = "validator"
397
- DIALOGUE = "dialogue"
398
- DIAGNOSTIC = "diagnostic"
399
-
400
- def get_description(self) -> str:
401
- """Get human-readable description of the agent role."""
402
- descriptions = {
403
- self.ORCHESTRATOR: "Coordinates and manages the overall generation process",
404
- self.ANALYZER: "Analyzes project structure and identifies patterns",
405
- self.GENERATOR: "Generates application code and files",
406
- self.VALIDATOR: "Validates generated code quality and compliance",
407
- self.DIALOGUE: "Conducts intelligent questioning sessions",
408
- self.DIAGNOSTIC: "Diagnoses problems and suggests solutions"
409
- }
410
- return descriptions.get(self, "Unknown agent role")
411
-
412
- def get_required_capabilities(self) -> Set[str]:
413
- """Get required capabilities for this agent role."""
414
- capabilities = {
415
- self.ORCHESTRATOR: {"workflow_management", "agent_coordination"},
416
- self.ANALYZER: {"code_analysis", "pattern_recognition"},
417
- self.GENERATOR: {"code_generation", "template_processing"},
418
- self.VALIDATOR: {"code_validation", "quality_assessment"},
419
- self.DIALOGUE: {"natural_language", "question_generation"},
420
- self.DIAGNOSTIC: {"problem_analysis", "solution_generation"}
421
- }
422
- return capabilities.get(self, set())
423
-
424
-
425
- class FileType(str, Enum):
426
- """Types of files that can be generated."""
427
-
428
- MODEL = "model"
429
- VIEW = "view"
430
- FORM = "form"
431
- ADMIN = "admin"
432
- URL = "url"
433
- TEST = "test"
434
- TEMPLATE = "template"
435
- STATIC = "static"
436
- MIGRATION = "migration"
437
- MANAGEMENT = "management"
438
- SIGNAL = "signal"
439
- MIDDLEWARE = "middleware"
440
- CONFIG = "config"
441
- INIT = "init"
442
-
443
- def get_file_extension(self) -> str:
444
- """Get typical file extension for this file type."""
445
- extensions = {
446
- self.MODEL: ".py",
447
- self.VIEW: ".py",
448
- self.FORM: ".py",
449
- self.ADMIN: ".py",
450
- self.URL: ".py",
451
- self.TEST: ".py",
452
- self.TEMPLATE: ".html",
453
- self.STATIC: ".css",
454
- self.MIGRATION: ".py",
455
- self.MANAGEMENT: ".py",
456
- self.SIGNAL: ".py",
457
- self.MIDDLEWARE: ".py",
458
- self.CONFIG: ".py",
459
- self.INIT: ".py"
460
- }
461
- return extensions.get(self, ".py")
462
-
463
- def get_typical_directory(self) -> str:
464
- """Get typical directory for this file type."""
465
- directories = {
466
- self.MODEL: "models",
467
- self.VIEW: "views",
468
- self.FORM: "forms",
469
- self.ADMIN: "", # Root of app
470
- self.URL: "", # Root of app
471
- self.TEST: "tests",
472
- self.TEMPLATE: "templates",
473
- self.STATIC: "static",
474
- self.MIGRATION: "migrations",
475
- self.MANAGEMENT: "management/commands",
476
- self.SIGNAL: "signals",
477
- self.MIDDLEWARE: "middleware",
478
- self.CONFIG: "",
479
- self.INIT: ""
480
- }
481
- return directories.get(self, "")