Initial commit: 风影 OA 全栈源码(API/Web/Flutter/IM)
含 Phase 1.1 IM seq 排序、断线重连、多端已读同步与微信式语音转文字 UI。 排除 node_modules、构建产物、安装包与 .env 密钥。 Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -0,0 +1,98 @@
|
||||
ALTER TABLE "Role" ADD COLUMN "dataScope" TEXT NOT NULL DEFAULT 'ALL';
|
||||
|
||||
ALTER TABLE "WorkReport" ADD COLUMN "periodType" TEXT NOT NULL DEFAULT 'DAY';
|
||||
ALTER TABLE "WorkReport" ADD COLUMN "periodStart" TIMESTAMP(3);
|
||||
ALTER TABLE "WorkReport" ADD COLUMN "hours" DECIMAL(8,2) NOT NULL DEFAULT 0;
|
||||
|
||||
DELETE FROM "WorkReport" WHERE "authorId" IS NOT NULL AND "authorId" NOT IN (SELECT "id" FROM "User");
|
||||
ALTER TABLE "WorkReport" ADD CONSTRAINT "WorkReport_authorId_fkey" FOREIGN KEY ("authorId") REFERENCES "User"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
||||
CREATE INDEX "WorkReport_authorId_idx" ON "WorkReport"("authorId");
|
||||
|
||||
ALTER TABLE "PurchaseRequest" ADD COLUMN "remark" TEXT;
|
||||
ALTER TABLE "PurchaseRequest" ADD COLUMN "applicantId" TEXT;
|
||||
ALTER TABLE "PurchaseRequest" ADD COLUMN "decidedById" TEXT;
|
||||
ALTER TABLE "PurchaseRequest" ADD COLUMN "decidedAt" TIMESTAMP(3);
|
||||
UPDATE "PurchaseRequest" SET "projectId" = NULL WHERE "projectId" IS NOT NULL AND "projectId" NOT IN (SELECT "id" FROM "Project");
|
||||
ALTER TABLE "PurchaseRequest" ADD CONSTRAINT "PurchaseRequest_projectId_fkey" FOREIGN KEY ("projectId") REFERENCES "Project"("id") ON DELETE SET NULL ON UPDATE CASCADE;
|
||||
ALTER TABLE "PurchaseRequest" ADD CONSTRAINT "PurchaseRequest_applicantId_fkey" FOREIGN KEY ("applicantId") REFERENCES "User"("id") ON DELETE SET NULL ON UPDATE CASCADE;
|
||||
ALTER TABLE "PurchaseRequest" ADD CONSTRAINT "PurchaseRequest_decidedById_fkey" FOREIGN KEY ("decidedById") REFERENCES "User"("id") ON DELETE SET NULL ON UPDATE CASCADE;
|
||||
|
||||
ALTER TABLE "AssetOccupancy" ADD COLUMN "holderId" TEXT;
|
||||
ALTER TABLE "AssetOccupancy" ADD COLUMN "projectId" TEXT;
|
||||
ALTER TABLE "AssetOccupancy" ADD COLUMN "dueAt" TIMESTAMP(3);
|
||||
ALTER TABLE "AssetOccupancy" ADD COLUMN "returnedAt" TIMESTAMP(3);
|
||||
UPDATE "AssetOccupancy" SET "projectId" = NULL WHERE "projectId" IS NOT NULL AND "projectId" NOT IN (SELECT "id" FROM "Project");
|
||||
ALTER TABLE "AssetOccupancy" ADD CONSTRAINT "AssetOccupancy_projectId_fkey" FOREIGN KEY ("projectId") REFERENCES "Project"("id") ON DELETE SET NULL ON UPDATE CASCADE;
|
||||
ALTER TABLE "AssetOccupancy" ADD CONSTRAINT "AssetOccupancy_holderId_fkey" FOREIGN KEY ("holderId") REFERENCES "User"("id") ON DELETE SET NULL ON UPDATE CASCADE;
|
||||
|
||||
ALTER TABLE "OperationLog" ADD COLUMN "username" TEXT;
|
||||
ALTER TABLE "OperationLog" ADD COLUMN "detail" TEXT;
|
||||
ALTER TABLE "OperationLog" ADD COLUMN "success" BOOLEAN NOT NULL DEFAULT true;
|
||||
UPDATE "OperationLog" SET "userId" = NULL WHERE "userId" IS NOT NULL AND "userId" NOT IN (SELECT "id" FROM "User");
|
||||
ALTER TABLE "OperationLog" ADD CONSTRAINT "OperationLog_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE SET NULL ON UPDATE CASCADE;
|
||||
CREATE INDEX "OperationLog_createdAt_idx" ON "OperationLog"("createdAt");
|
||||
CREATE INDEX "OperationLog_action_idx" ON "OperationLog"("action");
|
||||
|
||||
CREATE TABLE "NumberRule" (
|
||||
"id" TEXT NOT NULL,
|
||||
"tenantId" TEXT NOT NULL DEFAULT '1',
|
||||
"code" TEXT NOT NULL,
|
||||
"name" TEXT NOT NULL,
|
||||
"prefix" TEXT NOT NULL,
|
||||
"padLength" INTEGER NOT NULL DEFAULT 5,
|
||||
CONSTRAINT "NumberRule_pkey" PRIMARY KEY ("id")
|
||||
);
|
||||
CREATE UNIQUE INDEX "NumberRule_tenantId_code_key" ON "NumberRule"("tenantId", "code");
|
||||
|
||||
INSERT INTO "NumberRule" ("id", "code", "name", "prefix", "padLength") VALUES
|
||||
('nr-bid', 'BID', '投标编号', 'BID', 5),
|
||||
('nr-ht', 'HT', '合同编号', 'HT', 5),
|
||||
('nr-prj', 'PRJ', '项目编号', 'PRJ', 5);
|
||||
|
||||
CREATE TABLE "SealItem" (
|
||||
"id" TEXT NOT NULL,
|
||||
"tenantId" TEXT NOT NULL DEFAULT '1',
|
||||
"name" TEXT NOT NULL,
|
||||
"keeper" TEXT NOT NULL DEFAULT '行政',
|
||||
"status" TEXT NOT NULL DEFAULT 'IN_STOCK',
|
||||
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
CONSTRAINT "SealItem_pkey" PRIMARY KEY ("id")
|
||||
);
|
||||
|
||||
INSERT INTO "SealItem" ("id", "name", "keeper", "status") VALUES
|
||||
('seal-official', '公章', '行政', 'IN_STOCK'),
|
||||
('seal-legal', '法人章', '行政', 'IN_STOCK');
|
||||
|
||||
CREATE TABLE "ProjectChange" (
|
||||
"id" TEXT NOT NULL,
|
||||
"tenantId" TEXT NOT NULL DEFAULT '1',
|
||||
"projectId" TEXT NOT NULL,
|
||||
"summary" TEXT NOT NULL,
|
||||
"amountDelta" DECIMAL(18,2) NOT NULL DEFAULT 0,
|
||||
"status" TEXT NOT NULL DEFAULT 'PENDING',
|
||||
"comment" TEXT,
|
||||
"actorId" TEXT,
|
||||
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"decidedAt" TIMESTAMP(3),
|
||||
CONSTRAINT "ProjectChange_pkey" PRIMARY KEY ("id")
|
||||
);
|
||||
CREATE INDEX "ProjectChange_projectId_idx" ON "ProjectChange"("projectId");
|
||||
ALTER TABLE "ProjectChange" ADD CONSTRAINT "ProjectChange_projectId_fkey" FOREIGN KEY ("projectId") REFERENCES "Project"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
||||
ALTER TABLE "ProjectChange" ADD CONSTRAINT "ProjectChange_actorId_fkey" FOREIGN KEY ("actorId") REFERENCES "User"("id") ON DELETE SET NULL ON UPDATE CASCADE;
|
||||
|
||||
CREATE TABLE "PaymentRecord" (
|
||||
"id" TEXT NOT NULL,
|
||||
"tenantId" TEXT NOT NULL DEFAULT '1',
|
||||
"payNo" TEXT NOT NULL,
|
||||
"kind" TEXT NOT NULL,
|
||||
"refId" TEXT,
|
||||
"amount" DECIMAL(18,2) NOT NULL,
|
||||
"status" TEXT NOT NULL DEFAULT 'TODO',
|
||||
"remark" TEXT,
|
||||
"paidAt" TIMESTAMP(3),
|
||||
"createdById" TEXT,
|
||||
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
CONSTRAINT "PaymentRecord_pkey" PRIMARY KEY ("id")
|
||||
);
|
||||
CREATE UNIQUE INDEX "PaymentRecord_tenantId_payNo_key" ON "PaymentRecord"("tenantId", "payNo");
|
||||
ALTER TABLE "PaymentRecord" ADD CONSTRAINT "PaymentRecord_createdById_fkey" FOREIGN KEY ("createdById") REFERENCES "User"("id") ON DELETE SET NULL ON UPDATE CASCADE;
|
||||
Reference in New Issue
Block a user