0001_initial.py 6.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. # Generated by Django 5.2.13 on 2026-05-18
  2. import django.db.models.deletion
  3. import uuid_utils.compat
  4. from django.db import migrations, models
  5. class Migration(migrations.Migration):
  6. initial = True
  7. dependencies = [
  8. ('users', '0001_initial'),
  9. ]
  10. operations = [
  11. migrations.CreateModel(
  12. name='Plugin',
  13. fields=[
  14. ('create_time', models.DateTimeField(auto_now_add=True, db_index=True, verbose_name='创建时间')),
  15. ('update_time', models.DateTimeField(auto_now=True, db_index=True, verbose_name='修改时间')),
  16. ('id', models.UUIDField(default=uuid_utils.compat.uuid7, editable=False, primary_key=True, serialize=False, verbose_name='主键id')),
  17. ('workspace_id', models.CharField(db_index=True, default='default', max_length=64, verbose_name='工作空间id')),
  18. ('name', models.CharField(db_index=True, max_length=128, verbose_name='插件名称')),
  19. ('code', models.CharField(db_index=True, max_length=64, unique=True, verbose_name='插件编码')),
  20. ('desc', models.CharField(default='', max_length=512, verbose_name='插件描述')),
  21. ('plugin_type', models.CharField(choices=[('TOOL', '工具插件'), ('KNOWLEDGE', '知识库插件'), ('MODEL', '模型插件'), ('CUSTOM', '自定义插件')], default='CUSTOM', max_length=20, verbose_name='插件类型')),
  22. ('status', models.CharField(choices=[('ACTIVE', '已启用'), ('INACTIVE', '已禁用'), ('ERROR', '错误')], default='INACTIVE', max_length=20, verbose_name='插件状态')),
  23. ('version', models.CharField(default='1.0.0', max_length=32, verbose_name='当前版本')),
  24. ('author', models.CharField(default='', max_length=64, verbose_name='作者')),
  25. ('icon', models.CharField(default='', max_length=256, verbose_name='插件图标')),
  26. ('schema', models.JSONField(default=dict, verbose_name='插件 Schema')),
  27. ('config', models.JSONField(default=dict, verbose_name='插件配置')),
  28. ('entry_point', models.CharField(default='', max_length=256, verbose_name='入口文件')),
  29. ('is_installed', models.BooleanField(default=False, verbose_name='是否已安装')),
  30. ('install_time', models.DateTimeField(blank=True, null=True, verbose_name='安装时间')),
  31. ('user', models.ForeignKey(blank=True, db_constraint=False, null=True, on_delete=django.db.models.deletion.SET_NULL, to='users.user', verbose_name='创建用户')),
  32. ],
  33. options={
  34. 'db_table': 'plugin',
  35. },
  36. ),
  37. migrations.CreateModel(
  38. name='PluginVersion',
  39. fields=[
  40. ('create_time', models.DateTimeField(auto_now_add=True, db_index=True, verbose_name='创建时间')),
  41. ('update_time', models.DateTimeField(auto_now=True, db_index=True, verbose_name='修改时间')),
  42. ('id', models.UUIDField(default=uuid_utils.compat.uuid7, editable=False, primary_key=True, serialize=False, verbose_name='主键id')),
  43. ('version', models.CharField(max_length=32, verbose_name='版本号')),
  44. ('status', models.CharField(choices=[('PENDING', '待发布'), ('ACTIVE', '已发布'), ('DEPRECATED', '已废弃')], default='PENDING', max_length=20, verbose_name='版本状态')),
  45. ('changelog', models.TextField(default='', verbose_name='更新日志')),
  46. ('schema', models.JSONField(default=dict, verbose_name='版本 Schema')),
  47. ('config', models.JSONField(default=dict, verbose_name='版本配置')),
  48. ('file_path', models.CharField(default='', max_length=512, verbose_name='版本文件路径')),
  49. ('file_hash', models.CharField(default='', max_length=64, verbose_name='文件哈希')),
  50. ('is_rollback', models.BooleanField(default=False, verbose_name='是否回滚版本')),
  51. ('plugin', models.ForeignKey(db_constraint=False, on_delete=django.db.models.deletion.CASCADE, to='plugin.plugin', verbose_name='插件')),
  52. ],
  53. options={
  54. 'db_table': 'plugin_version',
  55. 'ordering': ['-create_time'],
  56. },
  57. ),
  58. migrations.CreateModel(
  59. name='PluginTest',
  60. fields=[
  61. ('create_time', models.DateTimeField(auto_now_add=True, db_index=True, verbose_name='创建时间')),
  62. ('update_time', models.DateTimeField(auto_now=True, db_index=True, verbose_name='修改时间')),
  63. ('id', models.UUIDField(default=uuid_utils.compat.uuid7, editable=False, primary_key=True, serialize=False, verbose_name='主键id')),
  64. ('version', models.CharField(default='', max_length=32, verbose_name='测试版本')),
  65. ('test_type', models.CharField(default='smoke', max_length=32, verbose_name='测试类型')),
  66. ('status', models.CharField(choices=[('PENDING', '待执行'), ('RUNNING', '执行中'), ('SUCCESS', '成功'), ('FAILED', '失败'), ('ERROR', '错误')], default='PENDING', max_length=20, verbose_name='测试状态')),
  67. ('input_data', models.JSONField(default=dict, verbose_name='测试输入')),
  68. ('output_data', models.JSONField(default=dict, verbose_name='测试输出')),
  69. ('error_code', models.CharField(default='', max_length=32, verbose_name='错误码')),
  70. ('error_message', models.TextField(default='', verbose_name='错误信息')),
  71. ('duration_ms', models.IntegerField(default=0, verbose_name='执行耗时(毫秒)')),
  72. ('passed', models.BooleanField(default=False, verbose_name='是否通过')),
  73. ('plugin', models.ForeignKey(db_constraint=False, on_delete=django.db.models.deletion.CASCADE, to='plugin.plugin', verbose_name='插件')),
  74. ],
  75. options={
  76. 'db_table': 'plugin_test',
  77. 'ordering': ['-create_time'],
  78. },
  79. ),
  80. ]