django-cfg 1.4.48__py3-none-any.whl → 1.5.7__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.

Potentially problematic release.


This version of django-cfg might be problematic. Click here for more details.

Files changed (1022) hide show
  1. django_cfg/__init__.py +6 -1
  2. django_cfg/apps/api/endpoints/README.md +144 -0
  3. django_cfg/apps/api/endpoints/endpoints_status/__init__.py +13 -0
  4. django_cfg/apps/api/endpoints/urls.py +13 -6
  5. django_cfg/apps/api/endpoints/urls_list/__init__.py +10 -0
  6. django_cfg/apps/api/endpoints/urls_list/serializers.py +74 -0
  7. django_cfg/apps/api/endpoints/urls_list/views.py +231 -0
  8. django_cfg/apps/api/health/drf_views.py +36 -0
  9. django_cfg/apps/api/health/serializers.py +4 -0
  10. django_cfg/apps/business/accounts/admin/inlines.py +177 -0
  11. django_cfg/apps/business/accounts/admin/user_admin.py +318 -0
  12. django_cfg/apps/business/accounts/apps.py +19 -0
  13. django_cfg/apps/business/accounts/managers/user_manager.py +299 -0
  14. django_cfg/apps/business/accounts/migrations/0001_initial.py +119 -0
  15. django_cfg/apps/business/accounts/services/otp_service.py +194 -0
  16. django_cfg/apps/business/accounts/views/profile.py +175 -0
  17. django_cfg/apps/business/agents/__init__.py +68 -0
  18. django_cfg/apps/business/agents/apps.py +31 -0
  19. django_cfg/apps/business/agents/integration/registry.py +348 -0
  20. django_cfg/apps/business/agents/management/commands/create_agent.py +366 -0
  21. django_cfg/apps/business/agents/management/commands/orchestrator_status.py +192 -0
  22. django_cfg/apps/business/agents/patterns/content_agents.py +235 -0
  23. django_cfg/apps/business/knowbase/__init__.py +27 -0
  24. django_cfg/apps/business/knowbase/apps.py +75 -0
  25. django_cfg/apps/business/knowbase/examples/__init__.py +3 -0
  26. django_cfg/apps/business/knowbase/examples/external_data_usage.py +194 -0
  27. django_cfg/apps/business/knowbase/mixins/examples/vehicle_model_example.py +200 -0
  28. django_cfg/apps/business/knowbase/mixins/service.py +364 -0
  29. django_cfg/apps/business/knowbase/models/external_data.py +370 -0
  30. django_cfg/apps/business/knowbase/services/archive/vectorization_service.py +365 -0
  31. django_cfg/apps/business/knowbase/services/embedding/async_processor.py +242 -0
  32. django_cfg/apps/business/knowbase/services/embedding/batch_processor.py +253 -0
  33. django_cfg/apps/business/knowbase/services/embedding/processors.py +152 -0
  34. django_cfg/apps/business/knowbase/services/embedding/utils.py +176 -0
  35. django_cfg/apps/business/knowbase/tasks/document_processing.py +354 -0
  36. django_cfg/apps/business/knowbase/utils/chunk_settings.py +264 -0
  37. django_cfg/apps/business/knowbase/views/archive_views.py +472 -0
  38. django_cfg/apps/business/knowbase/views/base.py +51 -0
  39. django_cfg/apps/business/leads/apps.py +16 -0
  40. django_cfg/apps/business/newsletter/admin/newsletter_admin.py +798 -0
  41. django_cfg/apps/business/newsletter/apps.py +22 -0
  42. django_cfg/apps/business/newsletter/management/commands/test_newsletter.py +139 -0
  43. django_cfg/apps/business/payments/__init__.py +14 -0
  44. django_cfg/apps/business/payments/admin/balance_admin.py +375 -0
  45. django_cfg/apps/business/payments/admin/payment_admin.py +293 -0
  46. django_cfg/apps/business/payments/admin/withdrawal_admin.py +320 -0
  47. django_cfg/apps/business/payments/apps.py +23 -0
  48. django_cfg/apps/business/payments/management/commands/check_payment_status.py +290 -0
  49. django_cfg/apps/business/payments/management/commands/create_payment.py +346 -0
  50. django_cfg/apps/business/payments/management/commands/sync_currencies.py +254 -0
  51. django_cfg/apps/business/payments/urls.py +14 -0
  52. django_cfg/apps/business/support/apps.py +11 -0
  53. django_cfg/apps/business/support/managers/message_manager.py +34 -0
  54. django_cfg/apps/business/support/managers/ticket_manager.py +68 -0
  55. django_cfg/apps/business/support/utils/support_email_service.py +111 -0
  56. django_cfg/apps/business/support/views/api.py +178 -0
  57. django_cfg/apps/integrations/centrifugo/__init__.py +57 -0
  58. django_cfg/apps/integrations/centrifugo/_cfg/README_DEPENDENCIES.md +260 -0
  59. django_cfg/apps/integrations/centrifugo/_cfg/__init__.py +25 -0
  60. django_cfg/apps/integrations/centrifugo/_cfg/check_deps.py +34 -0
  61. django_cfg/apps/integrations/centrifugo/_cfg/dependencies.py +309 -0
  62. django_cfg/apps/integrations/centrifugo/admin/__init__.py +13 -0
  63. django_cfg/apps/integrations/centrifugo/admin/centrifugo_log.py +211 -0
  64. django_cfg/apps/integrations/centrifugo/admin/config.py +82 -0
  65. django_cfg/apps/integrations/centrifugo/apps.py +100 -0
  66. django_cfg/apps/integrations/centrifugo/codegen/IMPLEMENTATION_SUMMARY.md +475 -0
  67. django_cfg/apps/integrations/centrifugo/codegen/README.md +242 -0
  68. django_cfg/apps/integrations/centrifugo/codegen/USAGE.md +616 -0
  69. django_cfg/apps/integrations/centrifugo/codegen/__init__.py +19 -0
  70. django_cfg/apps/integrations/centrifugo/codegen/discovery.py +246 -0
  71. django_cfg/apps/integrations/centrifugo/codegen/generators/go_thin/__init__.py +5 -0
  72. django_cfg/apps/integrations/centrifugo/codegen/generators/go_thin/generator.py +174 -0
  73. django_cfg/apps/integrations/centrifugo/codegen/generators/go_thin/templates/README.md.j2 +182 -0
  74. django_cfg/apps/integrations/centrifugo/codegen/generators/go_thin/templates/client.go.j2 +64 -0
  75. django_cfg/apps/integrations/centrifugo/codegen/generators/go_thin/templates/go.mod.j2 +10 -0
  76. django_cfg/apps/integrations/centrifugo/codegen/generators/go_thin/templates/rpc_client.go.j2 +300 -0
  77. django_cfg/apps/integrations/centrifugo/codegen/generators/go_thin/templates/rpc_client.go.j2.old +267 -0
  78. django_cfg/apps/integrations/centrifugo/codegen/generators/go_thin/templates/types.go.j2 +16 -0
  79. django_cfg/apps/integrations/centrifugo/codegen/generators/python_thin/__init__.py +7 -0
  80. django_cfg/apps/integrations/centrifugo/codegen/generators/python_thin/generator.py +241 -0
  81. django_cfg/apps/integrations/centrifugo/codegen/generators/python_thin/templates/README.md.j2 +128 -0
  82. django_cfg/apps/integrations/centrifugo/codegen/generators/python_thin/templates/__init__.py.j2 +22 -0
  83. django_cfg/apps/integrations/centrifugo/codegen/generators/python_thin/templates/client.py.j2 +73 -0
  84. django_cfg/apps/integrations/centrifugo/codegen/generators/python_thin/templates/models.py.j2 +19 -0
  85. django_cfg/apps/integrations/centrifugo/codegen/generators/python_thin/templates/requirements.txt.j2 +8 -0
  86. django_cfg/apps/integrations/centrifugo/codegen/generators/python_thin/templates/rpc_client.py.j2 +193 -0
  87. django_cfg/apps/integrations/centrifugo/codegen/generators/typescript_thin/__init__.py +5 -0
  88. django_cfg/apps/integrations/centrifugo/codegen/generators/typescript_thin/generator.py +124 -0
  89. django_cfg/apps/integrations/centrifugo/codegen/generators/typescript_thin/templates/README.md.j2 +38 -0
  90. django_cfg/apps/integrations/centrifugo/codegen/generators/typescript_thin/templates/client.ts.j2 +25 -0
  91. django_cfg/apps/integrations/centrifugo/codegen/generators/typescript_thin/templates/index.ts.j2 +12 -0
  92. django_cfg/apps/integrations/centrifugo/codegen/generators/typescript_thin/templates/package.json.j2 +13 -0
  93. django_cfg/apps/integrations/centrifugo/codegen/generators/typescript_thin/templates/rpc-client.ts.j2 +137 -0
  94. django_cfg/apps/integrations/centrifugo/codegen/generators/typescript_thin/templates/tsconfig.json.j2 +14 -0
  95. django_cfg/apps/integrations/centrifugo/codegen/generators/typescript_thin/templates/types.ts.j2 +9 -0
  96. django_cfg/apps/integrations/centrifugo/codegen/utils/__init__.py +37 -0
  97. django_cfg/apps/integrations/centrifugo/codegen/utils/naming.py +155 -0
  98. django_cfg/apps/integrations/centrifugo/codegen/utils/type_converter.py +349 -0
  99. django_cfg/apps/integrations/centrifugo/decorators.py +137 -0
  100. django_cfg/apps/integrations/centrifugo/management/__init__.py +1 -0
  101. django_cfg/apps/integrations/centrifugo/management/commands/__init__.py +1 -0
  102. django_cfg/apps/integrations/centrifugo/management/commands/generate_centrifugo_clients.py +254 -0
  103. django_cfg/apps/integrations/centrifugo/managers/__init__.py +12 -0
  104. django_cfg/apps/integrations/centrifugo/managers/centrifugo_log.py +264 -0
  105. django_cfg/apps/integrations/centrifugo/migrations/0001_initial.py +164 -0
  106. django_cfg/apps/integrations/centrifugo/migrations/__init__.py +3 -0
  107. django_cfg/apps/integrations/centrifugo/models/__init__.py +11 -0
  108. django_cfg/apps/integrations/centrifugo/models/centrifugo_log.py +210 -0
  109. django_cfg/apps/integrations/centrifugo/registry.py +106 -0
  110. django_cfg/apps/integrations/centrifugo/router.py +125 -0
  111. django_cfg/apps/integrations/centrifugo/serializers/__init__.py +40 -0
  112. django_cfg/apps/integrations/centrifugo/serializers/admin_api.py +264 -0
  113. django_cfg/apps/integrations/centrifugo/serializers/channels.py +29 -0
  114. django_cfg/apps/integrations/centrifugo/serializers/health.py +17 -0
  115. django_cfg/apps/integrations/centrifugo/serializers/publishes.py +18 -0
  116. django_cfg/apps/integrations/centrifugo/serializers/stats.py +21 -0
  117. django_cfg/apps/integrations/centrifugo/services/__init__.py +12 -0
  118. django_cfg/apps/integrations/centrifugo/services/client/__init__.py +29 -0
  119. django_cfg/apps/integrations/centrifugo/services/client/client.py +582 -0
  120. django_cfg/apps/integrations/centrifugo/services/client/config.py +236 -0
  121. django_cfg/apps/integrations/centrifugo/services/client/exceptions.py +212 -0
  122. django_cfg/apps/integrations/centrifugo/services/config_helper.py +63 -0
  123. django_cfg/apps/integrations/centrifugo/services/dashboard_notifier.py +157 -0
  124. django_cfg/apps/integrations/centrifugo/services/logging.py +677 -0
  125. django_cfg/apps/integrations/centrifugo/urls.py +31 -0
  126. django_cfg/apps/integrations/centrifugo/views/__init__.py +13 -0
  127. django_cfg/apps/integrations/centrifugo/views/admin_api.py +377 -0
  128. django_cfg/apps/integrations/centrifugo/views/monitoring.py +393 -0
  129. django_cfg/apps/integrations/centrifugo/views/testing_api.py +481 -0
  130. django_cfg/apps/integrations/grpc/__init__.py +9 -0
  131. django_cfg/apps/integrations/grpc/_cfg/README_DEPENDENCIES.md +307 -0
  132. django_cfg/apps/integrations/grpc/_cfg/__init__.py +25 -0
  133. django_cfg/apps/integrations/grpc/_cfg/check_deps.py +34 -0
  134. django_cfg/apps/integrations/grpc/_cfg/dependencies.py +484 -0
  135. django_cfg/apps/integrations/grpc/admin/__init__.py +11 -0
  136. django_cfg/apps/integrations/grpc/admin/config.py +157 -0
  137. django_cfg/apps/integrations/grpc/admin/grpc_request_log.py +252 -0
  138. django_cfg/apps/integrations/grpc/apps.py +108 -0
  139. django_cfg/apps/integrations/grpc/auth/__init__.py +9 -0
  140. django_cfg/apps/integrations/grpc/auth/jwt_auth.py +295 -0
  141. django_cfg/apps/integrations/grpc/interceptors/__init__.py +19 -0
  142. django_cfg/apps/integrations/grpc/interceptors/errors.py +241 -0
  143. django_cfg/apps/integrations/grpc/interceptors/logging.py +270 -0
  144. django_cfg/apps/integrations/grpc/interceptors/metrics.py +306 -0
  145. django_cfg/apps/integrations/grpc/interceptors/request_logger.py +515 -0
  146. django_cfg/apps/integrations/grpc/management/__init__.py +1 -0
  147. django_cfg/apps/integrations/grpc/management/commands/rungrpc.py +443 -0
  148. django_cfg/apps/integrations/grpc/managers/__init__.py +12 -0
  149. django_cfg/apps/integrations/grpc/managers/grpc_request_log.py +310 -0
  150. django_cfg/apps/integrations/grpc/managers/grpc_server_status.py +288 -0
  151. django_cfg/apps/integrations/grpc/migrations/0001_initial.py +69 -0
  152. django_cfg/apps/integrations/grpc/migrations/0002_rename_django_cfg__service_4c4a8e_idx_django_cfg__service_584308_idx_and_more.py +38 -0
  153. django_cfg/apps/integrations/grpc/migrations/0003_grpcserverstatus.py +119 -0
  154. django_cfg/apps/integrations/grpc/migrations/0004_grpcserverstatus_registered_services.py +22 -0
  155. django_cfg/apps/integrations/grpc/models/__init__.py +11 -0
  156. django_cfg/apps/integrations/grpc/models/grpc_request_log.py +219 -0
  157. django_cfg/apps/integrations/grpc/models/grpc_server_status.py +270 -0
  158. django_cfg/apps/integrations/grpc/serializers/__init__.py +67 -0
  159. django_cfg/apps/integrations/grpc/serializers/charts.py +218 -0
  160. django_cfg/apps/integrations/grpc/serializers/config.py +106 -0
  161. django_cfg/apps/integrations/grpc/serializers/health.py +18 -0
  162. django_cfg/apps/integrations/grpc/serializers/requests.py +18 -0
  163. django_cfg/apps/integrations/grpc/serializers/service_registry.py +191 -0
  164. django_cfg/apps/integrations/grpc/serializers/services.py +50 -0
  165. django_cfg/apps/integrations/grpc/serializers/stats.py +22 -0
  166. django_cfg/apps/integrations/grpc/serializers/testing.py +105 -0
  167. django_cfg/apps/integrations/grpc/services/__init__.py +39 -0
  168. django_cfg/apps/integrations/grpc/services/base.py +375 -0
  169. django_cfg/apps/integrations/grpc/services/chart_generator.py +475 -0
  170. django_cfg/apps/integrations/grpc/services/config_helper.py +146 -0
  171. django_cfg/apps/integrations/grpc/services/discovery.py +571 -0
  172. django_cfg/apps/integrations/grpc/services/grpc_client.py +590 -0
  173. django_cfg/apps/integrations/grpc/services/monitoring_service.py +291 -0
  174. django_cfg/apps/integrations/grpc/services/service_registry.py +328 -0
  175. django_cfg/apps/integrations/grpc/services/testing_service.py +326 -0
  176. django_cfg/apps/integrations/grpc/testing/__init__.py +12 -0
  177. django_cfg/apps/integrations/grpc/testing/examples.py +263 -0
  178. django_cfg/apps/integrations/grpc/urls.py +39 -0
  179. django_cfg/apps/integrations/grpc/utils/__init__.py +18 -0
  180. django_cfg/apps/integrations/grpc/utils/proto_gen.py +423 -0
  181. django_cfg/apps/integrations/grpc/views/__init__.py +15 -0
  182. django_cfg/apps/integrations/grpc/views/charts.py +217 -0
  183. django_cfg/apps/integrations/grpc/views/config.py +191 -0
  184. django_cfg/apps/integrations/grpc/views/monitoring.py +388 -0
  185. django_cfg/apps/integrations/grpc/views/services.py +289 -0
  186. django_cfg/apps/integrations/grpc/views/testing.py +306 -0
  187. django_cfg/apps/integrations/rq/__init__.py +9 -0
  188. django_cfg/apps/integrations/rq/_cfg/__init__.py +28 -0
  189. django_cfg/apps/integrations/rq/_cfg/dependencies.py +313 -0
  190. django_cfg/apps/integrations/rq/apps.py +157 -0
  191. django_cfg/apps/integrations/rq/management/__init__.py +1 -0
  192. django_cfg/apps/integrations/rq/management/commands/__init__.py +1 -0
  193. django_cfg/apps/integrations/rq/management/commands/rqscheduler.py +31 -0
  194. django_cfg/apps/integrations/rq/management/commands/rqstats.py +33 -0
  195. django_cfg/apps/integrations/rq/management/commands/rqworker.py +31 -0
  196. django_cfg/apps/integrations/rq/management/commands/rqworker_pool.py +27 -0
  197. django_cfg/apps/integrations/rq/serializers/__init__.py +40 -0
  198. django_cfg/apps/integrations/rq/serializers/health.py +60 -0
  199. django_cfg/apps/integrations/rq/serializers/job.py +100 -0
  200. django_cfg/apps/integrations/rq/serializers/queue.py +80 -0
  201. django_cfg/apps/integrations/rq/serializers/schedule.py +178 -0
  202. django_cfg/apps/integrations/rq/serializers/testing.py +139 -0
  203. django_cfg/apps/integrations/rq/serializers/worker.py +58 -0
  204. django_cfg/apps/integrations/rq/services/__init__.py +25 -0
  205. django_cfg/apps/integrations/rq/services/config_helper.py +233 -0
  206. django_cfg/apps/integrations/rq/services/models/README.md +417 -0
  207. django_cfg/apps/integrations/rq/services/models/__init__.py +30 -0
  208. django_cfg/apps/integrations/rq/services/models/event.py +123 -0
  209. django_cfg/apps/integrations/rq/services/models/job.py +99 -0
  210. django_cfg/apps/integrations/rq/services/models/queue.py +92 -0
  211. django_cfg/apps/integrations/rq/services/models/worker.py +104 -0
  212. django_cfg/apps/integrations/rq/services/rq_converters.py +183 -0
  213. django_cfg/apps/integrations/rq/tasks/__init__.py +23 -0
  214. django_cfg/apps/integrations/rq/tasks/demo_tasks.py +284 -0
  215. django_cfg/apps/integrations/rq/urls.py +54 -0
  216. django_cfg/apps/integrations/rq/views/__init__.py +19 -0
  217. django_cfg/apps/integrations/rq/views/jobs.py +882 -0
  218. django_cfg/apps/integrations/rq/views/monitoring.py +248 -0
  219. django_cfg/apps/integrations/rq/views/queues.py +261 -0
  220. django_cfg/apps/integrations/rq/views/schedule.py +400 -0
  221. django_cfg/apps/integrations/rq/views/testing.py +761 -0
  222. django_cfg/apps/integrations/rq/views/workers.py +195 -0
  223. django_cfg/apps/system/dashboard/TRANSACTION_FIX.md +73 -0
  224. django_cfg/apps/system/dashboard/__init__.py +8 -0
  225. django_cfg/apps/system/dashboard/apps.py +23 -0
  226. django_cfg/apps/system/dashboard/serializers/__init__.py +67 -0
  227. django_cfg/apps/system/dashboard/serializers/activity.py +38 -0
  228. django_cfg/apps/system/dashboard/serializers/apizones.py +26 -0
  229. django_cfg/apps/system/dashboard/serializers/base.py +16 -0
  230. django_cfg/apps/system/dashboard/serializers/charts.py +44 -0
  231. django_cfg/apps/system/dashboard/serializers/commands.py +55 -0
  232. django_cfg/apps/system/dashboard/serializers/config.py +245 -0
  233. django_cfg/apps/system/dashboard/serializers/overview.py +45 -0
  234. django_cfg/apps/system/dashboard/serializers/statistics.py +46 -0
  235. django_cfg/apps/system/dashboard/serializers/system.py +58 -0
  236. django_cfg/apps/system/dashboard/services/__init__.py +24 -0
  237. django_cfg/apps/system/dashboard/services/apizones_service.py +119 -0
  238. django_cfg/apps/system/dashboard/services/charts_service.py +267 -0
  239. django_cfg/apps/system/dashboard/services/commands_security.py +228 -0
  240. django_cfg/apps/system/dashboard/services/commands_service.py +341 -0
  241. django_cfg/apps/system/dashboard/services/config_service.py +393 -0
  242. django_cfg/apps/system/dashboard/services/overview_service.py +205 -0
  243. django_cfg/apps/system/dashboard/services/statistics_service.py +402 -0
  244. django_cfg/apps/system/dashboard/services/system_health_service.py +328 -0
  245. django_cfg/apps/system/dashboard/urls.py +45 -0
  246. django_cfg/apps/system/dashboard/views/__init__.py +25 -0
  247. django_cfg/apps/system/dashboard/views/activity_views.py +81 -0
  248. django_cfg/apps/system/dashboard/views/apizones_views.py +72 -0
  249. django_cfg/apps/system/dashboard/views/charts_views.py +158 -0
  250. django_cfg/apps/system/dashboard/views/commands_views.py +158 -0
  251. django_cfg/apps/system/dashboard/views/config_views.py +69 -0
  252. django_cfg/apps/system/dashboard/views/overview_views.py +106 -0
  253. django_cfg/apps/system/dashboard/views/statistics_views.py +104 -0
  254. django_cfg/apps/system/dashboard/views/system_views.py +72 -0
  255. django_cfg/apps/system/frontend/JWT_AUTO_INJECTION.md +224 -0
  256. django_cfg/apps/system/frontend/__init__.py +18 -0
  257. django_cfg/apps/system/frontend/apps.py +15 -0
  258. django_cfg/apps/system/frontend/setup.py +105 -0
  259. django_cfg/apps/system/frontend/templates/frontend/404.html +87 -0
  260. django_cfg/apps/system/frontend/test_routing.py +134 -0
  261. django_cfg/apps/system/frontend/urls.py +12 -0
  262. django_cfg/apps/system/frontend/views.py +376 -0
  263. django_cfg/apps/system/maintenance/__init__.py +56 -0
  264. django_cfg/apps/system/maintenance/admin/api_key_admin.py +209 -0
  265. django_cfg/apps/system/maintenance/admin/scheduled_admin.py +226 -0
  266. django_cfg/apps/system/maintenance/admin/site_admin.py +287 -0
  267. django_cfg/apps/system/maintenance/apps.py +18 -0
  268. django_cfg/apps/system/maintenance/migrations/__init__.py +0 -0
  269. django_cfg/apps/system/maintenance/models/__init__.py +29 -0
  270. django_cfg/apps/system/maintenance/services/__init__.py +42 -0
  271. django_cfg/apps/urls.py +63 -111
  272. django_cfg/cli/commands/info.py +1 -1
  273. django_cfg/cli/utils.py +1 -1
  274. django_cfg/config.py +6 -4
  275. django_cfg/core/backends/__init__.py +1 -0
  276. django_cfg/core/backends/smtp.py +69 -0
  277. django_cfg/core/base/config_model.py +69 -65
  278. django_cfg/core/builders/apps_builder.py +29 -74
  279. django_cfg/core/builders/security_builder.py +271 -3
  280. django_cfg/core/constants.py +5 -0
  281. django_cfg/core/debug/README.md +116 -0
  282. django_cfg/core/debug/__init__.py +7 -0
  283. django_cfg/core/debug/example_config.py +63 -0
  284. django_cfg/core/debug/warnings_helper.py +121 -0
  285. django_cfg/core/generation/core_generators/static.py +5 -0
  286. django_cfg/core/generation/core_generators/templates.py +38 -23
  287. django_cfg/core/generation/data_generators/cache.py +28 -2
  288. django_cfg/core/generation/integration_generators/__init__.py +4 -3
  289. django_cfg/core/generation/integration_generators/api.py +9 -0
  290. django_cfg/core/generation/integration_generators/django_rq.py +80 -0
  291. django_cfg/core/generation/integration_generators/grpc_generator.py +318 -0
  292. django_cfg/core/generation/integration_generators/third_party.py +8 -8
  293. django_cfg/core/generation/orchestrator.py +29 -6
  294. django_cfg/core/generation/security_generators/crypto_fields.py +72 -0
  295. django_cfg/core/integration/display/__init__.py +2 -0
  296. django_cfg/core/integration/display/base.py +51 -0
  297. django_cfg/core/integration/display/grpc_display.py +144 -0
  298. django_cfg/core/integration/display/startup.py +49 -75
  299. django_cfg/core/integration/url_integration.py +88 -3
  300. django_cfg/core/utils/__init__.py +5 -0
  301. django_cfg/core/utils/url_helpers.py +73 -0
  302. django_cfg/management/commands/check_endpoints.py +1 -1
  303. django_cfg/management/commands/superuser.py +0 -32
  304. django_cfg/middleware/README.md +372 -0
  305. django_cfg/middleware/__init__.py +6 -0
  306. django_cfg/middleware/admin_notifications.py +206 -0
  307. django_cfg/middleware/authentication.py +184 -0
  308. django_cfg/mixins/__init__.py +14 -0
  309. django_cfg/mixins/admin_api.py +37 -0
  310. django_cfg/mixins/client_api.py +39 -0
  311. django_cfg/mixins/superadmin_api.py +59 -0
  312. django_cfg/models/__init__.py +8 -1
  313. django_cfg/models/api/config.py +2 -2
  314. django_cfg/models/api/drf/config.py +4 -2
  315. django_cfg/models/api/grpc/__init__.py +59 -0
  316. django_cfg/models/api/grpc/config.py +364 -0
  317. django_cfg/models/django/__init__.py +5 -0
  318. django_cfg/models/django/axes.py +187 -0
  319. django_cfg/models/django/constance.py +3 -9
  320. django_cfg/models/django/crypto_fields.py +135 -0
  321. django_cfg/models/django/django_rq.py +632 -0
  322. django_cfg/models/django/revolution_legacy.py +8 -8
  323. django_cfg/models/services/email.py +11 -1
  324. django_cfg/modules/base.py +26 -13
  325. django_cfg/modules/django_admin/__init__.py +12 -0
  326. django_cfg/modules/django_admin/apps.py +19 -0
  327. django_cfg/modules/django_admin/base/pydantic_admin.py +277 -7
  328. django_cfg/modules/django_admin/config/__init__.py +11 -0
  329. django_cfg/modules/django_admin/config/admin_config.py +35 -1
  330. django_cfg/modules/django_admin/config/background_task_config.py +76 -0
  331. django_cfg/modules/django_admin/config/documentation_config.py +406 -0
  332. django_cfg/modules/django_admin/config/field_config.py +111 -0
  333. django_cfg/modules/django_admin/config/resource_config.py +129 -0
  334. django_cfg/modules/django_admin/templates/django_admin/change_form_docs.html +23 -0
  335. django_cfg/modules/django_admin/templates/django_admin/change_list_docs.html +23 -0
  336. django_cfg/modules/django_admin/templates/django_admin/documentation_block.html +303 -0
  337. django_cfg/modules/django_admin/templates/django_admin/markdown_docs_block.html +37 -0
  338. django_cfg/modules/django_admin/templates/django_admin/widgets/encrypted_field.html +80 -0
  339. django_cfg/modules/django_admin/templates/django_admin/widgets/encrypted_password.html +62 -0
  340. django_cfg/modules/django_admin/utils/__init__.py +43 -2
  341. django_cfg/modules/django_admin/utils/badges/__init__.py +13 -0
  342. django_cfg/modules/django_admin/utils/badges/status_badges.py +171 -0
  343. django_cfg/modules/django_admin/utils/displays/__init__.py +13 -0
  344. django_cfg/modules/django_admin/utils/displays/data_displays.py +203 -0
  345. django_cfg/modules/django_admin/utils/html/__init__.py +26 -0
  346. django_cfg/modules/django_admin/utils/html/badges.py +55 -0
  347. django_cfg/modules/django_admin/utils/html/base.py +167 -0
  348. django_cfg/modules/django_admin/utils/html/code.py +87 -0
  349. django_cfg/modules/django_admin/utils/html/composition.py +205 -0
  350. django_cfg/modules/django_admin/utils/html/formatting.py +231 -0
  351. django_cfg/modules/django_admin/utils/html/keyvalue.py +219 -0
  352. django_cfg/modules/django_admin/utils/html/markdown_integration.py +108 -0
  353. django_cfg/modules/django_admin/utils/html/progress.py +127 -0
  354. django_cfg/modules/django_admin/utils/html_builder.py +55 -194
  355. django_cfg/modules/django_admin/utils/markdown/__init__.py +21 -0
  356. django_cfg/modules/django_admin/utils/markdown/mermaid_plugin.py +288 -0
  357. django_cfg/modules/django_admin/utils/markdown/renderer.py +360 -0
  358. django_cfg/modules/django_admin/widgets/__init__.py +3 -0
  359. django_cfg/modules/django_admin/widgets/encrypted_field_widget.py +66 -0
  360. django_cfg/modules/django_admin/widgets/registry.py +42 -0
  361. django_cfg/modules/django_client/core/__init__.py +3 -1
  362. django_cfg/modules/django_client/core/archive/manager.py +14 -0
  363. django_cfg/modules/django_client/core/config/config.py +8 -0
  364. django_cfg/modules/django_client/core/generator/__init__.py +80 -2
  365. django_cfg/modules/django_client/core/generator/go/__init__.py +14 -0
  366. django_cfg/modules/django_client/core/generator/go/client_generator.py +124 -0
  367. django_cfg/modules/django_client/core/generator/go/files_generator.py +133 -0
  368. django_cfg/modules/django_client/core/generator/go/generator.py +203 -0
  369. django_cfg/modules/django_client/core/generator/go/models_generator.py +304 -0
  370. django_cfg/modules/django_client/core/generator/go/naming.py +193 -0
  371. django_cfg/modules/django_client/core/generator/go/operations_generator.py +134 -0
  372. django_cfg/modules/django_client/core/generator/go/templates/Makefile.j2 +38 -0
  373. django_cfg/modules/django_client/core/generator/go/templates/README.md.j2 +55 -0
  374. django_cfg/modules/django_client/core/generator/go/templates/client.go.j2 +122 -0
  375. django_cfg/modules/django_client/core/generator/go/templates/enums.go.j2 +49 -0
  376. django_cfg/modules/django_client/core/generator/go/templates/errors.go.j2 +182 -0
  377. django_cfg/modules/django_client/core/generator/go/templates/go.mod.j2 +6 -0
  378. django_cfg/modules/django_client/core/generator/go/templates/main_client.go.j2 +60 -0
  379. django_cfg/modules/django_client/core/generator/go/templates/middleware.go.j2 +388 -0
  380. django_cfg/modules/django_client/core/generator/go/templates/models.go.j2 +28 -0
  381. django_cfg/modules/django_client/core/generator/go/templates/operations_client.go.j2 +142 -0
  382. django_cfg/modules/django_client/core/generator/go/templates/validation.go.j2 +217 -0
  383. django_cfg/modules/django_client/core/generator/go/type_mapper.py +380 -0
  384. django_cfg/modules/django_client/core/generator/proto/__init__.py +17 -0
  385. django_cfg/modules/django_client/core/generator/proto/generator.py +461 -0
  386. django_cfg/modules/django_client/core/generator/proto/messages_generator.py +260 -0
  387. django_cfg/modules/django_client/core/generator/proto/services_generator.py +295 -0
  388. django_cfg/modules/django_client/core/generator/proto/test_proto_generator.py +262 -0
  389. django_cfg/modules/django_client/core/generator/proto/type_mapper.py +153 -0
  390. django_cfg/modules/django_client/core/generator/python/models_generator.py +14 -9
  391. django_cfg/modules/django_client/core/generator/python/operations_generator.py +4 -6
  392. django_cfg/modules/django_client/core/generator/python/templates/client/main_client.py.jinja +0 -2
  393. django_cfg/modules/django_client/core/generator/python/templates/client/sync_main_client.py.jinja +0 -1
  394. django_cfg/modules/django_client/core/generator/python/templates/main_init.py.jinja +2 -1
  395. django_cfg/modules/django_client/core/generator/python/templates/models/enums.py.jinja +7 -1
  396. django_cfg/modules/django_client/core/generator/python/templates/models/schema_class.py.jinja +1 -1
  397. django_cfg/modules/django_client/core/generator/typescript/client_generator.py +3 -1
  398. django_cfg/modules/django_client/core/generator/typescript/operations_generator.py +13 -4
  399. django_cfg/modules/django_client/core/generator/typescript/templates/client/client.ts.jinja +33 -17
  400. django_cfg/modules/django_client/core/generator/typescript/templates/client/flat_client.ts.jinja +10 -3
  401. django_cfg/modules/django_client/core/generator/typescript/templates/fetchers/fetchers.ts.jinja +0 -1
  402. django_cfg/modules/django_client/core/generator/typescript/templates/fetchers/function.ts.jinja +1 -1
  403. django_cfg/modules/django_client/core/generator/typescript/templates/main_index.ts.jinja +7 -10
  404. django_cfg/modules/django_client/core/generator/typescript/templates/utils/http.ts.jinja +8 -3
  405. django_cfg/modules/django_client/core/ir/context.py +14 -0
  406. django_cfg/modules/django_client/core/ir/schema.py +11 -0
  407. django_cfg/modules/django_client/core/parser/base.py +85 -3
  408. django_cfg/modules/django_client/core/parser/openapi30.py +26 -1
  409. django_cfg/modules/django_client/core/parser/openapi31.py +26 -1
  410. django_cfg/modules/django_client/management/commands/generate_client.py +352 -3
  411. django_cfg/modules/django_currency/examples/example_database_usage.py +1 -1
  412. django_cfg/modules/django_import_export/README.md +19 -1
  413. django_cfg/modules/django_import_export/__init__.py +8 -0
  414. django_cfg/modules/django_import_export/apps.py +16 -0
  415. django_cfg/modules/django_import_export/templates/admin/import_export/change_list_export.html +6 -0
  416. django_cfg/modules/django_import_export/templates/admin/import_export/change_list_export_item.html +7 -0
  417. django_cfg/modules/django_import_export/templates/admin/import_export/change_list_import.html +6 -0
  418. django_cfg/modules/django_import_export/templates/admin/import_export/change_list_import_export.html +39 -0
  419. django_cfg/modules/django_import_export/templates/admin/import_export/change_list_import_item.html +7 -0
  420. django_cfg/modules/django_logging/__init__.py +2 -0
  421. django_cfg/modules/django_logging/django_logger.py +78 -8
  422. django_cfg/modules/django_tailwind/templates/django_tailwind/base.html +9 -2
  423. django_cfg/modules/django_tailwind/templates/django_tailwind/components/navbar.html +2 -2
  424. django_cfg/modules/django_twilio/sendgrid_service.py +8 -5
  425. django_cfg/modules/django_unfold/__init__.py +5 -24
  426. django_cfg/modules/django_unfold/models/__init__.py +0 -23
  427. django_cfg/modules/django_unfold/models/config.py +113 -138
  428. django_cfg/modules/django_unfold/navigation.py +317 -0
  429. django_cfg/modules/django_unfold/tailwind.py +29 -79
  430. django_cfg/modules/nextjs_admin/__init__.py +12 -0
  431. django_cfg/modules/nextjs_admin/apps.py +12 -0
  432. django_cfg/modules/nextjs_admin/models/__init__.py +5 -0
  433. django_cfg/modules/nextjs_admin/models/config.py +205 -0
  434. django_cfg/modules/nextjs_admin/templatetags/__init__.py +1 -0
  435. django_cfg/modules/nextjs_admin/templatetags/nextjs_admin.py +164 -0
  436. django_cfg/modules/nextjs_admin/urls.py +19 -0
  437. django_cfg/modules/nextjs_admin/views.py +261 -0
  438. django_cfg/pyproject.toml +16 -19
  439. django_cfg/registry/core.py +12 -3
  440. django_cfg/registry/modules.py +11 -2
  441. django_cfg/registry/third_party.py +0 -9
  442. django_cfg/routing/callbacks.py +1 -43
  443. django_cfg/static/admin/css/constance.css +44 -0
  444. django_cfg/static/admin/css/dashboard.css +6 -170
  445. django_cfg/static/admin/css/layout.css +21 -0
  446. django_cfg/static/admin/css/tabs.css +95 -0
  447. django_cfg/static/admin/css/theme.css +74 -0
  448. django_cfg/static/admin/js/alpine/activity-tracker.js +55 -0
  449. django_cfg/static/admin/js/alpine/chart.js +101 -0
  450. django_cfg/static/admin/js/alpine/command-modal.js +159 -0
  451. django_cfg/static/admin/js/alpine/commands-panel.js +139 -0
  452. django_cfg/static/admin/js/alpine/commands-section.js +260 -0
  453. django_cfg/static/admin/js/alpine/dashboard-tabs.js +46 -0
  454. django_cfg/static/admin/js/alpine/system-metrics.js +20 -0
  455. django_cfg/static/admin/js/alpine/toggle-section.js +28 -0
  456. django_cfg/static/admin/js/utils.js +60 -0
  457. django_cfg/static/frontend/admin.zip +0 -0
  458. django_cfg/static/js/api/base.mjs +6 -1
  459. django_cfg/static/js/api/centrifugo/client.mjs +164 -0
  460. django_cfg/static/js/api/centrifugo/index.mjs +13 -0
  461. django_cfg/static/js/api/index.mjs +13 -8
  462. django_cfg/static/js/api/knowbase/client.mjs +309 -0
  463. django_cfg/static/js/api/knowbase/index.mjs +13 -0
  464. django_cfg/static/js/api/payments/client.mjs +46 -1215
  465. django_cfg/static/js/api/types.mjs +240 -350
  466. django_cfg/templates/admin/DUAL_TAB_ARCHITECTURE.md +561 -0
  467. django_cfg/templates/admin/constance/includes/results_list.html +68 -11
  468. django_cfg/templates/admin/index.html +814 -61
  469. django_cfg/templates/unfold/layouts/skeleton.html +27 -0
  470. django_cfg/templatetags/django_cfg.py +348 -0
  471. django_cfg/utils/smart_defaults.py +2 -2
  472. django_cfg-1.5.7.dist-info/METADATA +619 -0
  473. django_cfg-1.5.7.dist-info/RECORD +1161 -0
  474. django_cfg/apps/accounts/admin/inlines.py +0 -177
  475. django_cfg/apps/accounts/admin/user_admin.py +0 -308
  476. django_cfg/apps/accounts/apps.py +0 -19
  477. django_cfg/apps/accounts/managers/user_manager.py +0 -299
  478. django_cfg/apps/accounts/migrations/0001_initial.py +0 -119
  479. django_cfg/apps/accounts/services/otp_service.py +0 -205
  480. django_cfg/apps/accounts/views/profile.py +0 -165
  481. django_cfg/apps/agents/__init__.py +0 -68
  482. django_cfg/apps/agents/apps.py +0 -29
  483. django_cfg/apps/agents/integration/registry.py +0 -348
  484. django_cfg/apps/agents/management/commands/create_agent.py +0 -366
  485. django_cfg/apps/agents/management/commands/orchestrator_status.py +0 -192
  486. django_cfg/apps/agents/patterns/content_agents.py +0 -235
  487. django_cfg/apps/ipc/README.md +0 -346
  488. django_cfg/apps/ipc/__init__.py +0 -51
  489. django_cfg/apps/ipc/apps.py +0 -28
  490. django_cfg/apps/ipc/serializers/__init__.py +0 -19
  491. django_cfg/apps/ipc/serializers/serializers.py +0 -229
  492. django_cfg/apps/ipc/services/__init__.py +0 -7
  493. django_cfg/apps/ipc/services/client/__init__.py +0 -23
  494. django_cfg/apps/ipc/services/client/client.py +0 -542
  495. django_cfg/apps/ipc/services/client/config.py +0 -214
  496. django_cfg/apps/ipc/services/client/exceptions.py +0 -201
  497. django_cfg/apps/ipc/services/monitor.py +0 -464
  498. django_cfg/apps/ipc/static/django_cfg_ipc/js/dashboard.mjs +0 -441
  499. django_cfg/apps/ipc/templates/django_cfg_ipc/base.html +0 -71
  500. django_cfg/apps/ipc/templates/django_cfg_ipc/dashboard.html +0 -202
  501. django_cfg/apps/ipc/urls.py +0 -21
  502. django_cfg/apps/ipc/urls_admin.py +0 -20
  503. django_cfg/apps/ipc/views/__init__.py +0 -8
  504. django_cfg/apps/ipc/views/dashboard.py +0 -15
  505. django_cfg/apps/ipc/views/viewsets.py +0 -245
  506. django_cfg/apps/knowbase/__init__.py +0 -27
  507. django_cfg/apps/knowbase/apps.py +0 -81
  508. django_cfg/apps/knowbase/examples/__init__.py +0 -3
  509. django_cfg/apps/knowbase/examples/external_data_usage.py +0 -194
  510. django_cfg/apps/knowbase/mixins/examples/vehicle_model_example.py +0 -200
  511. django_cfg/apps/knowbase/mixins/service.py +0 -364
  512. django_cfg/apps/knowbase/models/external_data.py +0 -370
  513. django_cfg/apps/knowbase/services/archive/vectorization_service.py +0 -365
  514. django_cfg/apps/knowbase/services/embedding/async_processor.py +0 -242
  515. django_cfg/apps/knowbase/services/embedding/batch_processor.py +0 -253
  516. django_cfg/apps/knowbase/services/embedding/processors.py +0 -152
  517. django_cfg/apps/knowbase/services/embedding/utils.py +0 -176
  518. django_cfg/apps/knowbase/tasks/document_processing.py +0 -354
  519. django_cfg/apps/knowbase/utils/chunk_settings.py +0 -263
  520. django_cfg/apps/knowbase/views/archive_views.py +0 -472
  521. django_cfg/apps/knowbase/views/base.py +0 -46
  522. django_cfg/apps/leads/apps.py +0 -16
  523. django_cfg/apps/maintenance/__init__.py +0 -56
  524. django_cfg/apps/maintenance/admin/api_key_admin.py +0 -211
  525. django_cfg/apps/maintenance/admin/scheduled_admin.py +0 -226
  526. django_cfg/apps/maintenance/admin/site_admin.py +0 -286
  527. django_cfg/apps/maintenance/apps.py +0 -18
  528. django_cfg/apps/maintenance/models/__init__.py +0 -29
  529. django_cfg/apps/maintenance/services/__init__.py +0 -42
  530. django_cfg/apps/newsletter/admin/newsletter_admin.py +0 -797
  531. django_cfg/apps/newsletter/apps.py +0 -22
  532. django_cfg/apps/newsletter/management/commands/test_newsletter.py +0 -139
  533. django_cfg/apps/payments/__init__.py +0 -14
  534. django_cfg/apps/payments/admin/balance_admin.py +0 -385
  535. django_cfg/apps/payments/admin/payment_admin.py +0 -313
  536. django_cfg/apps/payments/admin/withdrawal_admin.py +0 -355
  537. django_cfg/apps/payments/apps.py +0 -23
  538. django_cfg/apps/payments/management/commands/check_payment_status.py +0 -290
  539. django_cfg/apps/payments/management/commands/create_payment.py +0 -346
  540. django_cfg/apps/payments/management/commands/sync_currencies.py +0 -254
  541. django_cfg/apps/payments/urls.py +0 -14
  542. django_cfg/apps/support/apps.py +0 -11
  543. django_cfg/apps/support/managers/message_manager.py +0 -34
  544. django_cfg/apps/support/managers/ticket_manager.py +0 -68
  545. django_cfg/apps/support/utils/support_email_service.py +0 -124
  546. django_cfg/apps/support/views/api.py +0 -169
  547. django_cfg/apps/tasks/__init__.py +0 -5
  548. django_cfg/apps/tasks/admin/__init__.py +0 -11
  549. django_cfg/apps/tasks/admin/actions.py +0 -29
  550. django_cfg/apps/tasks/admin/tasks_admin.py +0 -154
  551. django_cfg/apps/tasks/apps.py +0 -17
  552. django_cfg/apps/tasks/serializers.py +0 -82
  553. django_cfg/apps/tasks/static/tasks/css/dashboard.css +0 -120
  554. django_cfg/apps/tasks/static/tasks/js/api.js +0 -100
  555. django_cfg/apps/tasks/static/tasks/js/components/DataManager.js +0 -24
  556. django_cfg/apps/tasks/static/tasks/js/components/TabManager.js +0 -85
  557. django_cfg/apps/tasks/static/tasks/js/components/TaskRenderer.js +0 -216
  558. django_cfg/apps/tasks/static/tasks/js/dashboard/main.mjs +0 -269
  559. django_cfg/apps/tasks/static/tasks/js/dashboard/overview.mjs +0 -125
  560. django_cfg/apps/tasks/static/tasks/js/dashboard/queues.mjs +0 -122
  561. django_cfg/apps/tasks/static/tasks/js/dashboard/tasks.mjs +0 -352
  562. django_cfg/apps/tasks/static/tasks/js/dashboard/workers.mjs +0 -171
  563. django_cfg/apps/tasks/tasks/__init__.py +0 -10
  564. django_cfg/apps/tasks/tasks/demo_tasks.py +0 -134
  565. django_cfg/apps/tasks/templates/tasks/components/management_actions.html +0 -50
  566. django_cfg/apps/tasks/templates/tasks/components/overview_content.html +0 -69
  567. django_cfg/apps/tasks/templates/tasks/components/queues_content.html +0 -19
  568. django_cfg/apps/tasks/templates/tasks/components/tab_navigation.html +0 -33
  569. django_cfg/apps/tasks/templates/tasks/components/tasks_content.html +0 -51
  570. django_cfg/apps/tasks/templates/tasks/components/tasks_mjs_integration.html +0 -269
  571. django_cfg/apps/tasks/templates/tasks/components/workers_content.html +0 -30
  572. django_cfg/apps/tasks/templates/tasks/layout/base.html +0 -22
  573. django_cfg/apps/tasks/templates/tasks/pages/dashboard-improved.html +0 -168
  574. django_cfg/apps/tasks/templates/tasks/pages/dashboard.html +0 -101
  575. django_cfg/apps/tasks/templates/tasks/partials/task_row_template.html +0 -40
  576. django_cfg/apps/tasks/templates/tasks/widgets/task_filters.html +0 -37
  577. django_cfg/apps/tasks/templates/tasks/widgets/task_footer.html +0 -41
  578. django_cfg/apps/tasks/templates/tasks/widgets/task_table.html +0 -50
  579. django_cfg/apps/tasks/urls.py +0 -22
  580. django_cfg/apps/tasks/urls_admin.py +0 -15
  581. django_cfg/apps/tasks/utils/__init__.py +0 -1
  582. django_cfg/apps/tasks/utils/simulator.py +0 -353
  583. django_cfg/apps/tasks/views/__init__.py +0 -16
  584. django_cfg/apps/tasks/views/api.py +0 -571
  585. django_cfg/apps/tasks/views/dashboard.py +0 -89
  586. django_cfg/core/generation/integration_generators/tasks.py +0 -92
  587. django_cfg/management/commands/rundramatiq.py +0 -24
  588. django_cfg/management/commands/rundramatiq_simulator.py +0 -22
  589. django_cfg/management/commands/task_clear.py +0 -25
  590. django_cfg/management/commands/task_status.py +0 -24
  591. django_cfg/models/tasks/__init__.py +0 -51
  592. django_cfg/models/tasks/backends.py +0 -251
  593. django_cfg/models/tasks/config.py +0 -316
  594. django_cfg/models/tasks/utils.py +0 -174
  595. django_cfg/modules/django_admin/utils/badges.py +0 -171
  596. django_cfg/modules/django_admin/utils/displays.py +0 -203
  597. django_cfg/modules/django_client/system/__init__.py +0 -24
  598. django_cfg/modules/django_client/system/base_generator.py +0 -123
  599. django_cfg/modules/django_client/system/generate_mjs_clients.py +0 -174
  600. django_cfg/modules/django_client/system/mjs_generator.py +0 -219
  601. django_cfg/modules/django_client/system/schema_parser.py +0 -195
  602. django_cfg/modules/django_client/system/templates/api_client.js.j2 +0 -87
  603. django_cfg/modules/django_client/system/templates/app_index.js.j2 +0 -13
  604. django_cfg/modules/django_client/system/templates/base_client.js.j2 +0 -166
  605. django_cfg/modules/django_client/system/templates/main_index.js.j2 +0 -80
  606. django_cfg/modules/django_client/system/templates/types.js.j2 +0 -24
  607. django_cfg/modules/django_dashboard/__init__.py +0 -23
  608. django_cfg/modules/django_dashboard/components.py +0 -312
  609. django_cfg/modules/django_dashboard/debug.py +0 -174
  610. django_cfg/modules/django_dashboard/management/commands/debug_dashboard.py +0 -109
  611. django_cfg/modules/django_dashboard/sections/__init__.py +0 -1
  612. django_cfg/modules/django_dashboard/sections/base.py +0 -129
  613. django_cfg/modules/django_dashboard/sections/commands.py +0 -33
  614. django_cfg/modules/django_dashboard/sections/documentation.py +0 -393
  615. django_cfg/modules/django_dashboard/sections/overview.py +0 -398
  616. django_cfg/modules/django_dashboard/sections/stats.py +0 -48
  617. django_cfg/modules/django_dashboard/sections/system.py +0 -74
  618. django_cfg/modules/django_logging/FIXES_SUMMARY.md +0 -276
  619. django_cfg/modules/django_logging/LOGGING_GUIDE.md +0 -504
  620. django_cfg/modules/django_tasks/__init__.py +0 -29
  621. django_cfg/modules/django_tasks/dramatiq_setup.py +0 -20
  622. django_cfg/modules/django_tasks/factory.py +0 -127
  623. django_cfg/modules/django_tasks/management/commands/rundramatiq.py +0 -253
  624. django_cfg/modules/django_tasks/management/commands/rundramatiq_simulator.py +0 -436
  625. django_cfg/modules/django_tasks/management/commands/task_clear.py +0 -226
  626. django_cfg/modules/django_tasks/management/commands/task_status.py +0 -257
  627. django_cfg/modules/django_tasks/service.py +0 -281
  628. django_cfg/modules/django_tasks/settings.py +0 -107
  629. django_cfg/modules/django_unfold/callbacks/__init__.py +0 -9
  630. django_cfg/modules/django_unfold/callbacks/actions.py +0 -51
  631. django_cfg/modules/django_unfold/callbacks/apizones.py +0 -122
  632. django_cfg/modules/django_unfold/callbacks/base.py +0 -290
  633. django_cfg/modules/django_unfold/callbacks/charts.py +0 -223
  634. django_cfg/modules/django_unfold/callbacks/commands.py +0 -40
  635. django_cfg/modules/django_unfold/callbacks/main.py +0 -294
  636. django_cfg/modules/django_unfold/callbacks/statistics.py +0 -240
  637. django_cfg/modules/django_unfold/callbacks/system.py +0 -180
  638. django_cfg/modules/django_unfold/callbacks/users.py +0 -65
  639. django_cfg/modules/django_unfold/dashboard.py +0 -338
  640. django_cfg/modules/django_unfold/models/dashboard.py +0 -207
  641. django_cfg/modules/django_unfold/models/tabs.py +0 -26
  642. django_cfg/modules/django_unfold/models.py +0 -98
  643. django_cfg/modules/django_unfold/templates/unfold/helpers/app_list.html +0 -102
  644. django_cfg/static/admin/js/commands.js +0 -171
  645. django_cfg/static/admin/js/dashboard.js +0 -126
  646. django_cfg/static/js/api/ipc/client.mjs +0 -74
  647. django_cfg/static/js/api/ipc/index.mjs +0 -13
  648. django_cfg/templates/admin/components/action_grid.html +0 -49
  649. django_cfg/templates/admin/components/card.html +0 -50
  650. django_cfg/templates/admin/components/data_table.html +0 -67
  651. django_cfg/templates/admin/components/management_commands.js +0 -375
  652. django_cfg/templates/admin/components/metric_card.html +0 -39
  653. django_cfg/templates/admin/components/modal.html +0 -58
  654. django_cfg/templates/admin/components/progress_bar.html +0 -20
  655. django_cfg/templates/admin/components/section_header.html +0 -26
  656. django_cfg/templates/admin/components/stat_item.html +0 -32
  657. django_cfg/templates/admin/components/stats_grid.html +0 -72
  658. django_cfg/templates/admin/components/status_badge.html +0 -28
  659. django_cfg/templates/admin/components/user_avatar.html +0 -27
  660. django_cfg/templates/admin/constance/change_list.html +0 -113
  661. django_cfg/templates/admin/constance/includes/default_value.html +0 -24
  662. django_cfg/templates/admin/constance/includes/fieldset_header.html +0 -15
  663. django_cfg/templates/admin/constance/includes/setting_row.html +0 -50
  664. django_cfg/templates/admin/constance/includes/table_headers.html +0 -10
  665. django_cfg/templates/admin/examples/component_class_example.html +0 -156
  666. django_cfg/templates/admin/import_export/change_list_export.html +0 -24
  667. django_cfg/templates/admin/import_export/change_list_import.html +0 -24
  668. django_cfg/templates/admin/import_export/change_list_import_export.html +0 -34
  669. django_cfg/templates/admin/index_new.html +0 -119
  670. django_cfg/templates/admin/layouts/base_dashboard.html +0 -60
  671. django_cfg/templates/admin/layouts/dashboard_with_tabs.html +0 -565
  672. django_cfg/templates/admin/sections/commands_section.html +0 -626
  673. django_cfg/templates/admin/sections/documentation_section.html +0 -172
  674. django_cfg/templates/admin/sections/overview_section.html +0 -112
  675. django_cfg/templates/admin/sections/stats_section.html +0 -35
  676. django_cfg/templates/admin/sections/system_section.html +0 -99
  677. django_cfg/templates/admin/snippets/components/CHARTS_GUIDE.md +0 -322
  678. django_cfg/templates/admin/snippets/components/activity_tracker.html +0 -92
  679. django_cfg/templates/admin/snippets/components/charts_section.html +0 -179
  680. django_cfg/templates/admin/snippets/components/django_commands.html +0 -357
  681. django_cfg/templates/admin/snippets/components/quick_actions.html +0 -66
  682. django_cfg/templates/admin/snippets/components/recent_activity.html +0 -35
  683. django_cfg/templates/admin/snippets/components/recent_activity_improved.html +0 -25
  684. django_cfg/templates/admin/snippets/components/recent_users_table.html +0 -102
  685. django_cfg/templates/admin/snippets/components/stats_cards.html +0 -4
  686. django_cfg/templates/admin/snippets/components/stats_tiles.html +0 -92
  687. django_cfg/templates/admin/snippets/components/system_health.html +0 -22
  688. django_cfg/templates/admin/snippets/components/system_metrics.html +0 -191
  689. django_cfg/templates/admin/snippets/components/user_permissions.html +0 -57
  690. django_cfg/templates/admin/snippets/tabs/app_stats_tab.html +0 -201
  691. django_cfg/templates/admin/snippets/tabs/commands_tab.html +0 -66
  692. django_cfg/templates/admin/snippets/tabs/documentation_tab.html +0 -231
  693. django_cfg/templates/admin/snippets/tabs/overview_tab.html +0 -116
  694. django_cfg/templates/admin/snippets/tabs/stats_tab.html +0 -89
  695. django_cfg/templates/admin/snippets/tabs/users_tab.html +0 -51
  696. django_cfg/templates/admin/snippets/zones/zones_table.html +0 -176
  697. django_cfg-1.4.48.dist-info/METADATA +0 -533
  698. django_cfg-1.4.48.dist-info/RECORD +0 -1008
  699. /django_cfg/apps/api/endpoints/{checker.py → endpoints_status/checker.py} +0 -0
  700. /django_cfg/apps/api/endpoints/{drf_views.py → endpoints_status/drf_views.py} +0 -0
  701. /django_cfg/apps/api/endpoints/{serializers.py → endpoints_status/serializers.py} +0 -0
  702. /django_cfg/apps/api/endpoints/{tests.py → endpoints_status/tests.py} +0 -0
  703. /django_cfg/apps/api/endpoints/{views.py → endpoints_status/views.py} +0 -0
  704. /django_cfg/apps/{accounts/migrations → business}/__init__.py +0 -0
  705. /django_cfg/apps/{accounts → business/accounts}/README.md +0 -0
  706. /django_cfg/apps/{accounts → business/accounts}/__init__.py +0 -0
  707. /django_cfg/apps/{accounts → business/accounts}/__models.py +0 -0
  708. /django_cfg/apps/{accounts → business/accounts}/admin/__init__.py +0 -0
  709. /django_cfg/apps/{accounts → business/accounts}/admin/activity_admin.py +0 -0
  710. /django_cfg/apps/{accounts → business/accounts}/admin/filters.py +0 -0
  711. /django_cfg/apps/{accounts → business/accounts}/admin/group_admin.py +0 -0
  712. /django_cfg/apps/{accounts → business/accounts}/admin/otp_admin.py +0 -0
  713. /django_cfg/apps/{accounts → business/accounts}/admin/registration_admin.py +0 -0
  714. /django_cfg/apps/{accounts → business/accounts}/admin/resources.py +0 -0
  715. /django_cfg/apps/{accounts → business/accounts}/admin/twilio_admin.py +0 -0
  716. /django_cfg/apps/{accounts → business/accounts}/management/commands/otp_test.py +0 -0
  717. /django_cfg/apps/{accounts → business/accounts}/managers/__init__.py +0 -0
  718. /django_cfg/apps/{accounts → business/accounts}/migrations/0002_add_phone_otp_clean.py +0 -0
  719. /django_cfg/apps/{accounts → business/accounts}/migrations/0003_twilioresponse.py +0 -0
  720. /django_cfg/apps/{accounts → business/accounts}/migrations/0004_delete_twilioresponse.py +0 -0
  721. /django_cfg/apps/{accounts → business/accounts}/migrations/0005_twilioresponse.py +0 -0
  722. /django_cfg/apps/{accounts → business/accounts}/migrations/0006_remove_twilioresponse_otp_secret_and_more.py +0 -0
  723. /django_cfg/apps/{accounts → business/accounts}/migrations/0007_twilioresponse.py +0 -0
  724. /django_cfg/apps/{knowbase/management → business/accounts/migrations}/__init__.py +0 -0
  725. /django_cfg/apps/{accounts → business/accounts}/models/__init__.py +0 -0
  726. /django_cfg/apps/{accounts → business/accounts}/models/activity.py +0 -0
  727. /django_cfg/apps/{accounts → business/accounts}/models/auth.py +0 -0
  728. /django_cfg/apps/{accounts → business/accounts}/models/base.py +0 -0
  729. /django_cfg/apps/{accounts → business/accounts}/models/choices.py +0 -0
  730. /django_cfg/apps/{accounts → business/accounts}/models/integrations.py +0 -0
  731. /django_cfg/apps/{accounts → business/accounts}/models/registration.py +0 -0
  732. /django_cfg/apps/{accounts → business/accounts}/models/user.py +0 -0
  733. /django_cfg/apps/{accounts → business/accounts}/serializers/__init__.py +0 -0
  734. /django_cfg/apps/{accounts → business/accounts}/serializers/otp.py +0 -0
  735. /django_cfg/apps/{accounts → business/accounts}/serializers/profile.py +0 -0
  736. /django_cfg/apps/{accounts → business/accounts}/serializers/webhook.py +0 -0
  737. /django_cfg/apps/{accounts → business/accounts}/services/__init__.py +0 -0
  738. /django_cfg/apps/{accounts → business/accounts}/services/activity_service.py +0 -0
  739. /django_cfg/apps/{accounts → business/accounts}/signals.py +0 -0
  740. /django_cfg/apps/{accounts → business/accounts}/templates/emails/base_email.html +0 -0
  741. /django_cfg/apps/{accounts → business/accounts}/templates/emails/base_email.txt +0 -0
  742. /django_cfg/apps/{accounts → business/accounts}/templates/emails/otp_email.html +0 -0
  743. /django_cfg/apps/{accounts → business/accounts}/templates/emails/otp_email.txt +0 -0
  744. /django_cfg/apps/{accounts → business/accounts}/templates/emails/welcome_email.html +0 -0
  745. /django_cfg/apps/{accounts → business/accounts}/templates/emails/welcome_email.txt +0 -0
  746. /django_cfg/apps/{accounts → business/accounts}/urls.py +0 -0
  747. /django_cfg/apps/{accounts → business/accounts}/urls_admin.py +0 -0
  748. /django_cfg/apps/{accounts → business/accounts}/utils/notifications.py +0 -0
  749. /django_cfg/apps/{accounts → business/accounts}/views/__init__.py +0 -0
  750. /django_cfg/apps/{accounts → business/accounts}/views/otp.py +0 -0
  751. /django_cfg/apps/{accounts → business/accounts}/views/webhook.py +0 -0
  752. /django_cfg/apps/{agents → business/agents}/README.md +0 -0
  753. /django_cfg/apps/{agents → business/agents}/admin/__init__.py +0 -0
  754. /django_cfg/apps/{agents → business/agents}/admin/execution_actions.py +0 -0
  755. /django_cfg/apps/{agents → business/agents}/admin/execution_admin.py +0 -0
  756. /django_cfg/apps/{agents → business/agents}/admin/registry_actions.py +0 -0
  757. /django_cfg/apps/{agents → business/agents}/admin/registry_admin.py +0 -0
  758. /django_cfg/apps/{agents → business/agents}/admin/toolsets_actions.py +0 -0
  759. /django_cfg/apps/{agents → business/agents}/admin/toolsets_admin.py +0 -0
  760. /django_cfg/apps/{agents → business/agents}/core/__init__.py +0 -0
  761. /django_cfg/apps/{agents → business/agents}/core/dependencies.py +0 -0
  762. /django_cfg/apps/{agents → business/agents}/core/django_agent.py +0 -0
  763. /django_cfg/apps/{agents → business/agents}/core/exceptions.py +0 -0
  764. /django_cfg/apps/{agents → business/agents}/core/models.py +0 -0
  765. /django_cfg/apps/{agents → business/agents}/core/orchestrator.py +0 -0
  766. /django_cfg/apps/{agents → business/agents}/examples/__init__.py +0 -0
  767. /django_cfg/apps/{agents → business/agents}/examples/simple_example.py +0 -0
  768. /django_cfg/apps/{agents → business/agents}/integration/__init__.py +0 -0
  769. /django_cfg/apps/{agents → business/agents}/integration/middleware.py +0 -0
  770. /django_cfg/apps/{agents → business/agents}/integration/signals.py +0 -0
  771. /django_cfg/apps/{agents → business/agents}/management/__init__.py +0 -0
  772. /django_cfg/apps/{agents → business/agents}/management/commands/__init__.py +0 -0
  773. /django_cfg/apps/{agents → business/agents}/managers/__init__.py +0 -0
  774. /django_cfg/apps/{agents → business/agents}/managers/execution.py +0 -0
  775. /django_cfg/apps/{agents → business/agents}/managers/registry.py +0 -0
  776. /django_cfg/apps/{agents → business/agents}/managers/toolsets.py +0 -0
  777. /django_cfg/apps/{agents → business/agents}/migrations/0001_initial.py +0 -0
  778. /django_cfg/apps/{agents → business/agents}/migrations/__init__.py +0 -0
  779. /django_cfg/apps/{agents → business/agents}/models/__init__.py +0 -0
  780. /django_cfg/apps/{agents → business/agents}/models/execution.py +0 -0
  781. /django_cfg/apps/{agents → business/agents}/models/registry.py +0 -0
  782. /django_cfg/apps/{agents → business/agents}/models/toolsets.py +0 -0
  783. /django_cfg/apps/{agents → business/agents}/patterns/__init__.py +0 -0
  784. /django_cfg/apps/{agents → business/agents}/toolsets/__init__.py +0 -0
  785. /django_cfg/apps/{agents → business/agents}/toolsets/cache_toolset.py +0 -0
  786. /django_cfg/apps/{agents → business/agents}/toolsets/django_toolset.py +0 -0
  787. /django_cfg/apps/{agents → business/agents}/toolsets/file_toolset.py +0 -0
  788. /django_cfg/apps/{agents → business/agents}/toolsets/orm_toolset.py +0 -0
  789. /django_cfg/apps/{agents → business/agents}/urls.py +0 -0
  790. /django_cfg/apps/{agents → business/agents}/urls_admin.py +0 -0
  791. /django_cfg/apps/{knowbase → business/knowbase}/README.md +0 -0
  792. /django_cfg/apps/{knowbase → business/knowbase}/admin/__init__.py +0 -0
  793. /django_cfg/apps/{knowbase → business/knowbase}/admin/archive_actions.py +0 -0
  794. /django_cfg/apps/{knowbase → business/knowbase}/admin/archive_admin.py +0 -0
  795. /django_cfg/apps/{knowbase → business/knowbase}/admin/chat_actions.py +0 -0
  796. /django_cfg/apps/{knowbase → business/knowbase}/admin/chat_admin.py +0 -0
  797. /django_cfg/apps/{knowbase → business/knowbase}/admin/document_actions.py +0 -0
  798. /django_cfg/apps/{knowbase → business/knowbase}/admin/document_admin.py +0 -0
  799. /django_cfg/apps/{knowbase → business/knowbase}/admin/external_data_actions.py +0 -0
  800. /django_cfg/apps/{knowbase → business/knowbase}/admin/external_data_admin.py +0 -0
  801. /django_cfg/apps/{knowbase → business/knowbase}/config/README.md +0 -0
  802. /django_cfg/apps/{knowbase → business/knowbase}/config/__init__.py +0 -0
  803. /django_cfg/apps/{knowbase → business/knowbase}/config/constance_fields.py +0 -0
  804. /django_cfg/apps/{knowbase → business/knowbase}/config/constance_settings.py +0 -0
  805. /django_cfg/apps/{knowbase → business/knowbase}/config/settings.py +0 -0
  806. /django_cfg/apps/{knowbase/management/commands → business/knowbase/management}/__init__.py +0 -0
  807. /django_cfg/apps/{leads → business/knowbase/management/commands}/__init__.py +0 -0
  808. /django_cfg/apps/{knowbase → business/knowbase}/management/commands/knowbase_stats.py +0 -0
  809. /django_cfg/apps/{knowbase → business/knowbase}/management/commands/setup_knowbase.py +0 -0
  810. /django_cfg/apps/{knowbase → business/knowbase}/managers/__init__.py +0 -0
  811. /django_cfg/apps/{knowbase → business/knowbase}/managers/archive.py +0 -0
  812. /django_cfg/apps/{knowbase → business/knowbase}/managers/base.py +0 -0
  813. /django_cfg/apps/{knowbase → business/knowbase}/managers/chat.py +0 -0
  814. /django_cfg/apps/{knowbase → business/knowbase}/managers/document.py +0 -0
  815. /django_cfg/apps/{knowbase → business/knowbase}/managers/external_data.py +0 -0
  816. /django_cfg/apps/{knowbase → business/knowbase}/migrations/0001_initial.py +0 -0
  817. /django_cfg/apps/{knowbase → business/knowbase}/migrations/0002_archiveitem_archiveitemchunk_documentarchive_and_more.py +0 -0
  818. /django_cfg/apps/{knowbase → business/knowbase}/migrations/0003_alter_documentarchive_archive_type.py +0 -0
  819. /django_cfg/apps/{knowbase → business/knowbase}/migrations/__init__.py +0 -0
  820. /django_cfg/apps/{knowbase → business/knowbase}/mixins/__init__.py +0 -0
  821. /django_cfg/apps/{knowbase → business/knowbase}/mixins/config/__init__.py +0 -0
  822. /django_cfg/apps/{knowbase → business/knowbase}/mixins/config/defaults.py +0 -0
  823. /django_cfg/apps/{knowbase → business/knowbase}/mixins/config/meta_config.py +0 -0
  824. /django_cfg/apps/{knowbase → business/knowbase}/mixins/config.py +0 -0
  825. /django_cfg/apps/{knowbase → business/knowbase}/mixins/creator.py +0 -0
  826. /django_cfg/apps/{knowbase → business/knowbase}/mixins/external_data_mixin.py +0 -0
  827. /django_cfg/apps/{knowbase → business/knowbase}/mixins/generators/__init__.py +0 -0
  828. /django_cfg/apps/{knowbase → business/knowbase}/mixins/generators/content_generator.py +0 -0
  829. /django_cfg/apps/{knowbase → business/knowbase}/mixins/generators/field_analyzer.py +0 -0
  830. /django_cfg/apps/{knowbase → business/knowbase}/mixins/generators/metadata_generator.py +0 -0
  831. /django_cfg/apps/{knowbase → business/knowbase}/models/__init__.py +0 -0
  832. /django_cfg/apps/{knowbase → business/knowbase}/models/archive.py +0 -0
  833. /django_cfg/apps/{knowbase → business/knowbase}/models/base.py +0 -0
  834. /django_cfg/apps/{knowbase → business/knowbase}/models/chat.py +0 -0
  835. /django_cfg/apps/{knowbase → business/knowbase}/models/document.py +0 -0
  836. /django_cfg/apps/{knowbase → business/knowbase}/serializers/__init__.py +0 -0
  837. /django_cfg/apps/{knowbase → business/knowbase}/serializers/archive_serializers.py +0 -0
  838. /django_cfg/apps/{knowbase → business/knowbase}/serializers/chat_serializers.py +0 -0
  839. /django_cfg/apps/{knowbase → business/knowbase}/serializers/document_serializers.py +0 -0
  840. /django_cfg/apps/{knowbase → business/knowbase}/serializers/external_data_serializers.py +0 -0
  841. /django_cfg/apps/{knowbase → business/knowbase}/serializers/public_serializers.py +0 -0
  842. /django_cfg/apps/{knowbase → business/knowbase}/services/__init__.py +0 -0
  843. /django_cfg/apps/{knowbase → business/knowbase}/services/archive/__init__.py +0 -0
  844. /django_cfg/apps/{knowbase → business/knowbase}/services/archive/analyzers/__init__.py +0 -0
  845. /django_cfg/apps/{knowbase → business/knowbase}/services/archive/analyzers/complexity_analyzer.py +0 -0
  846. /django_cfg/apps/{knowbase → business/knowbase}/services/archive/analyzers/purpose_detector.py +0 -0
  847. /django_cfg/apps/{knowbase → business/knowbase}/services/archive/analyzers/quality_analyzer.py +0 -0
  848. /django_cfg/apps/{knowbase → business/knowbase}/services/archive/analyzers/tag_generator.py +0 -0
  849. /django_cfg/apps/{knowbase → business/knowbase}/services/archive/archive_service.py +0 -0
  850. /django_cfg/apps/{knowbase → business/knowbase}/services/archive/chunking/__init__.py +0 -0
  851. /django_cfg/apps/{knowbase → business/knowbase}/services/archive/chunking/base.py +0 -0
  852. /django_cfg/apps/{knowbase → business/knowbase}/services/archive/chunking/json_chunker.py +0 -0
  853. /django_cfg/apps/{knowbase → business/knowbase}/services/archive/chunking/markdown_chunker.py +0 -0
  854. /django_cfg/apps/{knowbase → business/knowbase}/services/archive/chunking/python_chunker.py +0 -0
  855. /django_cfg/apps/{knowbase → business/knowbase}/services/archive/chunking/text_chunker.py +0 -0
  856. /django_cfg/apps/{knowbase → business/knowbase}/services/archive/chunking_service.py +0 -0
  857. /django_cfg/apps/{knowbase → business/knowbase}/services/archive/context/__init__.py +0 -0
  858. /django_cfg/apps/{knowbase → business/knowbase}/services/archive/context/builders.py +0 -0
  859. /django_cfg/apps/{knowbase → business/knowbase}/services/archive/context/models.py +0 -0
  860. /django_cfg/apps/{knowbase → business/knowbase}/services/archive/exceptions.py +0 -0
  861. /django_cfg/apps/{knowbase → business/knowbase}/services/archive/extraction_service.py +0 -0
  862. /django_cfg/apps/{knowbase → business/knowbase}/services/base.py +0 -0
  863. /django_cfg/apps/{knowbase → business/knowbase}/services/chat_service.py +0 -0
  864. /django_cfg/apps/{knowbase → business/knowbase}/services/document_service.py +0 -0
  865. /django_cfg/apps/{knowbase → business/knowbase}/services/embedding/__init__.py +0 -0
  866. /django_cfg/apps/{knowbase → business/knowbase}/services/embedding/batch_result.py +0 -0
  867. /django_cfg/apps/{knowbase → business/knowbase}/services/embedding/models.py +0 -0
  868. /django_cfg/apps/{knowbase → business/knowbase}/services/prompt_builder.py +0 -0
  869. /django_cfg/apps/{knowbase → business/knowbase}/services/search_service.py +0 -0
  870. /django_cfg/apps/{knowbase → business/knowbase}/signals/__init__.py +0 -0
  871. /django_cfg/apps/{knowbase → business/knowbase}/signals/archive_signals.py +0 -0
  872. /django_cfg/apps/{knowbase → business/knowbase}/signals/chat_signals.py +0 -0
  873. /django_cfg/apps/{knowbase → business/knowbase}/signals/document_signals.py +0 -0
  874. /django_cfg/apps/{knowbase → business/knowbase}/signals/external_data_signals.py +0 -0
  875. /django_cfg/apps/{knowbase → business/knowbase}/tasks/__init__.py +0 -0
  876. /django_cfg/apps/{knowbase → business/knowbase}/tasks/archive_tasks.py +0 -0
  877. /django_cfg/apps/{knowbase → business/knowbase}/tasks/external_data_tasks.py +0 -0
  878. /django_cfg/apps/{knowbase → business/knowbase}/tasks/maintenance.py +0 -0
  879. /django_cfg/apps/{knowbase → business/knowbase}/urls.py +0 -0
  880. /django_cfg/apps/{knowbase → business/knowbase}/urls_admin.py +0 -0
  881. /django_cfg/apps/{knowbase → business/knowbase}/urls_system.py +0 -0
  882. /django_cfg/apps/{knowbase → business/knowbase}/utils/__init__.py +0 -0
  883. /django_cfg/apps/{knowbase → business/knowbase}/utils/text_processing.py +0 -0
  884. /django_cfg/apps/{knowbase → business/knowbase}/utils/validation.py +0 -0
  885. /django_cfg/apps/{knowbase → business/knowbase}/views/__init__.py +0 -0
  886. /django_cfg/apps/{knowbase → business/knowbase}/views/chat_views.py +0 -0
  887. /django_cfg/apps/{knowbase → business/knowbase}/views/document_views.py +0 -0
  888. /django_cfg/apps/{knowbase → business/knowbase}/views/public_views.py +0 -0
  889. /django_cfg/apps/{leads → business/leads}/README.md +0 -0
  890. /django_cfg/apps/{leads/migrations → business/leads}/__init__.py +0 -0
  891. /django_cfg/apps/{leads → business/leads}/admin/__init__.py +0 -0
  892. /django_cfg/apps/{leads → business/leads}/admin/actions.py +0 -0
  893. /django_cfg/apps/{leads → business/leads}/admin/leads_admin.py +0 -0
  894. /django_cfg/apps/{leads → business/leads}/admin/resources.py +0 -0
  895. /django_cfg/apps/{leads → business/leads}/admin.py +0 -0
  896. /django_cfg/apps/{leads → business/leads}/migrations/0001_initial.py +0 -0
  897. /django_cfg/apps/{maintenance/management → business/leads/migrations}/__init__.py +0 -0
  898. /django_cfg/apps/{leads → business/leads}/models.py +0 -0
  899. /django_cfg/apps/{leads → business/leads}/serializers.py +0 -0
  900. /django_cfg/apps/{leads → business/leads}/signals.py +0 -0
  901. /django_cfg/apps/{leads → business/leads}/tests.py +0 -0
  902. /django_cfg/apps/{leads → business/leads}/urls.py +0 -0
  903. /django_cfg/apps/{leads → business/leads}/urls_admin.py +0 -0
  904. /django_cfg/apps/{leads → business/leads}/views.py +0 -0
  905. /django_cfg/apps/{newsletter → business/newsletter}/README.md +0 -0
  906. /django_cfg/apps/{maintenance/management/commands → business/newsletter}/__init__.py +0 -0
  907. /django_cfg/apps/{newsletter → business/newsletter}/admin/__init__.py +0 -0
  908. /django_cfg/apps/{newsletter → business/newsletter}/admin/actions.py +0 -0
  909. /django_cfg/apps/{newsletter → business/newsletter}/admin/filters.py +0 -0
  910. /django_cfg/apps/{newsletter → business/newsletter}/admin/resources.py +0 -0
  911. /django_cfg/apps/{newsletter → business/newsletter}/admin.py +0 -0
  912. /django_cfg/apps/{newsletter → business/newsletter}/admin_filters.py +0 -0
  913. /django_cfg/apps/{maintenance/migrations → business/newsletter/management}/__init__.py +0 -0
  914. /django_cfg/apps/{newsletter → business/newsletter/management/commands}/__init__.py +0 -0
  915. /django_cfg/apps/{newsletter → business/newsletter}/managers/README.md +0 -0
  916. /django_cfg/apps/{newsletter → business/newsletter}/managers/__init__.py +0 -0
  917. /django_cfg/apps/{newsletter → business/newsletter}/migrations/0001_initial.py +0 -0
  918. /django_cfg/apps/{newsletter/management → business/newsletter/migrations}/__init__.py +0 -0
  919. /django_cfg/apps/{newsletter → business/newsletter}/models.py +0 -0
  920. /django_cfg/apps/{newsletter → business/newsletter}/serializers.py +0 -0
  921. /django_cfg/apps/{newsletter → business/newsletter}/services/email_service.py +0 -0
  922. /django_cfg/apps/{newsletter → business/newsletter}/signals.py +0 -0
  923. /django_cfg/apps/{newsletter → business/newsletter}/urls.py +0 -0
  924. /django_cfg/apps/{maintenance → business/newsletter}/urls_admin.py +0 -0
  925. /django_cfg/apps/{newsletter → business/newsletter}/utils/__init__.py +0 -0
  926. /django_cfg/apps/{newsletter → business/newsletter}/views/__init__.py +0 -0
  927. /django_cfg/apps/{newsletter → business/newsletter}/views/campaigns.py +0 -0
  928. /django_cfg/apps/{newsletter → business/newsletter}/views/emails.py +0 -0
  929. /django_cfg/apps/{newsletter → business/newsletter}/views/newsletters.py +0 -0
  930. /django_cfg/apps/{newsletter → business/newsletter}/views/subscriptions.py +0 -0
  931. /django_cfg/apps/{newsletter → business/newsletter}/views/tracking.py +0 -0
  932. /django_cfg/apps/{payments → business/payments}/CONFIGURATION.md +0 -0
  933. /django_cfg/apps/{payments → business/payments}/admin/__init__.py +0 -0
  934. /django_cfg/apps/{payments → business/payments}/admin/actions.py +0 -0
  935. /django_cfg/apps/{payments → business/payments}/admin/balance_actions.py +0 -0
  936. /django_cfg/apps/{payments → business/payments}/admin/currency_admin.py +0 -0
  937. /django_cfg/apps/{payments → business/payments}/admin/filters.py +0 -0
  938. /django_cfg/apps/{payments → business/payments}/admin/payment_actions.py +0 -0
  939. /django_cfg/apps/{payments → business/payments}/admin/withdrawal_actions.py +0 -0
  940. /django_cfg/apps/{payments → business/payments}/api/__init__.py +0 -0
  941. /django_cfg/apps/{payments → business/payments}/api/serializers.py +0 -0
  942. /django_cfg/apps/{payments → business/payments}/api/urls.py +0 -0
  943. /django_cfg/apps/{payments → business/payments}/api/views.py +0 -0
  944. /django_cfg/apps/{payments → business/payments}/config.py +0 -0
  945. /django_cfg/apps/{payments → business/payments}/management/README.md +0 -0
  946. /django_cfg/apps/{newsletter/management/commands → business/payments/management}/__init__.py +0 -0
  947. /django_cfg/apps/{newsletter/migrations → business/payments/management/commands}/__init__.py +0 -0
  948. /django_cfg/apps/{payments → business/payments}/migrations/0001_initial.py +0 -0
  949. /django_cfg/apps/{payments/management → business/payments/migrations}/__init__.py +0 -0
  950. /django_cfg/apps/{payments → business/payments}/models/__init__.py +0 -0
  951. /django_cfg/apps/{payments → business/payments}/models/balance.py +0 -0
  952. /django_cfg/apps/{payments → business/payments}/models/base.py +0 -0
  953. /django_cfg/apps/{payments → business/payments}/models/currency.py +0 -0
  954. /django_cfg/apps/{payments → business/payments}/models/managers/__init__.py +0 -0
  955. /django_cfg/apps/{payments → business/payments}/models/managers/balance_managers.py +0 -0
  956. /django_cfg/apps/{payments → business/payments}/models/managers/payment_managers.py +0 -0
  957. /django_cfg/apps/{payments → business/payments}/models/payment.py +0 -0
  958. /django_cfg/apps/{payments → business/payments}/models/withdrawal.py +0 -0
  959. /django_cfg/apps/{payments → business/payments}/services/__init__.py +0 -0
  960. /django_cfg/apps/{payments → business/payments}/services/balance_service.py +0 -0
  961. /django_cfg/apps/{payments → business/payments}/services/payment_service.py +0 -0
  962. /django_cfg/apps/{payments → business/payments}/services/providers/__init__.py +0 -0
  963. /django_cfg/apps/{payments → business/payments}/services/providers/models.py +0 -0
  964. /django_cfg/apps/{payments → business/payments}/services/providers/nowpayments/__init__.py +0 -0
  965. /django_cfg/apps/{payments → business/payments}/services/providers/nowpayments/config.py +0 -0
  966. /django_cfg/apps/{payments → business/payments}/services/providers/nowpayments/parser.py +0 -0
  967. /django_cfg/apps/{payments → business/payments}/services/providers/nowpayments/provider.py +0 -0
  968. /django_cfg/apps/{payments/management/commands → business/support}/__init__.py +0 -0
  969. /django_cfg/apps/{support → business/support}/admin/__init__.py +0 -0
  970. /django_cfg/apps/{support → business/support}/admin/actions.py +0 -0
  971. /django_cfg/apps/{support → business/support}/admin/filters.py +0 -0
  972. /django_cfg/apps/{support → business/support}/admin/resources.py +0 -0
  973. /django_cfg/apps/{support → business/support}/admin/support_admin.py +0 -0
  974. /django_cfg/apps/{support → business/support}/admin.py +0 -0
  975. /django_cfg/apps/{support → business/support}/admin_filters.py +0 -0
  976. /django_cfg/apps/{support → business/support}/migrations/0001_initial.py +0 -0
  977. /django_cfg/apps/{support → business/support}/migrations/0002_alter_message_ticket.py +0 -0
  978. /django_cfg/apps/{payments → business/support}/migrations/__init__.py +0 -0
  979. /django_cfg/apps/{support → business/support}/models.py +0 -0
  980. /django_cfg/apps/{support → business/support}/serializers.py +0 -0
  981. /django_cfg/apps/{support → business/support}/signals.py +0 -0
  982. /django_cfg/apps/{support → business/support}/templates/support/chat/access_denied.html +0 -0
  983. /django_cfg/apps/{support → business/support}/templates/support/chat/ticket_chat.html +0 -0
  984. /django_cfg/apps/{support → business/support}/urls.py +0 -0
  985. /django_cfg/apps/{newsletter → business/support}/urls_admin.py +0 -0
  986. /django_cfg/apps/{support → business/support/utils}/__init__.py +0 -0
  987. /django_cfg/apps/{support → business/support}/views/__init__.py +0 -0
  988. /django_cfg/apps/{support → business/support}/views/admin.py +0 -0
  989. /django_cfg/apps/{support → business/support}/views/chat.py +0 -0
  990. /django_cfg/apps/{support/migrations → integrations}/__init__.py +0 -0
  991. /django_cfg/apps/{support/utils → integrations/grpc/management/commands}/__init__.py +0 -0
  992. /django_cfg/{modules/django_dashboard/management → apps/integrations/grpc/migrations}/__init__.py +0 -0
  993. /django_cfg/{modules/django_dashboard/management/commands → apps/system}/__init__.py +0 -0
  994. /django_cfg/apps/{maintenance → system/maintenance}/admin/__init__.py +0 -0
  995. /django_cfg/apps/{maintenance → system/maintenance}/admin/actions.py +0 -0
  996. /django_cfg/apps/{maintenance → system/maintenance}/admin/log_admin.py +0 -0
  997. /django_cfg/{modules/django_tasks → apps/system/maintenance}/management/__init__.py +0 -0
  998. /django_cfg/{modules/django_tasks → apps/system/maintenance}/management/commands/__init__.py +0 -0
  999. /django_cfg/apps/{maintenance → system/maintenance}/management/commands/maintenance.py +0 -0
  1000. /django_cfg/apps/{maintenance → system/maintenance}/management/commands/process_scheduled_maintenance.py +0 -0
  1001. /django_cfg/apps/{maintenance → system/maintenance}/management/commands/sync_cloudflare.py +0 -0
  1002. /django_cfg/apps/{maintenance → system/maintenance}/managers/__init__.py +0 -0
  1003. /django_cfg/apps/{maintenance → system/maintenance}/managers/cloudflare_site_manager.py +0 -0
  1004. /django_cfg/apps/{maintenance → system/maintenance}/managers/maintenance_log_manager.py +0 -0
  1005. /django_cfg/apps/{maintenance → system/maintenance}/migrations/0001_initial.py +0 -0
  1006. /django_cfg/apps/{maintenance → system/maintenance}/migrations/0002_cloudflaresite_maintenance_url.py +0 -0
  1007. /django_cfg/apps/{maintenance → system/maintenance}/migrations/0003_cloudflaresite_include_subdomains_and_more.py +0 -0
  1008. /django_cfg/apps/{maintenance → system/maintenance}/models/cloudflare_api_key.py +0 -0
  1009. /django_cfg/apps/{maintenance → system/maintenance}/models/cloudflare_site.py +0 -0
  1010. /django_cfg/apps/{maintenance → system/maintenance}/models/maintenance_log.py +0 -0
  1011. /django_cfg/apps/{maintenance → system/maintenance}/models/scheduled_maintenance.py +0 -0
  1012. /django_cfg/apps/{maintenance → system/maintenance}/services/bulk_operations_service.py +0 -0
  1013. /django_cfg/apps/{maintenance → system/maintenance}/services/maintenance_service.py +0 -0
  1014. /django_cfg/apps/{maintenance → system/maintenance}/services/scheduled_maintenance_service.py +0 -0
  1015. /django_cfg/apps/{maintenance → system/maintenance}/services/site_sync_service.py +0 -0
  1016. /django_cfg/apps/{maintenance → system/maintenance}/urls.py +0 -0
  1017. /django_cfg/apps/{support → system/maintenance}/urls_admin.py +0 -0
  1018. /django_cfg/apps/{maintenance → system/maintenance}/utils/__init__.py +0 -0
  1019. /django_cfg/apps/{maintenance → system/maintenance}/utils/retry_utils.py +0 -0
  1020. {django_cfg-1.4.48.dist-info → django_cfg-1.5.7.dist-info}/WHEEL +0 -0
  1021. {django_cfg-1.4.48.dist-info → django_cfg-1.5.7.dist-info}/entry_points.txt +0 -0
  1022. {django_cfg-1.4.48.dist-info → django_cfg-1.5.7.dist-info}/licenses/LICENSE +0 -0
@@ -0,0 +1,354 @@
1
+ """
2
+ Document processing tasks with Dramatiq.
3
+ """
4
+
5
+ import logging
6
+ import time
7
+ from typing import Any, Dict, List, Optional, Tuple
8
+
9
+ import dramatiq
10
+ from django.db import transaction
11
+ from django.utils import timezone
12
+
13
+ from django_cfg.modules.django_llm.llm.client import LLMClient
14
+
15
+ from ..models import Document, DocumentChunk, ProcessingStatus
16
+ from ..services.embedding import process_document_chunks_optimized
17
+ from ..utils.chunk_settings import get_chunking_params_for_type, get_embedding_model
18
+ from ..utils.text_processing import SemanticChunker, TextProcessor
19
+
20
+ logger = logging.getLogger(__name__)
21
+
22
+
23
+ @dramatiq.actor(
24
+ queue_name="knowbase",
25
+ max_retries=3,
26
+ min_backoff=1000, # 1 second
27
+ max_backoff=30000, # 30 seconds
28
+ priority=5
29
+ )
30
+ def process_document_async(
31
+ document_id: str,
32
+ chunk_size: Optional[int] = None,
33
+ chunk_overlap: Optional[int] = None,
34
+ embedding_model: Optional[str] = None
35
+ ) -> Dict[str, Any]:
36
+ """
37
+ Process document asynchronously with full pipeline.
38
+
39
+ Args:
40
+ document_id: Document UUID to process
41
+ chunk_size: Maximum chunk size in characters (uses Constance setting if None)
42
+ chunk_overlap: Overlap between chunks (uses Constance setting if None)
43
+ embedding_model: Model to use for embeddings (uses Constance setting if None)
44
+
45
+ Returns:
46
+ Processing results with statistics
47
+ """
48
+ start_time = time.time()
49
+
50
+ try:
51
+ with transaction.atomic():
52
+ # Load document
53
+ document = Document.objects.select_for_update().get(
54
+ id=document_id
55
+ )
56
+
57
+ # Update processing status
58
+ document.processing_status = ProcessingStatus.PROCESSING
59
+ document.processing_started_at = timezone.now()
60
+ document.save(update_fields=['processing_status', 'processing_started_at'])
61
+
62
+ logger.info(f"Starting document processing: {document_id}")
63
+
64
+ # Get dynamic settings from Constance
65
+ chunking_params = get_chunking_params_for_type('document')
66
+ final_chunk_size = chunk_size or chunking_params['chunk_size']
67
+ final_chunk_overlap = chunk_overlap or chunking_params['overlap']
68
+ final_embedding_model = embedding_model or get_embedding_model()
69
+
70
+ logger.info(f"Using dynamic settings: chunk_size={final_chunk_size}, overlap={final_chunk_overlap}, model={final_embedding_model}")
71
+
72
+ # Initialize services
73
+ text_processor = TextProcessor()
74
+ chunker = SemanticChunker(
75
+ chunk_size=final_chunk_size,
76
+ overlap=final_chunk_overlap
77
+ )
78
+
79
+ # Step 1: Clean and preprocess text
80
+ cleaned_content = text_processor.clean_text(document.content)
81
+
82
+ # Step 2: Create semantic chunks
83
+ chunks = chunker.create_chunks(cleaned_content)
84
+
85
+ logger.info(f"Created {len(chunks)} chunks for document {document_id}")
86
+
87
+ # Step 3: Create chunks without embeddings first
88
+ chunk_objects = []
89
+ for idx, chunk_text in enumerate(chunks):
90
+ chunk = DocumentChunk(
91
+ document=document,
92
+ user_id=document.user_id,
93
+ content=chunk_text,
94
+ chunk_index=idx,
95
+ character_count=len(chunk_text),
96
+ embedding_model=final_embedding_model,
97
+ embedding=[0.0] * 1536, # Temporary zero vector, will be replaced
98
+ metadata={
99
+ "processed_at": timezone.now().isoformat(),
100
+ "chunk_size": len(chunk_text),
101
+ "overlap_size": final_chunk_overlap if idx > 0 else 0
102
+ }
103
+ )
104
+ chunk_objects.append(chunk)
105
+
106
+ # Bulk create chunks for performance
107
+ DocumentChunk.objects.bulk_create(
108
+ chunk_objects,
109
+ batch_size=100
110
+ )
111
+
112
+ # Step 4: Generate embeddings using optimized processor
113
+ created_chunks = DocumentChunk.objects.filter(document=document).order_by('chunk_index')
114
+ chunks_list = list(created_chunks)
115
+ logger.info(f"🔍 About to process {len(chunks_list)} chunks for embeddings")
116
+
117
+ embedding_result = process_document_chunks_optimized(chunks_list)
118
+
119
+ logger.info(f"🔍 Embedding result: {embedding_result.successful_chunks}/{embedding_result.total_chunks}")
120
+
121
+ total_tokens = embedding_result.total_tokens
122
+ total_cost = embedding_result.total_cost
123
+
124
+ logger.info(
125
+ f"Optimized embedding processing: {embedding_result.successful_chunks}/{embedding_result.total_chunks} chunks, "
126
+ f"{total_tokens} tokens, ${total_cost:.4f} cost, {embedding_result.processing_time:.2f}s"
127
+ )
128
+
129
+ # Step 5: Update document status
130
+ processing_time = time.time() - start_time
131
+
132
+ # Check if embedding generation failed
133
+ if embedding_result.successful_chunks == 0 and embedding_result.total_chunks > 0:
134
+ # All embeddings failed
135
+ document.processing_status = ProcessingStatus.FAILED
136
+ document.processing_error = "; ".join(embedding_result.errors) if embedding_result.errors else "All embeddings failed to generate"
137
+ else:
138
+ document.processing_status = ProcessingStatus.COMPLETED
139
+
140
+ document.processing_completed_at = timezone.now()
141
+ document.chunks_count = embedding_result.total_chunks
142
+ document.total_tokens = total_tokens
143
+ document.total_cost_usd = total_cost
144
+ document.save(update_fields=[
145
+ 'processing_status', 'processing_completed_at', 'processing_error',
146
+ 'chunks_count', 'total_tokens', 'total_cost_usd'
147
+ ])
148
+
149
+ return {
150
+ "document_id": str(document.id),
151
+ "status": document.processing_status.value,
152
+ "chunks_count": document.chunks_count,
153
+ "total_tokens": document.total_tokens,
154
+ "total_cost_usd": document.total_cost_usd,
155
+ "processing_time": processing_time,
156
+ "errors": embedding_result.errors
157
+ }
158
+
159
+ except Document.DoesNotExist:
160
+ logger.error(f"Document {document_id} not found.")
161
+ return {
162
+ "document_id": document_id,
163
+ "status": ProcessingStatus.FAILED.value,
164
+ "error": f"Document {document_id} not found."
165
+ }
166
+ except Exception as exc:
167
+ document = Document.objects.filter(id=document_id).first()
168
+ if document:
169
+ document.processing_status = ProcessingStatus.FAILED
170
+ document.processing_completed_at = timezone.now()
171
+ document.processing_error = str(exc)
172
+ document.save(update_fields=['processing_status', 'processing_completed_at', 'processing_error'])
173
+ logger.error(f"Document processing failed for {document_id}: {exc}", exc_info=True)
174
+ raise
175
+
176
+
177
+ def generate_embeddings_batch(
178
+ chunks: List[str],
179
+ document_id: str,
180
+ embedding_model: str = "text-embedding-ada-002",
181
+ batch_size: int = 50
182
+ ) -> List[Tuple[str, List[float], int, float]]:
183
+ """
184
+ Generate embeddings for text chunks in batches.
185
+
186
+ Args:
187
+ chunks: List of text chunks
188
+ document_id: Parent document ID
189
+ embedding_model: Model to use for embeddings
190
+ batch_size: Number of chunks per batch
191
+
192
+ Returns:
193
+ List of (chunk_text, embedding, tokens, cost) tuples
194
+ """
195
+ try:
196
+ from django_cfg.apps.business.knowbase.config.settings import (
197
+ get_cache_settings,
198
+ get_openai_api_key,
199
+ get_openrouter_api_key,
200
+ )
201
+ cache_settings = get_cache_settings()
202
+ llm_service = LLMClient(
203
+ apikey_openai=get_openai_api_key(),
204
+ apikey_openrouter=get_openrouter_api_key(),
205
+ cache_dir=cache_settings.cache_dir,
206
+ cache_ttl=cache_settings.cache_ttl,
207
+ max_cache_size=cache_settings.max_cache_size
208
+ )
209
+ results = []
210
+
211
+ # Process in batches to avoid rate limits
212
+ for i in range(0, len(chunks), batch_size):
213
+ batch = chunks[i:i + batch_size]
214
+
215
+ for chunk_text in batch:
216
+ # Generate embedding (sync call for simplicity)
217
+ embedding_response = llm_service.generate_embedding(chunk_text, embedding_model)
218
+
219
+ # Extract embedding vector from response
220
+ embedding_vector = embedding_response.embedding if embedding_response else []
221
+
222
+ # Use tokens and cost from embedding response if available
223
+ tokens = embedding_response.tokens if embedding_response else 0
224
+ cost = embedding_response.cost if embedding_response else 0.0
225
+
226
+ # Fallback to manual calculation if needed
227
+ if tokens == 0:
228
+ tokens = llm_service.count_tokens(chunk_text, embedding_model)
229
+ if cost == 0.0:
230
+ cost = llm_service.estimate_cost(embedding_model, tokens, 0)
231
+
232
+ results.append((
233
+ chunk_text,
234
+ embedding_vector,
235
+ tokens,
236
+ cost
237
+ ))
238
+
239
+ # Small delay between requests to respect rate limits
240
+ time.sleep(0.1)
241
+
242
+ # Longer delay between batches
243
+ if i + batch_size < len(chunks):
244
+ time.sleep(1.0)
245
+
246
+ logger.info(f"Generated {len(results)} embeddings for document {document_id}")
247
+ return results
248
+
249
+ except Exception as exc:
250
+ logger.error(f"Batch embedding generation failed: {exc}")
251
+ raise
252
+
253
+
254
+ @dramatiq.actor(
255
+ queue_name="knowbase",
256
+ max_retries=2,
257
+ priority=7 # Higher priority for reprocessing
258
+ )
259
+ def reprocess_document_chunks(
260
+ document_id: str,
261
+ new_chunk_size: int = None,
262
+ new_embedding_model: str = None
263
+ ) -> Dict[str, Any]:
264
+ """
265
+ Reprocess existing document with new parameters.
266
+
267
+ Args:
268
+ document_id: Document to reprocess
269
+ new_chunk_size: New chunk size (optional)
270
+ new_embedding_model: New embedding model (optional)
271
+
272
+ Returns:
273
+ Reprocessing results
274
+ """
275
+ try:
276
+ with transaction.atomic():
277
+ document = Document.objects.get(id=document_id)
278
+
279
+ # Delete existing chunks
280
+ DocumentChunk.objects.filter(
281
+ document=document
282
+ ).delete()
283
+
284
+ # Reset document status
285
+ document.processing_status = ProcessingStatus.PENDING
286
+ document.chunks_count = 0
287
+ document.total_tokens = 0
288
+ document.processing_error = ""
289
+ document.save(update_fields=[
290
+ 'processing_status', 'processing_started_at', 'processing_completed_at',
291
+ 'processing_error', 'chunks_count', 'total_tokens', 'total_cost_usd'
292
+ ])
293
+
294
+ # Trigger reprocessing
295
+ return process_document_async(
296
+ document_id=document_id,
297
+ chunk_size=new_chunk_size or 1000,
298
+ embedding_model=new_embedding_model or "text-embedding-ada-002"
299
+ )
300
+
301
+ except Exception as exc:
302
+ logger.error(f"Reprocessing failed for {document_id}: {exc}")
303
+ raise
304
+
305
+
306
+ @dramatiq.actor(
307
+ queue_name="knowbase",
308
+ max_retries=2,
309
+ priority=4
310
+ )
311
+ def optimize_document_embeddings(document_id: str) -> Dict[str, Any]:
312
+ """
313
+ Post-processing optimization for document embeddings.
314
+
315
+ Args:
316
+ document_id: Document to optimize
317
+
318
+ Returns:
319
+ Optimization results
320
+ """
321
+ try:
322
+ # Update vector index statistics
323
+ from django.db import connection
324
+
325
+ with connection.cursor() as cursor:
326
+ # Always analyze the table
327
+ cursor.execute("ANALYZE django_cfg_knowbase_document_chunks;")
328
+
329
+ # Check if index exists before trying to reindex
330
+ cursor.execute("""
331
+ SELECT EXISTS (
332
+ SELECT FROM pg_indexes
333
+ WHERE indexname = 'embedding_cosine_idx'
334
+ );
335
+ """)
336
+ index_exists = cursor.fetchone()[0]
337
+
338
+ if index_exists:
339
+ cursor.execute("REINDEX INDEX embedding_cosine_idx;")
340
+ logger.debug("Reindexed embedding_cosine_idx")
341
+ else:
342
+ logger.warning("embedding_cosine_idx index does not exist, skipping reindex")
343
+
344
+ logger.info(f"Optimized embeddings for document {document_id}")
345
+
346
+ return {
347
+ "status": "optimized",
348
+ "document_id": document_id,
349
+ "timestamp": timezone.now().isoformat()
350
+ }
351
+
352
+ except Exception as exc:
353
+ logger.error(f"Embedding optimization failed for {document_id}: {exc}")
354
+ raise
@@ -0,0 +1,264 @@
1
+ """
2
+ Dynamic chunk settings using Pydantic configuration.
3
+
4
+ This module provides utilities for accessing and managing chunk processing
5
+ settings with type safety and validation.
6
+ """
7
+
8
+ import logging
9
+ from typing import Any, Dict
10
+
11
+ from pydantic import BaseModel, Field, validator
12
+
13
+ from ..config.constance_settings import ConstanceSettings
14
+
15
+ logger = logging.getLogger(__name__)
16
+
17
+
18
+ class ChunkSettings(BaseModel):
19
+ """Pydantic model for chunk processing settings."""
20
+
21
+ chunk_size: int = Field(
22
+ ge=100,
23
+ le=8000,
24
+ description="Size of each chunk in characters"
25
+ )
26
+
27
+ chunk_overlap: int = Field(
28
+ ge=0,
29
+ description="Overlap between chunks in characters"
30
+ )
31
+
32
+ embedding_batch_size: int = Field(
33
+ ge=1,
34
+ le=100,
35
+ description="Number of chunks to process in one embedding batch"
36
+ )
37
+
38
+ embedding_model: str = Field(
39
+ min_length=1,
40
+ description="OpenAI embedding model name"
41
+ )
42
+
43
+ @validator('chunk_overlap')
44
+ def validate_overlap(cls, v, values):
45
+ """Ensure overlap is less than chunk_size."""
46
+ chunk_size = values.get('chunk_size')
47
+ if chunk_size and v >= chunk_size:
48
+ raise ValueError(f"Chunk overlap ({v}) must be less than chunk size ({chunk_size})")
49
+ return v
50
+
51
+ class Config:
52
+ """Pydantic configuration."""
53
+ validate_assignment = True
54
+
55
+
56
+ class ChunkSettingsManager:
57
+ """Manager for dynamic chunk settings using Pydantic configuration."""
58
+
59
+ @classmethod
60
+ def get_document_settings(cls) -> ChunkSettings:
61
+ """Get chunk settings for document processing."""
62
+ from ..config.settings import get_config
63
+ config = get_config()
64
+ return ChunkSettings(
65
+ chunk_size=ConstanceSettings.get_document_chunk_size(),
66
+ chunk_overlap=config.chunking.document_chunk_overlap,
67
+ embedding_batch_size=ConstanceSettings.get_embedding_batch_size(),
68
+ embedding_model=ConstanceSettings.get_embedding_model()
69
+ )
70
+
71
+ @classmethod
72
+ def get_archive_settings(cls) -> ChunkSettings:
73
+ """Get chunk settings for archive processing."""
74
+ from ..config.settings import get_config
75
+ config = get_config()
76
+ return ChunkSettings(
77
+ chunk_size=ConstanceSettings.get_archive_chunk_size(),
78
+ chunk_overlap=config.chunking.archive_chunk_overlap,
79
+ embedding_batch_size=ConstanceSettings.get_embedding_batch_size(),
80
+ embedding_model=ConstanceSettings.get_embedding_model()
81
+ )
82
+
83
+ @classmethod
84
+ def get_settings_for_type(cls, content_type: str) -> ChunkSettings:
85
+ """
86
+ Get chunk settings for specific content type.
87
+
88
+ Args:
89
+ content_type: Either 'document' or 'archive'
90
+
91
+ Returns:
92
+ ChunkSettings object with appropriate settings
93
+ """
94
+ if content_type == 'document':
95
+ return cls.get_document_settings()
96
+ elif content_type == 'archive':
97
+ return cls.get_archive_settings()
98
+ else:
99
+ logger.warning(f"Unknown content type: {content_type}, using document settings")
100
+ return cls.get_document_settings()
101
+
102
+ @classmethod
103
+ def get_all_settings(cls) -> Dict[str, ChunkSettings]:
104
+ """Get all chunk settings as dictionary."""
105
+ return {
106
+ 'document': cls.get_document_settings(),
107
+ 'archive': cls.get_archive_settings()
108
+ }
109
+
110
+ @classmethod
111
+ def validate_settings(cls, settings: ChunkSettings) -> bool:
112
+ """
113
+ Validate chunk settings.
114
+
115
+ Args:
116
+ settings: ChunkSettings to validate
117
+
118
+ Returns:
119
+ True if settings are valid, False otherwise
120
+ """
121
+ if settings.chunk_size <= 0:
122
+ logger.error(f"Invalid chunk_size: {settings.chunk_size}")
123
+ return False
124
+
125
+ if settings.chunk_overlap < 0:
126
+ logger.error(f"Invalid chunk_overlap: {settings.chunk_overlap}")
127
+ return False
128
+
129
+ if settings.chunk_overlap >= settings.chunk_size:
130
+ logger.error(f"Chunk overlap ({settings.chunk_overlap}) must be less than chunk size ({settings.chunk_size})")
131
+ return False
132
+
133
+ if settings.embedding_batch_size <= 0 or settings.embedding_batch_size > 2048:
134
+ logger.error(f"Invalid embedding_batch_size: {settings.embedding_batch_size} (must be 1-2048)")
135
+ return False
136
+
137
+ if not settings.embedding_model or not settings.embedding_model.strip():
138
+ logger.error("Embedding model cannot be empty")
139
+ return False
140
+
141
+ return True
142
+
143
+ @classmethod
144
+ def log_current_settings(cls) -> None:
145
+ """Log current settings for debugging."""
146
+ try:
147
+ doc_settings = cls.get_document_settings()
148
+ archive_settings = cls.get_archive_settings()
149
+
150
+ logger.info("📊 Current Chunk Settings:")
151
+ logger.info(f" 📄 Documents: size={doc_settings.chunk_size}, overlap={doc_settings.chunk_overlap}")
152
+ logger.info(f" 📦 Archives: size={archive_settings.chunk_size}, overlap={archive_settings.chunk_overlap}")
153
+ logger.info(f" 🔮 Embedding: batch_size={doc_settings.embedding_batch_size}, model={doc_settings.embedding_model}")
154
+
155
+ except Exception as e:
156
+ logger.error(f"Failed to log current settings: {e}")
157
+
158
+
159
+ # Convenience functions for easy access (using new Pydantic config)
160
+ def get_document_chunk_size() -> int:
161
+ """Get document chunk size."""
162
+ from ..config.settings import get_document_chunk_size
163
+ return get_document_chunk_size()
164
+
165
+
166
+ def get_document_chunk_overlap() -> int:
167
+ """Get document chunk overlap."""
168
+ from ..config.settings import get_document_chunk_overlap
169
+ return get_document_chunk_overlap()
170
+
171
+
172
+ def get_archive_chunk_size() -> int:
173
+ """Get archive chunk size."""
174
+ from ..config.settings import get_archive_chunk_size
175
+ return get_archive_chunk_size()
176
+
177
+
178
+ def get_archive_chunk_overlap() -> int:
179
+ """Get archive chunk overlap."""
180
+ from ..config.settings import get_archive_chunk_overlap
181
+ return get_archive_chunk_overlap()
182
+
183
+
184
+ def get_embedding_batch_size() -> int:
185
+ """Get embedding batch size."""
186
+ from ..config.settings import get_embedding_batch_size
187
+ return get_embedding_batch_size()
188
+
189
+
190
+ def get_embedding_model() -> str:
191
+ """Get embedding model."""
192
+ from ..config.settings import get_embedding_model
193
+ return get_embedding_model()
194
+
195
+
196
+ # Additional convenience functions using new Pydantic config
197
+ def get_search_results_limit() -> int:
198
+ """Get search results limit."""
199
+ from ..config.settings import get_search_results_limit
200
+ return get_search_results_limit()
201
+
202
+
203
+ def get_search_similarity_threshold() -> float:
204
+ """Get search similarity threshold."""
205
+ from ..config.settings import get_search_similarity_threshold
206
+ return get_search_similarity_threshold()
207
+
208
+
209
+ def get_chat_context_chunks() -> int:
210
+ """Get number of chunks for chat context."""
211
+ from ..config.settings import get_chat_context_chunks
212
+ return get_chat_context_chunks()
213
+
214
+
215
+ def get_chat_max_tokens() -> int:
216
+ """Get maximum tokens for chat completion."""
217
+ from ..config.settings import get_chat_max_tokens
218
+ return get_chat_max_tokens()
219
+
220
+
221
+ def get_chat_temperature() -> float:
222
+ """Get chat completion temperature."""
223
+ from ..config.settings import get_chat_temperature
224
+ return get_chat_temperature()
225
+
226
+
227
+ def get_max_archive_size_mb() -> int:
228
+ """Get maximum archive size in MB."""
229
+ from ..config.settings import get_max_archive_size_mb
230
+ return get_max_archive_size_mb()
231
+
232
+
233
+ def get_max_document_size_mb() -> int:
234
+ """Get maximum document size in MB."""
235
+ from ..config.settings import get_max_document_size_mb
236
+ return get_max_document_size_mb()
237
+
238
+
239
+ def get_processing_timeout_minutes() -> int:
240
+ """Get processing timeout in minutes."""
241
+ from ..config.settings import get_processing_timeout_minutes
242
+ return get_processing_timeout_minutes()
243
+
244
+
245
+ def get_chunking_params_for_type(content_type: str) -> Dict[str, Any]:
246
+ """
247
+ Get chunking parameters for SemanticChunker.
248
+
249
+ Args:
250
+ content_type: Either 'document' or 'archive'
251
+
252
+ Returns:
253
+ Dictionary with chunk_size and overlap parameters
254
+ """
255
+ from ..config.settings import get_chunking_params_for_type
256
+ return get_chunking_params_for_type(content_type)
257
+
258
+
259
+ # NOTE: Do NOT log settings on module import - it causes database access during app initialization
260
+ # Settings will be logged when first accessed or via management command
261
+ # try:
262
+ # ChunkSettingsManager.log_current_settings()
263
+ # except Exception as e:
264
+ # logger.debug(f"Could not log settings on import: {e}")