auto-save 2026-05-20 22:54 (~3)

This commit is contained in:
2026-05-20 22:54:10 +08:00
parent a3d0c97d23
commit 76977543bd
3 changed files with 23 additions and 13 deletions

View File

@@ -13,12 +13,13 @@ export const dynamic = 'force-dynamic';
const PACK_KINDS: PackKind[] = PACK_ORDER;
async function persistPackProgress(session: GenSession, imageId: string, pack: AssetPack) {
session.characterSpec = pack.characterSpec;
session.packs = [
...(session.packs ?? []).filter(existing => !(existing.kind === pack.kind && existing.sourceImageId === imageId)),
const latest = await loadSession(session.id) ?? session;
latest.characterSpec = pack.characterSpec;
latest.packs = [
...(latest.packs ?? []).filter(existing => !(existing.kind === pack.kind && existing.sourceImageId === imageId)),
{ ...pack, assets: [...pack.assets] },
];
await saveSession(session);
await saveSession(latest);
}
function isCompletePack(pack: AssetPack, imageId: string): boolean {
@@ -140,16 +141,17 @@ export async function POST(req: Request) {
});
},
});
baseSession.characterSpec = pack.characterSpec;
baseSession.packs = [
...(baseSession.packs ?? []).filter(existing => !(existing.kind === kind && existing.sourceImageId === imageId)),
const latestSession = await loadSession(baseSession.id) ?? baseSession;
latestSession.characterSpec = pack.characterSpec;
latestSession.packs = [
...(latestSession.packs ?? []).filter(existing => !(existing.kind === kind && existing.sourceImageId === imageId)),
pack,
];
baseSession.exports = [
...(baseSession.exports ?? []).filter(existing => !(existing.packKind === kind && existing.source.sourceImageId === imageId)),
latestSession.exports = [
...(latestSession.exports ?? []).filter(existing => !(existing.packKind === kind && existing.source.sourceImageId === imageId)),
manifest,
];
await saveSession(baseSession);
await saveSession(latestSession);
recordEvent({
action: 'pack.generate_completed',
sessionId,

View File

@@ -27,11 +27,12 @@ export async function POST(req: Request) {
});
const generated = await generateTextAssets({ session, templateIds: body.templateIds });
const nextIds = new Set(generated.textAssets.map(asset => asset.templateId));
session.textAssets = [
...(session.textAssets ?? []).filter(asset => !nextIds.has(asset.templateId)),
const latest = await loadSession(session.id) ?? session;
latest.textAssets = [
...(latest.textAssets ?? []).filter(asset => !nextIds.has(asset.templateId)),
...generated.textAssets,
];
await saveSession(session);
await saveSession(latest);
recordEvent({
action: 'text.generate_completed',
sessionId: session.id,