INSIGHT-MVP/packages/crm-service/prisma/migrations/20260313_project_request/migration.sql
Thomas Reitz 4c739945f0 feat(crm): Projektanfrage-Vorgangstyp – isProjectType + ProjectRequestDetails
Backend:
- DealType.isProjectType Boolean-Flag (Admin-konfigurierbar in CRM Settings)
- Neue 1:1-Tabelle project_request_details (ON DELETE CASCADE):
  notes, workload, startDate, duration, onsitePercent, rateRemote, rateOnsite
- Migration 20260313_project_request
- ProjectRequestDto mit Validierung (0-100% fuer Auslastung/Vorort-Anteil)
- Deals-Service: nested create + upsert fuer projectRequest

Frontend:
- DealFormModal: Vorgangsart-Dropdown an Anfang verschoben;
  Projektanfrage-Sektion erscheint conditional bei isProjectType=true
  (Beschreibung, Auslastung/Start, Laufzeit/Vorort-Anteil, Stundensaetze)
- CrmSettingsPage: DealTypesConfig mit Projektanfrage-Checkbox + Tabellenspalte
- types.ts: ProjectRequestDetails, CreateProjectRequestPayload, Deal.projectRequest

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-13 17:17:40 +01:00

32 lines
1.3 KiB
SQL

-- Migration: 20260313_project_request
-- Beschreibung: isProjectType auf deal_types + ProjectRequestDetails Tabelle
-- AlterTable: is_project_type auf deal_types
ALTER TABLE "app_crm"."deal_types" ADD COLUMN "is_project_type" BOOLEAN NOT NULL DEFAULT false;
-- CreateTable: project_request_details (1:1 mit deals, ON DELETE CASCADE)
CREATE TABLE "app_crm"."project_request_details" (
"id" UUID NOT NULL DEFAULT gen_random_uuid(),
"deal_id" UUID NOT NULL,
"notes" TEXT,
"workload" DECIMAL(5,2),
"start_date" TIMESTAMP(3),
"duration" VARCHAR(200),
"onsite_percent" DECIMAL(5,2),
"rate_remote" DECIMAL(10,2),
"rate_onsite" DECIMAL(10,2),
"created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
"updated_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
CONSTRAINT "project_request_details_pkey" PRIMARY KEY ("id")
);
-- CreateIndex (unique: jeder Deal max. 1 Projektanfrage)
CREATE UNIQUE INDEX "project_request_details_deal_id_key" ON "app_crm"."project_request_details"("deal_id");
-- AddForeignKey
ALTER TABLE "app_crm"."project_request_details"
ADD CONSTRAINT "project_request_details_deal_id_fkey"
FOREIGN KEY ("deal_id")
REFERENCES "app_crm"."deals"("id")
ON DELETE CASCADE ON UPDATE CASCADE;