Skip to content

Commit 1967ed3

Browse files
committed
feat: add Tag and DocumentTag models with migrations
1 parent 301785b commit 1967ed3

File tree

3 files changed

+101
-0
lines changed

3 files changed

+101
-0
lines changed
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
# Generated by Django 5.2.7 on 2025-10-11 07:38
2+
3+
import django.db.models.deletion
4+
import uuid_utils.compat
5+
from django.db import migrations, models
6+
7+
8+
class Migration(migrations.Migration):
9+
10+
dependencies = [
11+
('knowledge', '0002_alter_file_source_type'),
12+
]
13+
14+
operations = [
15+
migrations.CreateModel(
16+
name='Tag',
17+
fields=[
18+
('create_time', models.DateTimeField(auto_now_add=True, db_index=True, verbose_name='创建时间')),
19+
('update_time', models.DateTimeField(auto_now=True, db_index=True, verbose_name='修改时间')),
20+
('id', models.UUIDField(default=uuid_utils.compat.uuid7, editable=False, primary_key=True, serialize=False, verbose_name='主键id')),
21+
('key', models.CharField(db_index=True, max_length=64, verbose_name='标签键')),
22+
('value', models.CharField(db_index=True, max_length=128, verbose_name='标签值')),
23+
('knowledge', models.ForeignKey(db_constraint=False, on_delete=django.db.models.deletion.DO_NOTHING, to='knowledge.knowledge', verbose_name='知识库')),
24+
],
25+
options={
26+
'db_table': 'tag',
27+
},
28+
),
29+
migrations.CreateModel(
30+
name='DocumentTag',
31+
fields=[
32+
('create_time', models.DateTimeField(auto_now_add=True, db_index=True, verbose_name='创建时间')),
33+
('update_time', models.DateTimeField(auto_now=True, db_index=True, verbose_name='修改时间')),
34+
('id', models.UUIDField(default=uuid_utils.compat.uuid7, editable=False, primary_key=True, serialize=False, verbose_name='主键id')),
35+
('document', models.ForeignKey(db_constraint=False, on_delete=django.db.models.deletion.DO_NOTHING, to='knowledge.document', verbose_name='文档')),
36+
('tag', models.ForeignKey(db_constraint=False, on_delete=django.db.models.deletion.DO_NOTHING, to='knowledge.tag', verbose_name='标签')),
37+
],
38+
options={
39+
'db_table': 'document_tag',
40+
},
41+
),
42+
migrations.AddIndex(
43+
model_name='tag',
44+
index=models.Index(fields=['knowledge', 'key'], name='tag_knowled_cba590_idx'),
45+
),
46+
migrations.AlterUniqueTogether(
47+
name='tag',
48+
unique_together={('knowledge', 'key', 'value')},
49+
),
50+
migrations.AlterUniqueTogether(
51+
name='documenttag',
52+
unique_together={('document', 'tag')},
53+
),
54+
]

apps/knowledge/models/knowledge.py

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -162,6 +162,35 @@ class Document(AppModelMixin):
162162
class Meta:
163163
db_table = "document"
164164

165+
class Tag(AppModelMixin):
166+
"""
167+
标签表 - 存储标签的key-value定义
168+
"""
169+
id = models.UUIDField(primary_key=True, max_length=128, default=uuid.uuid7, editable=False, verbose_name="主键id")
170+
knowledge = models.ForeignKey(Knowledge, on_delete=models.DO_NOTHING, verbose_name="知识库", db_constraint=False)
171+
key = models.CharField(max_length=64, verbose_name="标签键", db_index=True)
172+
value = models.CharField(max_length=128, verbose_name="标签值", db_index=True)
173+
174+
class Meta:
175+
db_table = "tag"
176+
unique_together = [['knowledge', 'key', 'value']] # 在同一知识库内key-value组合唯一
177+
indexes = [
178+
models.Index(fields=['knowledge', 'key']),
179+
]
180+
181+
182+
class DocumentTag(AppModelMixin):
183+
"""
184+
文档标签关联表
185+
"""
186+
id = models.UUIDField(primary_key=True, max_length=128, default=uuid.uuid7, editable=False, verbose_name="主键id")
187+
document = models.ForeignKey(Document, on_delete=models.DO_NOTHING, verbose_name="文档", db_constraint=False)
188+
tag = models.ForeignKey(Tag, on_delete=models.DO_NOTHING, verbose_name="标签", db_constraint=False)
189+
190+
class Meta:
191+
db_table = "document_tag"
192+
unique_together = [['document', 'tag']] # 文档和标签的组合唯一
193+
165194

166195
class Paragraph(AppModelMixin):
167196
"""
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
# Generated by Django 5.2.7 on 2025-10-11 07:38
2+
3+
from django.db import migrations, models
4+
5+
6+
class Migration(migrations.Migration):
7+
8+
dependencies = [
9+
('system_manage', '0002_refresh_collation_reindex'),
10+
]
11+
12+
operations = [
13+
migrations.AlterField(
14+
model_name='systemsetting',
15+
name='type',
16+
field=models.IntegerField(choices=[(0, '邮箱'), (1, '私钥秘钥'), (2, '日志清理时间')], default=0, primary_key=True, serialize=False, verbose_name='设置类型'),
17+
),
18+
]

0 commit comments

Comments
 (0)