mirror of
https://github.com/langgenius/dify.git
synced 2026-03-04 23:36:20 +08:00
50 lines
1.6 KiB
Python
50 lines
1.6 KiB
Python
from typing import Literal, Union
|
|
|
|
from pydantic import BaseModel, Field
|
|
|
|
from dify_graph.nodes.base import BaseNodeData
|
|
|
|
|
|
class TriggerScheduleNodeData(BaseNodeData):
|
|
"""
|
|
Trigger Schedule Node Data
|
|
"""
|
|
|
|
mode: str = Field(default="visual", description="Schedule mode: visual or cron")
|
|
frequency: str | None = Field(default=None, description="Frequency for visual mode: hourly, daily, weekly, monthly")
|
|
cron_expression: str | None = Field(default=None, description="Cron expression for cron mode")
|
|
visual_config: dict | None = Field(default=None, description="Visual configuration details")
|
|
timezone: str = Field(default="UTC", description="Timezone for schedule execution")
|
|
|
|
|
|
class ScheduleConfig(BaseModel):
|
|
node_id: str
|
|
cron_expression: str
|
|
timezone: str = "UTC"
|
|
|
|
|
|
class SchedulePlanUpdate(BaseModel):
|
|
node_id: str | None = None
|
|
cron_expression: str | None = None
|
|
timezone: str | None = None
|
|
|
|
|
|
class VisualConfig(BaseModel):
|
|
"""Visual configuration for schedule trigger"""
|
|
|
|
# For hourly frequency
|
|
on_minute: int | None = Field(default=0, ge=0, le=59, description="Minute of the hour (0-59)")
|
|
|
|
# For daily, weekly, monthly frequencies
|
|
time: str | None = Field(default="12:00 AM", description="Time in 12-hour format (e.g., '2:30 PM')")
|
|
|
|
# For weekly frequency
|
|
weekdays: list[Literal["sun", "mon", "tue", "wed", "thu", "fri", "sat"]] | None = Field(
|
|
default=None, description="List of weekdays to run on"
|
|
)
|
|
|
|
# For monthly frequency
|
|
monthly_days: list[Union[int, Literal["last"]]] | None = Field(
|
|
default=None, description="Days of month to run on (1-31 or 'last')"
|
|
)
|