0001_initial.py 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251
  1. # Generated by Django 5.2.4 on 2025-07-14 11:45
  2. from django.db.models import QuerySet
  3. import application.models.application
  4. import application.models.application_chat
  5. import common.encoder.encoder
  6. import django.contrib.postgres.fields
  7. import django.db.models.deletion
  8. import mptt.fields
  9. import uuid_utils.compat
  10. from django.db import migrations, models
  11. def insert_default_data(apps, schema_editor):
  12. # 创建一个根模块(没有父节点)
  13. QuerySet(application.models.application.ApplicationFolder).create(id='default', name='根目录',
  14. user_id='f0dd8f71-e4ee-11ee-8c84-a8a1595801ab', workspace_id='default')
  15. class Migration(migrations.Migration):
  16. initial = True
  17. dependencies = [
  18. ('knowledge', '0001_initial'),
  19. ('models_provider', '0001_initial'),
  20. ('users', '0001_initial'),
  21. ]
  22. operations = [
  23. migrations.CreateModel(
  24. name='Application',
  25. fields=[
  26. ('create_time', models.DateTimeField(auto_now_add=True, db_index=True, verbose_name='创建时间')),
  27. ('update_time', models.DateTimeField(auto_now=True, db_index=True, verbose_name='修改时间')),
  28. ('id', models.UUIDField(default=uuid_utils.compat.uuid7, editable=False, primary_key=True, serialize=False, verbose_name='主键id')),
  29. ('workspace_id', models.CharField(db_index=True, default='default', max_length=64, verbose_name='工作空间id')),
  30. ('is_publish', models.BooleanField(default=False, verbose_name='是否发布')),
  31. ('name', models.CharField(db_index=True, max_length=128, verbose_name='应用名称')),
  32. ('desc', models.CharField(default='', max_length=512, verbose_name='引用描述')),
  33. ('prologue', models.CharField(default='', max_length=40960, verbose_name='开场白')),
  34. ('dialogue_number', models.IntegerField(default=0, verbose_name='会话数量')),
  35. ('knowledge_setting', models.JSONField(default=application.models.application.get_dataset_setting_dict, verbose_name='数据集参数设置')),
  36. ('model_setting', models.JSONField(default=application.models.application.get_model_setting_dict, verbose_name='模型参数相关设置')),
  37. ('model_params_setting', models.JSONField(default=dict, verbose_name='模型参数相关设置')),
  38. ('tts_model_params_setting', models.JSONField(default=dict, verbose_name='模型参数相关设置')),
  39. ('problem_optimization', models.BooleanField(default=False, verbose_name='问题优化')),
  40. ('icon', models.CharField(default='./favicon.ico', max_length=256, verbose_name='应用icon')),
  41. ('work_flow', models.JSONField(default=dict, verbose_name='工作流数据')),
  42. ('type', models.CharField(choices=[('SIMPLE', '简易'), ('WORK_FLOW', '工作流')], default='SIMPLE', max_length=256, verbose_name='应用类型')),
  43. ('problem_optimization_prompt', models.CharField(blank=True, default='()里面是用户问题,根据上下文回答揣测用户问题({question}) 要求: 输出一个补全问题,并且放在<data></data>标签中', max_length=102400, null=True, verbose_name='问题优化提示词')),
  44. ('tts_model_enable', models.BooleanField(default=False, verbose_name='语音合成模型是否启用')),
  45. ('stt_model_enable', models.BooleanField(default=False, verbose_name='语音识别模型是否启用')),
  46. ('tts_type', models.CharField(default='BROWSER', max_length=20, verbose_name='语音播放类型')),
  47. ('tts_autoplay', models.BooleanField(default=False, verbose_name='自动播放')),
  48. ('stt_autosend', models.BooleanField(default=False, verbose_name='自动发送')),
  49. ('clean_time', models.IntegerField(default=180, verbose_name='清理时间')),
  50. ('publish_time', models.DateTimeField(blank=True, default=None, null=True, verbose_name='发布时间')),
  51. ('file_upload_enable', models.BooleanField(default=False, verbose_name='文件上传是否启用')),
  52. ('file_upload_setting', models.JSONField(default=dict, verbose_name='文件上传相关设置')),
  53. ('model', models.ForeignKey(blank=True, db_constraint=False, null=True, on_delete=django.db.models.deletion.SET_NULL, to='models_provider.model')),
  54. ('stt_model', models.ForeignKey(blank=True, db_constraint=False, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='stt_model_id', to='models_provider.model')),
  55. ('tts_model', models.ForeignKey(blank=True, db_constraint=False, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='tts_model_id', to='models_provider.model')),
  56. ('user', models.ForeignKey(blank=True, db_constraint=False, null=True, on_delete=django.db.models.deletion.SET_NULL, to='users.user')),
  57. ],
  58. options={
  59. 'db_table': 'application',
  60. },
  61. ),
  62. migrations.CreateModel(
  63. name='ApplicationAccessToken',
  64. fields=[
  65. ('create_time', models.DateTimeField(auto_now_add=True, db_index=True, verbose_name='创建时间')),
  66. ('update_time', models.DateTimeField(auto_now=True, db_index=True, verbose_name='修改时间')),
  67. ('application', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, primary_key=True, serialize=False, to='application.application', verbose_name='应用id')),
  68. ('access_token', models.CharField(max_length=128, unique=True, verbose_name='用户公开访问 认证token')),
  69. ('is_active', models.BooleanField(default=True, verbose_name='是否开启公开访问')),
  70. ('access_num', models.IntegerField(default=100, verbose_name='访问次数')),
  71. ('white_active', models.BooleanField(default=False, verbose_name='是否开启白名单')),
  72. ('white_list', django.contrib.postgres.fields.ArrayField(base_field=models.CharField(blank=True, max_length=128), default=list, size=None, verbose_name='白名单列表')),
  73. ('show_source', models.BooleanField(default=False, verbose_name='是否显示知识来源')),
  74. ('show_exec', models.BooleanField(default=False, verbose_name='是否显示执行详情')),
  75. ('authentication', models.BooleanField(default=False, verbose_name='是否需要认证')),
  76. ('authentication_value', models.JSONField(default=dict, verbose_name='认证的值')),
  77. ('language', models.CharField(default=None, max_length=10, null=True, verbose_name='语言')),
  78. ],
  79. options={
  80. 'db_table': 'application_access_token',
  81. },
  82. ),
  83. migrations.CreateModel(
  84. name='ApplicationApiKey',
  85. fields=[
  86. ('create_time', models.DateTimeField(auto_now_add=True, db_index=True, verbose_name='创建时间')),
  87. ('update_time', models.DateTimeField(auto_now=True, db_index=True, verbose_name='修改时间')),
  88. ('id', models.UUIDField(default=uuid_utils.compat.uuid7, editable=False, primary_key=True, serialize=False, verbose_name='主键id')),
  89. ('secret_key', models.CharField(max_length=1024, unique=True, verbose_name='秘钥')),
  90. ('workspace_id', models.CharField(db_index=True, default='default', max_length=64, verbose_name='工作空间id')),
  91. ('is_active', models.BooleanField(default=True, verbose_name='是否开启')),
  92. ('allow_cross_domain', models.BooleanField(default=False, verbose_name='是否允许跨域')),
  93. ('cross_domain_list', django.contrib.postgres.fields.ArrayField(base_field=models.CharField(blank=True, max_length=128), default=list, size=None, verbose_name='跨域列表')),
  94. ('application', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='application.application', verbose_name='应用id')),
  95. ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='users.user', verbose_name='用户id')),
  96. ],
  97. options={
  98. 'db_table': 'application_api_key',
  99. },
  100. ),
  101. migrations.CreateModel(
  102. name='ApplicationFolder',
  103. fields=[
  104. ('create_time', models.DateTimeField(auto_now_add=True, db_index=True, verbose_name='创建时间')),
  105. ('update_time', models.DateTimeField(auto_now=True, db_index=True, verbose_name='修改时间')),
  106. ('id', models.CharField(editable=False, max_length=64, primary_key=True, serialize=False, verbose_name='主键id')),
  107. ('name', models.CharField(db_index=True, max_length=64, verbose_name='文件夹名称')),
  108. ('desc', models.CharField(blank=True, max_length=200, null=True, verbose_name='描述')),
  109. ('workspace_id', models.CharField(db_index=True, default='default', max_length=64, verbose_name='工作空间id')),
  110. ('lft', models.PositiveIntegerField(editable=False)),
  111. ('rght', models.PositiveIntegerField(editable=False)),
  112. ('tree_id', models.PositiveIntegerField(db_index=True, editable=False)),
  113. ('level', models.PositiveIntegerField(editable=False)),
  114. ('parent', mptt.fields.TreeForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.DO_NOTHING, related_name='children', to='application.applicationfolder')),
  115. ('user', models.ForeignKey(blank=True, db_constraint=False, null=True, on_delete=django.db.models.deletion.SET_NULL, to='users.user')),
  116. ],
  117. options={
  118. 'db_table': 'application_folder',
  119. },
  120. ),
  121. migrations.AddField(
  122. model_name='application',
  123. name='folder',
  124. field=models.ForeignKey(default='default', on_delete=django.db.models.deletion.DO_NOTHING, to='application.applicationfolder', verbose_name='文件夹id'),
  125. ),
  126. migrations.CreateModel(
  127. name='ApplicationKnowledgeMapping',
  128. fields=[
  129. ('create_time', models.DateTimeField(auto_now_add=True, db_index=True, verbose_name='创建时间')),
  130. ('update_time', models.DateTimeField(auto_now=True, db_index=True, verbose_name='修改时间')),
  131. ('id', models.UUIDField(default=uuid_utils.compat.uuid7, editable=False, primary_key=True, serialize=False, verbose_name='主键id')),
  132. ('application', models.ForeignKey(on_delete=django.db.models.deletion.DO_NOTHING, to='application.application')),
  133. ('knowledge', models.ForeignKey(on_delete=django.db.models.deletion.DO_NOTHING, to='knowledge.knowledge')),
  134. ],
  135. options={
  136. 'db_table': 'application_knowledge_mapping',
  137. },
  138. ),
  139. migrations.CreateModel(
  140. name='ApplicationVersion',
  141. fields=[
  142. ('create_time', models.DateTimeField(auto_now_add=True, db_index=True, verbose_name='创建时间')),
  143. ('update_time', models.DateTimeField(auto_now=True, db_index=True, verbose_name='修改时间')),
  144. ('id', models.UUIDField(default=uuid_utils.compat.uuid7, editable=False, primary_key=True, serialize=False, verbose_name='主键id')),
  145. ('name', models.CharField(default='', max_length=128, verbose_name='版本名称')),
  146. ('publish_user_id', models.UUIDField(default=None, null=True, verbose_name='发布者id')),
  147. ('publish_user_name', models.CharField(default='', max_length=128, verbose_name='发布者名称')),
  148. ('workspace_id', models.CharField(db_index=True, default='default', max_length=64, verbose_name='工作空间id')),
  149. ('application_name', models.CharField(max_length=128, verbose_name='应用名称')),
  150. ('desc', models.CharField(default='', max_length=512, verbose_name='引用描述')),
  151. ('prologue', models.CharField(default='', max_length=40960, verbose_name='开场白')),
  152. ('dialogue_number', models.IntegerField(default=0, verbose_name='会话数量')),
  153. ('model_id', models.UUIDField(blank=True, null=True, verbose_name='大语言模型')),
  154. ('knowledge_setting', models.JSONField(default=application.models.application.get_dataset_setting_dict, verbose_name='数据集参数设置')),
  155. ('model_setting', models.JSONField(default=application.models.application.get_model_setting_dict, verbose_name='模型参数相关设置')),
  156. ('model_params_setting', models.JSONField(default=dict, verbose_name='模型参数相关设置')),
  157. ('tts_model_params_setting', models.JSONField(default=dict, verbose_name='模型参数相关设置')),
  158. ('problem_optimization', models.BooleanField(default=False, verbose_name='问题优化')),
  159. ('icon', models.CharField(default='./favicon.ico', max_length=256, verbose_name='应用icon')),
  160. ('work_flow', models.JSONField(default=dict, verbose_name='工作流数据')),
  161. ('type', models.CharField(choices=[('SIMPLE', '简易'), ('WORK_FLOW', '工作流')], default='SIMPLE', max_length=256, verbose_name='应用类型')),
  162. ('problem_optimization_prompt', models.CharField(blank=True, default='()里面是用户问题,根据上下文回答揣测用户问题({question}) 要求: 输出一个补全问题,并且放在<data></data>标签中', max_length=102400, null=True, verbose_name='问题优化提示词')),
  163. ('tts_model_id', models.UUIDField(blank=True, null=True, verbose_name='文本转语音模型id')),
  164. ('stt_model_id', models.UUIDField(blank=True, null=True, verbose_name='语音转文本模型id')),
  165. ('tts_model_enable', models.BooleanField(default=False, verbose_name='语音合成模型是否启用')),
  166. ('stt_model_enable', models.BooleanField(default=False, verbose_name='语音识别模型是否启用')),
  167. ('tts_type', models.CharField(default='BROWSER', max_length=20, verbose_name='语音播放类型')),
  168. ('tts_autoplay', models.BooleanField(default=False, verbose_name='自动播放')),
  169. ('stt_autosend', models.BooleanField(default=False, verbose_name='自动发送')),
  170. ('clean_time', models.IntegerField(default=180, verbose_name='清理时间')),
  171. ('file_upload_enable', models.BooleanField(default=False, verbose_name='文件上传是否启用')),
  172. ('file_upload_setting', models.JSONField(default=dict, verbose_name='文件上传相关设置')),
  173. ('application', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='application.application')),
  174. ('user', models.ForeignKey(blank=True, db_constraint=False, null=True, on_delete=django.db.models.deletion.SET_NULL, to='users.user')),
  175. ],
  176. options={
  177. 'db_table': 'application_version',
  178. },
  179. ),
  180. migrations.CreateModel(
  181. name='Chat',
  182. fields=[
  183. ('create_time', models.DateTimeField(auto_now_add=True, db_index=True, verbose_name='创建时间')),
  184. ('update_time', models.DateTimeField(auto_now=True, db_index=True, verbose_name='修改时间')),
  185. ('id', models.UUIDField(default=uuid_utils.compat.uuid7, editable=False, primary_key=True, serialize=False, verbose_name='主键id')),
  186. ('abstract', models.CharField(max_length=1024, verbose_name='摘要')),
  187. ('chat_user_id', models.CharField(default=None, null=True, verbose_name='对话用户id')),
  188. ('chat_user_type', models.CharField(choices=[('ANONYMOUS_USER', '匿名用户'), ('CHAT_USER', '对话用户'), ('SYSTEM_API_KEY', '系统API_KEY'), ('APPLICATION_API_KEY', '应用API_KEY'), ('PLATFORM_USER', '平台用户')], default='ANONYMOUS_USER', max_length=64, verbose_name='客户端类型')),
  189. ('is_deleted', models.BooleanField(default=False, verbose_name='逻辑删除')),
  190. ('asker', models.JSONField(default=application.models.application_chat.default_asker, encoder=common.encoder.encoder.SystemEncoder, verbose_name='访问者')),
  191. ('meta', models.JSONField(default=dict, verbose_name='元数据')),
  192. ('star_num', models.IntegerField(default=0, verbose_name='点赞数量')),
  193. ('trample_num', models.IntegerField(default=0, verbose_name='点踩数量')),
  194. ('chat_record_count', models.IntegerField(default=0, verbose_name='对话次数')),
  195. ('mark_sum', models.IntegerField(default=0, verbose_name='标记数量')),
  196. ('application', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='application.application')),
  197. ],
  198. options={
  199. 'db_table': 'application_chat',
  200. },
  201. ),
  202. migrations.CreateModel(
  203. name='ChatRecord',
  204. fields=[
  205. ('create_time', models.DateTimeField(auto_now_add=True, db_index=True, verbose_name='创建时间')),
  206. ('update_time', models.DateTimeField(auto_now=True, db_index=True, verbose_name='修改时间')),
  207. ('id', models.UUIDField(default=uuid_utils.compat.uuid7, editable=False, primary_key=True, serialize=False, verbose_name='主键id')),
  208. ('vote_status', models.CharField(choices=[('-1', '未投票'), ('0', '赞同'), ('1', '反对')], default='-1', max_length=10, verbose_name='投票')),
  209. ('problem_text', models.CharField(max_length=10240, verbose_name='问题')),
  210. ('answer_text', models.CharField(max_length=40960, verbose_name='答案')),
  211. ('answer_text_list', django.contrib.postgres.fields.ArrayField(base_field=models.JSONField(), default=list, size=None, verbose_name='改进标注列表')),
  212. ('message_tokens', models.IntegerField(default=0, verbose_name='请求token数量')),
  213. ('answer_tokens', models.IntegerField(default=0, verbose_name='响应token数量')),
  214. ('const', models.IntegerField(default=0, verbose_name='总费用')),
  215. ('details', models.JSONField(default=dict, encoder=common.encoder.encoder.SystemEncoder, verbose_name='对话详情')),
  216. ('improve_paragraph_id_list', django.contrib.postgres.fields.ArrayField(base_field=models.UUIDField(blank=True), default=list, size=None, verbose_name='改进标注列表')),
  217. ('run_time', models.FloatField(default=0, verbose_name='运行时长')),
  218. ('index', models.IntegerField(verbose_name='对话下标')),
  219. ('chat', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='application.chat')),
  220. ],
  221. options={
  222. 'db_table': 'application_chat_record',
  223. },
  224. ),
  225. migrations.CreateModel(
  226. name='ApplicationChatUserStats',
  227. fields=[
  228. ('create_time', models.DateTimeField(auto_now_add=True, db_index=True, verbose_name='创建时间')),
  229. ('update_time', models.DateTimeField(auto_now=True, db_index=True, verbose_name='修改时间')),
  230. ('id', models.UUIDField(default=uuid_utils.compat.uuid7, editable=False, primary_key=True, serialize=False, verbose_name='主键id')),
  231. ('chat_user_id', models.UUIDField(default=uuid_utils.compat.uuid7, verbose_name='对话用户id')),
  232. ('chat_user_type', models.CharField(choices=[('ANONYMOUS_USER', '匿名用户'), ('CHAT_USER', '对话用户'), ('SYSTEM_API_KEY', '系统API_KEY'), ('APPLICATION_API_KEY', '应用API_KEY'), ('PLATFORM_USER', '平台用户')], default='ANONYMOUS_USER', max_length=64, verbose_name='对话用户类型')),
  233. ('access_num', models.IntegerField(default=0, verbose_name='访问总次数次数')),
  234. ('intraday_access_num', models.IntegerField(default=0, verbose_name='当日访问次数')),
  235. ('application', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='application.application', verbose_name='应用id')),
  236. ],
  237. options={
  238. 'db_table': 'application_chat_user_stats',
  239. 'indexes': [models.Index(fields=['application_id', 'chat_user_id'], name='application_applica_1652ba_idx')],
  240. },
  241. ),
  242. migrations.RunPython(insert_default_data)
  243. ]