auto-save 2026-05-18 23:50 (~2, -1)

This commit is contained in:
2026-05-18 23:50:17 +08:00
parent 31df279450
commit a1b783cedb
3 changed files with 14 additions and 47 deletions

View File

@@ -1,46 +0,0 @@
import { NextResponse } from 'next/server';
import { generateAssetPack } from '@/lib/packGenerator';
import { loadSession, saveSession } from '@/lib/storage';
import type { GeneratePackRequest, GeneratePackResponse, PackKind } from '@/lib/types';
export const runtime = 'nodejs';
export const dynamic = 'force-dynamic';
const PACK_KINDS: PackKind[] = ['patent', 'production', 'marketing'];
export async function POST(req: Request) {
const body = (await req.json()) as GeneratePackRequest;
const { sessionId, imageId, kind } = body;
if (!sessionId || !imageId || !PACK_KINDS.includes(kind)) {
return NextResponse.json({ error: 'sessionId, imageId and valid kind required' }, { status: 400 });
}
const session = await loadSession(sessionId);
if (!session) return NextResponse.json({ error: 'session not found' }, { status: 404 });
const sourceImage = session.images.find(image => image.id === imageId);
if (!sourceImage) return NextResponse.json({ error: 'image not found' }, { status: 404 });
if (sourceImage.status !== 'selected') {
return NextResponse.json({ error: 'image must be selected before generating packs' }, { status: 400 });
}
try {
const { pack, manifest, provider } = await generateAssetPack({ session, sourceImage, kind });
session.characterSpec = pack.characterSpec;
session.packs = [
...(session.packs ?? []).filter(existing => !(existing.kind === kind && existing.sourceImageId === imageId)),
pack,
];
session.exports = [
...(session.exports ?? []).filter(existing => existing.packId !== pack.id),
manifest,
];
await saveSession(session);
const response: GeneratePackResponse = { pack, manifest, provider };
return NextResponse.json(response);
} catch (error) {
return NextResponse.json({ error: String(error) }, { status: 500 });
}
}