fix: quota slide_generate pour tier BASIC
- Ajoute slide_generate et excalidraw_generate dans TIER_LIMITS (BASIC: 3, PRO: 20, BUSINESS: 100, ENTERPRISE: unlimited) - run-for-note: utilise le bon feature key selon le type d'agent - slides.tool: incrémente slide_generate (pas reformulate) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This commit is contained in:
@@ -44,9 +44,10 @@ export async function POST(req: NextRequest) {
|
|||||||
return NextResponse.json({ error: 'Paramètres invalides' }, { status: 400 })
|
return NextResponse.json({ error: 'Paramètres invalides' }, { status: 400 })
|
||||||
}
|
}
|
||||||
|
|
||||||
// Quota check — slides/excalidraw generation counts as 'reformulate' credit
|
// Quota check — feature key depends on generation type
|
||||||
|
const featureKey = type === 'slide-generator' ? 'slide_generate' : 'excalidraw_generate'
|
||||||
try {
|
try {
|
||||||
await checkEntitlementOrThrow(userId, 'reformulate')
|
await checkEntitlementOrThrow(userId, featureKey)
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
if (e instanceof QuotaExceededError) {
|
if (e instanceof QuotaExceededError) {
|
||||||
return NextResponse.json({ error: e.message }, { status: 402 })
|
return NextResponse.json({ error: e.message }, { status: 402 })
|
||||||
|
|||||||
@@ -81,8 +81,8 @@ RULES:
|
|||||||
|
|
||||||
console.log('[Slides Tool] Canvas created:', canvas.id, '| Slides:', slides.length, '| Size:', Math.round(html.length / 1024), 'KB')
|
console.log('[Slides Tool] Canvas created:', canvas.id, '| Slides:', slides.length, '| Size:', Math.round(html.length / 1024), 'KB')
|
||||||
|
|
||||||
// Decrement reformulate quota (agent-based generation consumes credits)
|
// Decrement slide_generate quota after successful canvas creation
|
||||||
incrementUsageAsync(ctx.userId, 'reformulate')
|
incrementUsageAsync(ctx.userId, 'slide_generate')
|
||||||
|
|
||||||
if (ctx.actionId) {
|
if (ctx.actionId) {
|
||||||
await prisma.agentAction.update({
|
await prisma.agentAction.update({
|
||||||
|
|||||||
@@ -79,6 +79,8 @@ const TIER_LIMITS: Record<SubscriptionTier, Record<string, number | 'unlimited'>
|
|||||||
brainstorm_expand: 10,
|
brainstorm_expand: 10,
|
||||||
brainstorm_enrich: 20,
|
brainstorm_enrich: 20,
|
||||||
suggest_charts: 5,
|
suggest_charts: 5,
|
||||||
|
slide_generate: 3,
|
||||||
|
excalidraw_generate: 3,
|
||||||
},
|
},
|
||||||
PRO: {
|
PRO: {
|
||||||
semantic_search: 100,
|
semantic_search: 100,
|
||||||
@@ -90,6 +92,8 @@ const TIER_LIMITS: Record<SubscriptionTier, Record<string, number | 'unlimited'>
|
|||||||
brainstorm_expand: 100,
|
brainstorm_expand: 100,
|
||||||
brainstorm_enrich: 200,
|
brainstorm_enrich: 200,
|
||||||
suggest_charts: 50,
|
suggest_charts: 50,
|
||||||
|
slide_generate: 20,
|
||||||
|
excalidraw_generate: 20,
|
||||||
},
|
},
|
||||||
BUSINESS: {
|
BUSINESS: {
|
||||||
semantic_search: 1000,
|
semantic_search: 1000,
|
||||||
@@ -101,6 +105,8 @@ const TIER_LIMITS: Record<SubscriptionTier, Record<string, number | 'unlimited'>
|
|||||||
brainstorm_expand: 500,
|
brainstorm_expand: 500,
|
||||||
brainstorm_enrich: 1000,
|
brainstorm_enrich: 1000,
|
||||||
suggest_charts: 200,
|
suggest_charts: 200,
|
||||||
|
slide_generate: 100,
|
||||||
|
excalidraw_generate: 100,
|
||||||
},
|
},
|
||||||
ENTERPRISE: {
|
ENTERPRISE: {
|
||||||
semantic_search: 'unlimited',
|
semantic_search: 'unlimited',
|
||||||
@@ -112,6 +118,8 @@ const TIER_LIMITS: Record<SubscriptionTier, Record<string, number | 'unlimited'>
|
|||||||
brainstorm_expand: 'unlimited',
|
brainstorm_expand: 'unlimited',
|
||||||
brainstorm_enrich: 'unlimited',
|
brainstorm_enrich: 'unlimited',
|
||||||
suggest_charts: 'unlimited',
|
suggest_charts: 'unlimited',
|
||||||
|
slide_generate: 'unlimited',
|
||||||
|
excalidraw_generate: 'unlimited',
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user