Connect public lead forms to CRM Leads on submit.

This commit is contained in:
2026-09-28 13:39:44 +03:30
parent 32e27d45f7
commit f20206b045
10 changed files with 971 additions and 91 deletions
@@ -0,0 +1,21 @@
-- AlterTable LeadForm: publish → Lead connection
ALTER TABLE "LeadForm" ADD COLUMN IF NOT EXISTS "createLead" BOOLEAN NOT NULL DEFAULT true;
ALTER TABLE "LeadForm" ADD COLUMN IF NOT EXISTS "leadStageId" TEXT;
ALTER TABLE "LeadForm" ADD COLUMN IF NOT EXISTS "duplicateMode" TEXT NOT NULL DEFAULT 'update';
ALTER TABLE "LeadForm" ADD COLUMN IF NOT EXISTS "viewCount" INTEGER NOT NULL DEFAULT 0;
ALTER TABLE "LeadForm" ADD COLUMN IF NOT EXISTS "startCount" INTEGER NOT NULL DEFAULT 0;
ALTER TABLE "LeadForm" ADD COLUMN IF NOT EXISTS "submitCount" INTEGER NOT NULL DEFAULT 0;
ALTER TABLE "LeadForm" ADD COLUMN IF NOT EXISTS "leadCreateCount" INTEGER NOT NULL DEFAULT 0;
ALTER TABLE "LeadForm" ADD COLUMN IF NOT EXISTS "duplicateCount" INTEGER NOT NULL DEFAULT 0;
-- Existing forms: keep person/deal behavior unless already lead-oriented
ALTER TABLE "LeadForm" ALTER COLUMN "createPerson" SET DEFAULT false;
ALTER TABLE "LeadForm" ALTER COLUMN "createDeal" SET DEFAULT false;
-- AlterTable LeadFormSubmission
ALTER TABLE "LeadFormSubmission" ADD COLUMN IF NOT EXISTS "leadId" TEXT;
ALTER TABLE "LeadFormSubmission" ADD COLUMN IF NOT EXISTS "status" TEXT NOT NULL DEFAULT 'created';
ALTER TABLE "LeadFormSubmission" ADD COLUMN IF NOT EXISTS "utm" JSONB;
ALTER TABLE "LeadFormSubmission" ADD COLUMN IF NOT EXISTS "meta" JSONB;
CREATE INDEX IF NOT EXISTS "LeadFormSubmission_leadId_idx" ON "LeadFormSubmission"("leadId");
+19 -2
View File
@@ -793,9 +793,15 @@ model LeadForm {
description String?
publicToken String @unique @default(cuid())
isActive Boolean @default(true)
createPerson Boolean @default(true)
createDeal Boolean @default(true)
/// ثبت به‌عنوان Lead در CRM (مسیر اصلی انتشار فرم)
createLead Boolean @default(true)
createPerson Boolean @default(false)
createDeal Boolean @default(false)
pipelineId String?
/// مرحله اولیه لید (اختیاری؛ وگرنه اولین مرحله)
leadStageId String?
/// skip | update | activity
duplicateMode String @default("update")
source String?
thankYouMessage String?
redirectUrl String?
@@ -804,6 +810,11 @@ model LeadForm {
submitLabel String @default("ارسال درخواست")
submitColor String @default("#14b8a6")
coverStorageKey String?
viewCount Int @default(0)
startCount Int @default(0)
submitCount Int @default(0)
leadCreateCount Int @default(0)
duplicateCount Int @default(0)
fields LeadFormField[]
submissions LeadFormSubmission[]
createdAt DateTime @default(now())
@@ -835,9 +846,15 @@ model LeadFormSubmission {
form LeadForm @relation(fields: [formId], references: [id], onDelete: Cascade)
values Json
personId String?
leadId String?
/// created | updated | duplicate_skipped | error
status String @default("created")
utm Json?
meta Json?
createdAt DateTime @default(now())
@@index([formId, createdAt])
@@index([leadId])
}
model Quote {