Ava2lon commited on
Commit
b47633b
·
verified ·
1 Parent(s): cf83e6d

Upload 2 files

Browse files
Files changed (2) hide show
  1. app/models/catalog.py +33 -0
  2. app/models/workflow.py +10 -6
app/models/catalog.py CHANGED
@@ -32,3 +32,36 @@ class ProjectSummary(BaseModel):
32
  description: str | None = None
33
  workflow_count: int = 0
34
  updated_at: str
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
32
  description: str | None = None
33
  workflow_count: int = 0
34
  updated_at: str
35
+
36
+
37
+ class DashboardUser(BaseModel):
38
+ name: str
39
+ email: str | None = None
40
+ avatar_url: str | None = None
41
+
42
+
43
+ class DashboardStats(BaseModel):
44
+ workflows: int = 0
45
+ projects: int = 0
46
+ active_workflows: int = 0
47
+ executions: int = 0
48
+ success_rate: float | None = None
49
+ ai_generations: int = 0
50
+
51
+
52
+ class DashboardWorkflow(BaseModel):
53
+ id: str
54
+ name: str
55
+ project_name: str | None = None
56
+ updated_at: str
57
+ node_count: int = 0
58
+ is_active: bool = False
59
+ favorite: bool = False
60
+
61
+
62
+ class DashboardSummary(BaseModel):
63
+ workspace_name: str
64
+ user: DashboardUser
65
+ stats: DashboardStats
66
+ workflows: list[DashboardWorkflow] = Field(default_factory=list)
67
+ templates: list[TemplateSummary] = Field(default_factory=list)
app/models/workflow.py CHANGED
@@ -9,8 +9,8 @@ class Position(BaseModel):
9
  y: float
10
 
11
 
12
- class CredentialPlaceholder(BaseModel):
13
- id: str = "__CREDENTIAL_ID__"
14
  name: str
15
  type: str
16
 
@@ -26,7 +26,7 @@ class WorkflowNodeData(BaseModel):
26
  ]
27
  subtitle: str | None = Field(default=None, max_length=256)
28
  parameters: dict[str, Any] = Field(default_factory=dict)
29
- credentials: dict[str, CredentialPlaceholder] | None = None
30
  disabled: bool = False
31
  issues: int = 0
32
 
@@ -87,8 +87,13 @@ class WorkflowDocument(BaseModel):
87
 
88
  class GenerateWorkflowRequest(BaseModel):
89
  prompt: str = Field(min_length=10, max_length=20_000)
90
- provider: str | None = None
91
- model: str | None = None
 
 
 
 
 
92
 
93
 
94
  class GenerateWorkflowResponse(BaseModel):
@@ -255,7 +260,6 @@ class WorkflowDiff(BaseModel):
255
 
256
  class ShareRequest(BaseModel):
257
  workflow_id: str
258
- workflow: WorkflowDocument | None = None
259
  permission: Literal["view", "copy"] = "view"
260
  expires_in_days: int | None = Field(default=30, ge=1, le=365)
261
 
 
9
  y: float
10
 
11
 
12
+ class CredentialReference(BaseModel):
13
+ id: str | None = None
14
  name: str
15
  type: str
16
 
 
26
  ]
27
  subtitle: str | None = Field(default=None, max_length=256)
28
  parameters: dict[str, Any] = Field(default_factory=dict)
29
+ credentials: dict[str, CredentialReference] | None = None
30
  disabled: bool = False
31
  issues: int = 0
32
 
 
87
 
88
  class GenerateWorkflowRequest(BaseModel):
89
  prompt: str = Field(min_length=10, max_length=20_000)
90
+ provider: Literal["openai", "gemini", "openrouter", "deterministic"] | None = None
91
+ model: str | None = Field(
92
+ default=None,
93
+ min_length=1,
94
+ max_length=200,
95
+ pattern=r"^[A-Za-z0-9][A-Za-z0-9._:/-]*$",
96
+ )
97
 
98
 
99
  class GenerateWorkflowResponse(BaseModel):
 
260
 
261
  class ShareRequest(BaseModel):
262
  workflow_id: str
 
263
  permission: Literal["view", "copy"] = "view"
264
  expires_in_days: int | None = Field(default=30, ge=1, le=365)
265