Initial commit: MOPC platform with Docker deployment setup
Full Next.js 15 platform with tRPC, Prisma, PostgreSQL, NextAuth. Includes production Dockerfile (multi-stage, port 7600), docker-compose with registry-based image pull, Gitea Actions CI workflow, nginx config for portal.monaco-opc.com, deployment scripts, and DEPLOYMENT.md guide. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
95
prisma/seed-jury-demo.sql
Normal file
95
prisma/seed-jury-demo.sql
Normal file
@@ -0,0 +1,95 @@
|
||||
-- Create demo jury member
|
||||
INSERT INTO "User" (id, email, name, role, status, "passwordHash", "mustSetPassword", "passwordSetAt", "onboardingCompletedAt", "expertiseTags", "notificationPreference", "createdAt", "updatedAt")
|
||||
VALUES (
|
||||
'demo-jury-member-001',
|
||||
'jury.demo@monaco-opc.com',
|
||||
'Dr. Marie Laurent',
|
||||
'JURY_MEMBER',
|
||||
'ACTIVE',
|
||||
'$2b$12$xUQpxLay9.0CJ08GvXrjm.yls.bp0Yeaa4TF5b4kLsIJGLrVMCVZ.',
|
||||
false,
|
||||
NOW(),
|
||||
NOW(),
|
||||
ARRAY['Marine Biology', 'Ocean Conservation', 'Sustainable Innovation'],
|
||||
'EMAIL',
|
||||
NOW(),
|
||||
NOW()
|
||||
)
|
||||
ON CONFLICT (email) DO UPDATE SET
|
||||
"passwordHash" = EXCLUDED."passwordHash",
|
||||
"mustSetPassword" = false,
|
||||
status = 'ACTIVE',
|
||||
"onboardingCompletedAt" = NOW(),
|
||||
"updatedAt" = NOW();
|
||||
|
||||
-- Get the user ID
|
||||
DO $$
|
||||
DECLARE
|
||||
jury_id TEXT;
|
||||
round_id TEXT;
|
||||
proj RECORD;
|
||||
form_exists BOOLEAN;
|
||||
BEGIN
|
||||
SELECT id INTO jury_id FROM "User" WHERE email = 'jury.demo@monaco-opc.com';
|
||||
RAISE NOTICE 'Jury user ID: %', jury_id;
|
||||
|
||||
-- Get round
|
||||
SELECT id INTO round_id FROM "Round" WHERE slug = 'mopc-2026-round-1';
|
||||
RAISE NOTICE 'Round ID: %', round_id;
|
||||
|
||||
IF round_id IS NULL THEN
|
||||
RAISE EXCEPTION 'Round not found!';
|
||||
END IF;
|
||||
|
||||
-- Open voting window
|
||||
UPDATE "Round" SET
|
||||
status = 'ACTIVE',
|
||||
"votingStartAt" = NOW() - INTERVAL '7 days',
|
||||
"votingEndAt" = NOW() + INTERVAL '30 days'
|
||||
WHERE id = round_id;
|
||||
RAISE NOTICE 'Voting window opened';
|
||||
|
||||
-- Assign 8 projects
|
||||
FOR proj IN
|
||||
SELECT id, title FROM "Project" WHERE "roundId" = round_id ORDER BY "createdAt" DESC LIMIT 8
|
||||
LOOP
|
||||
INSERT INTO "Assignment" (id, "userId", "projectId", "roundId", method, "isRequired", "isCompleted", "createdAt")
|
||||
VALUES (
|
||||
'demo-assign-' || substr(proj.id, 1, 15),
|
||||
jury_id,
|
||||
proj.id,
|
||||
round_id,
|
||||
'MANUAL',
|
||||
true,
|
||||
false,
|
||||
NOW()
|
||||
)
|
||||
ON CONFLICT ("userId", "projectId", "roundId") DO NOTHING;
|
||||
RAISE NOTICE 'Assigned: %', proj.title;
|
||||
END LOOP;
|
||||
|
||||
-- Check if evaluation form exists
|
||||
SELECT EXISTS(SELECT 1 FROM "EvaluationForm" WHERE "roundId" = round_id) INTO form_exists;
|
||||
|
||||
IF NOT form_exists THEN
|
||||
INSERT INTO "EvaluationForm" (id, "roundId", name, "isActive", "criteriaJson", "createdAt", "updatedAt")
|
||||
VALUES (
|
||||
'demo-eval-form-001',
|
||||
round_id,
|
||||
'Round 1 Evaluation',
|
||||
true,
|
||||
'[{"id":"innovation","label":"Innovation & Originality","description":"How innovative is the proposed solution?","scale":10,"weight":25,"required":true},{"id":"feasibility","label":"Technical Feasibility","description":"Is the solution technically viable?","scale":10,"weight":25,"required":true},{"id":"impact","label":"Environmental Impact","description":"What is the potential positive impact on ocean health?","scale":10,"weight":30,"required":true},{"id":"team","label":"Team Capability","description":"Does the team have the skills to execute?","scale":10,"weight":20,"required":true}]'::jsonb,
|
||||
NOW(),
|
||||
NOW()
|
||||
);
|
||||
RAISE NOTICE 'Created evaluation form';
|
||||
ELSE
|
||||
RAISE NOTICE 'Evaluation form already exists';
|
||||
END IF;
|
||||
|
||||
RAISE NOTICE '========================================';
|
||||
RAISE NOTICE 'Setup complete!';
|
||||
RAISE NOTICE 'Email: jury.demo@monaco-opc.com';
|
||||
RAISE NOTICE 'Password: JuryDemo2026!';
|
||||
RAISE NOTICE '========================================';
|
||||
END $$;
|
||||
Reference in New Issue
Block a user