@allbluecn/database 0.4.18 → 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/generated/browser.ts +18 -3
- package/generated/client.ts +20 -5
- package/generated/commonInputTypes.ts +2 -2
- package/generated/internal/class.ts +35 -5
- package/generated/internal/prismaNamespace.ts +276 -4
- package/generated/internal/prismaNamespaceBrowser.ts +49 -2
- package/generated/models/Account.ts +2 -2
- package/generated/models/AgentConversation.ts +2 -2
- package/generated/models/AgentMessage.ts +2 -2
- package/generated/models/AiProvider.ts +2 -2
- package/generated/models/AiProviderConfig.ts +2 -2
- package/generated/models/AiUsageLog.ts +2 -2
- package/generated/models/AnyHubApp.ts +2 -2
- package/generated/models/AnyHubMarketApp.ts +2 -2
- package/generated/models/AnyHubPermission.ts +2 -2
- package/generated/models/AnyHubRecommendation.ts +2 -2
- package/generated/models/AnyHubRecommender.ts +2 -2
- package/generated/models/Artboard.ts +2 -2
- package/generated/models/ArtboardExport.ts +2 -2
- package/generated/models/ArticleFavorite.ts +2 -2
- package/generated/models/AuditLog.ts +2 -2
- package/generated/models/Block.ts +2 -2
- package/generated/models/BlockComponent.ts +2 -2
- package/generated/models/BlockInstance.ts +2 -2
- package/generated/models/BookmarkCategory.ts +2 -2
- package/generated/models/ChatInterrupt.ts +2 -2
- package/generated/models/ChatMessage.ts +2 -2
- package/generated/models/ChatRun.ts +2 -2
- package/generated/models/ChatThread.ts +2 -6
- package/generated/models/Comment.ts +2 -2
- package/generated/models/CommentIgnore.ts +2 -2
- package/generated/models/CommentReaction.ts +2 -2
- package/generated/models/ComplianceExport.ts +2 -2
- package/generated/models/Component.ts +2 -2
- package/generated/models/ComponentInstance.ts +2 -2
- package/generated/models/ComponentTag.ts +2 -2
- package/generated/models/CustomRole.ts +2 -2
- package/generated/models/DesignProject.ts +2 -2
- package/generated/models/DeveloperLog.ts +2 -2
- package/generated/models/DictionaryTerm.ts +2 -2
- package/generated/models/GenerationRun.ts +2 -2
- package/generated/models/IndustryCompliance.ts +2 -2
- package/generated/models/InvitationCode.ts +2 -2
- package/generated/models/InvitationUse.ts +2 -2
- package/generated/models/Invoice.ts +2 -2
- package/generated/models/Iteration.ts +2 -2
- package/generated/models/IterationAutoSchedule.ts +2 -2
- package/generated/models/KnowledgeBase.ts +436 -3
- package/generated/models/KnowledgeDocument.ts +178 -2
- package/generated/models/KnowledgeShareRecord.ts +2 -2
- package/generated/models/Label.ts +2 -2
- package/generated/models/LegalRegulation.ts +2 -2
- package/generated/models/LicenseActivation.ts +2 -2
- package/generated/models/LicenseKey.ts +2 -2
- package/generated/models/LoginLog.ts +2 -2
- package/generated/models/MonitoringErrorReport.ts +2 -2
- package/generated/models/MonitoringHealthSnapshot.ts +2 -2
- package/generated/models/MonitoringMetricsSnapshot.ts +2 -2
- package/generated/models/MonitoringRequestLog.ts +2 -2
- package/generated/models/Notification.ts +2 -2
- package/generated/models/NotificationPreference.ts +2 -2
- package/generated/models/PRD.ts +2 -2
- package/generated/models/PRDPage.ts +2 -2
- package/generated/models/PRDTag.ts +2 -2
- package/generated/models/PRDVersion.ts +2 -2
- package/generated/models/PageVersion.ts +2 -2
- package/generated/models/PasswordResetToken.ts +2 -2
- package/generated/models/Plan.ts +2 -2
- package/generated/models/Project.ts +2 -2
- package/generated/models/ProjectActivity.ts +2 -2
- package/generated/models/ProjectKnowledgeBase.ts +2 -2
- package/generated/models/ProjectMember.ts +2 -2
- package/generated/models/ProviderEvent.ts +2 -2
- package/generated/models/Reference.ts +2 -2
- package/generated/models/Review.ts +2 -2
- package/generated/models/ReviewComment.ts +2 -2
- package/generated/models/RoleAssignment.ts +2 -2
- package/generated/models/SequenceCounter.ts +2 -2
- package/generated/models/Share.ts +2 -2
- package/generated/models/ShareVersion.ts +2 -2
- package/generated/models/SsoMapping.ts +2 -2
- package/generated/models/SsoProvider.ts +2 -2
- package/generated/models/Story.ts +2 -2
- package/generated/models/StoryActivity.ts +2 -2
- package/generated/models/StoryAttachment.ts +2 -2
- package/generated/models/StoryComment.ts +2 -2
- package/generated/models/StoryDependency.ts +2 -2
- package/generated/models/StoryDocLink.ts +2 -2
- package/generated/models/StoryExternalLink.ts +2 -2
- package/generated/models/StoryFilterView.ts +2 -2
- package/generated/models/StoryLabel.ts +2 -2
- package/generated/models/StoryLink.ts +2 -2
- package/generated/models/StoryPrdLink.ts +2 -2
- package/generated/models/StoryReaction.ts +2 -2
- package/generated/models/Subscription.ts +2 -2
- package/generated/models/SystemSetting.ts +2 -2
- package/generated/models/Tag.ts +2 -2
- package/generated/models/TeamInvitation.ts +2 -2
- package/generated/models/TeamJoinRequest.ts +2 -2
- package/generated/models/TeamMembership.ts +2 -2
- package/generated/models/Template.ts +2 -2
- package/generated/models/TemplateBlock.ts +2 -2
- package/generated/models/ThirdPartyDependency.ts +2 -2
- package/generated/models/UsageRecord.ts +2 -2
- package/generated/models/User.ts +1585 -325
- package/generated/models/UserAgent.ts +2 -2
- package/generated/models/UserSkill.ts +2 -2
- package/generated/models/WebsiteBookmark.ts +2 -2
- package/generated/models/Workspace.ts +796 -3
- package/generated/models/WorkspaceKnowledgeBase.ts +1430 -0
- package/generated/models/WorkspaceMember.ts +1512 -0
- package/generated/models/WorkspaceQuickDoc.ts +2030 -0
- package/generated/models.ts +107 -104
- package/generated-sqlite/browser.ts +13 -3
- package/generated-sqlite/client.ts +15 -5
- package/generated-sqlite/commonInputTypes.ts +2 -2
- package/generated-sqlite/internal/class.ts +25 -5
- package/generated-sqlite/internal/prismaNamespace.ts +187 -4
- package/generated-sqlite/internal/prismaNamespaceBrowser.ts +35 -2
- package/generated-sqlite/models/AgentConversation.ts +2 -2
- package/generated-sqlite/models/AgentMessage.ts +2 -2
- package/generated-sqlite/models/AiProvider.ts +2 -2
- package/generated-sqlite/models/AiProviderConfig.ts +2 -2
- package/generated-sqlite/models/AiUsageLog.ts +2 -2
- package/generated-sqlite/models/AnyHubApp.ts +2 -2
- package/generated-sqlite/models/AnyHubMarketApp.ts +2 -2
- package/generated-sqlite/models/AnyHubPermission.ts +2 -2
- package/generated-sqlite/models/AnyHubRecommendation.ts +2 -2
- package/generated-sqlite/models/AnyHubRecommender.ts +2 -2
- package/generated-sqlite/models/Artboard.ts +2 -2
- package/generated-sqlite/models/ArtboardExport.ts +2 -2
- package/generated-sqlite/models/ArticleFavorite.ts +2 -2
- package/generated-sqlite/models/AuditLog.ts +2 -2
- package/generated-sqlite/models/Block.ts +2 -2
- package/generated-sqlite/models/BlockComponent.ts +2 -2
- package/generated-sqlite/models/BlockInstance.ts +2 -2
- package/generated-sqlite/models/BookmarkCategory.ts +2 -2
- package/generated-sqlite/models/ChatInterrupt.ts +2 -2
- package/generated-sqlite/models/ChatMessage.ts +2 -2
- package/generated-sqlite/models/ChatRun.ts +2 -2
- package/generated-sqlite/models/ChatThread.ts +2 -6
- package/generated-sqlite/models/Comment.ts +2 -2
- package/generated-sqlite/models/CommentIgnore.ts +2 -2
- package/generated-sqlite/models/ComplianceExport.ts +2 -2
- package/generated-sqlite/models/Component.ts +2 -2
- package/generated-sqlite/models/ComponentInstance.ts +2 -2
- package/generated-sqlite/models/ComponentTag.ts +2 -2
- package/generated-sqlite/models/CustomRole.ts +2 -2
- package/generated-sqlite/models/DesignProject.ts +2 -2
- package/generated-sqlite/models/DeveloperLog.ts +2 -2
- package/generated-sqlite/models/DictionaryTerm.ts +2 -2
- package/generated-sqlite/models/GenerationRun.ts +2 -2
- package/generated-sqlite/models/IndustryCompliance.ts +2 -2
- package/generated-sqlite/models/InvitationCode.ts +2 -2
- package/generated-sqlite/models/InvitationUse.ts +2 -2
- package/generated-sqlite/models/Invoice.ts +2 -2
- package/generated-sqlite/models/Iteration.ts +2 -2
- package/generated-sqlite/models/IterationAutoSchedule.ts +2 -2
- package/generated-sqlite/models/KnowledgeBase.ts +196 -3
- package/generated-sqlite/models/KnowledgeDocument.ts +170 -2
- package/generated-sqlite/models/KnowledgeShareRecord.ts +2 -2
- package/generated-sqlite/models/LegalRegulation.ts +2 -2
- package/generated-sqlite/models/LicenseActivation.ts +2 -2
- package/generated-sqlite/models/LicenseKey.ts +2 -2
- package/generated-sqlite/models/LoginLog.ts +2 -2
- package/generated-sqlite/models/PRD.ts +2 -2
- package/generated-sqlite/models/PRDPage.ts +2 -2
- package/generated-sqlite/models/PRDTag.ts +2 -2
- package/generated-sqlite/models/PRDVersion.ts +2 -2
- package/generated-sqlite/models/PageVersion.ts +2 -2
- package/generated-sqlite/models/PasswordResetToken.ts +2 -2
- package/generated-sqlite/models/Plan.ts +2 -2
- package/generated-sqlite/models/Project.ts +2 -2
- package/generated-sqlite/models/ProjectActivity.ts +2 -2
- package/generated-sqlite/models/ProjectKnowledgeBase.ts +2 -2
- package/generated-sqlite/models/ProjectMember.ts +2 -2
- package/generated-sqlite/models/ProviderEvent.ts +2 -2
- package/generated-sqlite/models/Reference.ts +2 -2
- package/generated-sqlite/models/Review.ts +2 -2
- package/generated-sqlite/models/ReviewComment.ts +2 -2
- package/generated-sqlite/models/RoleAssignment.ts +2 -2
- package/generated-sqlite/models/Share.ts +2 -2
- package/generated-sqlite/models/ShareVersion.ts +2 -2
- package/generated-sqlite/models/SsoMapping.ts +2 -2
- package/generated-sqlite/models/SsoProvider.ts +2 -2
- package/generated-sqlite/models/Story.ts +2 -2
- package/generated-sqlite/models/Subscription.ts +2 -2
- package/generated-sqlite/models/SystemSetting.ts +2 -2
- package/generated-sqlite/models/Tag.ts +2 -2
- package/generated-sqlite/models/TeamInvitation.ts +2 -2
- package/generated-sqlite/models/TeamJoinRequest.ts +2 -2
- package/generated-sqlite/models/TeamMembership.ts +2 -2
- package/generated-sqlite/models/Template.ts +2 -2
- package/generated-sqlite/models/TemplateBlock.ts +2 -2
- package/generated-sqlite/models/ThirdPartyDependency.ts +2 -2
- package/generated-sqlite/models/UsageRecord.ts +2 -2
- package/generated-sqlite/models/User.ts +520 -2
- package/generated-sqlite/models/UserAgent.ts +2 -2
- package/generated-sqlite/models/UserSkill.ts +2 -2
- package/generated-sqlite/models/WebsiteBookmark.ts +2 -2
- package/generated-sqlite/models/Workspace.ts +354 -3
- package/generated-sqlite/models/WorkspaceKnowledgeBase.ts +1426 -0
- package/generated-sqlite/models/WorkspaceQuickDoc.ts +2025 -0
- package/generated-sqlite/models.ts +85 -83
- package/migrations/20260907093612_add_workspace_pinned_to_sidebar/migration.sql +2 -0
- package/migrations/20260907100000_add_knowledge_pinned_to_sidebar/migration.sql +2 -0
- package/migrations/20260907110000_add_workspace_members/migration.sql +34 -0
- package/migrations/20260907120000_knowledgebase_workspace_id/migration.sql +8 -0
- package/migrations/20260909070745_workspace_kb_card/migration.sql +55 -0
- package/migrations/20260909123637_workspace_quick_doc_column_index/migration.sql +2 -0
- package/migrations/20260909123656_workspace_quick_doc_column_backfill/migration.sql +4 -0
- package/migrations/20260909144328_workspace_quick_doc_label/migration.sql +2 -0
- package/migrations/20260909154315_workspace_quick_doc_icon/migration.sql +2 -0
- package/package.json +2 -2
- package/schema.prisma +288 -214
- package/schema.sqlite.prisma +62 -14
package/schema.prisma
CHANGED
|
@@ -57,7 +57,7 @@ model User {
|
|
|
57
57
|
/// 用户默认 workspace ID(B3 精确化:多 workspace 用户权益判定确定性)
|
|
58
58
|
defaultWorkspaceId String?
|
|
59
59
|
|
|
60
|
-
invitationUses
|
|
60
|
+
invitationUses InvitationUse[]
|
|
61
61
|
loginLogs LoginLog[]
|
|
62
62
|
passwordResetTokens PasswordResetToken[]
|
|
63
63
|
prds PRD[]
|
|
@@ -73,46 +73,48 @@ model User {
|
|
|
73
73
|
articleFavorites ArticleFavorite[]
|
|
74
74
|
anyhubApps AnyHubApp[]
|
|
75
75
|
anyhubMarketApps AnyHubMarketApp[]
|
|
76
|
-
reviewedAnyhubRecommendations AnyHubRecommendation[]
|
|
76
|
+
reviewedAnyhubRecommendations AnyHubRecommendation[] @relation("reviewedAnyhubRecommendations")
|
|
77
77
|
anyhubRecommenders AnyHubRecommender[]
|
|
78
78
|
prdVersions PRDVersion[]
|
|
79
79
|
reviewComments ReviewComment[]
|
|
80
80
|
comments Comment[]
|
|
81
81
|
commentIgnores CommentIgnore[]
|
|
82
|
-
reviews Review[]
|
|
82
|
+
reviews Review[] @relation("reviewer")
|
|
83
83
|
designProjects DesignProject[]
|
|
84
|
-
storiesCreated Story[]
|
|
85
|
-
storiesAssigned Story[]
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
labelsCreated Label[]
|
|
89
|
-
storyActivities StoryActivity[]
|
|
90
|
-
storyComments StoryComment[]
|
|
91
|
-
storyReactions StoryReaction[]
|
|
92
|
-
commentReactions CommentReaction[]
|
|
84
|
+
storiesCreated Story[] @relation("storyCreator")
|
|
85
|
+
storiesAssigned Story[] @relation("storyAssignee")
|
|
86
|
+
storiesEdited Story[] @relation("storyEditor")
|
|
87
|
+
iterationsCreated Iteration[] @relation("iterationCreator")
|
|
88
|
+
labelsCreated Label[] @relation("labelCreator")
|
|
89
|
+
storyActivities StoryActivity[] @relation("storyActivityUser")
|
|
90
|
+
storyComments StoryComment[] @relation("storyCommentUser")
|
|
91
|
+
storyReactions StoryReaction[] @relation("storyReactionUser")
|
|
92
|
+
commentReactions CommentReaction[] @relation("commentReactionUser")
|
|
93
93
|
storyFilterViews StoryFilterView[]
|
|
94
94
|
chatThreads ChatThread[]
|
|
95
95
|
aiProviderConfigs AiProviderConfig[]
|
|
96
96
|
agentConversations AgentConversation[]
|
|
97
|
-
ownedProjects Project[]
|
|
98
|
-
projectMemberships
|
|
99
|
-
projectActivities
|
|
100
|
-
ownedWorkspaces
|
|
101
|
-
workspaceMemberships
|
|
102
|
-
teamJoined
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
97
|
+
ownedProjects Project[] @relation("projectOwner")
|
|
98
|
+
projectMemberships ProjectMember[]
|
|
99
|
+
projectActivities ProjectActivity[]
|
|
100
|
+
ownedWorkspaces Workspace[] @relation("workspaceOwner")
|
|
101
|
+
workspaceMemberships TeamMembership[] @relation("teamOwner")
|
|
102
|
+
teamJoined TeamMembership? @relation("teamMember")
|
|
103
|
+
workspaceMembers WorkspaceMember[]
|
|
104
|
+
sentInvitations TeamInvitation[] @relation("invitationOwner")
|
|
105
|
+
ownedJoinRequests TeamJoinRequest[] @relation("joinRequestOwner")
|
|
106
|
+
applicantJoinRequests TeamJoinRequest[] @relation("joinRequestApplicant")
|
|
107
|
+
aiUsageLogs AiUsageLog[]
|
|
108
|
+
agents UserAgent[]
|
|
109
|
+
skills UserSkill[]
|
|
110
|
+
notifications Notification[]
|
|
111
|
+
notificationPreference NotificationPreference?
|
|
112
|
+
|
|
113
|
+
issuedLicenses LicenseKey[] @relation("LicenseIssuer")
|
|
114
|
+
ssoMappings SsoMapping[]
|
|
115
|
+
roleAssignments RoleAssignment[]
|
|
116
|
+
subscription Subscription?
|
|
117
|
+
createdQuickDocs WorkspaceQuickDoc[]
|
|
116
118
|
|
|
117
119
|
@@map("users")
|
|
118
120
|
}
|
|
@@ -141,24 +143,24 @@ model Account {
|
|
|
141
143
|
|
|
142
144
|
// 项目
|
|
143
145
|
model Project {
|
|
144
|
-
id
|
|
145
|
-
displayId
|
|
146
|
-
name
|
|
147
|
-
description
|
|
148
|
-
icon
|
|
149
|
-
timezone
|
|
150
|
-
ownerId
|
|
151
|
-
owner
|
|
152
|
-
workspaceId
|
|
153
|
-
workspace
|
|
154
|
-
members
|
|
155
|
-
activities
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
updatedAt
|
|
146
|
+
id String @id @default(cuid())
|
|
147
|
+
displayId String? // 用户层项目ID,全大写字母数字,1-10位
|
|
148
|
+
name String
|
|
149
|
+
description String?
|
|
150
|
+
icon String @default("folder")
|
|
151
|
+
timezone String? // 项目时区,null = 跟随用户全局时区
|
|
152
|
+
ownerId String
|
|
153
|
+
owner User @relation("projectOwner", fields: [ownerId], references: [id])
|
|
154
|
+
workspaceId String?
|
|
155
|
+
workspace Workspace? @relation(fields: [workspaceId], references: [id], onDelete: SetNull)
|
|
156
|
+
members ProjectMember[]
|
|
157
|
+
activities ProjectActivity[]
|
|
158
|
+
stories Story[]
|
|
159
|
+
iterations Iteration[]
|
|
160
|
+
iterationAutoSchedule IterationAutoSchedule?
|
|
161
|
+
knowledgeBases ProjectKnowledgeBase[]
|
|
162
|
+
createdAt DateTime @default(now())
|
|
163
|
+
updatedAt DateTime @updatedAt
|
|
162
164
|
|
|
163
165
|
@@unique([ownerId, displayId])
|
|
164
166
|
@@index([ownerId])
|
|
@@ -184,35 +186,58 @@ model ProjectMember {
|
|
|
184
186
|
|
|
185
187
|
// 工作空间(项目的上一级容器)
|
|
186
188
|
model Workspace {
|
|
187
|
-
id
|
|
188
|
-
name
|
|
189
|
-
icon
|
|
190
|
-
description
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
189
|
+
id String @id @default(cuid())
|
|
190
|
+
name String
|
|
191
|
+
icon String @default("folder")
|
|
192
|
+
description String?
|
|
193
|
+
pinnedToSidebar Boolean @default(false)
|
|
194
|
+
ownerId String
|
|
195
|
+
owner User @relation("workspaceOwner", fields: [ownerId], references: [id])
|
|
196
|
+
projects Project[]
|
|
197
|
+
members WorkspaceMember[]
|
|
198
|
+
knowledgeBases KnowledgeBase[]
|
|
199
|
+
workspaceKbLinks WorkspaceKnowledgeBase[]
|
|
200
|
+
quickDocs WorkspaceQuickDoc[]
|
|
201
|
+
usageRecords UsageRecord[]
|
|
195
202
|
aiUsageLogs AiUsageLog[]
|
|
196
|
-
createdAt
|
|
197
|
-
updatedAt
|
|
203
|
+
createdAt DateTime @default(now())
|
|
204
|
+
updatedAt DateTime @updatedAt
|
|
198
205
|
|
|
199
|
-
ssoProviders
|
|
200
|
-
customRoles
|
|
201
|
-
auditLogs
|
|
206
|
+
ssoProviders SsoProvider[]
|
|
207
|
+
customRoles CustomRole[]
|
|
208
|
+
auditLogs AuditLog[]
|
|
202
209
|
|
|
203
210
|
@@index([ownerId])
|
|
204
211
|
@@map("workspaces")
|
|
205
212
|
}
|
|
206
213
|
|
|
214
|
+
// 工作空间成员
|
|
215
|
+
model WorkspaceMember {
|
|
216
|
+
id String @id @default(cuid())
|
|
217
|
+
workspaceId String
|
|
218
|
+
workspace Workspace @relation(fields: [workspaceId], references: [id], onDelete: Cascade)
|
|
219
|
+
userId String
|
|
220
|
+
user User @relation(fields: [userId], references: [id], onDelete: Cascade)
|
|
221
|
+
role String @default("member")
|
|
222
|
+
status String @default("active")
|
|
223
|
+
joinedAt DateTime @default(now())
|
|
224
|
+
|
|
225
|
+
@@unique([workspaceId, userId])
|
|
226
|
+
@@index([workspaceId])
|
|
227
|
+
@@index([userId])
|
|
228
|
+
@@map("workspace_members")
|
|
229
|
+
}
|
|
230
|
+
|
|
207
231
|
// 团队隶属关系
|
|
208
232
|
model TeamMembership {
|
|
209
|
-
id
|
|
210
|
-
ownerId
|
|
211
|
-
owner
|
|
212
|
-
memberId
|
|
213
|
-
member
|
|
214
|
-
seatType
|
|
215
|
-
joinedAt
|
|
233
|
+
id String @id @default(cuid())
|
|
234
|
+
ownerId String
|
|
235
|
+
owner User @relation("teamOwner", fields: [ownerId], references: [id], onDelete: Cascade)
|
|
236
|
+
memberId String
|
|
237
|
+
member User @relation("teamMember", fields: [memberId], references: [id], onDelete: Cascade)
|
|
238
|
+
seatType String @default("member")
|
|
239
|
+
joinedAt DateTime @default(now())
|
|
240
|
+
|
|
216
241
|
@@unique([memberId])
|
|
217
242
|
@@index([ownerId])
|
|
218
243
|
@@map("team_memberships")
|
|
@@ -220,20 +245,21 @@ model TeamMembership {
|
|
|
220
245
|
|
|
221
246
|
// 团队邀请
|
|
222
247
|
model TeamInvitation {
|
|
223
|
-
id String
|
|
248
|
+
id String @id @default(cuid())
|
|
224
249
|
ownerId String
|
|
225
|
-
owner User
|
|
250
|
+
owner User @relation("invitationOwner", fields: [ownerId], references: [id], onDelete: Cascade)
|
|
226
251
|
email String?
|
|
227
|
-
seatType String
|
|
228
|
-
token String
|
|
229
|
-
channel String
|
|
230
|
-
status String
|
|
252
|
+
seatType String @default("member")
|
|
253
|
+
token String @unique
|
|
254
|
+
channel String @default("email")
|
|
255
|
+
status String @default("pending")
|
|
231
256
|
expiresAt DateTime
|
|
232
|
-
createdAt DateTime
|
|
257
|
+
createdAt DateTime @default(now())
|
|
233
258
|
acceptedBy String?
|
|
234
259
|
applicantEmail String?
|
|
235
260
|
message String?
|
|
236
261
|
joinRequests TeamJoinRequest[]
|
|
262
|
+
|
|
237
263
|
@@unique([ownerId, email])
|
|
238
264
|
@@index([ownerId])
|
|
239
265
|
@@index([email])
|
|
@@ -254,6 +280,7 @@ model TeamJoinRequest {
|
|
|
254
280
|
seatType String @default("member")
|
|
255
281
|
createdAt DateTime @default(now())
|
|
256
282
|
processedAt DateTime?
|
|
283
|
+
|
|
257
284
|
@@unique([invitationId, email])
|
|
258
285
|
@@index([ownerId, status])
|
|
259
286
|
@@map("team_join_requests")
|
|
@@ -285,13 +312,13 @@ model ChatThread {
|
|
|
285
312
|
createdAt DateTime @default(now())
|
|
286
313
|
updatedAt DateTime @updatedAt
|
|
287
314
|
|
|
288
|
-
user
|
|
289
|
-
messages
|
|
290
|
-
runs
|
|
291
|
-
interrupts
|
|
315
|
+
user User @relation(fields: [userId], references: [id], onDelete: Cascade)
|
|
316
|
+
messages ChatMessage[]
|
|
317
|
+
runs ChatRun[]
|
|
318
|
+
interrupts ChatInterrupt[]
|
|
292
319
|
generations GenerationRun[]
|
|
293
|
-
agentId
|
|
294
|
-
agent
|
|
320
|
+
agentId String?
|
|
321
|
+
agent UserAgent? @relation(fields: [agentId], references: [id])
|
|
295
322
|
|
|
296
323
|
@@index([userId, updatedAt])
|
|
297
324
|
@@map("chat_threads")
|
|
@@ -299,14 +326,14 @@ model ChatThread {
|
|
|
299
326
|
|
|
300
327
|
// 对话消息(TanStack AI messages store)
|
|
301
328
|
model ChatMessage {
|
|
302
|
-
id
|
|
303
|
-
threadId
|
|
304
|
-
role
|
|
305
|
-
content
|
|
306
|
-
parts
|
|
307
|
-
thinking
|
|
308
|
-
citations
|
|
309
|
-
createdAt
|
|
329
|
+
id String @id @default(cuid())
|
|
330
|
+
threadId String
|
|
331
|
+
role String // "user" | "assistant" | "tool"
|
|
332
|
+
content String @db.Text
|
|
333
|
+
parts Json?
|
|
334
|
+
thinking String? @db.Text
|
|
335
|
+
citations Json?
|
|
336
|
+
createdAt DateTime @default(now())
|
|
310
337
|
|
|
311
338
|
thread ChatThread @relation(fields: [threadId], references: [id], onDelete: Cascade)
|
|
312
339
|
|
|
@@ -316,15 +343,15 @@ model ChatMessage {
|
|
|
316
343
|
|
|
317
344
|
// 运行记录(TanStack AI runs store)
|
|
318
345
|
model ChatRun {
|
|
319
|
-
id String
|
|
346
|
+
id String @id @default(cuid())
|
|
320
347
|
threadId String
|
|
321
348
|
userId String
|
|
322
349
|
status String // running | completed | failed | aborted | interrupted
|
|
323
|
-
startedAt DateTime
|
|
350
|
+
startedAt DateTime @default(now())
|
|
324
351
|
finishedAt DateTime?
|
|
325
352
|
detachedSince DateTime?
|
|
326
353
|
usage Json?
|
|
327
|
-
error String?
|
|
354
|
+
error String? @db.Text
|
|
328
355
|
|
|
329
356
|
thread ChatThread @relation(fields: [threadId], references: [id], onDelete: Cascade)
|
|
330
357
|
interrupts ChatInterrupt[]
|
|
@@ -336,7 +363,7 @@ model ChatRun {
|
|
|
336
363
|
|
|
337
364
|
// 中断记录(TanStack AI interrupts store)
|
|
338
365
|
model ChatInterrupt {
|
|
339
|
-
id String
|
|
366
|
+
id String @id @default(cuid())
|
|
340
367
|
runId String
|
|
341
368
|
threadId String
|
|
342
369
|
userId String
|
|
@@ -345,10 +372,10 @@ model ChatInterrupt {
|
|
|
345
372
|
state String // pending | resolved | cancelled
|
|
346
373
|
payload Json?
|
|
347
374
|
resolution Json?
|
|
348
|
-
createdAt DateTime
|
|
375
|
+
createdAt DateTime @default(now())
|
|
349
376
|
resolvedAt DateTime?
|
|
350
377
|
|
|
351
|
-
run
|
|
378
|
+
run ChatRun @relation(fields: [runId], references: [id], onDelete: Cascade)
|
|
352
379
|
thread ChatThread @relation(fields: [threadId], references: [id], onDelete: Cascade)
|
|
353
380
|
|
|
354
381
|
@@index([runId])
|
|
@@ -358,7 +385,7 @@ model ChatInterrupt {
|
|
|
358
385
|
|
|
359
386
|
// 媒体生成记录(占位,本轮建表不接入业务)
|
|
360
387
|
model GenerationRun {
|
|
361
|
-
id String
|
|
388
|
+
id String @id @default(cuid())
|
|
362
389
|
threadId String
|
|
363
390
|
userId String
|
|
364
391
|
kind String // image | video | speech | transcription
|
|
@@ -366,8 +393,8 @@ model GenerationRun {
|
|
|
366
393
|
input Json?
|
|
367
394
|
result Json?
|
|
368
395
|
artifactId String?
|
|
369
|
-
error String?
|
|
370
|
-
startedAt DateTime
|
|
396
|
+
error String? @db.Text
|
|
397
|
+
startedAt DateTime @default(now())
|
|
371
398
|
finishedAt DateTime?
|
|
372
399
|
|
|
373
400
|
thread ChatThread @relation(fields: [threadId], references: [id], onDelete: Cascade)
|
|
@@ -472,23 +499,28 @@ enum ShareStatus {
|
|
|
472
499
|
|
|
473
500
|
// 知识库
|
|
474
501
|
model KnowledgeBase {
|
|
475
|
-
id
|
|
476
|
-
name
|
|
477
|
-
description
|
|
478
|
-
icon
|
|
479
|
-
tags
|
|
480
|
-
visibility
|
|
481
|
-
userId
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
502
|
+
id String @id @default(cuid())
|
|
503
|
+
name String
|
|
504
|
+
description String? @db.Text
|
|
505
|
+
icon String @default("notebook")
|
|
506
|
+
tags Json @default("[]")
|
|
507
|
+
visibility String @default("private")
|
|
508
|
+
userId String
|
|
509
|
+
workspaceId String?
|
|
510
|
+
pinnedToSidebar Boolean @default(false)
|
|
511
|
+
isDeleted Boolean @default(false)
|
|
512
|
+
createdAt DateTime @default(now())
|
|
513
|
+
updatedAt DateTime @updatedAt
|
|
485
514
|
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
515
|
+
user User @relation(fields: [userId], references: [id], onDelete: Cascade)
|
|
516
|
+
workspace Workspace? @relation(fields: [workspaceId], references: [id], onDelete: SetNull)
|
|
517
|
+
documents KnowledgeDocument[]
|
|
518
|
+
projectLinks ProjectKnowledgeBase[]
|
|
519
|
+
workspaceLinks WorkspaceKnowledgeBase[]
|
|
489
520
|
|
|
490
|
-
|
|
491
|
-
|
|
521
|
+
@@index([userId])
|
|
522
|
+
@@index([workspaceId])
|
|
523
|
+
@@map("knowledge_bases")
|
|
492
524
|
}
|
|
493
525
|
|
|
494
526
|
model KnowledgeDocument {
|
|
@@ -513,6 +545,7 @@ model KnowledgeDocument {
|
|
|
513
545
|
children KnowledgeDocument[] @relation("DocumentTree")
|
|
514
546
|
creator User @relation(fields: [createdBy], references: [id], onDelete: Cascade)
|
|
515
547
|
linkedStories StoryDocLink[] @relation("DocStoryLinks")
|
|
548
|
+
workspaceQuickDocs WorkspaceQuickDoc[]
|
|
516
549
|
|
|
517
550
|
@@index([kbId])
|
|
518
551
|
@@index([parentId])
|
|
@@ -1384,10 +1417,10 @@ model ArticleFavorite {
|
|
|
1384
1417
|
model Story {
|
|
1385
1418
|
id String @id @default(cuid())
|
|
1386
1419
|
sequenceId Int
|
|
1387
|
-
boardOrder Int
|
|
1420
|
+
boardOrder Int @default(0)
|
|
1388
1421
|
identifier String
|
|
1389
1422
|
projectId String
|
|
1390
|
-
project Project
|
|
1423
|
+
project Project @relation(fields: [projectId], references: [id], onDelete: Restrict)
|
|
1391
1424
|
name String
|
|
1392
1425
|
description String? @db.Text
|
|
1393
1426
|
state String @default("backlog")
|
|
@@ -1410,14 +1443,14 @@ model Story {
|
|
|
1410
1443
|
updatedAt DateTime @updatedAt
|
|
1411
1444
|
|
|
1412
1445
|
parentId String?
|
|
1413
|
-
parent Story?
|
|
1414
|
-
children Story[]
|
|
1415
|
-
dependenciesAsSource StoryDependency[]
|
|
1416
|
-
dependenciesAsTarget StoryDependency[]
|
|
1446
|
+
parent Story? @relation("StoryHierarchy", fields: [parentId], references: [id], onDelete: SetNull)
|
|
1447
|
+
children Story[] @relation("StoryHierarchy")
|
|
1448
|
+
dependenciesAsSource StoryDependency[] @relation("DependencySource")
|
|
1449
|
+
dependenciesAsTarget StoryDependency[] @relation("DependencyTarget")
|
|
1417
1450
|
links StoryLink[]
|
|
1418
1451
|
attachments StoryAttachment[]
|
|
1419
|
-
linkedPrds StoryPrdLink[]
|
|
1420
|
-
linkedDocs StoryDocLink[]
|
|
1452
|
+
linkedPrds StoryPrdLink[] @relation("StoryPrdLinks")
|
|
1453
|
+
linkedDocs StoryDocLink[] @relation("StoryDocLinks")
|
|
1421
1454
|
linkedExternalDocs StoryExternalLink[] @relation("StoryExternalLinks")
|
|
1422
1455
|
iterationId String?
|
|
1423
1456
|
iteration Iteration? @relation(fields: [iterationId], references: [id], onDelete: SetNull)
|
|
@@ -1562,6 +1595,47 @@ model ProjectKnowledgeBase {
|
|
|
1562
1595
|
@@map("project_knowledge_bases")
|
|
1563
1596
|
}
|
|
1564
1597
|
|
|
1598
|
+
// 工作空间关联知识库(join 表;仅允许 visibility=team)
|
|
1599
|
+
model WorkspaceKnowledgeBase {
|
|
1600
|
+
id String @id @default(cuid())
|
|
1601
|
+
workspaceId String
|
|
1602
|
+
kbId String
|
|
1603
|
+
createdAt DateTime @default(now())
|
|
1604
|
+
|
|
1605
|
+
workspace Workspace @relation(fields: [workspaceId], references: [id], onDelete: Cascade)
|
|
1606
|
+
kb KnowledgeBase @relation(fields: [kbId], references: [id], onDelete: Cascade)
|
|
1607
|
+
|
|
1608
|
+
@@unique([workspaceId, kbId])
|
|
1609
|
+
@@index([workspaceId])
|
|
1610
|
+
@@index([kbId])
|
|
1611
|
+
@@map("workspace_knowledge_bases")
|
|
1612
|
+
}
|
|
1613
|
+
|
|
1614
|
+
// 工作空间快捷文档(单表双轨:docId 或 externalGroup+externalId 二选一非空,serverFn 层校验)
|
|
1615
|
+
model WorkspaceQuickDoc {
|
|
1616
|
+
id String @id @default(cuid())
|
|
1617
|
+
workspaceId String
|
|
1618
|
+
docId String?
|
|
1619
|
+
externalGroup String?
|
|
1620
|
+
externalId String?
|
|
1621
|
+
displayTitle String
|
|
1622
|
+
columnIndex Int @default(0)
|
|
1623
|
+
sortOrder Int @default(0)
|
|
1624
|
+
label String?
|
|
1625
|
+
icon String?
|
|
1626
|
+
createdBy String
|
|
1627
|
+
createdAt DateTime @default(now())
|
|
1628
|
+
updatedAt DateTime @updatedAt
|
|
1629
|
+
|
|
1630
|
+
workspace Workspace @relation(fields: [workspaceId], references: [id], onDelete: Cascade)
|
|
1631
|
+
doc KnowledgeDocument? @relation(fields: [docId], references: [id], onDelete: Cascade)
|
|
1632
|
+
creator User @relation(fields: [createdBy], references: [id], onDelete: Cascade)
|
|
1633
|
+
|
|
1634
|
+
@@index([workspaceId])
|
|
1635
|
+
@@index([workspaceId, docId])
|
|
1636
|
+
@@map("workspace_quick_docs")
|
|
1637
|
+
}
|
|
1638
|
+
|
|
1565
1639
|
model StoryLink {
|
|
1566
1640
|
id String @id @default(cuid())
|
|
1567
1641
|
storyId String
|
|
@@ -1578,7 +1652,7 @@ model StoryLink {
|
|
|
1578
1652
|
}
|
|
1579
1653
|
|
|
1580
1654
|
model StoryAttachment {
|
|
1581
|
-
id String
|
|
1655
|
+
id String @id @default(cuid())
|
|
1582
1656
|
storyId String
|
|
1583
1657
|
fileName String
|
|
1584
1658
|
fileSize BigInt
|
|
@@ -1586,7 +1660,7 @@ model StoryAttachment {
|
|
|
1586
1660
|
description String?
|
|
1587
1661
|
storageUrl String
|
|
1588
1662
|
bytes Bytes?
|
|
1589
|
-
fileHash String?
|
|
1663
|
+
fileHash String? @db.Text
|
|
1590
1664
|
createdAt DateTime @default(now())
|
|
1591
1665
|
|
|
1592
1666
|
story Story @relation(fields: [storyId], references: [id], onDelete: Cascade)
|
|
@@ -1701,16 +1775,16 @@ model MonitoringErrorReport {
|
|
|
1701
1775
|
}
|
|
1702
1776
|
|
|
1703
1777
|
model MonitoringMetricsSnapshot {
|
|
1704
|
-
id
|
|
1705
|
-
recordedAt
|
|
1706
|
-
metricName
|
|
1707
|
-
count
|
|
1708
|
-
avg
|
|
1709
|
-
p50
|
|
1710
|
-
p95
|
|
1711
|
-
p99
|
|
1712
|
-
min
|
|
1713
|
-
max
|
|
1778
|
+
id String @id @default(cuid())
|
|
1779
|
+
recordedAt DateTime @default(now())
|
|
1780
|
+
metricName String @db.VarChar(256)
|
|
1781
|
+
count Int
|
|
1782
|
+
avg Float
|
|
1783
|
+
p50 Float
|
|
1784
|
+
p95 Float
|
|
1785
|
+
p99 Float
|
|
1786
|
+
min Float
|
|
1787
|
+
max Float
|
|
1714
1788
|
|
|
1715
1789
|
@@index([metricName, recordedAt], map: "idx_metrics_name_ts")
|
|
1716
1790
|
@@map("monitoring_metrics_snapshots")
|
|
@@ -1774,30 +1848,30 @@ model Plan {
|
|
|
1774
1848
|
|
|
1775
1849
|
/// 订阅记录(User 级,一人一订阅)
|
|
1776
1850
|
model Subscription {
|
|
1777
|
-
id
|
|
1778
|
-
userId
|
|
1779
|
-
user
|
|
1780
|
-
planId
|
|
1781
|
-
plan
|
|
1782
|
-
status
|
|
1851
|
+
id String @id @default(cuid())
|
|
1852
|
+
userId String @unique
|
|
1853
|
+
user User @relation(fields: [userId], references: [id])
|
|
1854
|
+
planId String
|
|
1855
|
+
plan Plan @relation(fields: [planId], references: [id])
|
|
1856
|
+
status SubscriptionStatus @default(ACTIVE)
|
|
1783
1857
|
|
|
1784
1858
|
/// 席位加购数量(账号级)。实际上限 = plan.maxSeats + addonSeats。
|
|
1785
1859
|
addonSeats Int @default(0)
|
|
1786
1860
|
|
|
1787
|
-
provider
|
|
1788
|
-
providerCustomerId
|
|
1789
|
-
providerSubscriptionId
|
|
1790
|
-
providerPriceId
|
|
1861
|
+
provider String @default("creem")
|
|
1862
|
+
providerCustomerId String?
|
|
1863
|
+
providerSubscriptionId String? @unique
|
|
1864
|
+
providerPriceId String?
|
|
1791
1865
|
providerSeatSubscriptionId String?
|
|
1792
1866
|
|
|
1793
|
-
currentPeriodStart
|
|
1794
|
-
currentPeriodEnd
|
|
1795
|
-
cancelAtPeriodEnd
|
|
1796
|
-
canceledAt
|
|
1797
|
-
trialEndsAt
|
|
1867
|
+
currentPeriodStart DateTime?
|
|
1868
|
+
currentPeriodEnd DateTime?
|
|
1869
|
+
cancelAtPeriodEnd Boolean @default(false)
|
|
1870
|
+
canceledAt DateTime?
|
|
1871
|
+
trialEndsAt DateTime?
|
|
1798
1872
|
|
|
1799
|
-
createdAt
|
|
1800
|
-
updatedAt
|
|
1873
|
+
createdAt DateTime @default(now())
|
|
1874
|
+
updatedAt DateTime @updatedAt
|
|
1801
1875
|
|
|
1802
1876
|
/// 关联发票(子项目 3 新增)
|
|
1803
1877
|
invoices Invoice[]
|
|
@@ -1824,8 +1898,8 @@ model UsageRecord {
|
|
|
1824
1898
|
count Int @default(0)
|
|
1825
1899
|
resetAt DateTime
|
|
1826
1900
|
|
|
1827
|
-
createdAt
|
|
1828
|
-
updatedAt
|
|
1901
|
+
createdAt DateTime @default(now())
|
|
1902
|
+
updatedAt DateTime @updatedAt
|
|
1829
1903
|
|
|
1830
1904
|
@@unique([workspaceId, metric, period])
|
|
1831
1905
|
@@index([workspaceId, metric])
|
|
@@ -1840,22 +1914,22 @@ enum UsageMetric {
|
|
|
1840
1914
|
|
|
1841
1915
|
/// AI 用量明细(按次扣减 + 成本审计)
|
|
1842
1916
|
model AiUsageLog {
|
|
1843
|
-
id String
|
|
1917
|
+
id String @id @default(cuid())
|
|
1844
1918
|
workspaceId String
|
|
1845
1919
|
workspace Workspace @relation(fields: [workspaceId], references: [id])
|
|
1846
1920
|
userId String
|
|
1847
|
-
user User
|
|
1848
|
-
source String
|
|
1921
|
+
user User @relation(fields: [userId], references: [id])
|
|
1922
|
+
source String @default("byok")
|
|
1849
1923
|
provider String
|
|
1850
1924
|
model String
|
|
1851
|
-
inputTokens Int
|
|
1852
|
-
outputTokens Int
|
|
1853
|
-
costUsd Decimal?
|
|
1854
|
-
success Boolean
|
|
1925
|
+
inputTokens Int @default(0)
|
|
1926
|
+
outputTokens Int @default(0)
|
|
1927
|
+
costUsd Decimal? @db.Decimal(10, 6)
|
|
1928
|
+
success Boolean @default(true)
|
|
1855
1929
|
errorMessage String?
|
|
1856
1930
|
durationMs Int?
|
|
1857
1931
|
|
|
1858
|
-
createdAt
|
|
1932
|
+
createdAt DateTime @default(now())
|
|
1859
1933
|
|
|
1860
1934
|
@@index([workspaceId, createdAt])
|
|
1861
1935
|
@@index([userId, createdAt])
|
|
@@ -1868,22 +1942,22 @@ model AiUsageLog {
|
|
|
1868
1942
|
|
|
1869
1943
|
/// 账单记录(Webhook 同步)
|
|
1870
1944
|
model Invoice {
|
|
1871
|
-
id
|
|
1872
|
-
subscriptionId
|
|
1873
|
-
subscription
|
|
1874
|
-
providerInvoiceId
|
|
1875
|
-
providerEventId
|
|
1876
|
-
amountDue
|
|
1877
|
-
amountPaid
|
|
1878
|
-
currency
|
|
1879
|
-
status
|
|
1880
|
-
pdfUrl
|
|
1881
|
-
hostedInvoiceUrl
|
|
1882
|
-
periodStart
|
|
1883
|
-
periodEnd
|
|
1884
|
-
paidAt
|
|
1885
|
-
|
|
1886
|
-
createdAt
|
|
1945
|
+
id String @id @default(cuid())
|
|
1946
|
+
subscriptionId String
|
|
1947
|
+
subscription Subscription @relation(fields: [subscriptionId], references: [id])
|
|
1948
|
+
providerInvoiceId String @unique
|
|
1949
|
+
providerEventId String?
|
|
1950
|
+
amountDue Int
|
|
1951
|
+
amountPaid Int
|
|
1952
|
+
currency String @default("usd")
|
|
1953
|
+
status String
|
|
1954
|
+
pdfUrl String?
|
|
1955
|
+
hostedInvoiceUrl String?
|
|
1956
|
+
periodStart DateTime
|
|
1957
|
+
periodEnd DateTime
|
|
1958
|
+
paidAt DateTime?
|
|
1959
|
+
|
|
1960
|
+
createdAt DateTime @default(now())
|
|
1887
1961
|
|
|
1888
1962
|
@@index([subscriptionId, createdAt])
|
|
1889
1963
|
@@map("invoices")
|
|
@@ -1891,15 +1965,15 @@ model Invoice {
|
|
|
1891
1965
|
|
|
1892
1966
|
/// Provider Webhook 事件幂等记录
|
|
1893
1967
|
model ProviderEvent {
|
|
1894
|
-
id String
|
|
1895
|
-
providerEventId String
|
|
1968
|
+
id String @id @default(cuid())
|
|
1969
|
+
providerEventId String @unique
|
|
1896
1970
|
type String
|
|
1897
|
-
status String
|
|
1971
|
+
status String @default("processing")
|
|
1898
1972
|
payload Json?
|
|
1899
1973
|
errorMessage String?
|
|
1900
1974
|
processedAt DateTime? @db.Timestamptz
|
|
1901
1975
|
|
|
1902
|
-
createdAt
|
|
1976
|
+
createdAt DateTime @default(now()) @db.Timestamptz
|
|
1903
1977
|
|
|
1904
1978
|
@@index([type, createdAt])
|
|
1905
1979
|
@@map("provider_events")
|
|
@@ -1954,7 +2028,7 @@ model AuditLog {
|
|
|
1954
2028
|
metadata Json
|
|
1955
2029
|
ip String?
|
|
1956
2030
|
userAgent String?
|
|
1957
|
-
createdAt DateTime
|
|
2031
|
+
createdAt DateTime @default(now())
|
|
1958
2032
|
|
|
1959
2033
|
@@index([workspaceId, createdAt])
|
|
1960
2034
|
@@index([userId, createdAt])
|
|
@@ -1964,17 +2038,17 @@ model AuditLog {
|
|
|
1964
2038
|
|
|
1965
2039
|
// SSO Provider 配置
|
|
1966
2040
|
model SsoProvider {
|
|
1967
|
-
id
|
|
1968
|
-
workspaceId
|
|
1969
|
-
workspace
|
|
1970
|
-
type
|
|
1971
|
-
name
|
|
1972
|
-
config
|
|
1973
|
-
domain
|
|
1974
|
-
enabled
|
|
1975
|
-
createdAt
|
|
1976
|
-
updatedAt
|
|
1977
|
-
mappings
|
|
2041
|
+
id String @id @default(cuid())
|
|
2042
|
+
workspaceId String
|
|
2043
|
+
workspace Workspace @relation(fields: [workspaceId], references: [id])
|
|
2044
|
+
type String
|
|
2045
|
+
name String
|
|
2046
|
+
config Json
|
|
2047
|
+
domain String?
|
|
2048
|
+
enabled Boolean @default(true)
|
|
2049
|
+
createdAt DateTime @default(now())
|
|
2050
|
+
updatedAt DateTime @updatedAt
|
|
2051
|
+
mappings SsoMapping[]
|
|
1978
2052
|
|
|
1979
2053
|
@@unique([workspaceId, type, domain])
|
|
1980
2054
|
@@map("sso_providers")
|
|
@@ -1996,14 +2070,14 @@ model SsoMapping {
|
|
|
1996
2070
|
|
|
1997
2071
|
// 自定义角色
|
|
1998
2072
|
model CustomRole {
|
|
1999
|
-
id String
|
|
2073
|
+
id String @id @default(cuid())
|
|
2000
2074
|
workspaceId String
|
|
2001
|
-
workspace Workspace
|
|
2075
|
+
workspace Workspace @relation(fields: [workspaceId], references: [id])
|
|
2002
2076
|
name String
|
|
2003
2077
|
permissions Json
|
|
2004
|
-
isSystem Boolean
|
|
2005
|
-
createdAt DateTime
|
|
2006
|
-
updatedAt DateTime
|
|
2078
|
+
isSystem Boolean @default(false)
|
|
2079
|
+
createdAt DateTime @default(now())
|
|
2080
|
+
updatedAt DateTime @updatedAt
|
|
2007
2081
|
assignments RoleAssignment[]
|
|
2008
2082
|
|
|
2009
2083
|
@@unique([workspaceId, name])
|
|
@@ -2011,12 +2085,12 @@ model CustomRole {
|
|
|
2011
2085
|
}
|
|
2012
2086
|
|
|
2013
2087
|
model RoleAssignment {
|
|
2014
|
-
id String
|
|
2088
|
+
id String @id @default(cuid())
|
|
2015
2089
|
roleId String
|
|
2016
2090
|
role CustomRole @relation(fields: [roleId], references: [id])
|
|
2017
2091
|
userId String
|
|
2018
|
-
user User
|
|
2019
|
-
createdAt DateTime
|
|
2092
|
+
user User @relation(fields: [userId], references: [id])
|
|
2093
|
+
createdAt DateTime @default(now())
|
|
2020
2094
|
|
|
2021
2095
|
@@unique([roleId, userId])
|
|
2022
2096
|
@@map("role_assignments")
|
|
@@ -2085,8 +2159,8 @@ model UserSkill {
|
|
|
2085
2159
|
// 开发者日志(Changelog 条目,agent 自动生成 + admin 手动管理)
|
|
2086
2160
|
model DeveloperLog {
|
|
2087
2161
|
id String @id @default(cuid())
|
|
2088
|
-
date String
|
|
2089
|
-
year String
|
|
2162
|
+
date String // "Aug 23, 2026"
|
|
2163
|
+
year String // "2026"
|
|
2090
2164
|
title String
|
|
2091
2165
|
desc String @db.Text
|
|
2092
2166
|
tags Json @default("[]") // ["feat", "design"]
|
|
@@ -2124,9 +2198,9 @@ model NotificationPreference {
|
|
|
2124
2198
|
dndEnabled Boolean @default(false)
|
|
2125
2199
|
dndStart String @default("22:00")
|
|
2126
2200
|
dndEnd String @default("08:00")
|
|
2127
|
-
|
|
2201
|
+
user User @relation(fields: [userId], references: [id], onDelete: Cascade)
|
|
2128
2202
|
|
|
2129
|
-
|
|
2203
|
+
@@map("notification_preferences")
|
|
2130
2204
|
}
|
|
2131
2205
|
|
|
2132
2206
|
// 迭代(时间盒冲刺,状态由日期动态推导,不存状态字段)
|
|
@@ -2153,16 +2227,16 @@ model Iteration {
|
|
|
2153
2227
|
|
|
2154
2228
|
// 迭代自动排期配置(一项目一行)
|
|
2155
2229
|
model IterationAutoSchedule {
|
|
2156
|
-
projectId String
|
|
2157
|
-
project Project
|
|
2158
|
-
enabled Boolean
|
|
2159
|
-
title String
|
|
2160
|
-
durationDays Int
|
|
2161
|
-
cooldownDays Int
|
|
2230
|
+
projectId String @id
|
|
2231
|
+
project Project @relation(fields: [projectId], references: [id], onDelete: Cascade)
|
|
2232
|
+
enabled Boolean @default(false)
|
|
2233
|
+
title String @default("迭代")
|
|
2234
|
+
durationDays Int @default(14)
|
|
2235
|
+
cooldownDays Int @default(0)
|
|
2162
2236
|
startsOn DateTime
|
|
2163
|
-
futureCount Int
|
|
2164
|
-
autoRollover Boolean
|
|
2165
|
-
lastSeq Int
|
|
2237
|
+
futureCount Int @default(2)
|
|
2238
|
+
autoRollover Boolean @default(false)
|
|
2239
|
+
lastSeq Int @default(0)
|
|
2166
2240
|
|
|
2167
2241
|
@@map("iteration_auto_schedules")
|
|
2168
2242
|
}
|