django-cfg 1.1.82__py3-none-any.whl → 1.2.1__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.
- django_cfg/__init__.py +20 -448
- django_cfg/apps/accounts/README.md +3 -3
- django_cfg/apps/accounts/admin/__init__.py +0 -2
- django_cfg/apps/accounts/admin/activity.py +2 -9
- django_cfg/apps/accounts/admin/filters.py +0 -42
- django_cfg/apps/accounts/admin/inlines.py +8 -8
- django_cfg/apps/accounts/admin/otp.py +5 -5
- django_cfg/apps/accounts/admin/registration_source.py +1 -8
- django_cfg/apps/accounts/admin/user.py +12 -20
- django_cfg/apps/accounts/managers/user_manager.py +2 -129
- django_cfg/apps/accounts/migrations/0006_remove_twilioresponse_otp_secret_and_more.py +46 -0
- django_cfg/apps/accounts/models.py +3 -123
- django_cfg/apps/accounts/serializers/otp.py +40 -44
- django_cfg/apps/accounts/serializers/profile.py +0 -2
- django_cfg/apps/accounts/services/otp_service.py +98 -186
- django_cfg/apps/accounts/signals.py +25 -15
- django_cfg/apps/accounts/utils/auth_email_service.py +84 -0
- django_cfg/apps/accounts/views/otp.py +35 -36
- django_cfg/apps/agents/README.md +129 -0
- django_cfg/apps/agents/__init__.py +68 -0
- django_cfg/apps/agents/admin/__init__.py +17 -0
- django_cfg/apps/agents/admin/execution_admin.py +460 -0
- django_cfg/apps/agents/admin/registry_admin.py +360 -0
- django_cfg/apps/agents/admin/toolsets_admin.py +482 -0
- django_cfg/apps/agents/apps.py +29 -0
- django_cfg/apps/agents/core/__init__.py +20 -0
- django_cfg/apps/agents/core/agent.py +281 -0
- django_cfg/apps/agents/core/dependencies.py +154 -0
- django_cfg/apps/agents/core/exceptions.py +66 -0
- django_cfg/apps/agents/core/models.py +106 -0
- django_cfg/apps/agents/core/orchestrator.py +391 -0
- django_cfg/apps/agents/examples/__init__.py +3 -0
- django_cfg/apps/agents/examples/simple_example.py +161 -0
- django_cfg/apps/agents/integration/__init__.py +14 -0
- django_cfg/apps/agents/integration/middleware.py +80 -0
- django_cfg/apps/agents/integration/registry.py +345 -0
- django_cfg/apps/agents/integration/signals.py +50 -0
- django_cfg/apps/agents/management/__init__.py +3 -0
- django_cfg/apps/agents/management/commands/__init__.py +3 -0
- django_cfg/apps/agents/management/commands/create_agent.py +365 -0
- django_cfg/apps/agents/management/commands/orchestrator_status.py +191 -0
- django_cfg/apps/agents/managers/__init__.py +23 -0
- django_cfg/apps/agents/managers/execution.py +236 -0
- django_cfg/apps/agents/managers/registry.py +254 -0
- django_cfg/apps/agents/managers/toolsets.py +496 -0
- django_cfg/apps/agents/migrations/0001_initial.py +286 -0
- django_cfg/apps/agents/migrations/__init__.py +5 -0
- django_cfg/apps/agents/models/__init__.py +15 -0
- django_cfg/apps/agents/models/execution.py +215 -0
- django_cfg/apps/agents/models/registry.py +220 -0
- django_cfg/apps/agents/models/toolsets.py +305 -0
- django_cfg/apps/agents/patterns/__init__.py +24 -0
- django_cfg/apps/agents/patterns/content_agents.py +234 -0
- django_cfg/apps/agents/toolsets/__init__.py +15 -0
- django_cfg/apps/agents/toolsets/cache_toolset.py +285 -0
- django_cfg/apps/agents/toolsets/django_toolset.py +220 -0
- django_cfg/apps/agents/toolsets/file_toolset.py +324 -0
- django_cfg/apps/agents/toolsets/orm_toolset.py +319 -0
- django_cfg/apps/agents/urls.py +46 -0
- django_cfg/apps/knowbase/README.md +150 -0
- django_cfg/apps/knowbase/__init__.py +27 -0
- django_cfg/apps/knowbase/admin/__init__.py +23 -0
- django_cfg/apps/knowbase/admin/archive_admin.py +857 -0
- django_cfg/apps/knowbase/admin/chat_admin.py +386 -0
- django_cfg/apps/knowbase/admin/document_admin.py +650 -0
- django_cfg/apps/knowbase/admin/external_data_admin.py +685 -0
- django_cfg/apps/knowbase/apps.py +81 -0
- django_cfg/apps/knowbase/config/README.md +176 -0
- django_cfg/apps/knowbase/config/__init__.py +51 -0
- django_cfg/apps/knowbase/config/constance_fields.py +186 -0
- django_cfg/apps/knowbase/config/constance_settings.py +200 -0
- django_cfg/apps/knowbase/config/settings.py +450 -0
- django_cfg/apps/knowbase/examples/__init__.py +3 -0
- django_cfg/apps/knowbase/examples/external_data_usage.py +191 -0
- django_cfg/apps/knowbase/management/__init__.py +0 -0
- django_cfg/apps/knowbase/management/commands/__init__.py +0 -0
- django_cfg/apps/knowbase/management/commands/knowbase_stats.py +158 -0
- django_cfg/apps/knowbase/management/commands/setup_knowbase.py +59 -0
- django_cfg/apps/knowbase/managers/__init__.py +22 -0
- django_cfg/apps/knowbase/managers/archive.py +426 -0
- django_cfg/apps/knowbase/managers/base.py +32 -0
- django_cfg/apps/knowbase/managers/chat.py +141 -0
- django_cfg/apps/knowbase/managers/document.py +203 -0
- django_cfg/apps/knowbase/managers/external_data.py +471 -0
- django_cfg/apps/knowbase/migrations/0001_initial.py +427 -0
- django_cfg/apps/knowbase/migrations/0002_archiveitem_archiveitemchunk_documentarchive_and_more.py +434 -0
- django_cfg/apps/knowbase/migrations/__init__.py +5 -0
- django_cfg/apps/knowbase/mixins/__init__.py +15 -0
- django_cfg/apps/knowbase/mixins/config.py +108 -0
- django_cfg/apps/knowbase/mixins/creator.py +81 -0
- django_cfg/apps/knowbase/mixins/examples/vehicle_model_example.py +199 -0
- django_cfg/apps/knowbase/mixins/external_data_mixin.py +813 -0
- django_cfg/apps/knowbase/mixins/service.py +362 -0
- django_cfg/apps/knowbase/models/__init__.py +41 -0
- django_cfg/apps/knowbase/models/archive.py +599 -0
- django_cfg/apps/knowbase/models/base.py +58 -0
- django_cfg/apps/knowbase/models/chat.py +157 -0
- django_cfg/apps/knowbase/models/document.py +267 -0
- django_cfg/apps/knowbase/models/external_data.py +376 -0
- django_cfg/apps/knowbase/serializers/__init__.py +68 -0
- django_cfg/apps/knowbase/serializers/archive_serializers.py +386 -0
- django_cfg/apps/knowbase/serializers/chat_serializers.py +137 -0
- django_cfg/apps/knowbase/serializers/document_serializers.py +94 -0
- django_cfg/apps/knowbase/serializers/external_data_serializers.py +256 -0
- django_cfg/apps/knowbase/serializers/public_serializers.py +74 -0
- django_cfg/apps/knowbase/services/__init__.py +40 -0
- django_cfg/apps/knowbase/services/archive/__init__.py +42 -0
- django_cfg/apps/knowbase/services/archive/archive_service.py +541 -0
- django_cfg/apps/knowbase/services/archive/chunking_service.py +791 -0
- django_cfg/apps/knowbase/services/archive/exceptions.py +52 -0
- django_cfg/apps/knowbase/services/archive/extraction_service.py +508 -0
- django_cfg/apps/knowbase/services/archive/vectorization_service.py +362 -0
- django_cfg/apps/knowbase/services/base.py +53 -0
- django_cfg/apps/knowbase/services/chat_service.py +239 -0
- django_cfg/apps/knowbase/services/document_service.py +144 -0
- django_cfg/apps/knowbase/services/embedding/__init__.py +43 -0
- django_cfg/apps/knowbase/services/embedding/async_processor.py +244 -0
- django_cfg/apps/knowbase/services/embedding/batch_processor.py +250 -0
- django_cfg/apps/knowbase/services/embedding/batch_result.py +61 -0
- django_cfg/apps/knowbase/services/embedding/models.py +229 -0
- django_cfg/apps/knowbase/services/embedding/processors.py +148 -0
- django_cfg/apps/knowbase/services/embedding/utils.py +176 -0
- django_cfg/apps/knowbase/services/prompt_builder.py +191 -0
- django_cfg/apps/knowbase/services/search_service.py +293 -0
- django_cfg/apps/knowbase/signals/__init__.py +21 -0
- django_cfg/apps/knowbase/signals/archive_signals.py +211 -0
- django_cfg/apps/knowbase/signals/chat_signals.py +37 -0
- django_cfg/apps/knowbase/signals/document_signals.py +143 -0
- django_cfg/apps/knowbase/signals/external_data_signals.py +157 -0
- django_cfg/apps/knowbase/tasks/__init__.py +39 -0
- django_cfg/apps/knowbase/tasks/archive_tasks.py +316 -0
- django_cfg/apps/knowbase/tasks/document_processing.py +341 -0
- django_cfg/apps/knowbase/tasks/external_data_tasks.py +341 -0
- django_cfg/apps/knowbase/tasks/maintenance.py +195 -0
- django_cfg/apps/knowbase/urls.py +43 -0
- django_cfg/apps/knowbase/utils/__init__.py +12 -0
- django_cfg/apps/knowbase/utils/chunk_settings.py +261 -0
- django_cfg/apps/knowbase/utils/text_processing.py +375 -0
- django_cfg/apps/knowbase/utils/validation.py +99 -0
- django_cfg/apps/knowbase/views/__init__.py +28 -0
- django_cfg/apps/knowbase/views/archive_views.py +469 -0
- django_cfg/apps/knowbase/views/base.py +49 -0
- django_cfg/apps/knowbase/views/chat_views.py +181 -0
- django_cfg/apps/knowbase/views/document_views.py +183 -0
- django_cfg/apps/knowbase/views/public_views.py +129 -0
- django_cfg/apps/leads/admin.py +70 -0
- django_cfg/apps/newsletter/admin.py +234 -0
- django_cfg/apps/newsletter/admin_filters.py +124 -0
- django_cfg/apps/support/admin.py +196 -0
- django_cfg/apps/support/admin_filters.py +71 -0
- django_cfg/apps/support/templates/support/chat/ticket_chat.html +1 -1
- django_cfg/apps/urls.py +5 -4
- django_cfg/cli/README.md +1 -1
- django_cfg/cli/commands/create_project.py +2 -2
- django_cfg/cli/commands/info.py +1 -1
- django_cfg/config.py +44 -0
- django_cfg/core/config.py +29 -82
- django_cfg/core/environment.py +1 -1
- django_cfg/core/generation.py +19 -107
- django_cfg/{integration.py → core/integration.py} +18 -16
- django_cfg/core/validation.py +1 -1
- django_cfg/management/__init__.py +1 -1
- django_cfg/management/commands/__init__.py +1 -1
- django_cfg/management/commands/auto_generate.py +482 -0
- django_cfg/management/commands/migrator.py +19 -101
- django_cfg/management/commands/test_email.py +1 -1
- django_cfg/middleware/README.md +0 -158
- django_cfg/middleware/__init__.py +0 -2
- django_cfg/middleware/user_activity.py +3 -3
- django_cfg/models/api.py +145 -0
- django_cfg/models/base.py +287 -0
- django_cfg/models/cache.py +4 -4
- django_cfg/models/constance.py +25 -88
- django_cfg/models/database.py +9 -9
- django_cfg/models/drf.py +3 -36
- django_cfg/models/email.py +163 -0
- django_cfg/models/environment.py +276 -0
- django_cfg/models/limits.py +1 -1
- django_cfg/models/logging.py +366 -0
- django_cfg/models/revolution.py +41 -2
- django_cfg/models/security.py +125 -0
- django_cfg/models/services.py +1 -1
- django_cfg/modules/__init__.py +2 -56
- django_cfg/modules/base.py +78 -52
- django_cfg/modules/django_currency/service.py +2 -2
- django_cfg/modules/django_email.py +2 -2
- django_cfg/modules/django_health.py +267 -0
- django_cfg/modules/django_llm/llm/client.py +91 -19
- django_cfg/modules/django_llm/translator/translator.py +2 -2
- django_cfg/modules/django_logger.py +2 -2
- django_cfg/modules/django_ngrok.py +2 -2
- django_cfg/modules/django_tasks.py +68 -3
- django_cfg/modules/django_telegram.py +3 -3
- django_cfg/modules/django_twilio/sendgrid_service.py +2 -2
- django_cfg/modules/django_twilio/service.py +2 -2
- django_cfg/modules/django_twilio/simple_service.py +2 -2
- django_cfg/modules/django_twilio/twilio_service.py +2 -2
- django_cfg/modules/django_unfold/__init__.py +69 -0
- django_cfg/modules/{unfold → django_unfold}/callbacks.py +23 -22
- django_cfg/modules/django_unfold/dashboard.py +278 -0
- django_cfg/modules/django_unfold/icons/README.md +145 -0
- django_cfg/modules/django_unfold/icons/__init__.py +12 -0
- django_cfg/modules/django_unfold/icons/constants.py +2851 -0
- django_cfg/modules/django_unfold/icons/generate_icons.py +486 -0
- django_cfg/modules/django_unfold/models/__init__.py +42 -0
- django_cfg/modules/django_unfold/models/config.py +601 -0
- django_cfg/modules/django_unfold/models/dashboard.py +206 -0
- django_cfg/modules/django_unfold/models/dropdown.py +40 -0
- django_cfg/modules/django_unfold/models/navigation.py +73 -0
- django_cfg/modules/django_unfold/models/tabs.py +25 -0
- django_cfg/modules/{unfold → django_unfold}/system_monitor.py +2 -2
- django_cfg/modules/django_unfold/utils.py +140 -0
- django_cfg/registry/__init__.py +23 -0
- django_cfg/registry/core.py +61 -0
- django_cfg/registry/exceptions.py +11 -0
- django_cfg/registry/modules.py +12 -0
- django_cfg/registry/services.py +26 -0
- django_cfg/registry/third_party.py +52 -0
- django_cfg/routing/__init__.py +19 -0
- django_cfg/routing/callbacks.py +198 -0
- django_cfg/routing/routers.py +48 -0
- django_cfg/templates/admin/layouts/dashboard_with_tabs.html +8 -9
- django_cfg/templatetags/__init__.py +0 -0
- django_cfg/templatetags/django_cfg.py +33 -0
- django_cfg/urls.py +33 -0
- django_cfg/utils/path_resolution.py +1 -1
- django_cfg/utils/smart_defaults.py +7 -61
- django_cfg/utils/toolkit.py +663 -0
- {django_cfg-1.1.82.dist-info → django_cfg-1.2.1.dist-info}/METADATA +83 -86
- django_cfg-1.2.1.dist-info/RECORD +441 -0
- django_cfg/archive/django_sample.zip +0 -0
- django_cfg/models/unfold.py +0 -271
- django_cfg/modules/unfold/__init__.py +0 -29
- django_cfg/modules/unfold/dashboard.py +0 -318
- django_cfg/pyproject.toml +0 -370
- django_cfg/routers.py +0 -83
- django_cfg-1.1.82.dist-info/RECORD +0 -278
- /django_cfg/{exceptions.py → core/exceptions.py} +0 -0
- /django_cfg/modules/{unfold → django_unfold}/models.py +0 -0
- /django_cfg/modules/{unfold → django_unfold}/tailwind.py +0 -0
- /django_cfg/{version_check.py → utils/version_check.py} +0 -0
- {django_cfg-1.1.82.dist-info → django_cfg-1.2.1.dist-info}/WHEEL +0 -0
- {django_cfg-1.1.82.dist-info → django_cfg-1.2.1.dist-info}/entry_points.txt +0 -0
- {django_cfg-1.1.82.dist-info → django_cfg-1.2.1.dist-info}/licenses/LICENSE +0 -0
@@ -0,0 +1,427 @@
|
|
1
|
+
# Generated by Django 5.2.6 on 2025-09-16 18:23
|
2
|
+
|
3
|
+
import django.db.models.deletion
|
4
|
+
import pgvector.django.vector
|
5
|
+
import uuid
|
6
|
+
from django.conf import settings
|
7
|
+
from django.db import migrations, models
|
8
|
+
|
9
|
+
|
10
|
+
class Migration(migrations.Migration):
|
11
|
+
initial = True
|
12
|
+
|
13
|
+
dependencies = [
|
14
|
+
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
|
15
|
+
]
|
16
|
+
|
17
|
+
operations = [
|
18
|
+
migrations.CreateModel(
|
19
|
+
name="ChatSession",
|
20
|
+
fields=[
|
21
|
+
(
|
22
|
+
"id",
|
23
|
+
models.UUIDField(
|
24
|
+
default=uuid.uuid4,
|
25
|
+
editable=False,
|
26
|
+
primary_key=True,
|
27
|
+
serialize=False,
|
28
|
+
),
|
29
|
+
),
|
30
|
+
("created_at", models.DateTimeField(auto_now_add=True, db_index=True)),
|
31
|
+
("updated_at", models.DateTimeField(auto_now=True)),
|
32
|
+
(
|
33
|
+
"title",
|
34
|
+
models.CharField(
|
35
|
+
blank=True,
|
36
|
+
help_text="Session title (auto-generated if empty)",
|
37
|
+
max_length=255,
|
38
|
+
),
|
39
|
+
),
|
40
|
+
(
|
41
|
+
"is_active",
|
42
|
+
models.BooleanField(
|
43
|
+
default=True, help_text="Whether session accepts new messages"
|
44
|
+
),
|
45
|
+
),
|
46
|
+
("messages_count", models.PositiveIntegerField(default=0)),
|
47
|
+
("total_tokens_used", models.PositiveIntegerField(default=0)),
|
48
|
+
(
|
49
|
+
"total_cost_usd",
|
50
|
+
models.DecimalField(
|
51
|
+
decimal_places=6,
|
52
|
+
default=0.0,
|
53
|
+
help_text="Total session cost for monitoring",
|
54
|
+
max_digits=10,
|
55
|
+
),
|
56
|
+
),
|
57
|
+
(
|
58
|
+
"model_name",
|
59
|
+
models.CharField(
|
60
|
+
default="openai/gpt-4o-mini",
|
61
|
+
help_text="LLM model used for this session",
|
62
|
+
max_length=100,
|
63
|
+
),
|
64
|
+
),
|
65
|
+
(
|
66
|
+
"temperature",
|
67
|
+
models.FloatField(
|
68
|
+
default=0.7, help_text="Temperature setting for LLM"
|
69
|
+
),
|
70
|
+
),
|
71
|
+
(
|
72
|
+
"max_context_chunks",
|
73
|
+
models.PositiveIntegerField(
|
74
|
+
default=5, help_text="Maximum chunks to include in context"
|
75
|
+
),
|
76
|
+
),
|
77
|
+
(
|
78
|
+
"user",
|
79
|
+
models.ForeignKey(
|
80
|
+
help_text="Owner of this record",
|
81
|
+
on_delete=django.db.models.deletion.CASCADE,
|
82
|
+
to=settings.AUTH_USER_MODEL,
|
83
|
+
),
|
84
|
+
),
|
85
|
+
],
|
86
|
+
options={
|
87
|
+
"db_table": "django_cfg_knowbase_chat_sessions",
|
88
|
+
},
|
89
|
+
),
|
90
|
+
migrations.CreateModel(
|
91
|
+
name="ChatMessage",
|
92
|
+
fields=[
|
93
|
+
(
|
94
|
+
"id",
|
95
|
+
models.UUIDField(
|
96
|
+
default=uuid.uuid4,
|
97
|
+
editable=False,
|
98
|
+
primary_key=True,
|
99
|
+
serialize=False,
|
100
|
+
),
|
101
|
+
),
|
102
|
+
("created_at", models.DateTimeField(auto_now_add=True, db_index=True)),
|
103
|
+
("updated_at", models.DateTimeField(auto_now=True)),
|
104
|
+
(
|
105
|
+
"role",
|
106
|
+
models.CharField(
|
107
|
+
choices=[
|
108
|
+
("user", "User"),
|
109
|
+
("assistant", "Assistant"),
|
110
|
+
("system", "System"),
|
111
|
+
],
|
112
|
+
help_text="Message sender role",
|
113
|
+
max_length=10,
|
114
|
+
),
|
115
|
+
),
|
116
|
+
("content", models.TextField(help_text="Message content")),
|
117
|
+
(
|
118
|
+
"context_chunks",
|
119
|
+
models.JSONField(
|
120
|
+
default=list, help_text="IDs of chunks used for context"
|
121
|
+
),
|
122
|
+
),
|
123
|
+
(
|
124
|
+
"tokens_used",
|
125
|
+
models.PositiveIntegerField(
|
126
|
+
default=0, help_text="Tokens used for this message"
|
127
|
+
),
|
128
|
+
),
|
129
|
+
(
|
130
|
+
"cost_usd",
|
131
|
+
models.DecimalField(
|
132
|
+
decimal_places=6,
|
133
|
+
default=0.0,
|
134
|
+
help_text="Cost in USD for this message",
|
135
|
+
max_digits=10,
|
136
|
+
),
|
137
|
+
),
|
138
|
+
(
|
139
|
+
"processing_time_ms",
|
140
|
+
models.PositiveIntegerField(
|
141
|
+
default=0, help_text="Processing time in milliseconds"
|
142
|
+
),
|
143
|
+
),
|
144
|
+
(
|
145
|
+
"model_name",
|
146
|
+
models.CharField(
|
147
|
+
blank=True,
|
148
|
+
help_text="Model used for response generation",
|
149
|
+
max_length=100,
|
150
|
+
),
|
151
|
+
),
|
152
|
+
(
|
153
|
+
"finish_reason",
|
154
|
+
models.CharField(
|
155
|
+
blank=True,
|
156
|
+
help_text="Why the model stopped generating",
|
157
|
+
max_length=20,
|
158
|
+
),
|
159
|
+
),
|
160
|
+
(
|
161
|
+
"user",
|
162
|
+
models.ForeignKey(
|
163
|
+
help_text="Owner of this record",
|
164
|
+
on_delete=django.db.models.deletion.CASCADE,
|
165
|
+
to=settings.AUTH_USER_MODEL,
|
166
|
+
),
|
167
|
+
),
|
168
|
+
(
|
169
|
+
"session",
|
170
|
+
models.ForeignKey(
|
171
|
+
help_text="Parent chat session",
|
172
|
+
on_delete=django.db.models.deletion.CASCADE,
|
173
|
+
related_name="messages",
|
174
|
+
to="django_cfg_knowbase.chatsession",
|
175
|
+
),
|
176
|
+
),
|
177
|
+
],
|
178
|
+
options={
|
179
|
+
"db_table": "django_cfg_knowbase_chat_messages",
|
180
|
+
"ordering": ["created_at"],
|
181
|
+
},
|
182
|
+
),
|
183
|
+
migrations.CreateModel(
|
184
|
+
name="Document",
|
185
|
+
fields=[
|
186
|
+
(
|
187
|
+
"id",
|
188
|
+
models.UUIDField(
|
189
|
+
default=uuid.uuid4,
|
190
|
+
editable=False,
|
191
|
+
primary_key=True,
|
192
|
+
serialize=False,
|
193
|
+
),
|
194
|
+
),
|
195
|
+
("created_at", models.DateTimeField(auto_now_add=True, db_index=True)),
|
196
|
+
("updated_at", models.DateTimeField(auto_now=True)),
|
197
|
+
("title", models.CharField(help_text="Document title", max_length=512)),
|
198
|
+
("content", models.TextField(help_text="Full document content")),
|
199
|
+
(
|
200
|
+
"content_hash",
|
201
|
+
models.CharField(
|
202
|
+
db_index=True,
|
203
|
+
help_text="SHA-256 hash for duplicate detection",
|
204
|
+
max_length=64,
|
205
|
+
),
|
206
|
+
),
|
207
|
+
(
|
208
|
+
"file_type",
|
209
|
+
models.CharField(
|
210
|
+
default="text/plain",
|
211
|
+
help_text="MIME type of original file",
|
212
|
+
max_length=100,
|
213
|
+
),
|
214
|
+
),
|
215
|
+
(
|
216
|
+
"file_size",
|
217
|
+
models.PositiveIntegerField(
|
218
|
+
default=0, help_text="Original file size in bytes"
|
219
|
+
),
|
220
|
+
),
|
221
|
+
(
|
222
|
+
"processing_status",
|
223
|
+
models.CharField(
|
224
|
+
choices=[
|
225
|
+
("pending", "Pending"),
|
226
|
+
("processing", "Processing"),
|
227
|
+
("completed", "Completed"),
|
228
|
+
("failed", "Failed"),
|
229
|
+
("cancelled", "Cancelled"),
|
230
|
+
],
|
231
|
+
db_index=True,
|
232
|
+
default="pending",
|
233
|
+
max_length=20,
|
234
|
+
),
|
235
|
+
),
|
236
|
+
("processing_started_at", models.DateTimeField(blank=True, null=True)),
|
237
|
+
(
|
238
|
+
"processing_completed_at",
|
239
|
+
models.DateTimeField(blank=True, null=True),
|
240
|
+
),
|
241
|
+
("processing_error", models.TextField(blank=True, default="")),
|
242
|
+
("chunks_count", models.PositiveIntegerField(default=0)),
|
243
|
+
("total_tokens", models.PositiveIntegerField(default=0)),
|
244
|
+
(
|
245
|
+
"total_cost_usd",
|
246
|
+
models.DecimalField(
|
247
|
+
decimal_places=6,
|
248
|
+
default=0.0,
|
249
|
+
help_text="Total processing cost in USD",
|
250
|
+
max_digits=10,
|
251
|
+
),
|
252
|
+
),
|
253
|
+
(
|
254
|
+
"metadata",
|
255
|
+
models.JSONField(
|
256
|
+
default=dict, help_text="Additional document metadata"
|
257
|
+
),
|
258
|
+
),
|
259
|
+
(
|
260
|
+
"user",
|
261
|
+
models.ForeignKey(
|
262
|
+
help_text="Owner of this record",
|
263
|
+
on_delete=django.db.models.deletion.CASCADE,
|
264
|
+
to=settings.AUTH_USER_MODEL,
|
265
|
+
),
|
266
|
+
),
|
267
|
+
],
|
268
|
+
options={
|
269
|
+
"db_table": "django_cfg_knowbase_documents",
|
270
|
+
},
|
271
|
+
),
|
272
|
+
migrations.CreateModel(
|
273
|
+
name="DocumentChunk",
|
274
|
+
fields=[
|
275
|
+
(
|
276
|
+
"id",
|
277
|
+
models.UUIDField(
|
278
|
+
default=uuid.uuid4,
|
279
|
+
editable=False,
|
280
|
+
primary_key=True,
|
281
|
+
serialize=False,
|
282
|
+
),
|
283
|
+
),
|
284
|
+
("created_at", models.DateTimeField(auto_now_add=True, db_index=True)),
|
285
|
+
("updated_at", models.DateTimeField(auto_now=True)),
|
286
|
+
("content", models.TextField(help_text="Chunk text content")),
|
287
|
+
(
|
288
|
+
"chunk_index",
|
289
|
+
models.PositiveIntegerField(
|
290
|
+
help_text="Sequential chunk number within document"
|
291
|
+
),
|
292
|
+
),
|
293
|
+
(
|
294
|
+
"embedding",
|
295
|
+
pgvector.django.vector.VectorField(
|
296
|
+
dimensions=1536,
|
297
|
+
help_text="Vector embedding for semantic search",
|
298
|
+
),
|
299
|
+
),
|
300
|
+
(
|
301
|
+
"token_count",
|
302
|
+
models.PositiveIntegerField(
|
303
|
+
default=0, help_text="Number of tokens in chunk"
|
304
|
+
),
|
305
|
+
),
|
306
|
+
(
|
307
|
+
"character_count",
|
308
|
+
models.PositiveIntegerField(
|
309
|
+
default=0, help_text="Number of characters in chunk"
|
310
|
+
),
|
311
|
+
),
|
312
|
+
(
|
313
|
+
"embedding_model",
|
314
|
+
models.CharField(
|
315
|
+
default="text-embedding-ada-002",
|
316
|
+
help_text="Model used for embedding generation",
|
317
|
+
max_length=100,
|
318
|
+
),
|
319
|
+
),
|
320
|
+
(
|
321
|
+
"embedding_cost",
|
322
|
+
models.DecimalField(
|
323
|
+
decimal_places=6,
|
324
|
+
default=0.0,
|
325
|
+
help_text="Cost in USD for embedding generation",
|
326
|
+
max_digits=10,
|
327
|
+
),
|
328
|
+
),
|
329
|
+
(
|
330
|
+
"metadata",
|
331
|
+
models.JSONField(default=dict, help_text="Chunk-specific metadata"),
|
332
|
+
),
|
333
|
+
(
|
334
|
+
"document",
|
335
|
+
models.ForeignKey(
|
336
|
+
help_text="Parent document",
|
337
|
+
on_delete=django.db.models.deletion.CASCADE,
|
338
|
+
related_name="chunks",
|
339
|
+
to="django_cfg_knowbase.document",
|
340
|
+
),
|
341
|
+
),
|
342
|
+
(
|
343
|
+
"user",
|
344
|
+
models.ForeignKey(
|
345
|
+
help_text="Owner of this record",
|
346
|
+
on_delete=django.db.models.deletion.CASCADE,
|
347
|
+
to=settings.AUTH_USER_MODEL,
|
348
|
+
),
|
349
|
+
),
|
350
|
+
],
|
351
|
+
options={
|
352
|
+
"db_table": "django_cfg_knowbase_document_chunks",
|
353
|
+
"ordering": ["document", "chunk_index"],
|
354
|
+
},
|
355
|
+
),
|
356
|
+
migrations.AddIndex(
|
357
|
+
model_name="chatsession",
|
358
|
+
index=models.Index(
|
359
|
+
fields=["user", "-created_at"], name="django_cfg_knowbase_ch_user_id_227a9f_idx"
|
360
|
+
),
|
361
|
+
),
|
362
|
+
migrations.AddIndex(
|
363
|
+
model_name="chatsession",
|
364
|
+
index=models.Index(
|
365
|
+
fields=["is_active"], name="django_cfg_knowbase_ch_is_acti_6fcdc8_idx"
|
366
|
+
),
|
367
|
+
),
|
368
|
+
migrations.AddIndex(
|
369
|
+
model_name="chatmessage",
|
370
|
+
index=models.Index(
|
371
|
+
fields=["session", "-created_at"], name="django_cfg_knowbase_ch_session_782e67_idx"
|
372
|
+
),
|
373
|
+
),
|
374
|
+
migrations.AddIndex(
|
375
|
+
model_name="chatmessage",
|
376
|
+
index=models.Index(fields=["role"], name="django_cfg_knowbase_ch_role_e0d53e_idx"),
|
377
|
+
),
|
378
|
+
migrations.AddIndex(
|
379
|
+
model_name="chatmessage",
|
380
|
+
index=models.Index(
|
381
|
+
fields=["-created_at"], name="django_cfg_knowbase_ch_created_49bad9_idx"
|
382
|
+
),
|
383
|
+
),
|
384
|
+
migrations.AddIndex(
|
385
|
+
model_name="document",
|
386
|
+
index=models.Index(
|
387
|
+
fields=["user", "processing_status"],
|
388
|
+
name="django_cfg_knowbase_do_user_id_3f12df_idx",
|
389
|
+
),
|
390
|
+
),
|
391
|
+
migrations.AddIndex(
|
392
|
+
model_name="document",
|
393
|
+
index=models.Index(
|
394
|
+
fields=["content_hash"], name="django_cfg_knowbase_do_content_0655c8_idx"
|
395
|
+
),
|
396
|
+
),
|
397
|
+
migrations.AddIndex(
|
398
|
+
model_name="document",
|
399
|
+
index=models.Index(
|
400
|
+
fields=["-processing_completed_at"],
|
401
|
+
name="django_cfg_knowbase_do_process_f2c2a8_idx",
|
402
|
+
),
|
403
|
+
),
|
404
|
+
migrations.AddConstraint(
|
405
|
+
model_name="document",
|
406
|
+
constraint=models.UniqueConstraint(
|
407
|
+
fields=("user", "content_hash"), name="unique_user_document"
|
408
|
+
),
|
409
|
+
),
|
410
|
+
migrations.AddIndex(
|
411
|
+
model_name="documentchunk",
|
412
|
+
index=models.Index(fields=["user"], name="django_cfg_knowbase_do_user_id_a4e4de_idx"),
|
413
|
+
),
|
414
|
+
migrations.AddIndex(
|
415
|
+
model_name="documentchunk",
|
416
|
+
index=models.Index(
|
417
|
+
fields=["document", "chunk_index"],
|
418
|
+
name="django_cfg_knowbase_do_documen_64aaaa_idx",
|
419
|
+
),
|
420
|
+
),
|
421
|
+
migrations.AddConstraint(
|
422
|
+
model_name="documentchunk",
|
423
|
+
constraint=models.UniqueConstraint(
|
424
|
+
fields=("document", "chunk_index"), name="unique_document_chunk"
|
425
|
+
),
|
426
|
+
),
|
427
|
+
]
|