fix(quotas): unifier le décompte IA (BYOK, rollback) et combler les fuites
Centralise la réserve via ai-quota, corrige admin unavailable (-1), brancher les routes sans quota et le host-pays brainstorm, avec usage-meter élargi, noms de clusters, MCP et ajustements dashboard/insights. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -18,6 +18,9 @@ export async function GET(request: NextRequest) {
|
||||
|
||||
const userId = session.user.id
|
||||
|
||||
// Fix any leftover "Cluster N" placeholders from pre-save naming bug
|
||||
await clusteringService.ensureClusterNames(userId)
|
||||
|
||||
// Check for stored results (even if stale/périmés)
|
||||
const stored = await clusteringService.getStoredClusters(userId)
|
||||
const lite = request.nextUrl.searchParams.get('lite') === '1'
|
||||
@@ -51,7 +54,11 @@ export async function GET(request: NextRequest) {
|
||||
bridgeScore: b.bridgeScore,
|
||||
clustersConnected,
|
||||
clusterNames: clustersConnected.map(
|
||||
cid => cached.find(c => c.clusterId === cid)?.name || `Cluster ${cid}`,
|
||||
cid =>
|
||||
clusteringService.displayName(
|
||||
cached.find(c => c.clusterId === cid)?.name,
|
||||
cid,
|
||||
),
|
||||
),
|
||||
note: bridgeNoteDetailsMap.get(b.noteId),
|
||||
}
|
||||
@@ -112,8 +119,11 @@ export async function GET(request: NextRequest) {
|
||||
noteId: b.noteId,
|
||||
bridgeScore: b.bridgeScore,
|
||||
clustersConnected,
|
||||
clusterNames: clustersConnected.map(
|
||||
cid => cached.find(c => c.clusterId === cid)?.name || `Cluster ${cid}`
|
||||
clusterNames: clustersConnected.map(cid =>
|
||||
clusteringService.displayName(
|
||||
cached.find(c => c.clusterId === cid)?.name,
|
||||
cid,
|
||||
),
|
||||
),
|
||||
note: bridgeNoteDetailsMap.get(b.noteId)
|
||||
}
|
||||
@@ -199,12 +209,10 @@ export async function POST(request: NextRequest) {
|
||||
})
|
||||
}
|
||||
|
||||
// 2. Generate cluster names with AI
|
||||
for (const cluster of results.clusters) {
|
||||
cluster.name = await clusteringService.generateClusterName(cluster.clusterId, userId)
|
||||
}
|
||||
// 2. Name from in-memory members (DB members do not exist until save)
|
||||
await clusteringService.nameClustersFromResults(userId, results)
|
||||
|
||||
// 3. Save clustering results
|
||||
// 3. Save clustering results (with real names)
|
||||
await clusteringService.saveClusteringResults(userId, results)
|
||||
|
||||
// 4. Detect and save bridge notes
|
||||
|
||||
Reference in New Issue
Block a user