feat(P18A-1,P18A-2): 新增资产模型权限与默认分类

这个提交包含在:
2026-03-07 22:33:02 +08:00
父节点 1701c67eef
当前提交 2a34e7832a
共修改 6 个文件,包含 190 行新增和 8 行删除
@@ -0,0 +1,89 @@
-- CreateEnum
CREATE TYPE "AssetCardStatus" AS ENUM ('in_stock', 'in_use', 'under_repair', 'retired', 'archived');
-- CreateTable
CREATE TABLE "asset_categories" (
"id" UUID NOT NULL,
"code" TEXT NOT NULL,
"name" TEXT NOT NULL,
"document_category_id" UUID,
"enabled" BOOLEAN NOT NULL DEFAULT true,
"archived_at" TIMESTAMP(3),
"created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
"created_by" UUID,
"updated_at" TIMESTAMP(3) NOT NULL,
"updated_by" UUID,
CONSTRAINT "asset_categories_pkey" PRIMARY KEY ("id")
);
-- CreateTable
CREATE TABLE "asset_cards" (
"id" UUID NOT NULL,
"asset_no" TEXT NOT NULL,
"name" TEXT NOT NULL,
"category_id" UUID NOT NULL,
"legal_entity_id" UUID NOT NULL,
"cost_center_id" UUID NOT NULL,
"purchase_request_id" UUID,
"serial_no" TEXT,
"location" TEXT,
"status" "AssetCardStatus" NOT NULL DEFAULT 'in_stock',
"assignee_employee_id" UUID,
"activated_at" DATE,
"retired_at" DATE,
"created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
"created_by" UUID,
"updated_at" TIMESTAMP(3) NOT NULL,
"updated_by" UUID,
CONSTRAINT "asset_cards_pkey" PRIMARY KEY ("id")
);
-- CreateIndex
CREATE UNIQUE INDEX "asset_categories_code_key" ON "asset_categories"("code");
-- CreateIndex
CREATE INDEX "idx_asset_categories_status" ON "asset_categories"("enabled", "archived_at");
-- CreateIndex
CREATE INDEX "idx_asset_categories_document_category" ON "asset_categories"("document_category_id");
-- CreateIndex
CREATE UNIQUE INDEX "asset_cards_asset_no_key" ON "asset_cards"("asset_no");
-- CreateIndex
CREATE INDEX "idx_asset_cards_category" ON "asset_cards"("category_id");
-- CreateIndex
CREATE INDEX "idx_asset_cards_legal_entity" ON "asset_cards"("legal_entity_id");
-- CreateIndex
CREATE INDEX "idx_asset_cards_cost_center" ON "asset_cards"("cost_center_id");
-- CreateIndex
CREATE INDEX "idx_asset_cards_purchase_request" ON "asset_cards"("purchase_request_id");
-- CreateIndex
CREATE INDEX "idx_asset_cards_assignee" ON "asset_cards"("assignee_employee_id");
-- CreateIndex
CREATE INDEX "idx_asset_cards_status" ON "asset_cards"("status");
-- AddForeignKey
ALTER TABLE "asset_categories" ADD CONSTRAINT "asset_categories_document_category_id_fkey" FOREIGN KEY ("document_category_id") REFERENCES "document_categories"("id") ON DELETE SET NULL ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "asset_cards" ADD CONSTRAINT "asset_cards_category_id_fkey" FOREIGN KEY ("category_id") REFERENCES "asset_categories"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "asset_cards" ADD CONSTRAINT "asset_cards_legal_entity_id_fkey" FOREIGN KEY ("legal_entity_id") REFERENCES "legal_entities"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "asset_cards" ADD CONSTRAINT "asset_cards_cost_center_id_fkey" FOREIGN KEY ("cost_center_id") REFERENCES "cost_centers"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "asset_cards" ADD CONSTRAINT "asset_cards_purchase_request_id_fkey" FOREIGN KEY ("purchase_request_id") REFERENCES "purchase_requests"("id") ON DELETE SET NULL ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "asset_cards" ADD CONSTRAINT "asset_cards_assignee_employee_id_fkey" FOREIGN KEY ("assignee_employee_id") REFERENCES "employees"("id") ON DELETE SET NULL ON UPDATE CASCADE;