Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions apps/maxkb/settings/base/web.py
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,7 @@
'application',
'chat',
'oss',
'trigger',
'django_apscheduler',
]

Expand Down
Empty file added apps/trigger/__init__.py
Empty file.
3 changes: 3 additions & 0 deletions apps/trigger/admin.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
from django.contrib import admin

# Register your models here.
6 changes: 6 additions & 0 deletions apps/trigger/apps.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
from django.apps import AppConfig


class TriggerConfig(AppConfig):
default_auto_field = 'django.db.models.BigAutoField'
name = 'trigger'
51 changes: 51 additions & 0 deletions apps/trigger/migrations/0001_initial.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
# Generated by Django 5.2.9 on 2026-01-09 08:17

import django.db.models.deletion
import uuid_utils.compat
from django.db import migrations, models


class Migration(migrations.Migration):

initial = True

dependencies = [
('users', '0001_initial'),
]

operations = [
migrations.CreateModel(
name='Trigger',
fields=[
('create_time', models.DateTimeField(auto_now_add=True, db_index=True, verbose_name='创建时间')),
('update_time', models.DateTimeField(auto_now=True, db_index=True, verbose_name='修改时间')),
('id', models.UUIDField(default=uuid_utils.compat.uuid7, editable=False, primary_key=True, serialize=False, verbose_name='主键id')),
('workspace_id', models.CharField(db_index=True, default='default', max_length=64, verbose_name='工作空间id')),
('name', models.CharField(db_index=True, max_length=128, verbose_name='触发器名称')),
('desc', models.CharField(default='', max_length=512, verbose_name='引用描述')),
('trigger_type', models.CharField(choices=[('SCHEDULED', 'Scheduled'), ('EVENT', 'Event')], default='SCHEDULED', max_length=256, verbose_name='触发器类型')),
('trigger_setting', models.JSONField(default=dict)),
('meta', models.JSONField(default=dict)),
('is_active', models.BooleanField(db_index=True, default=True)),
('user', models.ForeignKey(blank=True, db_constraint=False, null=True, on_delete=django.db.models.deletion.SET_NULL, to='users.user')),
],
options={
'db_table': 'event_trigger',
},
),
migrations.CreateModel(
name='TriggerTask',
fields=[
('create_time', models.DateTimeField(auto_now_add=True, db_index=True, verbose_name='创建时间')),
('update_time', models.DateTimeField(auto_now=True, db_index=True, verbose_name='修改时间')),
('id', models.UUIDField(default=uuid_utils.compat.uuid7, editable=False, primary_key=True, serialize=False, verbose_name='主键id')),
('source_type', models.CharField(choices=[('APPLICATION', 'Application'), ('TOOL', 'Tool')], default='APPLICATION', max_length=256, verbose_name='触发器任务类型')),
('source_id', models.UUIDField(blank=True, null=True, verbose_name='资源id')),
('is_active', models.BooleanField(db_index=True, default=True)),
('trigger', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='trigger.trigger')),
],
options={
'db_table': 'event_trigger_task',
},
),
]
Empty file.
9 changes: 9 additions & 0 deletions apps/trigger/models/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
# coding=utf-8
"""
@project: MaxKB
@Author:niu
@file: __init__.py.py
@date:2026/1/9 16:13
@desc:
"""
from .trigger import *
52 changes: 52 additions & 0 deletions apps/trigger/models/trigger.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
# coding=utf-8
"""
@project: MaxKB
@Author:niu
@file: trigger.py.py
@date:2026/1/9 15:33
@desc:
"""
import uuid_utils.compat as uuid

from django.db import models

from common.mixins.app_model_mixin import AppModelMixin
from users.models import User


class TriggerTypeChoices(models.TextChoices):
SCHEDULED = 'SCHEDULED'
EVENT = 'EVENT'

class TriggerTaskTypeChoices(models.TextChoices):
APPLICATION = 'APPLICATION'
TOOL = 'TOOL'


class Trigger(AppModelMixin):
id = models.UUIDField(primary_key=True, max_length=128, default=uuid.uuid7, editable=False, verbose_name="主键id")
workspace_id = models.CharField(max_length=64, verbose_name="工作空间id", default="default", db_index=True)
name = models.CharField(max_length=128, verbose_name="触发器名称", db_index=True)
desc = models.CharField(max_length=512, verbose_name="引用描述", default="")
trigger_type = models.CharField(verbose_name="触发器类型",choices=TriggerTypeChoices.choices,
default=TriggerTypeChoices.SCHEDULED, max_length=256)
trigger_setting = models.JSONField(default=dict)
meta = models.JSONField(default=dict)
is_active = models.BooleanField(default=True, db_index=True)
user = models.ForeignKey(User, on_delete=models.SET_NULL, db_constraint=False, blank=True, null=True)

class Meta:
db_table = "event_trigger"


class TriggerTask(AppModelMixin):
id = models.UUIDField(primary_key=True, max_length=128, default=uuid.uuid7, editable=False, verbose_name="主键id")
trigger = models.ForeignKey(Trigger,on_delete=models.CASCADE)
source_type = models.CharField(verbose_name="触发器任务类型", choices=TriggerTaskTypeChoices.choices,
default=TriggerTaskTypeChoices.APPLICATION, max_length=256
)
source_id = models.UUIDField(verbose_name="资源id", blank=True, null=True)
is_active = models.BooleanField(default=True, db_index=True)

class Meta:
db_table = "event_trigger_task"
8 changes: 8 additions & 0 deletions apps/trigger/serializers/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
# coding=utf-8
"""
@project: MaxKB
@Author:niu
@file: __init__.py.py
@date:2026/1/9 16:16
@desc:
"""
3 changes: 3 additions & 0 deletions apps/trigger/tests.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
from django.test import TestCase

# Create your tests here.
8 changes: 8 additions & 0 deletions apps/trigger/urls.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
# coding=utf-8
"""
@project: MaxKB
@Author:niu
@file: urls.py
@date:2026/1/9 16:15
@desc:
"""
8 changes: 8 additions & 0 deletions apps/trigger/views/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
# coding=utf-8
"""
@project: MaxKB
@Author:niu
@file: __init__.py.py
@date:2026/1/9 16:15
@desc:
"""