feat: 支持教学案例展示功能

This commit is contained in:
richarjiang
2026-09-18 18:26:47 +08:00
parent 95b9f6511c
commit 87afb786b9
28 changed files with 950 additions and 5 deletions

View File

@@ -0,0 +1,27 @@
CREATE TABLE `TeachingCase` (
`id` VARCHAR(191) NOT NULL,
`title` VARCHAR(80) NOT NULL,
`displayName` VARCHAR(30) NOT NULL,
`lessonCount` INTEGER NOT NULL,
`background` VARCHAR(500) NOT NULL,
`achievement` VARCHAR(1000) NOT NULL,
`frames` JSON NOT NULL,
`sortOrder` INTEGER NOT NULL DEFAULT 0,
`published` BOOLEAN NOT NULL DEFAULT false,
`consentConfirmed` BOOLEAN NOT NULL DEFAULT false,
`consentNote` VARCHAR(500) NOT NULL,
`consentedAt` DATETIME(3) NULL,
`version` INTEGER NOT NULL DEFAULT 1,
`createdAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
`updatedAt` DATETIME(3) NOT NULL,
INDEX `TeachingCase_published_sortOrder_createdAt_idx` (`published`, `sortOrder`, `createdAt`),
PRIMARY KEY (`id`)
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE TABLE `TeachingCaseAsset` (
`id` VARCHAR(191) NOT NULL,
`objectKey` VARCHAR(255) NOT NULL,
`ready` BOOLEAN NOT NULL DEFAULT false,
`createdAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
UNIQUE INDEX `TeachingCaseAsset_objectKey_key` (`objectKey`),
PRIMARY KEY (`id`)
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

View File

@@ -691,3 +691,31 @@ model ProductStockChange {
@@index([productId, createdAt])
@@map("product_stock_changes")
}
// Public teaching stories never reference private ProgressPhoto records.
model TeachingCase {
id String @id @default(cuid())
title String @db.VarChar(80)
displayName String @db.VarChar(30)
lessonCount Int
background String @db.VarChar(500)
achievement String @db.VarChar(1000)
frames Json
sortOrder Int @default(0)
published Boolean @default(false)
consentConfirmed Boolean @default(false)
consentNote String @db.VarChar(500)
consentedAt DateTime?
version Int @default(1)
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
@@index([published, sortOrder, createdAt])
}
model TeachingCaseAsset {
id String @id @default(cuid())
objectKey String @unique @db.VarChar(255)
ready Boolean @default(false)
createdAt DateTime @default(now())
}