Epic 6: Stories 6-2 (Markdown roundtrip) + 6-3 (Brainstorm PPTX + Canvas)
Story 6-2 — Markdown roundtrip export/import: - lib/editor/markdown-export.ts: tiptapHTMLToMarkdown, markdownToHTML, looksLikeMarkdown - lib/editor/markdown-paste-extension.ts: TipTap extension paste Markdown → blocs - note-editor-toolbar.tsx: export .md + import .md (file picker) - rich-text-editor.tsx: intégration MarkdownPasteExtension - 40 tests unitaires markdown-export.test.ts Story 6-3 — Brainstorm PPTX + Canvas: - lib/brainstorm/export-pptx.ts: génération PPTX 5 slides (pptxgenjs) - app/api/brainstorm/[sessionId]/export-pptx/route.ts: route POST protégée - brainstorm-page.tsx: bouton PPTX, auto-select session, fix emoji, fix router.replace - wave-canvas.tsx: fitTrigger recentrage, légende bas-droite Onboarding activation wizard (Story 6-1): - components/onboarding/: wizard multi-étapes, hints éditeur - app/api/onboarding/: route PATCH onboarding - prisma/migrations: champs onboarding user Locales: 15 langues mises à jour (brainstorm, markdown, onboarding keys) Sprint: 6-1 done, 6-2 review, 6-3 review Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This commit is contained in:
@@ -0,0 +1,8 @@
|
||||
-- AddColumn: User.onboardingCompleted
|
||||
ALTER TABLE "User" ADD COLUMN IF NOT EXISTS "onboardingCompleted" BOOLEAN NOT NULL DEFAULT false;
|
||||
|
||||
-- AddColumn: User.onboardingStep
|
||||
ALTER TABLE "User" ADD COLUMN IF NOT EXISTS "onboardingStep" INTEGER NOT NULL DEFAULT 0;
|
||||
|
||||
-- AddColumn: Note.isDemo
|
||||
ALTER TABLE "Note" ADD COLUMN IF NOT EXISTS "isDemo" BOOLEAN NOT NULL DEFAULT false;
|
||||
@@ -26,6 +26,8 @@ model User {
|
||||
updatedAt DateTime @updatedAt
|
||||
cardSizeMode String @default("variable")
|
||||
accentColor String @default("#A47148")
|
||||
onboardingCompleted Boolean @default(false)
|
||||
onboardingStep Int @default(0)
|
||||
accounts Account[]
|
||||
agents Agent[]
|
||||
aiFeedback AiFeedback[]
|
||||
@@ -175,6 +177,8 @@ model Note {
|
||||
historyEnabled Boolean @default(false)
|
||||
/// URL d'origine pour les clips web (Web Clipper)
|
||||
sourceUrl String?
|
||||
/// Note de démonstration insérée lors de l'onboarding
|
||||
isDemo Boolean @default(false)
|
||||
/// Illustration SVG (sanitized) for editorial feed thumbnail — optional, peut être généré par IA
|
||||
illustrationSvg String?
|
||||
tsv Unsupported("tsvector")?
|
||||
|
||||
Reference in New Issue
Block a user