fix: recover WeChat page thumbnail delivery
Memind CI / Test, build, and release guards (pull_request) Successful in 5m1s

This commit is contained in:
john
2026-07-22 11:51:15 +08:00
parent 57d2c14fca
commit cb62b36cd5
13 changed files with 366 additions and 26 deletions
+49
View File
@@ -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;