feat: split admin dashboard, improve match ops, and player closed-match UX

Admin: add match/player overview sub-nav; refine settlement flow and league
match management UI; improve action button enabled/disabled styles; enhance
logo upload and outright odds sync.

API: expose matchPhase/bettingOpen for closed matches; league publish guards;
settlement preview with auto score save; outright team auto-sync.

Player: watermark for closed/settled states; keep match and bet details visible;
remove default login credentials.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-06-10 13:00:14 +08:00
parent 6124313369
commit 03f54ca689
43 changed files with 2787 additions and 519 deletions

View File

@@ -624,6 +624,20 @@ export async function runSeed(client: PrismaClient) {
update: {},
});
const agent2 = await prisma.user.findUnique({ where: { username: 'agent2' }, select: { id: true } });
if (agent2) {
await prisma.agentClosure.upsert({
where: { ancestorId_descendantId: { ancestorId: agent2.id, descendantId: agent2.id } },
create: { ancestorId: agent2.id, descendantId: agent2.id, depth: 0 },
update: {},
});
await prisma.agentClosure.upsert({
where: { ancestorId_descendantId: { ancestorId: agent1.id, descendantId: agent2.id } },
create: { ancestorId: agent1.id, descendantId: agent2.id, depth: 1 },
update: {},
});
}
await prisma.user.upsert({
where: { username: 'player1' },
create: {