django-cfg 1.3.9__py3-none-any.whl → 1.3.11__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 (187) hide show
  1. django_cfg/__init__.py +1 -1
  2. django_cfg/apps/payments/admin/networks_admin.py +12 -1
  3. django_cfg/apps/payments/admin/payments_admin.py +13 -0
  4. django_cfg/apps/payments/admin_interface/serializers/payment_serializers.py +62 -14
  5. django_cfg/apps/payments/admin_interface/templates/payments/components/payment_card.html +121 -0
  6. django_cfg/apps/payments/admin_interface/templates/payments/components/payment_qr_code.html +95 -0
  7. django_cfg/apps/payments/admin_interface/templates/payments/components/progress_bar.html +37 -0
  8. django_cfg/apps/payments/admin_interface/templates/payments/components/provider_stats.html +60 -0
  9. django_cfg/apps/payments/admin_interface/templates/payments/components/status_badge.html +41 -0
  10. django_cfg/apps/payments/admin_interface/templates/payments/components/status_overview.html +83 -0
  11. django_cfg/apps/payments/admin_interface/templates/payments/payment_detail.html +363 -0
  12. django_cfg/apps/payments/admin_interface/templates/payments/payment_form.html +33 -3
  13. django_cfg/apps/payments/admin_interface/views/api/payments.py +102 -0
  14. django_cfg/apps/payments/admin_interface/views/api/webhook_admin.py +96 -45
  15. django_cfg/apps/payments/admin_interface/views/forms.py +5 -1
  16. django_cfg/apps/payments/config/__init__.py +14 -15
  17. django_cfg/apps/payments/config/django_cfg_integration.py +59 -1
  18. django_cfg/apps/payments/config/helpers.py +8 -13
  19. django_cfg/apps/payments/migrations/0001_initial.py +33 -46
  20. django_cfg/apps/payments/migrations/0002_rename_payments_un_user_id_7f6e79_idx_payments_un_user_id_8ce187_idx_and_more.py +46 -0
  21. django_cfg/apps/payments/migrations/0003_universalpayment_status_changed_at.py +25 -0
  22. django_cfg/apps/payments/models/managers/payment_managers.py +142 -25
  23. django_cfg/apps/payments/models/payments.py +94 -0
  24. django_cfg/apps/payments/services/core/base.py +4 -4
  25. django_cfg/apps/payments/services/core/payment_service.py +265 -38
  26. django_cfg/apps/payments/services/providers/base.py +209 -3
  27. django_cfg/apps/payments/services/providers/models/__init__.py +2 -0
  28. django_cfg/apps/payments/services/providers/models/base.py +25 -2
  29. django_cfg/apps/payments/services/providers/nowpayments/models.py +2 -2
  30. django_cfg/apps/payments/services/providers/nowpayments/provider.py +57 -9
  31. django_cfg/apps/payments/services/providers/registry.py +5 -5
  32. django_cfg/apps/payments/services/types/requests.py +19 -7
  33. django_cfg/apps/payments/signals/payment_signals.py +31 -2
  34. django_cfg/apps/payments/static/payments/js/api-client.js +6 -1
  35. django_cfg/apps/payments/static/payments/js/payment-detail.js +167 -0
  36. django_cfg/apps/payments/static/payments/js/payment-form.js +35 -26
  37. django_cfg/apps/payments/templatetags/payment_tags.py +8 -0
  38. django_cfg/apps/payments/urls.py +3 -2
  39. django_cfg/apps/payments/views/api/currencies.py +3 -0
  40. django_cfg/apps/payments/views/serializers/currencies.py +18 -5
  41. django_cfg/apps/tasks/admin/tasks_admin.py +2 -2
  42. django_cfg/apps/tasks/static/tasks/css/dashboard.css +68 -217
  43. django_cfg/apps/tasks/static/tasks/js/api.js +40 -84
  44. django_cfg/apps/tasks/static/tasks/js/components/DataManager.js +24 -0
  45. django_cfg/apps/tasks/static/tasks/js/components/TabManager.js +85 -0
  46. django_cfg/apps/tasks/static/tasks/js/components/TaskRenderer.js +216 -0
  47. django_cfg/apps/tasks/static/tasks/js/dashboard/main.mjs +245 -0
  48. django_cfg/apps/tasks/static/tasks/js/dashboard/overview.mjs +123 -0
  49. django_cfg/apps/tasks/static/tasks/js/dashboard/queues.mjs +120 -0
  50. django_cfg/apps/tasks/static/tasks/js/dashboard/tasks.mjs +350 -0
  51. django_cfg/apps/tasks/static/tasks/js/dashboard/workers.mjs +169 -0
  52. django_cfg/apps/tasks/tasks/__init__.py +10 -0
  53. django_cfg/apps/tasks/tasks/demo_tasks.py +133 -0
  54. django_cfg/apps/tasks/templates/tasks/components/management_actions.html +42 -45
  55. django_cfg/apps/tasks/templates/tasks/components/{status_cards.html → overview_content.html} +30 -11
  56. django_cfg/apps/tasks/templates/tasks/components/queues_content.html +19 -0
  57. django_cfg/apps/tasks/templates/tasks/components/tab_navigation.html +16 -10
  58. django_cfg/apps/tasks/templates/tasks/components/tasks_content.html +51 -0
  59. django_cfg/apps/tasks/templates/tasks/components/workers_content.html +30 -0
  60. django_cfg/apps/tasks/templates/tasks/layout/base.html +117 -0
  61. django_cfg/apps/tasks/templates/tasks/pages/dashboard.html +82 -0
  62. django_cfg/apps/tasks/templates/tasks/partials/task_row_template.html +40 -0
  63. django_cfg/apps/tasks/templates/tasks/widgets/task_filters.html +37 -0
  64. django_cfg/apps/tasks/templates/tasks/widgets/task_footer.html +41 -0
  65. django_cfg/apps/tasks/templates/tasks/widgets/task_table.html +50 -0
  66. django_cfg/apps/tasks/urls.py +2 -2
  67. django_cfg/apps/tasks/urls_admin.py +2 -2
  68. django_cfg/apps/tasks/utils/__init__.py +1 -0
  69. django_cfg/apps/tasks/utils/simulator.py +356 -0
  70. django_cfg/apps/tasks/views/__init__.py +16 -0
  71. django_cfg/apps/tasks/views/api.py +569 -0
  72. django_cfg/apps/tasks/views/dashboard.py +58 -0
  73. django_cfg/core/integration/__init__.py +21 -0
  74. django_cfg/management/commands/rundramatiq_simulator.py +430 -0
  75. django_cfg/models/constance.py +0 -11
  76. django_cfg/models/payments.py +137 -3
  77. django_cfg/modules/django_tasks.py +54 -21
  78. django_cfg/registry/core.py +4 -9
  79. django_cfg/template_archive/django_sample.zip +0 -0
  80. {django_cfg-1.3.9.dist-info → django_cfg-1.3.11.dist-info}/METADATA +2 -2
  81. {django_cfg-1.3.9.dist-info → django_cfg-1.3.11.dist-info}/RECORD +84 -152
  82. django_cfg/apps/payments/config/constance/__init__.py +0 -22
  83. django_cfg/apps/payments/config/constance/config_service.py +0 -123
  84. django_cfg/apps/payments/config/constance/fields.py +0 -69
  85. django_cfg/apps/payments/config/constance/settings.py +0 -160
  86. django_cfg/apps/payments/migrations/0002_currency_usd_rate_currency_usd_rate_updated_at.py +0 -26
  87. django_cfg/apps/payments/migrations/0003_remove_provider_currency_fields.py +0 -28
  88. django_cfg/apps/payments/migrations/0004_add_reserved_usd_field.py +0 -30
  89. django_cfg/apps/tasks/static/tasks/js/dashboard.js +0 -614
  90. django_cfg/apps/tasks/static/tasks/js/modals.js +0 -452
  91. django_cfg/apps/tasks/static/tasks/js/notifications.js +0 -144
  92. django_cfg/apps/tasks/static/tasks/js/task-monitor.js +0 -454
  93. django_cfg/apps/tasks/static/tasks/js/theme.js +0 -77
  94. django_cfg/apps/tasks/templates/tasks/base.html +0 -96
  95. django_cfg/apps/tasks/templates/tasks/components/info_cards.html +0 -85
  96. django_cfg/apps/tasks/templates/tasks/components/overview_tab.html +0 -22
  97. django_cfg/apps/tasks/templates/tasks/components/queues_tab.html +0 -19
  98. django_cfg/apps/tasks/templates/tasks/components/task_details_modal.html +0 -103
  99. django_cfg/apps/tasks/templates/tasks/components/tasks_tab.html +0 -32
  100. django_cfg/apps/tasks/templates/tasks/components/workers_tab.html +0 -29
  101. django_cfg/apps/tasks/templates/tasks/dashboard.html +0 -29
  102. django_cfg/apps/tasks/views.py +0 -461
  103. django_cfg/management/commands/app_agent_diagnose.py +0 -470
  104. django_cfg/management/commands/app_agent_generate.py +0 -342
  105. django_cfg/management/commands/app_agent_info.py +0 -308
  106. django_cfg/management/commands/auto_generate.py +0 -486
  107. django_cfg/modules/django_app_agent/__init__.py +0 -87
  108. django_cfg/modules/django_app_agent/agents/__init__.py +0 -40
  109. django_cfg/modules/django_app_agent/agents/base/__init__.py +0 -24
  110. django_cfg/modules/django_app_agent/agents/base/agent.py +0 -354
  111. django_cfg/modules/django_app_agent/agents/base/context.py +0 -236
  112. django_cfg/modules/django_app_agent/agents/base/executor.py +0 -430
  113. django_cfg/modules/django_app_agent/agents/generation/__init__.py +0 -12
  114. django_cfg/modules/django_app_agent/agents/generation/app_generator/__init__.py +0 -15
  115. django_cfg/modules/django_app_agent/agents/generation/app_generator/config_validator.py +0 -147
  116. django_cfg/modules/django_app_agent/agents/generation/app_generator/main.py +0 -99
  117. django_cfg/modules/django_app_agent/agents/generation/app_generator/models.py +0 -32
  118. django_cfg/modules/django_app_agent/agents/generation/app_generator/prompt_manager.py +0 -290
  119. django_cfg/modules/django_app_agent/agents/interfaces.py +0 -376
  120. django_cfg/modules/django_app_agent/core/__init__.py +0 -33
  121. django_cfg/modules/django_app_agent/core/config.py +0 -300
  122. django_cfg/modules/django_app_agent/core/exceptions.py +0 -359
  123. django_cfg/modules/django_app_agent/models/__init__.py +0 -71
  124. django_cfg/modules/django_app_agent/models/base.py +0 -283
  125. django_cfg/modules/django_app_agent/models/context.py +0 -496
  126. django_cfg/modules/django_app_agent/models/enums.py +0 -481
  127. django_cfg/modules/django_app_agent/models/requests.py +0 -500
  128. django_cfg/modules/django_app_agent/models/responses.py +0 -585
  129. django_cfg/modules/django_app_agent/pytest.ini +0 -6
  130. django_cfg/modules/django_app_agent/services/__init__.py +0 -42
  131. django_cfg/modules/django_app_agent/services/app_generator/__init__.py +0 -30
  132. django_cfg/modules/django_app_agent/services/app_generator/ai_integration.py +0 -133
  133. django_cfg/modules/django_app_agent/services/app_generator/context.py +0 -40
  134. django_cfg/modules/django_app_agent/services/app_generator/main.py +0 -202
  135. django_cfg/modules/django_app_agent/services/app_generator/structure.py +0 -316
  136. django_cfg/modules/django_app_agent/services/app_generator/validation.py +0 -125
  137. django_cfg/modules/django_app_agent/services/base.py +0 -437
  138. django_cfg/modules/django_app_agent/services/context_builder/__init__.py +0 -34
  139. django_cfg/modules/django_app_agent/services/context_builder/code_extractor.py +0 -141
  140. django_cfg/modules/django_app_agent/services/context_builder/context_generator.py +0 -276
  141. django_cfg/modules/django_app_agent/services/context_builder/main.py +0 -272
  142. django_cfg/modules/django_app_agent/services/context_builder/models.py +0 -40
  143. django_cfg/modules/django_app_agent/services/context_builder/pattern_analyzer.py +0 -85
  144. django_cfg/modules/django_app_agent/services/project_scanner/__init__.py +0 -31
  145. django_cfg/modules/django_app_agent/services/project_scanner/app_discovery.py +0 -311
  146. django_cfg/modules/django_app_agent/services/project_scanner/main.py +0 -221
  147. django_cfg/modules/django_app_agent/services/project_scanner/models.py +0 -59
  148. django_cfg/modules/django_app_agent/services/project_scanner/pattern_detection.py +0 -94
  149. django_cfg/modules/django_app_agent/services/questioning_service/__init__.py +0 -28
  150. django_cfg/modules/django_app_agent/services/questioning_service/main.py +0 -273
  151. django_cfg/modules/django_app_agent/services/questioning_service/models.py +0 -111
  152. django_cfg/modules/django_app_agent/services/questioning_service/question_generator.py +0 -251
  153. django_cfg/modules/django_app_agent/services/questioning_service/response_processor.py +0 -347
  154. django_cfg/modules/django_app_agent/services/questioning_service/session_manager.py +0 -356
  155. django_cfg/modules/django_app_agent/services/report_service.py +0 -332
  156. django_cfg/modules/django_app_agent/services/template_manager/__init__.py +0 -18
  157. django_cfg/modules/django_app_agent/services/template_manager/jinja_engine.py +0 -236
  158. django_cfg/modules/django_app_agent/services/template_manager/main.py +0 -159
  159. django_cfg/modules/django_app_agent/services/template_manager/models.py +0 -36
  160. django_cfg/modules/django_app_agent/services/template_manager/template_loader.py +0 -100
  161. django_cfg/modules/django_app_agent/services/template_manager/templates/admin.py.j2 +0 -105
  162. django_cfg/modules/django_app_agent/services/template_manager/templates/apps.py.j2 +0 -31
  163. django_cfg/modules/django_app_agent/services/template_manager/templates/cfg_config.py.j2 +0 -44
  164. django_cfg/modules/django_app_agent/services/template_manager/templates/cfg_module.py.j2 +0 -81
  165. django_cfg/modules/django_app_agent/services/template_manager/templates/forms.py.j2 +0 -107
  166. django_cfg/modules/django_app_agent/services/template_manager/templates/models.py.j2 +0 -139
  167. django_cfg/modules/django_app_agent/services/template_manager/templates/serializers.py.j2 +0 -91
  168. django_cfg/modules/django_app_agent/services/template_manager/templates/tests.py.j2 +0 -195
  169. django_cfg/modules/django_app_agent/services/template_manager/templates/urls.py.j2 +0 -35
  170. django_cfg/modules/django_app_agent/services/template_manager/templates/views.py.j2 +0 -211
  171. django_cfg/modules/django_app_agent/services/template_manager/variable_processor.py +0 -200
  172. django_cfg/modules/django_app_agent/services/validation_service/__init__.py +0 -25
  173. django_cfg/modules/django_app_agent/services/validation_service/django_validator.py +0 -333
  174. django_cfg/modules/django_app_agent/services/validation_service/main.py +0 -242
  175. django_cfg/modules/django_app_agent/services/validation_service/models.py +0 -66
  176. django_cfg/modules/django_app_agent/services/validation_service/quality_validator.py +0 -352
  177. django_cfg/modules/django_app_agent/services/validation_service/security_validator.py +0 -272
  178. django_cfg/modules/django_app_agent/services/validation_service/syntax_validator.py +0 -203
  179. django_cfg/modules/django_app_agent/ui/__init__.py +0 -25
  180. django_cfg/modules/django_app_agent/ui/cli.py +0 -419
  181. django_cfg/modules/django_app_agent/ui/rich_components.py +0 -622
  182. django_cfg/modules/django_app_agent/utils/__init__.py +0 -38
  183. django_cfg/modules/django_app_agent/utils/logging.py +0 -360
  184. django_cfg/modules/django_app_agent/utils/validation.py +0 -417
  185. {django_cfg-1.3.9.dist-info → django_cfg-1.3.11.dist-info}/WHEEL +0 -0
  186. {django_cfg-1.3.9.dist-info → django_cfg-1.3.11.dist-info}/entry_points.txt +0 -0
  187. {django_cfg-1.3.9.dist-info → django_cfg-1.3.11.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, "")