v0.1.43 - 플래너 라벨과 가이드 동작 정리

This commit is contained in:
2026-04-23 13:34:48 +09:00
parent 4a80721824
commit 44932f9724
16 changed files with 730 additions and 244 deletions

View File

@@ -14,10 +14,10 @@ const envSchema = z.object({
CORS_ORIGIN: z.string().default('http://localhost:5173'),
SESSION_TTL_DAYS: z.coerce.number().default(30),
APP_BASE_URL: z.string().default('http://localhost:5173'),
ADMIN_ACCOUNT_ID: z.string().default('planner-admin'),
ADMIN_ACCOUNT_PASSWORD: z.string().default('wps!vmffosj180204'),
ADMIN_ACCOUNT_EMAIL: z.string().default('planner-admin@planner.local'),
ADMIN_ACCOUNT_NICKNAME: z.string().default('Planner Admin'),
ADMIN_ACCOUNT_ID: z.string().min(1),
ADMIN_ACCOUNT_PASSWORD: z.string().min(12),
ADMIN_ACCOUNT_EMAIL: z.string().email(),
ADMIN_ACCOUNT_NICKNAME: z.string().min(1),
})
export const env = envSchema.parse(process.env)

View File

@@ -33,11 +33,11 @@ export async function registerAdminRoutes(app) {
const [summary] = await db
.select({
totalUsers: sql<number>`count(*)::int`,
totalAdmins: sql<number>`count(*) filter (where ${users.role} = 'admin')::int`,
verifiedUsers: sql<number>`count(*) filter (where ${users.emailVerifiedAt} is not null)::int`,
activeUsers30d: sql<number>`count(*) filter (where ${users.lastLoginAt} >= now() - interval '30 days')::int`,
newUsers7d: sql<number>`count(*) filter (where ${users.createdAt} >= now() - interval '7 days')::int`,
totalUsers: sql`count(*)::int`,
totalAdmins: sql`count(*) filter (where ${users.role} = 'admin')::int`,
verifiedUsers: sql`count(*) filter (where ${users.emailVerifiedAt} is not null)::int`,
activeUsers30d: sql`count(*) filter (where ${users.lastLoginAt} >= now() - interval '30 days')::int`,
newUsers7d: sql`count(*) filter (where ${users.createdAt} >= now() - interval '7 days')::int`,
})
.from(users)