@allbluecn/database 0.5.0 → 0.8.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.
Files changed (49) hide show
  1. package/generated/browser.ts +35 -0
  2. package/generated/client.ts +35 -0
  3. package/generated/internal/class.ts +74 -4
  4. package/generated/internal/prismaNamespace.ts +634 -2
  5. package/generated/internal/prismaNamespaceBrowser.ts +108 -1
  6. package/generated/models/EmailLog.ts +1345 -0
  7. package/generated/models/EmailPreference.ts +1257 -0
  8. package/generated/models/EmailSubscriber.ts +1233 -0
  9. package/generated/models/EmailVerificationToken.ts +1380 -0
  10. package/generated/models/InvitationCode.ts +65 -1
  11. package/generated/models/KnowledgeBase.ts +158 -0
  12. package/generated/models/KnowledgeDocument.ts +176 -0
  13. package/generated/models/NotificationPreference.ts +27 -1
  14. package/generated/models/OAuthProviderConfig.ts +1227 -0
  15. package/generated/models/User.ts +2405 -493
  16. package/generated/models/Workspace.ts +380 -0
  17. package/generated/models/WorkspaceKnowledgeBase.ts +1430 -0
  18. package/generated/models/WorkspaceQuickDoc.ts +2030 -0
  19. package/generated/models.ts +7 -0
  20. package/generated-sqlite/browser.ts +40 -0
  21. package/generated-sqlite/client.ts +40 -0
  22. package/generated-sqlite/internal/class.ts +84 -4
  23. package/generated-sqlite/internal/prismaNamespace.ts +722 -3
  24. package/generated-sqlite/internal/prismaNamespaceBrowser.ts +121 -2
  25. package/generated-sqlite/models/EmailLog.ts +1343 -0
  26. package/generated-sqlite/models/EmailPreference.ts +1255 -0
  27. package/generated-sqlite/models/EmailSubscriber.ts +1231 -0
  28. package/generated-sqlite/models/EmailVerificationToken.ts +1377 -0
  29. package/generated-sqlite/models/InvitationCode.ts +65 -1
  30. package/generated-sqlite/models/KnowledgeBase.ts +150 -0
  31. package/generated-sqlite/models/KnowledgeDocument.ts +168 -0
  32. package/generated-sqlite/models/NotificationPreference.ts +1313 -0
  33. package/generated-sqlite/models/OAuthProviderConfig.ts +1225 -0
  34. package/generated-sqlite/models/User.ts +2252 -160
  35. package/generated-sqlite/models/Workspace.ts +300 -0
  36. package/generated-sqlite/models/WorkspaceKnowledgeBase.ts +1426 -0
  37. package/generated-sqlite/models/WorkspaceQuickDoc.ts +2025 -0
  38. package/generated-sqlite/models.ts +8 -0
  39. package/migrations/20260909070745_workspace_kb_card/migration.sql +55 -0
  40. package/migrations/20260909123637_workspace_quick_doc_column_index/migration.sql +2 -0
  41. package/migrations/20260909123656_workspace_quick_doc_column_backfill/migration.sql +4 -0
  42. package/migrations/20260909144328_workspace_quick_doc_label/migration.sql +2 -0
  43. package/migrations/20260909154315_workspace_quick_doc_icon/migration.sql +2 -0
  44. package/migrations/20260911120000_add_pgvector_tables/migration.sql +28 -0
  45. package/migrations/20260911171433_email_auth_invitation/migration.sql +80 -0
  46. package/migrations/20260912032616_email_p4_p8/migration.sql +42 -0
  47. package/package.json +2 -2
  48. package/schema.prisma +141 -14
  49. package/schema.sqlite.prisma +141 -6
@@ -61,6 +61,9 @@ model User {
61
61
  invitationUses InvitationUse[]
62
62
  loginLogs LoginLog[]
63
63
  passwordResetTokens PasswordResetToken[]
64
+ emailVerificationTokens EmailVerificationToken[]
65
+ emailPreference EmailPreference?
66
+ notificationPreference NotificationPreference?
64
67
  prds PRD[]
65
68
  tags Tag[]
66
69
  knowledgeBases KnowledgeBase[]
@@ -102,6 +105,7 @@ model User {
102
105
  agents UserAgent[]
103
106
  skills UserSkill[]
104
107
  subscription Subscription?
108
+ createdQuickDocs WorkspaceQuickDoc[]
105
109
 
106
110
  @@map("users")
107
111
  }
@@ -159,6 +163,8 @@ model Workspace {
159
163
  ownerId String
160
164
  owner User @relation("workspaceOwner", fields: [ownerId], references: [id])
161
165
  projects Project[]
166
+ workspaceKbLinks WorkspaceKnowledgeBase[]
167
+ quickDocs WorkspaceQuickDoc[]
162
168
  usageRecords UsageRecord[]
163
169
  aiUsageLogs AiUsageLog[]
164
170
  createdAt DateTime @default(now())
@@ -359,9 +365,11 @@ model InvitationCode {
359
365
  usedCount Int @default(0)
360
366
  expiresAt DateTime
361
367
  createdAt DateTime @default(now())
362
-
368
+ createdById String?
369
+ disabledAt DateTime?
370
+
363
371
  uses InvitationUse[]
364
-
372
+
365
373
  @@map("invitation_codes")
366
374
  }
367
375
 
@@ -386,12 +394,83 @@ model PasswordResetToken {
386
394
  expiresAt DateTime
387
395
  usedAt DateTime?
388
396
  createdAt DateTime @default(now())
389
-
397
+
390
398
  user User @relation(fields: [userId], references: [id], onDelete: Cascade)
391
-
399
+
392
400
  @@map("password_reset_tokens")
393
401
  }
394
402
 
403
+ // 邮箱验证令牌
404
+ model EmailVerificationToken {
405
+ id String @id @default(cuid())
406
+ token String @unique
407
+ userId String
408
+ expiresAt DateTime
409
+ usedAt DateTime?
410
+ createdAt DateTime @default(now())
411
+ user User @relation(fields: [userId], references: [id], onDelete: Cascade)
412
+ @@map("email_verification_tokens")
413
+ }
414
+
415
+ // 出站邮件日志
416
+ model EmailLog {
417
+ id String @id @default(cuid())
418
+ to String
419
+ templateKey String
420
+ category String
421
+ status String
422
+ provider String
423
+ messageId String?
424
+ dedupeKey String? @unique
425
+ error String?
426
+ userId String?
427
+ createdAt DateTime @default(now())
428
+ sentAt DateTime?
429
+ @@index([to, createdAt])
430
+ @@index([userId, createdAt])
431
+ @@index([status])
432
+ @@map("email_logs")
433
+ }
434
+
435
+ // 用户邮件偏好
436
+ model EmailPreference {
437
+ userId String @id
438
+ unsubscribedAll Boolean @default(false)
439
+ unsubscribedCategories Json @default(dbgenerated("'[]'"))
440
+ suppressed Boolean @default(false)
441
+ user User @relation(fields: [userId], references: [id], onDelete: Cascade)
442
+ @@map("email_preferences")
443
+ }
444
+
445
+ // 第三方登录配置(admin 后台维护)
446
+ model OAuthProviderConfig {
447
+ id String @id @default(cuid())
448
+ provider String @unique
449
+ clientId String
450
+ clientSecret String // AES-256-GCM 密文
451
+ enabled Boolean @default(false)
452
+ extra Json?
453
+ createdAt DateTime @default(now())
454
+ updatedAt DateTime @updatedAt
455
+
456
+ @@map("oauth_provider_configs")
457
+ }
458
+
459
+ // 产品更新订阅者(changelog)
460
+ model EmailSubscriber {
461
+ id String @id @default(cuid())
462
+ email String @unique
463
+ locale String @default("zh")
464
+ confirmToken String @unique
465
+ confirmedAt DateTime?
466
+ unsubscribedAt DateTime?
467
+ source String @default("changelog")
468
+ createdAt DateTime @default(now())
469
+
470
+ @@index([confirmedAt, unsubscribedAt])
471
+ @@map("email_subscribers")
472
+ }
473
+
395
474
  // (enum 已移除:SQLite 无原生 enum,Role/UserStatus/IconType/MarketplaceAppStatus/ReviewStatus/ShareStatus 改为 String 存 TEXT)
396
475
 
397
476
  // 知识库
@@ -410,9 +489,10 @@ model KnowledgeBase {
410
489
 
411
490
  user User @relation(fields: [userId], references: [id], onDelete: Cascade)
412
491
  documents KnowledgeDocument[]
413
- projectLinks ProjectKnowledgeBase[]
492
+ projectLinks ProjectKnowledgeBase[]
493
+ workspaceLinks WorkspaceKnowledgeBase[]
414
494
 
415
- @@index([userId])
495
+ @@index([userId])
416
496
  @@map("knowledge_bases")
417
497
  }
418
498
 
@@ -432,6 +512,47 @@ model ProjectKnowledgeBase {
432
512
  @@map("project_knowledge_bases")
433
513
  }
434
514
 
515
+ // 工作空间关联知识库(join 表;仅允许 visibility=team)
516
+ model WorkspaceKnowledgeBase {
517
+ id String @id @default(cuid())
518
+ workspaceId String
519
+ kbId String
520
+ createdAt DateTime @default(now())
521
+
522
+ workspace Workspace @relation(fields: [workspaceId], references: [id], onDelete: Cascade)
523
+ kb KnowledgeBase @relation(fields: [kbId], references: [id], onDelete: Cascade)
524
+
525
+ @@unique([workspaceId, kbId])
526
+ @@index([workspaceId])
527
+ @@index([kbId])
528
+ @@map("workspace_knowledge_bases")
529
+ }
530
+
531
+ // 工作空间快捷文档(单表双轨:docId 或 externalGroup+externalId 二选一非空,serverFn 层校验)
532
+ model WorkspaceQuickDoc {
533
+ id String @id @default(cuid())
534
+ workspaceId String
535
+ docId String?
536
+ externalGroup String?
537
+ externalId String?
538
+ displayTitle String
539
+ columnIndex Int @default(0)
540
+ sortOrder Int @default(0)
541
+ label String?
542
+ icon String?
543
+ createdBy String
544
+ createdAt DateTime @default(now())
545
+ updatedAt DateTime @updatedAt
546
+
547
+ workspace Workspace @relation(fields: [workspaceId], references: [id], onDelete: Cascade)
548
+ doc KnowledgeDocument? @relation(fields: [docId], references: [id], onDelete: Cascade)
549
+ creator User @relation(fields: [createdBy], references: [id], onDelete: Cascade)
550
+
551
+ @@index([workspaceId])
552
+ @@index([workspaceId, docId])
553
+ @@map("workspace_quick_docs")
554
+ }
555
+
435
556
  model KnowledgeDocument {
436
557
  id String @id @default(cuid())
437
558
  kbId String
@@ -453,6 +574,7 @@ model KnowledgeDocument {
453
574
  parent KnowledgeDocument? @relation("DocumentTree", fields: [parentId], references: [id], onDelete: SetNull)
454
575
  children KnowledgeDocument[] @relation("DocumentTree")
455
576
  creator User @relation(fields: [createdBy], references: [id], onDelete: Cascade)
577
+ workspaceQuickDocs WorkspaceQuickDoc[]
456
578
 
457
579
  @@index([kbId])
458
580
  @@index([parentId])
@@ -1727,3 +1849,16 @@ model IterationAutoSchedule {
1727
1849
 
1728
1850
  @@map("iteration_auto_schedules")
1729
1851
  }
1852
+
1853
+ // 通知偏好(免打扰时段、分类开关)
1854
+ model NotificationPreference {
1855
+ userId String @id
1856
+ categories Json
1857
+ emailCategories Json @default(dbgenerated("'{}'"))
1858
+ dndEnabled Boolean @default(false)
1859
+ dndStart String @default("22:00")
1860
+ dndEnd String @default("08:00")
1861
+ user User @relation(fields: [userId], references: [id], onDelete: Cascade)
1862
+
1863
+ @@map("notification_preferences")
1864
+ }