feat: routines module; super admin subscription badge, 7-day trial and lifetime plan

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-10-06 19:54:38 +03:30
co-authored by Cursor
parent 3de2d0fa67
commit b3784818fc
58 changed files with 13018 additions and 18 deletions
+5 -3
View File
@@ -15,7 +15,9 @@ import type {
import {
BILLING_PLAN_DAYS,
BILLING_PLAN_DEFAULT_MAX_ORGS,
BILLING_TRIAL_DAYS,
defaultEnabledModules,
isPermanentBillingPlan,
isOrgModuleKey,
} from '@mento/shared';
import { PrismaService } from '../prisma/prisma.service';
@@ -25,7 +27,7 @@ function daysRemaining(expiresAt: Date, now = new Date()): number {
return Math.max(0, Math.ceil(ms / (24 * 60 * 60 * 1000)));
}
function toSummary(row: {
export function toSummary(row: {
planCode: string;
status: string;
startsAt: Date;
@@ -41,7 +43,7 @@ function toSummary(row: {
expiresAt: row.expiresAt.toISOString(),
maxOrganizations: row.maxOrganizations,
daysRemaining: remaining,
warn: remaining > 0 && remaining <= 3,
warn: !isPermanentBillingPlan(row.planCode) && remaining > 0 && remaining <= 3,
};
}
@@ -81,7 +83,7 @@ export class BillingService {
const existing = await this.getByOwnerUserId(ownerUserId);
if (existing) return existing;
const now = new Date();
const expiresAt = new Date(now.getTime() + 15 * 24 * 60 * 60 * 1000);
const expiresAt = new Date(now.getTime() + BILLING_TRIAL_DAYS * 24 * 60 * 60 * 1000);
return this.prisma.billingAccount.create({
data: {
ownerUserId,