fix: recover WeChat page thumbnail delivery
Memind CI / Test, build, and release guards (pull_request) Successful in 5m1s
Memind CI / Test, build, and release guards (pull_request) Successful in 5m1s
This commit is contained in:
@@ -214,6 +214,55 @@ test('MindSpace image generation retries a semantic mismatch and stores only a r
|
||||
assert.match(generatedRequests[1].prompt, /缺失元素:竹海/);
|
||||
});
|
||||
|
||||
test('WeChat page thumbnail idempotency follows the prompt while other keys stay stable', async () => {
|
||||
const generatedRequests = [];
|
||||
let assetCount = 0;
|
||||
const service = createMindSpaceImageGenerationService({
|
||||
configService: { async resolveImageGenerationPurpose() { return { ok: true, presetId: 'hero' }; } },
|
||||
assetService: {
|
||||
async createChatAsset() {
|
||||
assetCount += 1;
|
||||
return {
|
||||
id: `asset-${assetCount}`,
|
||||
workspaceRelativePath: `public/images/hero-${assetCount}.webp`,
|
||||
};
|
||||
},
|
||||
},
|
||||
imageMakeClient: {
|
||||
async generateImage(input) {
|
||||
generatedRequests.push(input);
|
||||
return {
|
||||
jobId: `job-${generatedRequests.length}`,
|
||||
buffer: Buffer.from(`image-${generatedRequests.length}`),
|
||||
mimeType: 'image/webp', sha256: 'abc', width: 768, height: 432,
|
||||
};
|
||||
},
|
||||
async acknowledge() {},
|
||||
},
|
||||
imageReviewService: passingReviewService(),
|
||||
});
|
||||
|
||||
const input = {
|
||||
userId: 'user-1',
|
||||
purpose: 'hero',
|
||||
prompt: 'TKMind 舌战群儒,突出安全与落地',
|
||||
idempotencyKey: 'wechat-25550597627048917-page-1-thumbnail',
|
||||
};
|
||||
await service.generate(input);
|
||||
await service.generate(input);
|
||||
await service.generate({ ...input, prompt: 'TKMind 舌战群儒,突出场景与思维进化' });
|
||||
await service.generate({ ...input, idempotencyKey: 'ordinary-request', prompt: '普通图片' });
|
||||
|
||||
assert.equal(generatedRequests[0].idempotencyKey, generatedRequests[1].idempotencyKey);
|
||||
assert.notEqual(generatedRequests[1].idempotencyKey, generatedRequests[2].idempotencyKey);
|
||||
assert.match(
|
||||
generatedRequests[0].idempotencyKey,
|
||||
/^wechat-25550597627048917-page-1-thumbnail-p-[a-f0-9]{12}$/,
|
||||
);
|
||||
assert.ok(generatedRequests[0].idempotencyKey.length <= 128);
|
||||
assert.equal(generatedRequests[3].idempotencyKey, 'ordinary-request');
|
||||
});
|
||||
|
||||
test('MindSpace image generation blocks storage after all semantic review attempts fail', async () => {
|
||||
let generateCount = 0;
|
||||
let storeCount = 0;
|
||||
|
||||
Reference in New Issue
Block a user