auto-save 2026-05-20 22:54 (~3)
This commit is contained in:
@@ -1846,6 +1846,13 @@
|
|||||||
"message": "auto-save 2026-05-20 22:43 (~2)",
|
"message": "auto-save 2026-05-20 22:43 (~2)",
|
||||||
"hash": "33f87eb",
|
"hash": "33f87eb",
|
||||||
"files_changed": 2
|
"files_changed": 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ts": "2026-05-20T22:48:44+08:00",
|
||||||
|
"type": "commit",
|
||||||
|
"message": "auto-save 2026-05-20 22:48 (~2)",
|
||||||
|
"hash": "a3d0c97",
|
||||||
|
"files_changed": 2
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -13,12 +13,13 @@ export const dynamic = 'force-dynamic';
|
|||||||
const PACK_KINDS: PackKind[] = PACK_ORDER;
|
const PACK_KINDS: PackKind[] = PACK_ORDER;
|
||||||
|
|
||||||
async function persistPackProgress(session: GenSession, imageId: string, pack: AssetPack) {
|
async function persistPackProgress(session: GenSession, imageId: string, pack: AssetPack) {
|
||||||
session.characterSpec = pack.characterSpec;
|
const latest = await loadSession(session.id) ?? session;
|
||||||
session.packs = [
|
latest.characterSpec = pack.characterSpec;
|
||||||
...(session.packs ?? []).filter(existing => !(existing.kind === pack.kind && existing.sourceImageId === imageId)),
|
latest.packs = [
|
||||||
|
...(latest.packs ?? []).filter(existing => !(existing.kind === pack.kind && existing.sourceImageId === imageId)),
|
||||||
{ ...pack, assets: [...pack.assets] },
|
{ ...pack, assets: [...pack.assets] },
|
||||||
];
|
];
|
||||||
await saveSession(session);
|
await saveSession(latest);
|
||||||
}
|
}
|
||||||
|
|
||||||
function isCompletePack(pack: AssetPack, imageId: string): boolean {
|
function isCompletePack(pack: AssetPack, imageId: string): boolean {
|
||||||
@@ -140,16 +141,17 @@ export async function POST(req: Request) {
|
|||||||
});
|
});
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
baseSession.characterSpec = pack.characterSpec;
|
const latestSession = await loadSession(baseSession.id) ?? baseSession;
|
||||||
baseSession.packs = [
|
latestSession.characterSpec = pack.characterSpec;
|
||||||
...(baseSession.packs ?? []).filter(existing => !(existing.kind === kind && existing.sourceImageId === imageId)),
|
latestSession.packs = [
|
||||||
|
...(latestSession.packs ?? []).filter(existing => !(existing.kind === kind && existing.sourceImageId === imageId)),
|
||||||
pack,
|
pack,
|
||||||
];
|
];
|
||||||
baseSession.exports = [
|
latestSession.exports = [
|
||||||
...(baseSession.exports ?? []).filter(existing => !(existing.packKind === kind && existing.source.sourceImageId === imageId)),
|
...(latestSession.exports ?? []).filter(existing => !(existing.packKind === kind && existing.source.sourceImageId === imageId)),
|
||||||
manifest,
|
manifest,
|
||||||
];
|
];
|
||||||
await saveSession(baseSession);
|
await saveSession(latestSession);
|
||||||
recordEvent({
|
recordEvent({
|
||||||
action: 'pack.generate_completed',
|
action: 'pack.generate_completed',
|
||||||
sessionId,
|
sessionId,
|
||||||
|
|||||||
@@ -27,11 +27,12 @@ export async function POST(req: Request) {
|
|||||||
});
|
});
|
||||||
const generated = await generateTextAssets({ session, templateIds: body.templateIds });
|
const generated = await generateTextAssets({ session, templateIds: body.templateIds });
|
||||||
const nextIds = new Set(generated.textAssets.map(asset => asset.templateId));
|
const nextIds = new Set(generated.textAssets.map(asset => asset.templateId));
|
||||||
session.textAssets = [
|
const latest = await loadSession(session.id) ?? session;
|
||||||
...(session.textAssets ?? []).filter(asset => !nextIds.has(asset.templateId)),
|
latest.textAssets = [
|
||||||
|
...(latest.textAssets ?? []).filter(asset => !nextIds.has(asset.templateId)),
|
||||||
...generated.textAssets,
|
...generated.textAssets,
|
||||||
];
|
];
|
||||||
await saveSession(session);
|
await saveSession(latest);
|
||||||
recordEvent({
|
recordEvent({
|
||||||
action: 'text.generate_completed',
|
action: 'text.generate_completed',
|
||||||
sessionId: session.id,
|
sessionId: session.id,
|
||||||
|
|||||||
Reference in New Issue
Block a user