feat: order revision, rial wage from variant, product tags; drop user-app-v2

Admin order edit with category chips and timeline; customer checkout charges variant rialWage; product tags; retire the unused user-app-v2 tree.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
saeed
2026-10-28 14:29:12 +03:30
co-authored by Cursor
parent 4e09a66fbf
commit feb5727c0e
429 changed files with 3942 additions and 30302 deletions
@@ -0,0 +1,2 @@
-- Product labels from Setting `__list__tags`, assigned per product in admin.
ALTER TABLE "Product" ADD COLUMN IF NOT EXISTS "tags" TEXT[] DEFAULT ARRAY[]::TEXT[];
@@ -0,0 +1,29 @@
-- Admin order edit + customer confirm (Order.revisionStatus / OrderRevision).
CREATE TYPE "OrderRevisionStatus" AS ENUM ('NONE', 'AWAITING_CUSTOMER');
ALTER TABLE "Order" ADD COLUMN "revisionStatus" "OrderRevisionStatus" NOT NULL DEFAULT 'NONE';
CREATE TABLE "OrderRevision" (
"id" TEXT NOT NULL,
"orderId" TEXT NOT NULL,
"items" JSONB NOT NULL,
"totalGoldWeightGrams" DECIMAL(14,4) NOT NULL,
"wageWeightGrams" DECIMAL(14,4) NOT NULL,
"flatRialCharge" DECIMAL(20,2) NOT NULL DEFAULT 0,
"proposedByAdminUserId" TEXT,
"note" TEXT,
"customerDecision" TEXT,
"customerDecidedAt" TIMESTAMP(3),
"appliedAt" TIMESTAMP(3),
"discardedAt" TIMESTAMP(3),
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
CONSTRAINT "OrderRevision_pkey" PRIMARY KEY ("id")
);
CREATE INDEX "Order_revisionStatus_idx" ON "Order"("revisionStatus");
CREATE INDEX "OrderRevision_orderId_idx" ON "OrderRevision"("orderId");
CREATE INDEX "OrderRevision_createdAt_idx" ON "OrderRevision"("createdAt");
ALTER TABLE "OrderRevision" ADD CONSTRAINT "OrderRevision_orderId_fkey" FOREIGN KEY ("orderId") REFERENCES "Order"("id") ON DELETE CASCADE ON UPDATE CASCADE;