Complete Hub Admin Dashboard with analytics, settings, and enterprise features
Some checks failed
Build and Push Docker Image / lint-and-typecheck (push) Failing after 2m10s
Build and Push Docker Image / build (push) Has been skipped

Major additions:
- Analytics dashboard with charts (line, bar, donut)
- Enterprise client monitoring with container management
- Staff management with 2FA support
- Profile management and settings pages
- Netcup server integration
- DNS verification panel
- Portainer integration
- Container logs and health monitoring
- Automation controls for orders

New API endpoints:
- /api/v1/admin/analytics
- /api/v1/admin/enterprise-clients
- /api/v1/admin/netcup
- /api/v1/admin/settings
- /api/v1/admin/staff
- /api/v1/profile

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
2026-01-17 12:33:11 +01:00
parent 60493cfbdd
commit 92092760a7
234 changed files with 52896 additions and 2425 deletions

View File

@@ -0,0 +1,57 @@
-- CreateEnum
CREATE TYPE "AutomationMode" AS ENUM ('AUTO', 'MANUAL', 'PAUSED');
-- CreateEnum
CREATE TYPE "DnsRecordStatus" AS ENUM ('PENDING', 'VERIFIED', 'MISMATCH', 'NOT_FOUND', 'ERROR', 'SKIPPED');
-- AlterTable
ALTER TABLE "orders" ADD COLUMN "automationMode" "AutomationMode" NOT NULL DEFAULT 'MANUAL',
ADD COLUMN "automation_paused_at" TIMESTAMP(3),
ADD COLUMN "automation_paused_reason" TEXT,
ADD COLUMN "dns_verified_at" TIMESTAMP(3),
ADD COLUMN "netcup_server_id" TEXT,
ADD COLUMN "source" TEXT;
-- CreateTable
CREATE TABLE "dns_verifications" (
"id" TEXT NOT NULL,
"order_id" TEXT NOT NULL,
"wildcard_passed" BOOLEAN NOT NULL DEFAULT false,
"manual_override" BOOLEAN NOT NULL DEFAULT false,
"all_passed" BOOLEAN NOT NULL DEFAULT false,
"total_subdomains" INTEGER NOT NULL DEFAULT 0,
"passed_count" INTEGER NOT NULL DEFAULT 0,
"last_checked_at" TIMESTAMP(3),
"verified_at" TIMESTAMP(3),
"created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
"updated_at" TIMESTAMP(3) NOT NULL,
CONSTRAINT "dns_verifications_pkey" PRIMARY KEY ("id")
);
-- CreateTable
CREATE TABLE "dns_records" (
"id" TEXT NOT NULL,
"dns_verification_id" TEXT NOT NULL,
"subdomain" TEXT NOT NULL,
"full_domain" TEXT NOT NULL,
"expected_ip" TEXT NOT NULL,
"resolved_ip" TEXT,
"status" "DnsRecordStatus" NOT NULL DEFAULT 'PENDING',
"error_message" TEXT,
"checked_at" TIMESTAMP(3),
CONSTRAINT "dns_records_pkey" PRIMARY KEY ("id")
);
-- CreateIndex
CREATE UNIQUE INDEX "dns_verifications_order_id_key" ON "dns_verifications"("order_id");
-- CreateIndex
CREATE INDEX "dns_records_dns_verification_id_idx" ON "dns_records"("dns_verification_id");
-- AddForeignKey
ALTER TABLE "dns_verifications" ADD CONSTRAINT "dns_verifications_order_id_fkey" FOREIGN KEY ("order_id") REFERENCES "orders"("id") ON DELETE CASCADE ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "dns_records" ADD CONSTRAINT "dns_records_dns_verification_id_fkey" FOREIGN KEY ("dns_verification_id") REFERENCES "dns_verifications"("id") ON DELETE CASCADE ON UPDATE CASCADE;